diff --git a/util/nvramtool/compute_ip_checksum.c b/util/nvramtool/compute_ip_checksum.c
index 12bed5f..f19e943 100644
--- a/util/nvramtool/compute_ip_checksum.c
+++ b/util/nvramtool/compute_ip_checksum.c
@@ -13,32 +13,32 @@
 
 unsigned long compute_ip_checksum(void *addr, unsigned long length)
 {
-        uint8_t *ptr;
-        volatile union {
-                uint8_t  byte[2];
-                uint16_t word;
-        } value;
-        unsigned long sum;
-        unsigned long i;
-        /* In the most straight forward way possible,
-         * compute an ip style checksum.
-         */
-        sum = 0;
-        ptr = addr;
-        for(i = 0; i < length; i++) {
-                unsigned long value;
-                value = ptr[i];
-                if (i & 1) {
-                        value <<= 8;
-                }
-                /* Add the new value */
-                sum += value;
-                /* Wrap around the carry */
-                if (sum > 0xFFFF) {
-                        sum = (sum + (sum >> 16)) & 0xFFFF;
-                }
-        }
-        value.byte[0] = sum & 0xff;
-        value.byte[1] = (sum >> 8) & 0xff;
-        return (~value.word) & 0xFFFF;
+	uint8_t *ptr;
+	volatile union {
+		uint8_t byte[2];
+		uint16_t word;
+	} value;
+	unsigned long sum;
+	unsigned long i;
+	/* In the most straight forward way possible,
+	 * compute an ip style checksum.
+	 */
+	sum = 0;
+	ptr = addr;
+	for (i = 0; i < length; i++) {
+		unsigned long value;
+		value = ptr[i];
+		if (i & 1) {
+			value <<= 8;
+		}
+		/* Add the new value */
+		sum += value;
+		/* Wrap around the carry */
+		if (sum > 0xFFFF) {
+			sum = (sum + (sum >> 16)) & 0xFFFF;
+		}
+	}
+	value.byte[0] = sum & 0xff;
+	value.byte[1] = (sum >> 8) & 0xff;
+	return (~value.word) & 0xFFFF;
 }
