Re: [PATCH net-next v3 5/9] forcedeth: implement ndo_get_stats64() API
From: Stephen Hemminger <hidden>
Date: 2011-11-15 01:10:44
Also in:
lkml
On Mon, 14 Nov 2011 16:11:15 -0800 David Decotigny [off-list ref] wrote:
quoted hunk ↗ jump to hunk
This commit implements the ndo_get_stats64() API for forcedeth. Since these stats are being updated from different contexts (process and timer), this commit adds protection (locking + atomic variables). Tested: - 16-way SMP x86_64 -> RX bytes:7244556582 (7.2 GB) TX bytes:181904254 (181.9 MB) - pktgen + loopback: identical rx_bytes/tx_bytes and rx_packets/tx_packets Signed-off-by: David Decotigny <redacted> --- drivers/net/ethernet/nvidia/forcedeth.c | 182 ++++++++++++++++++++++++------- 1 files changed, 141 insertions(+), 41 deletions(-)diff --git a/drivers/net/ethernet/nvidia/forcedeth.c b/drivers/net/ethernet/nvidia/forcedeth.c index ee8cce5..a67c1f4 100644 --- a/drivers/net/ethernet/nvidia/forcedeth.c +++ b/drivers/net/ethernet/nvidia/forcedeth.c@@ -692,6 +692,21 @@ struct nv_ethtool_stats { #define NV_DEV_STATISTICS_V2_COUNT (NV_DEV_STATISTICS_V3_COUNT - 3) #define NV_DEV_STATISTICS_V1_COUNT (NV_DEV_STATISTICS_V2_COUNT - 6) +/* driver statistics */ +struct nv_driver_stat { + atomic_t delta; /* increase since last nv_update_stats() */ + u64 total; /* cumulative, requires netdev_priv(dev)->stats_lock */ +};
Please existing u64_stats_sync rather than inventing your own method. The u64_stats_sync is faster and does require locking.