Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755468AbYJCAiw (ORCPT ); Thu, 2 Oct 2008 20:38:52 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1754044AbYJCAik (ORCPT ); Thu, 2 Oct 2008 20:38:40 -0400 Received: from www.tglx.de ([62.245.132.106]:45325 "EHLO www.tglx.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753891AbYJCAij (ORCPT ); Thu, 2 Oct 2008 20:38:39 -0400 Date: Fri, 3 Oct 2008 02:38:14 +0200 (CEST) From: Thomas Gleixner To: Jesse Brandeburg cc: torvalds@linux-foundation.org, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, arjan@linux.intel.com, airlied@gmail.com, davem@davemloft.net, jeff@garzik.org Subject: Re: [PATCH 2.6.27-rc8 4/6] e1000e: drop stats lock In-Reply-To: <20081002233335.12556.10042.stgit@jbrandeb-bw.jf.intel.com> Message-ID: References: <20081002233314.12556.49143.stgit@jbrandeb-bw.jf.intel.com> <20081002233335.12556.10042.stgit@jbrandeb-bw.jf.intel.com> User-Agent: Alpine 1.10 (LFD 962 2008-03-14) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3575 Lines: 104 On Thu, 2 Oct 2008, Jesse Brandeburg wrote: > the stats lock is left over from e1000, e1000e no longer > has the adjust tbi stats function that required the addition > of the stats lock to begin with. > > adding a mutex to acquire_swflag helped catch this one too. > > Signed-off-by: Jesse Brandeburg > CC: Thomas Gleixner Acked-by: Thomas Gleixner > --- > > drivers/net/e1000e/e1000.h | 1 - > drivers/net/e1000e/netdev.c | 18 ------------------ > 2 files changed, 0 insertions(+), 19 deletions(-) > > diff --git a/drivers/net/e1000e/e1000.h b/drivers/net/e1000e/e1000.h > index 8087bda..5ea6b60 100644 > --- a/drivers/net/e1000e/e1000.h > +++ b/drivers/net/e1000e/e1000.h > @@ -257,7 +257,6 @@ struct e1000_adapter { > struct net_device *netdev; > struct pci_dev *pdev; > struct net_device_stats net_stats; > - spinlock_t stats_lock; /* prevent concurrent stats updates */ > > /* structs defined in e1000_hw.h */ > struct e1000_hw hw; > diff --git a/drivers/net/e1000e/netdev.c b/drivers/net/e1000e/netdev.c > index 835b692..01e9558 100644 > --- a/drivers/net/e1000e/netdev.c > +++ b/drivers/net/e1000e/netdev.c > @@ -2600,8 +2600,6 @@ static int __devinit e1000_sw_init(struct e1000_adapter *adapter) > /* Explicitly disable IRQ since the NIC can be in any state. */ > e1000_irq_disable(adapter); > > - spin_lock_init(&adapter->stats_lock); > - > set_bit(__E1000_DOWN, &adapter->state); > return 0; > > @@ -2953,7 +2951,6 @@ void e1000e_update_stats(struct e1000_adapter *adapter) > { > struct e1000_hw *hw = &adapter->hw; > struct pci_dev *pdev = adapter->pdev; > - unsigned long irq_flags; > > /* > * Prevent stats update while adapter is being reset, or if the pci > @@ -2964,14 +2961,6 @@ void e1000e_update_stats(struct e1000_adapter *adapter) > if (pci_channel_offline(pdev)) > return; > > - spin_lock_irqsave(&adapter->stats_lock, irq_flags); > - > - /* > - * these counters are modified from e1000_adjust_tbi_stats, > - * called from the interrupt context, so they must only > - * be written while holding adapter->stats_lock > - */ > - > adapter->stats.crcerrs += er32(CRCERRS); > adapter->stats.gprc += er32(GPRC); > adapter->stats.gorc += er32(GORCL); > @@ -3046,8 +3035,6 @@ void e1000e_update_stats(struct e1000_adapter *adapter) > adapter->stats.mgptc += er32(MGTPTC); > adapter->stats.mgprc += er32(MGTPRC); > adapter->stats.mgpdc += er32(MGTPDC); > - > - spin_unlock_irqrestore(&adapter->stats_lock, irq_flags); > } > > /** > @@ -3059,9 +3046,6 @@ static void e1000_phy_read_status(struct e1000_adapter *adapter) > struct e1000_hw *hw = &adapter->hw; > struct e1000_phy_regs *phy = &adapter->phy_regs; > int ret_val; > - unsigned long irq_flags; > - > - spin_lock_irqsave(&adapter->stats_lock, irq_flags); > > if ((er32(STATUS) & E1000_STATUS_LU) && > (adapter->hw.phy.media_type == e1000_media_type_copper)) { > @@ -3092,8 +3076,6 @@ static void e1000_phy_read_status(struct e1000_adapter *adapter) > phy->stat1000 = 0; > phy->estatus = (ESTATUS_1000_TFULL | ESTATUS_1000_THALF); > } > - > - spin_unlock_irqrestore(&adapter->stats_lock, irq_flags); > } > > static void e1000_print_link_info(struct e1000_adapter *adapter) > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/