From patchwork Thu Jan 29 16:39:23 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steve Glendinning X-Patchwork-Id: 21022 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.176.167]) by ozlabs.org (Postfix) with ESMTP id 999DFDE052 for ; Fri, 30 Jan 2009 03:39:35 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753320AbZA2QjS (ORCPT ); Thu, 29 Jan 2009 11:39:18 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1754239AbZA2QjQ (ORCPT ); Thu, 29 Jan 2009 11:39:16 -0500 Received: from drevil.shawell.net ([86.54.240.115]:45941 "EHLO drevil2.shawell.net" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754136AbZA2QjP (ORCPT ); Thu, 29 Jan 2009 11:39:15 -0500 Received: from kensington.shawell.net (unknown [10.0.20.15]) by drevil2.shawell.net (Postfix) with ESMTP id 2079037A4A; Thu, 29 Jan 2009 16:39:10 +0000 (GMT) Received: from localhost.localdomain (kensington.shawell.net [127.0.0.1]) by kensington.shawell.net (Postfix) with ESMTP id 70C8D4A4107; Thu, 29 Jan 2009 16:39:23 +0000 (GMT) From: Steve Glendinning To: netdev@vger.kernel.org Cc: David Miller , Ian Saturley , Steve Glendinning Subject: [PATCH 1/1] smsc9420: fix interrupt signalling test failures Date: Thu, 29 Jan 2009 16:39:23 +0000 Message-Id: <1233247163-4317-2-git-send-email-steve.glendinning@smsc.com> X-Mailer: git-send-email 1.6.0.6 In-Reply-To: <1233247163-4317-1-git-send-email-steve.glendinning@smsc.com> References: <1233247163-4317-1-git-send-email-steve.glendinning@smsc.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org smsc9420 performs an interrupt signalling test when the interface is brought up. The current code mistakenly sets its test flag to false AFTER enabling the software interrupt source, making failure quite likely. This patch changes the code to set the test flag BEFORE enabling interrupts. I've also removed an smp_wmb because the following spinlock provides an implicit memory barrier. Signed-off-by: Steve Glendinning --- drivers/net/smsc9420.c | 3 +-- 1 files changed, 1 insertions(+), 2 deletions(-) diff --git a/drivers/net/smsc9420.c b/drivers/net/smsc9420.c index c14a4c6..d801900 100644 --- a/drivers/net/smsc9420.c +++ b/drivers/net/smsc9420.c @@ -1378,6 +1378,7 @@ static int smsc9420_open(struct net_device *dev) /* test the IRQ connection to the ISR */ smsc_dbg(IFUP, "Testing ISR using IRQ %d", dev->irq); + pd->software_irq_signal = false; spin_lock_irqsave(&pd->int_lock, flags); /* configure interrupt deassertion timer and enable interrupts */ @@ -1393,8 +1394,6 @@ static int smsc9420_open(struct net_device *dev) smsc9420_pci_flush_write(pd); timeout = 1000; - pd->software_irq_signal = false; - smp_wmb(); while (timeout--) { if (pd->software_irq_signal) break;