| Submitter | Jeff Kirsher |
|---|---|
| Date | May 11, 2010, 1 a.m. |
| Message ID | <20100511010008.30827.45897.stgit@localhost.localdomain> |
| Download | mbox | patch |
| Permalink | /patch/52260/ |
| State | Accepted |
| Delegated to: | David Miller |
| Headers | show |
Comments
From: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Date: Mon, 10 May 2010 18:00:10 -0700 > From: Bruce Allan <bruce.w.allan@intel.com> > > In MSI-X mode when an IMPI SoL session was active (i.e. the PHY reset was > blocked), the LSC interrupt generated by s/w to start the watchdog which > started the transmitter was not getting fired by the hardware because bit > 24 (the 'other' cause bit) also needed to be set. Without an active SoL > session, the PHY was reset which caused the h/w to fire the LSC interrupt. > > Signed-off-by: Bruce Allan <bruce.w.allan@intel.com> > Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Applied. -- 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
Patch
diff --git a/drivers/net/e1000e/netdev.c b/drivers/net/e1000e/netdev.c index 36473e6..16a03c5 100644 --- a/drivers/net/e1000e/netdev.c +++ b/drivers/net/e1000e/netdev.c @@ -3220,7 +3220,11 @@ int e1000e_up(struct e1000_adapter *adapter) netif_wake_queue(adapter->netdev); /* fire a link change interrupt to start the watchdog */ - ew32(ICS, E1000_ICS_LSC); + if (adapter->msix_entries) + ew32(ICS, E1000_ICS_LSC | E1000_ICR_OTHER); + else + ew32(ICS, E1000_ICS_LSC); + return 0; } @@ -3537,7 +3541,10 @@ static int e1000_open(struct net_device *netdev) pm_runtime_put(&pdev->dev); /* fire a link status change interrupt to start the watchdog */ - ew32(ICS, E1000_ICS_LSC); + if (adapter->msix_entries) + ew32(ICS, E1000_ICS_LSC | E1000_ICR_OTHER); + else + ew32(ICS, E1000_ICS_LSC); return 0;