From: Michael Brown Date: Wed, 4 May 2011 18:20:19 +0000 (+0100) Subject: [forcedeth] Ensure that IRQ line is deasserted when disabling interrupts X-Git-Tag: v1.20.1~2128 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b6cad3c0eb72e99d8ae5e6944ec8e9b7c5acecfa;p=thirdparty%2Fipxe.git [forcedeth] Ensure that IRQ line is deasserted when disabling interrupts Signed-off-by: Michael Brown --- diff --git a/src/drivers/net/forcedeth.c b/src/drivers/net/forcedeth.c index c34a42961..5d0137e1c 100644 --- a/src/drivers/net/forcedeth.c +++ b/src/drivers/net/forcedeth.c @@ -61,6 +61,7 @@ FILE_LICENCE ( GPL2_OR_LATER ); static inline void pci_push ( void *ioaddr ) { /* force out pending posted writes */ + wmb(); readl ( ioaddr ); } @@ -334,6 +335,7 @@ nv_disable_hw_interrupts ( struct forcedeth_private *priv ) void *ioaddr = priv->mmio_addr; writel ( 0, ioaddr + NvRegIrqMask ); + pci_push ( ioaddr ); } static void @@ -764,7 +766,6 @@ forcedeth_open ( struct net_device *netdev ) ioaddr + NvRegPowerState ); nv_disable_hw_interrupts ( priv ); - pci_push ( ioaddr ); writel ( NVREG_MIISTAT_MASK_ALL, ioaddr + NvRegMIIStatus ); writel ( NVREG_IRQSTAT_MASK, ioaddr + NvRegIrqStatus ); pci_push ( ioaddr ); @@ -1018,7 +1019,6 @@ static void forcedeth_close ( struct net_device *netdev ) { struct forcedeth_private *priv = netdev_priv ( netdev ); - void *ioaddr = priv->mmio_addr; DBGP ( "forcedeth_close\n" ); @@ -1028,7 +1028,6 @@ forcedeth_close ( struct net_device *netdev ) /* Disable interrupts on the nic or we will lock up */ nv_disable_hw_interrupts ( priv ); - pci_push ( ioaddr ); nv_free_rxtx_resources ( priv );