From: Jon Mason <jon.mason@exar.com>
To: Eric Dumazet <eric.dumazet@gmail.com>
Cc: David Miller <davem@davemloft.net>,
netdev <netdev@vger.kernel.org>,
Ramkrishna Vepa <Ramkrishna.Vepa@exar.com>,
Sivakumar Subramani <Sivakumar.Subramani@exar.com>,
Sreenivasa Honnur <Sreenivasa.Honnur@exar.com>
Subject: Re: [PATCH net-next-2.6] vxge: Implement 64bit stats
Date: Wed, 18 Aug 2010 17:53:31 -0500 [thread overview]
Message-ID: <20100818225330.GJ17009@exar.com> (raw)
In-Reply-To: <1282138974.2194.83.camel@edumazet-laptop>
On Wed, Aug 18, 2010 at 06:42:54AM -0700, Eric Dumazet wrote:
> vxge_get_stats() is racy, since it clears a block of memory (net_stats)
> possibly still used by other cpus.
>
> We can update this driver to full 64bit stats, since ndo_get_stats64()
> provides a private block to store results, and driver maintains 64bit
> counters already.
>
> We also remove net_stats field from struct vxge_sw_stats
>
> Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Acked-by: Jon Mason <jon.mason@exar.com>
> ---
> drivers/net/vxge/vxge-main.c | 22 +++++++---------------
> drivers/net/vxge/vxge-main.h | 1 -
> 2 files changed, 7 insertions(+), 16 deletions(-)
>
> diff --git a/drivers/net/vxge/vxge-main.c b/drivers/net/vxge/vxge-main.c
> index c7c5605..ac90196 100644
> --- a/drivers/net/vxge/vxge-main.c
> +++ b/drivers/net/vxge/vxge-main.c
> @@ -2914,26 +2914,18 @@ static int vxge_change_mtu(struct net_device *dev, int new_mtu)
> }
>
> /**
> - * vxge_get_stats
> + * vxge_get_stats64
> * @dev: pointer to the device structure
> + * @stats: pointer to struct rtnl_link_stats64
> *
> - * Updates the device statistics structure. This function updates the device
> - * statistics structure in the net_device structure and returns a pointer
> - * to the same.
> */
> -static struct net_device_stats *
> -vxge_get_stats(struct net_device *dev)
> +static struct rtnl_link_stats64 *
> +vxge_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *net_stats)
> {
> - struct vxgedev *vdev;
> - struct net_device_stats *net_stats;
> + struct vxgedev *vdev = netdev_priv(dev);
> int k;
>
> - vdev = netdev_priv(dev);
> -
> - net_stats = &vdev->stats.net_stats;
> -
> - memset(net_stats, 0, sizeof(struct net_device_stats));
> -
> + /* net_stats already zeroed by caller */
> for (k = 0; k < vdev->no_of_vpath; k++) {
> net_stats->rx_packets += vdev->vpaths[k].ring.stats.rx_frms;
> net_stats->rx_bytes += vdev->vpaths[k].ring.stats.rx_bytes;
> @@ -3102,7 +3094,7 @@ vxge_vlan_rx_kill_vid(struct net_device *dev, unsigned short vid)
> static const struct net_device_ops vxge_netdev_ops = {
> .ndo_open = vxge_open,
> .ndo_stop = vxge_close,
> - .ndo_get_stats = vxge_get_stats,
> + .ndo_get_stats64 = vxge_get_stats64,
> .ndo_start_xmit = vxge_xmit,
> .ndo_validate_addr = eth_validate_addr,
> .ndo_set_multicast_list = vxge_set_multicast,
> diff --git a/drivers/net/vxge/vxge-main.h b/drivers/net/vxge/vxge-main.h
> index 2e3b064..d4be07e 100644
> --- a/drivers/net/vxge/vxge-main.h
> +++ b/drivers/net/vxge/vxge-main.h
> @@ -172,7 +172,6 @@ struct vxge_msix_entry {
>
> struct vxge_sw_stats {
> /* Network Stats (interface stats) */
> - struct net_device_stats net_stats;
>
> /* Tx */
> u64 tx_frms;
>
>
next prev parent reply other threads:[~2010-08-18 22:52 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-08-18 13:42 [PATCH net-next-2.6] vxge: Implement 64bit stats Eric Dumazet
2010-08-18 15:25 ` Jon Mason
2010-08-18 15:28 ` Eric Dumazet
2010-08-18 22:53 ` Jon Mason [this message]
2010-08-19 7:17 ` David Miller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20100818225330.GJ17009@exar.com \
--to=jon.mason@exar.com \
--cc=Ramkrishna.Vepa@exar.com \
--cc=Sivakumar.Subramani@exar.com \
--cc=Sreenivasa.Honnur@exar.com \
--cc=davem@davemloft.net \
--cc=eric.dumazet@gmail.com \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.