From b0564237b24c688439c36003d28bf401e93bb8da Mon Sep 17 00:00:00 2001 From: Florian Pose Date: Fri, 11 Jan 2013 15:07:11 +0100 Subject: [PATCH] Fixed link detection in older e1000e drivers. --- devices/e1000e/netdev-2.6.37-ethercat.c | 9 ++++++--- devices/e1000e/netdev-3.2-ethercat.c | 9 ++++++--- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/devices/e1000e/netdev-2.6.37-ethercat.c b/devices/e1000e/netdev-2.6.37-ethercat.c index a41e1990..c8b3a954 100644 --- a/devices/e1000e/netdev-2.6.37-ethercat.c +++ b/devices/e1000e/netdev-2.6.37-ethercat.c @@ -5768,14 +5768,16 @@ void ec_poll(struct net_device *netdev) struct e1000_adapter *adapter = netdev_priv(netdev); if (jiffies - adapter->ec_watchdog_jiffies >= 2 * HZ) { - e1000_watchdog((unsigned long) adapter); + struct e1000_hw *hw = &adapter->hw; + hw->mac.get_link_status = true; + e1000_watchdog_task(&adapter->watchdog_task); adapter->ec_watchdog_jiffies = jiffies; } #ifdef CONFIG_PCI_MSI - e1000_intr_msi(0,netdev); + e1000_intr_msi(0, netdev); #else - e1000_intr(0,netdev); + e1000_intr(0, netdev); #endif } @@ -6068,6 +6070,7 @@ static int __devinit e1000_probe(struct pci_dev *pdev, adapter->ecdev = ecdev_offer(netdev, ec_poll, THIS_MODULE); if (adapter->ecdev) { + adapter->ec_watchdog_jiffies = jiffies; if (ecdev_open(adapter->ecdev)) { ecdev_withdraw(adapter->ecdev); goto err_register; diff --git a/devices/e1000e/netdev-3.2-ethercat.c b/devices/e1000e/netdev-3.2-ethercat.c index 0f48997e..c5c7bf8d 100644 --- a/devices/e1000e/netdev-3.2-ethercat.c +++ b/devices/e1000e/netdev-3.2-ethercat.c @@ -6050,14 +6050,16 @@ void ec_poll(struct net_device *netdev) struct e1000_adapter *adapter = netdev_priv(netdev); if (jiffies - adapter->ec_watchdog_jiffies >= 2 * HZ) { - e1000_watchdog((unsigned long) adapter); + struct e1000_hw *hw = &adapter->hw; + hw->mac.get_link_status = true; + e1000_watchdog_task(&adapter->watchdog_task); adapter->ec_watchdog_jiffies = jiffies; } #ifdef CONFIG_PCI_MSI - e1000_intr_msi(0,netdev); + e1000_intr_msi(0, netdev); #else - e1000_intr(0,netdev); + e1000_intr(0, netdev); #endif } @@ -6359,6 +6361,7 @@ static int __devinit e1000_probe(struct pci_dev *pdev, adapter->ecdev = ecdev_offer(netdev, ec_poll, THIS_MODULE); if (adapter->ecdev) { + adapter->ec_watchdog_jiffies = jiffies; if (ecdev_open(adapter->ecdev)) { ecdev_withdraw(adapter->ecdev); goto err_register;