aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorPatrick Rabau <pr2345@gmail.com>2010-02-15 14:42:11 -0500
committerDavid S. Miller <davem@davemloft.net>2010-02-16 18:19:04 -0500
commitc9885fe5a76dea798543f2938a872bc159e8e69a (patch)
tree47d0d0f90753dc2179cd36e12825b0e608ed3c50 /drivers
parentbeb499afe3c9c006bb2d66ceaff0f354d0405ff4 (diff)
bnx2: Fix bug when saving statistics.
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>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/bnx2.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/drivers/net/bnx2.c b/drivers/net/bnx2.c
index d1e5e5d9e986..3fb110edad49 100644
--- a/drivers/net/bnx2.c
+++ b/drivers/net/bnx2.c
@@ -6555,16 +6555,16 @@ bnx2_save_stats(struct bnx2 *bp)
6555 u32 hi; 6555 u32 hi;
6556 u64 lo; 6556 u64 lo;
6557 6557
6558 hi = *(temp_stats + i) + *(hw_stats + i); 6558 hi = temp_stats[i] + hw_stats[i];
6559 lo = *(temp_stats + i + 1) + *(hw_stats + i + 1); 6559 lo = (u64) temp_stats[i + 1] + (u64) hw_stats[i + 1];
6560 if (lo > 0xffffffff) 6560 if (lo > 0xffffffff)
6561 hi++; 6561 hi++;
6562 *(temp_stats + i) = hi; 6562 temp_stats[i] = hi;
6563 *(temp_stats + i + 1) = lo & 0xffffffff; 6563 temp_stats[i + 1] = lo & 0xffffffff;
6564 } 6564 }
6565 6565
6566 for ( ; i < sizeof(struct statistics_block) / 4; i++) 6566 for ( ; i < sizeof(struct statistics_block) / 4; i++)
6567 *(temp_stats + i) = *(temp_stats + i) + *(hw_stats + i); 6567 temp_stats[i] += hw_stats[i];
6568} 6568}
6569 6569
6570#define GET_64BIT_NET_STATS64(ctr) \ 6570#define GET_64BIT_NET_STATS64(ctr) \