Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753828AbdFSPsO (ORCPT ); Mon, 19 Jun 2017 11:48:14 -0400 Received: from mail-pf0-f169.google.com ([209.85.192.169]:35279 "EHLO mail-pf0-f169.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752247AbdFSPsL (ORCPT ); Mon, 19 Jun 2017 11:48:11 -0400 Date: Mon, 19 Jun 2017 08:48:01 -0700 From: Stephen Hemminger To: Salil Mehta Cc: , , , , , , , Subject: Re: [PATCH V2 net-next 1/8] net: hns3: Add support of HNS3 Ethernet Driver for hip08 SoC Message-ID: <20170619084801.7920e30d@xeon-e3> In-Reply-To: <20170613231035.494020-2-salil.mehta@huawei.com> References: <20170613231035.494020-1-salil.mehta@huawei.com> <20170613231035.494020-2-salil.mehta@huawei.com> MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1048 Lines: 31 On Wed, 14 Jun 2017 00:10:28 +0100 Salil Mehta 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.