Skip to content

Commit

Permalink
net-forcedeth: fix possible stats inaccuracies on 32b hosts
Browse files Browse the repository at this point in the history
The software stats are updated from BH, this change ensures that 32b
UP hosts use appropriate protection.

Tested:
  - HW/SW stats consistent with pktgen (in particular tx=rx)
  - HW/SW stats consistent when tx/rx offloads disabled
  - no problem with+without lockdep (SMP 16-way)

Signed-off-by: David Decotigny <david.decotigny@google.com>
Acked-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
david decotigny authored and David S. Miller committed Nov 18, 2011
1 parent dd2bc8e commit 505a467
Showing 1 changed file with 4 additions and 4 deletions.
8 changes: 4 additions & 4 deletions drivers/net/ethernet/nvidia/forcedeth.c
Original file line number Diff line number Diff line change
Expand Up @@ -1756,19 +1756,19 @@ nv_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *storage)

/* software stats */
do {
syncp_start = u64_stats_fetch_begin(&np->swstats_rx_syncp);
syncp_start = u64_stats_fetch_begin_bh(&np->swstats_rx_syncp);
storage->rx_packets = np->stat_rx_packets;
storage->rx_bytes = np->stat_rx_bytes;
storage->rx_dropped = np->stat_rx_dropped;
storage->rx_missed_errors = np->stat_rx_missed_errors;
} while (u64_stats_fetch_retry(&np->swstats_rx_syncp, syncp_start));
} while (u64_stats_fetch_retry_bh(&np->swstats_rx_syncp, syncp_start));

do {
syncp_start = u64_stats_fetch_begin(&np->swstats_tx_syncp);
syncp_start = u64_stats_fetch_begin_bh(&np->swstats_tx_syncp);
storage->tx_packets = np->stat_tx_packets;
storage->tx_bytes = np->stat_tx_bytes;
storage->tx_dropped = np->stat_tx_dropped;
} while (u64_stats_fetch_retry(&np->swstats_tx_syncp, syncp_start));
} while (u64_stats_fetch_retry_bh(&np->swstats_tx_syncp, syncp_start));

/* If the nic supports hw counters then retrieve latest values */
if (np->driver_data & DEV_HAS_STATISTICS_V123) {
Expand Down

0 comments on commit 505a467

Please sign in to comment.