From patchwork Mon Jun 20 06:07:46 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eric Dumazet X-Patchwork-Id: 101035 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 7DB70B6FE4 for ; Mon, 20 Jun 2011 16:08:01 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752688Ab1FTGH4 (ORCPT ); Mon, 20 Jun 2011 02:07:56 -0400 Received: from mail-ww0-f44.google.com ([74.125.82.44]:60277 "EHLO mail-ww0-f44.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751447Ab1FTGH4 (ORCPT ); Mon, 20 Jun 2011 02:07:56 -0400 Received: by wwe5 with SMTP id 5so2192440wwe.1 for ; Sun, 19 Jun 2011 23:07:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:subject:from:to:cc:content-type:date:message-id :mime-version:x-mailer:content-transfer-encoding; bh=j7nnwdhhxzyt5z5RZHbs48BqbYeChARBYHqB8oH2D4w=; b=qvlTf5bwKLM/4bD8vJ+LVixlF0VuUEjZfZFWPZM1NwaIbkJu3yEeMwGr62IzZHVQw7 F91Wx3O7G275Acga0Z/INA3inZNWLLCOPNEmqg1p09tm0fs2XbFAPHWnLWfv0NZVWgHu QrKQ5GJ10YHC9BXz1/ObhdouVG7ddrTxSqXgY= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=subject:from:to:cc:content-type:date:message-id:mime-version :x-mailer:content-transfer-encoding; b=VOYRuMg3N5opFjRR7FHa0umqVJdN6pX8QviicGevuk0lXbqMM5zNeRSuJfXzkfoWs/ 1jSw1lz2sAIzyXyCFn6NUUwG2vALyYWBD94lyuGCX/4ZdZ73aIZqargzSQqoAJyEqsKG H5I10V+yAQ3MmVWyYhRVifLrWj63IcAvHAUgQ= Received: by 10.216.35.76 with SMTP id t54mr1558609wea.26.1308550074733; Sun, 19 Jun 2011 23:07:54 -0700 (PDT) Received: from [10.150.51.218] (gw0.net.jmsp.net [212.23.165.14]) by mx.google.com with ESMTPS id fl19sm2900924wbb.66.2011.06.19.23.07.53 (version=SSLv3 cipher=OTHER); Sun, 19 Jun 2011 23:07:54 -0700 (PDT) Subject: [PATCH net-next-2.6] myricom: remove stats_lock From: Eric Dumazet To: David Miller Cc: netdev , Andrew Gallatin , Brice Goglin , Stephen Hemminger Date: Mon, 20 Jun 2011 08:07:46 +0200 Message-ID: <1308550066.3539.129.camel@edumazet-laptop> Mime-Version: 1.0 X-Mailer: Evolution 2.32.2 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org stats_lock is non useless, lets remove it. Also, ndo_get_stats64() doesnt have to clear the stats, caller takes care of this. Note: folding 32bit fields in 64bit one is problematic when one of 32bit values wraps : SNMP reader will see a ~2^32 back change in a 64bit value. A future patch should fix this. Signed-off-by: Eric Dumazet CC: Stephen Hemminger CC: Andrew Gallatin CC: Brice Goglin Acked-by: Jon Mason --- drivers/net/myri10ge/myri10ge.c | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/drivers/net/myri10ge/myri10ge.c b/drivers/net/myri10ge/myri10ge.c index 04e10f4..3e89a84 100644 --- a/drivers/net/myri10ge/myri10ge.c +++ b/drivers/net/myri10ge/myri10ge.c @@ -210,7 +210,6 @@ struct myri10ge_priv { int big_bytes; int max_intr_slots; struct net_device *dev; - spinlock_t stats_lock; u8 __iomem *sram; int sram_size; unsigned long board_span; @@ -1837,6 +1836,7 @@ myri10ge_get_ethtool_stats(struct net_device *netdev, int i; /* force stats update */ + memset(&link_stats, 0, sizeof(link_stats)); (void)myri10ge_get_stats(netdev, &link_stats); for (i = 0; i < MYRI10GE_NET_STATS_LEN; i++) data[i] = ((u64 *)&link_stats)[i]; @@ -2981,12 +2981,10 @@ drop: static struct rtnl_link_stats64 *myri10ge_get_stats(struct net_device *dev, struct rtnl_link_stats64 *stats) { - struct myri10ge_priv *mgp = netdev_priv(dev); - struct myri10ge_slice_netstats *slice_stats; + const struct myri10ge_priv *mgp = netdev_priv(dev); + const struct myri10ge_slice_netstats *slice_stats; int i; - spin_lock(&mgp->stats_lock); - memset(stats, 0, sizeof(*stats)); for (i = 0; i < mgp->num_slices; i++) { slice_stats = &mgp->ss[i].stats; stats->rx_packets += slice_stats->rx_packets; @@ -2996,7 +2994,6 @@ static struct rtnl_link_stats64 *myri10ge_get_stats(struct net_device *dev, stats->rx_dropped += slice_stats->rx_dropped; stats->tx_dropped += slice_stats->tx_dropped; } - spin_unlock(&mgp->stats_lock); return stats; } @@ -3966,7 +3963,6 @@ static int myri10ge_probe(struct pci_dev *pdev, const struct pci_device_id *ent) setup_timer(&mgp->watchdog_timer, myri10ge_watchdog_timer, (unsigned long)mgp); - spin_lock_init(&mgp->stats_lock); SET_ETHTOOL_OPS(netdev, &myri10ge_ethtool_ops); INIT_WORK(&mgp->watchdog_work, myri10ge_watchdog); status = register_netdev(netdev);