Commit a6c578ef authored by Ajit Khaparde's avatar Ajit Khaparde Committed by David S. Miller

be2net: Fix to use 32-bit stats to report rx_drops_no_fragment

Only BE devices provide 16-bit counter for rx_drops_no_fragment.
All other devices provide a 32-bit counter for this stat.
Use the 32-bit value where available.
Signed-off-by: default avatarAjit Khaparde <ajit.khaparde@emulex.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent bbdc42f8
...@@ -471,11 +471,26 @@ static void accumulate_16bit_val(u32 *acc, u16 val) ...@@ -471,11 +471,26 @@ static void accumulate_16bit_val(u32 *acc, u16 val)
ACCESS_ONCE(*acc) = newacc; ACCESS_ONCE(*acc) = newacc;
} }
void populate_erx_stats(struct be_adapter *adapter,
struct be_rx_obj *rxo,
u32 erx_stat)
{
if (!BEx_chip(adapter))
rx_stats(rxo)->rx_drops_no_frags = erx_stat;
else
/* below erx HW counter can actually wrap around after
* 65535. Driver accumulates a 32-bit value
*/
accumulate_16bit_val(&rx_stats(rxo)->rx_drops_no_frags,
(u16)erx_stat);
}
void be_parse_stats(struct be_adapter *adapter) void be_parse_stats(struct be_adapter *adapter)
{ {
struct be_erx_stats_v1 *erx = be_erx_stats_from_cmd(adapter); struct be_erx_stats_v1 *erx = be_erx_stats_from_cmd(adapter);
struct be_rx_obj *rxo; struct be_rx_obj *rxo;
int i; int i;
u32 erx_stat;
if (lancer_chip(adapter)) { if (lancer_chip(adapter)) {
populate_lancer_stats(adapter); populate_lancer_stats(adapter);
...@@ -488,12 +503,8 @@ void be_parse_stats(struct be_adapter *adapter) ...@@ -488,12 +503,8 @@ void be_parse_stats(struct be_adapter *adapter)
/* as erx_v1 is longer than v0, ok to use v1 for v0 access */ /* as erx_v1 is longer than v0, ok to use v1 for v0 access */
for_all_rx_queues(adapter, rxo, i) { for_all_rx_queues(adapter, rxo, i) {
/* below erx HW counter can actually wrap around after erx_stat = erx->rx_drops_no_fragments[rxo->q.id];
* 65535. Driver accumulates a 32-bit value populate_erx_stats(adapter, rxo, erx_stat);
*/
accumulate_16bit_val(&rx_stats(rxo)->rx_drops_no_frags,
(u16)erx->rx_drops_no_fragments \
[rxo->q.id]);
} }
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment