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>
This commit is contained in:
Patrick Rabau 2010-02-15 19:42:11 +00:00 коммит произвёл David S. Miller
Родитель beb499afe3
Коммит c9885fe5a7
1 изменённых файлов: 5 добавлений и 5 удалений

Просмотреть файл

@ -6555,16 +6555,16 @@ bnx2_save_stats(struct bnx2 *bp)
u32 hi; u32 hi;
u64 lo; u64 lo;
hi = *(temp_stats + i) + *(hw_stats + i); hi = temp_stats[i] + hw_stats[i];
lo = *(temp_stats + i + 1) + *(hw_stats + i + 1); lo = (u64) temp_stats[i + 1] + (u64) hw_stats[i + 1];
if (lo > 0xffffffff) if (lo > 0xffffffff)
hi++; hi++;
*(temp_stats + i) = hi; temp_stats[i] = hi;
*(temp_stats + i + 1) = lo & 0xffffffff; temp_stats[i + 1] = lo & 0xffffffff;
} }
for ( ; i < sizeof(struct statistics_block) / 4; i++) 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) \ #define GET_64BIT_NET_STATS64(ctr) \