Messages in this thread | | | From | Salil Mehta <> | Subject | RE: [PATCH V2 net-next 1/8] net: hns3: Add support of HNS3 Ethernet Driver for hip08 SoC | Date | Sat, 22 Jul 2017 23:57:46 +0000 |
| |
Hi Stephen,
> -----Original Message----- > From: Stephen Hemminger [mailto:stephen@networkplumber.org] > Sent: Monday, June 19, 2017 4:48 PM > To: Salil Mehta > Cc: davem@davemloft.net; Zhuangyuzeng (Yisen); huangdaode; lipeng (Y); > mehta.salil.lnk@gmail.com; netdev@vger.kernel.org; linux- > kernel@vger.kernel.org; Linuxarm > Subject: Re: [PATCH V2 net-next 1/8] net: hns3: Add support of HNS3 > Ethernet Driver for hip08 SoC > > On Wed, 14 Jun 2017 00:10:28 +0100 > Salil Mehta <salil.mehta@huawei.com> wrote: > > > +hns3_nic_get_stats64(struct net_device *ndev, struct > rtnl_link_stats64 *stats) > > +{ > > + struct hns3_nic_priv *priv = netdev_priv(ndev); > > + int queue_num = priv->ae_handle->kinfo.num_tqps; > > + u64 tx_bytes = 0; > > + u64 rx_bytes = 0; > > + u64 tx_pkts = 0; > > + u64 rx_pkts = 0; > > + int idx = 0; > unnecessary initialization > > > + > > + for (idx = 0; idx < queue_num; idx++) { > > + tx_bytes += priv->ring_data[idx].ring->stats.tx_bytes; > > + tx_pkts += priv->ring_data[idx].ring->stats.tx_pkts; > > + rx_bytes += > > + priv->ring_data[idx + queue_num].ring- > >stats.rx_bytes; > > + rx_pkts += priv->ring_data[idx + queue_num].ring- > >stats.rx_pkts; > > + } > > + > > Since rx_bytes and other statistics are 64 bit values. You need to use > something to ensure that updates to these values are atomic on 32 bit > platforms. The most common way to handle this is with the > u64_stats_sync > mechanism which is a nop on 64 bit architectures, and uses a seqcount > to do updates on 32 bit CPU's. Sure good point. This has changed in the V4 patch.
Thanks for guiding. Salil
> >
| |