bnx2: Fix bug when saving statistics.
authorPatrick Rabau <pr2345@gmail.com>
Mon, 15 Feb 2010 19:42:11 +0000 (19:42 +0000)
committerDavid S. Miller <davem@davemloft.net>
Tue, 16 Feb 2010 23:19:04 +0000 (15:19 -0800)
This fixes the problem of dropping the carry when adding 2 32-bit values.
Switch to use array indexing for better readability.

Reported by and fix provided by Patrick Rabau.

Signed-off-by: Michael Chan <mchan@broadcom.com>
Signed-off-by: Benjamin Li <benli@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/bnx2.c

index d1e5e5d9e98677622ceb62ec8fed00e47d4d9c19..3fb110edad493ac865941b50156dc6a5d6db7ce9 100644 (file)
@@ -6555,16 +6555,16 @@ bnx2_save_stats(struct bnx2 *bp)
                u32 hi;
                u64 lo;
 
-               hi = *(temp_stats + i) + *(hw_stats + i);
-               lo = *(temp_stats + i + 1) + *(hw_stats + i + 1);
+               hi = temp_stats[i] + hw_stats[i];
+               lo = (u64) temp_stats[i + 1] + (u64) hw_stats[i + 1];
                if (lo > 0xffffffff)
                        hi++;
-               *(temp_stats + i) = hi;
-               *(temp_stats + i + 1) = lo & 0xffffffff;
+               temp_stats[i] = hi;
+               temp_stats[i + 1] = lo & 0xffffffff;
        }
 
        for ( ; i < sizeof(struct statistics_block) / 4; i++)
-               *(temp_stats + i) = *(temp_stats + i) + *(hw_stats + i);
+               temp_stats[i] += hw_stats[i];
 }
 
 #define GET_64BIT_NET_STATS64(ctr)                             \