diff --git a/devices/e1000e/netdev-2.6.32-ethercat.c b/devices/e1000e/netdev-2.6.32-ethercat.c index 51a5bd67..d0022b53 100644 --- a/devices/e1000e/netdev-2.6.32-ethercat.c +++ b/devices/e1000e/netdev-2.6.32-ethercat.c @@ -1190,10 +1190,10 @@ static irqreturn_t e1000_intr_msi(int irq, void *data) struct e1000_hw *hw = &adapter->hw; u32 icr = er32(ICR); - if (adapter->ecdev) { - int ec_work_done = 0; - adapter->clean_rx(adapter, &ec_work_done, 100); - e1000_clean_tx_irq(adapter); + if (adapter->ecdev) { + int ec_work_done = 0; + adapter->clean_rx(adapter, &ec_work_done, 100); + e1000_clean_tx_irq(adapter); return IRQ_HANDLED; } /* @@ -1294,10 +1294,10 @@ static irqreturn_t e1000_intr(int irq, void *data) mod_timer(&adapter->watchdog_timer, jiffies + 1); } - if (adapter->ecdev) { - int ec_work_done = 0; - adapter->clean_rx(adapter, &ec_work_done, 100); - e1000_clean_tx_irq(adapter); + if (adapter->ecdev) { + int ec_work_done = 0; + adapter->clean_rx(adapter, &ec_work_done, 100); + e1000_clean_tx_irq(adapter); return IRQ_HANDLED; } @@ -1377,9 +1377,9 @@ static irqreturn_t e1000_intr_msix_rx(int irq, void *data) adapter->rx_ring->set_itr = 0; } - if (adapter->ecdev) { - int ec_work_done = 0; - adapter->clean_rx(adapter, &ec_work_done, 100); + if (adapter->ecdev) { + int ec_work_done = 0; + adapter->clean_rx(adapter, &ec_work_done, 100); } else { if (napi_schedule_prep(&adapter->napi)) { adapter->total_rx_bytes = 0; @@ -3249,11 +3249,13 @@ static int e1000_open(struct net_device *netdev) /* From here on the code is the same as e1000e_up() */ clear_bit(__E1000_DOWN, &adapter->state); - napi_enable(&adapter->napi); + if (!adapter->ecdev) { + napi_enable(&adapter->napi); - e1000_irq_enable(adapter); + e1000_irq_enable(adapter); - netif_start_queue(netdev); + netif_start_queue(netdev); + } /* fire a link status change interrupt to start the watchdog */ ew32(ICS, E1000_ICS_LSC); diff --git a/devices/e1000e/netdev-2.6.33-ethercat.c b/devices/e1000e/netdev-2.6.33-ethercat.c index 17674b51..119b0b6c 100644 --- a/devices/e1000e/netdev-2.6.33-ethercat.c +++ b/devices/e1000e/netdev-2.6.33-ethercat.c @@ -3237,11 +3237,13 @@ static int e1000_open(struct net_device *netdev) /* From here on the code is the same as e1000e_up() */ clear_bit(__E1000_DOWN, &adapter->state); - napi_enable(&adapter->napi); + if (!adapter->ecdev) { + napi_enable(&adapter->napi); - e1000_irq_enable(adapter); + e1000_irq_enable(adapter); - netif_start_queue(netdev); + netif_start_queue(netdev); + } /* fire a link status change interrupt to start the watchdog */ ew32(ICS, E1000_ICS_LSC); diff --git a/devices/e1000e/netdev-2.6.34-ethercat.c b/devices/e1000e/netdev-2.6.34-ethercat.c index 511ca703..140c0b46 100644 --- a/devices/e1000e/netdev-2.6.34-ethercat.c +++ b/devices/e1000e/netdev-2.6.34-ethercat.c @@ -24,6 +24,8 @@ e1000-devel Mailing List Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497 + vim: noexpandtab + *******************************************************************************/ #include @@ -1187,10 +1189,10 @@ static irqreturn_t e1000_intr_msi(int irq, void *data) struct e1000_hw *hw = &adapter->hw; u32 icr = er32(ICR); - if (adapter->ecdev) { - int ec_work_done = 0; - adapter->clean_rx(adapter, &ec_work_done, 100); - e1000_clean_tx_irq(adapter); + if (adapter->ecdev) { + int ec_work_done = 0; + adapter->clean_rx(adapter, &ec_work_done, 100); + e1000_clean_tx_irq(adapter); return IRQ_HANDLED; } /* @@ -1291,10 +1293,10 @@ static irqreturn_t e1000_intr(int irq, void *data) mod_timer(&adapter->watchdog_timer, jiffies + 1); } - if (adapter->ecdev) { - int ec_work_done = 0; - adapter->clean_rx(adapter, &ec_work_done, 100); - e1000_clean_tx_irq(adapter); + if (adapter->ecdev) { + int ec_work_done = 0; + adapter->clean_rx(adapter, &ec_work_done, 100); + e1000_clean_tx_irq(adapter); return IRQ_HANDLED; } @@ -1374,9 +1376,9 @@ static irqreturn_t e1000_intr_msix_rx(int irq, void *data) adapter->rx_ring->set_itr = 0; } - if (adapter->ecdev) { - int ec_work_done = 0; - adapter->clean_rx(adapter, &ec_work_done, 100); + if (adapter->ecdev) { + int ec_work_done = 0; + adapter->clean_rx(adapter, &ec_work_done, 100); } else { if (napi_schedule_prep(&adapter->napi)) { adapter->total_rx_bytes = 0; @@ -3217,11 +3219,13 @@ static int e1000_open(struct net_device *netdev) /* From here on the code is the same as e1000e_up() */ clear_bit(__E1000_DOWN, &adapter->state); - napi_enable(&adapter->napi); + if (!adapter->ecdev) { + napi_enable(&adapter->napi); - e1000_irq_enable(adapter); + e1000_irq_enable(adapter); - netif_start_queue(netdev); + netif_start_queue(netdev); + } /* fire a link status change interrupt to start the watchdog */ ew32(ICS, E1000_ICS_LSC); diff --git a/devices/e1000e/netdev-2.6.35-ethercat.c b/devices/e1000e/netdev-2.6.35-ethercat.c index 5ea0a870..564603fc 100644 --- a/devices/e1000e/netdev-2.6.35-ethercat.c +++ b/devices/e1000e/netdev-2.6.35-ethercat.c @@ -24,6 +24,8 @@ e1000-devel Mailing List Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497 + vim: noexpandtab + *******************************************************************************/ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt @@ -1532,10 +1534,10 @@ static irqreturn_t e1000_intr_msi(int irq, void *data) struct e1000_hw *hw = &adapter->hw; u32 icr = er32(ICR); - if (adapter->ecdev) { - int ec_work_done = 0; - adapter->clean_rx(adapter, &ec_work_done, 100); - e1000_clean_tx_irq(adapter); + if (adapter->ecdev) { + int ec_work_done = 0; + adapter->clean_rx(adapter, &ec_work_done, 100); + e1000_clean_tx_irq(adapter); return IRQ_HANDLED; } /* @@ -1636,10 +1638,10 @@ static irqreturn_t e1000_intr(int irq, void *data) mod_timer(&adapter->watchdog_timer, jiffies + 1); } - if (adapter->ecdev) { - int ec_work_done = 0; - adapter->clean_rx(adapter, &ec_work_done, 100); - e1000_clean_tx_irq(adapter); + if (adapter->ecdev) { + int ec_work_done = 0; + adapter->clean_rx(adapter, &ec_work_done, 100); + e1000_clean_tx_irq(adapter); return IRQ_HANDLED; } @@ -1719,9 +1721,9 @@ static irqreturn_t e1000_intr_msix_rx(int irq, void *data) adapter->rx_ring->set_itr = 0; } - if (adapter->ecdev) { - int ec_work_done = 0; - adapter->clean_rx(adapter, &ec_work_done, 100); + if (adapter->ecdev) { + int ec_work_done = 0; + adapter->clean_rx(adapter, &ec_work_done, 100); } else { if (napi_schedule_prep(&adapter->napi)) { adapter->total_rx_bytes = 0; @@ -3270,20 +3272,20 @@ int e1000e_up(struct e1000_adapter *adapter) if (!adapter->ecdev) { napi_enable(&adapter->napi); - } + } if (adapter->msix_entries) e1000_configure_msix(adapter); if (!adapter->ecdev) { - e1000_irq_enable(adapter); + e1000_irq_enable(adapter); - netif_wake_queue(adapter->netdev); + netif_wake_queue(adapter->netdev); - /* fire a link change interrupt to start the watchdog */ - if (adapter->msix_entries) - ew32(ICS, E1000_ICS_LSC | E1000_ICR_OTHER); - else - ew32(ICS, E1000_ICS_LSC); + /* fire a link change interrupt to start the watchdog */ + if (adapter->msix_entries) + ew32(ICS, E1000_ICS_LSC | E1000_ICR_OTHER); + else + ew32(ICS, E1000_ICS_LSC); } return 0; @@ -3609,11 +3611,13 @@ static int e1000_open(struct net_device *netdev) /* From here on the code is the same as e1000e_up() */ clear_bit(__E1000_DOWN, &adapter->state); - napi_enable(&adapter->napi); + if (!adapter->ecdev) { + napi_enable(&adapter->napi); - e1000_irq_enable(adapter); + e1000_irq_enable(adapter); - netif_start_queue(netdev); + netif_start_queue(netdev); + } adapter->idle_check = true; pm_runtime_put(&pdev->dev); @@ -4031,7 +4035,7 @@ static void e1000_watchdog_task(struct work_struct *work) link = e1000e_has_link(adapter); if ((adapter->ecdev && (ecdev_get_link(adapter->ecdev)) && link) - || (!adapter->ecdev && (netif_carrier_ok(netdev)) && link)) { + || (!adapter->ecdev && (netif_carrier_ok(netdev)) && link)) { /* Cancel scheduled suspend requests. */ pm_runtime_resume(netdev->dev.parent); @@ -5281,9 +5285,9 @@ static int e1000_suspend(struct device *dev) struct net_device *netdev = pci_get_drvdata(pdev); struct e1000_adapter *adapter = netdev_priv(netdev); - if (adapter->ecdev) { - return -EBUSY; - } + if (adapter->ecdev) { + return -EBUSY; + } retval = __e1000_shutdown(pdev, &wake, false); if (!retval) @@ -5298,9 +5302,9 @@ static int e1000_resume(struct device *dev) struct net_device *netdev = pci_get_drvdata(pdev); struct e1000_adapter *adapter = netdev_priv(netdev); - if (adapter->ecdev) { - return -EBUSY; - } + if (adapter->ecdev) { + return -EBUSY; + } if (e1000e_pm_ready(adapter)) adapter->idle_check = true; diff --git a/devices/e1000e/netdev-2.6.37-ethercat.c b/devices/e1000e/netdev-2.6.37-ethercat.c index 21be7963..a41e1990 100644 --- a/devices/e1000e/netdev-2.6.37-ethercat.c +++ b/devices/e1000e/netdev-2.6.37-ethercat.c @@ -24,6 +24,8 @@ e1000-devel Mailing List Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497 + vim: noexpandtab + *******************************************************************************/ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt @@ -1537,10 +1539,10 @@ static irqreturn_t e1000_intr_msi(int irq, void *data) struct e1000_hw *hw = &adapter->hw; u32 icr = er32(ICR); - if (adapter->ecdev) { - int ec_work_done = 0; - adapter->clean_rx(adapter, &ec_work_done, 100); - e1000_clean_tx_irq(adapter); + if (adapter->ecdev) { + int ec_work_done = 0; + adapter->clean_rx(adapter, &ec_work_done, 100); + e1000_clean_tx_irq(adapter); return IRQ_HANDLED; } /* @@ -1641,10 +1643,10 @@ static irqreturn_t e1000_intr(int irq, void *data) mod_timer(&adapter->watchdog_timer, jiffies + 1); } - if (adapter->ecdev) { - int ec_work_done = 0; - adapter->clean_rx(adapter, &ec_work_done, 100); - e1000_clean_tx_irq(adapter); + if (adapter->ecdev) { + int ec_work_done = 0; + adapter->clean_rx(adapter, &ec_work_done, 100); + e1000_clean_tx_irq(adapter); return IRQ_HANDLED; } @@ -1724,9 +1726,9 @@ static irqreturn_t e1000_intr_msix_rx(int irq, void *data) adapter->rx_ring->set_itr = 0; } - if (adapter->ecdev) { - int ec_work_done = 0; - adapter->clean_rx(adapter, &ec_work_done, 100); + if (adapter->ecdev) { + int ec_work_done = 0; + adapter->clean_rx(adapter, &ec_work_done, 100); } else { if (napi_schedule_prep(&adapter->napi)) { adapter->total_rx_bytes = 0; @@ -3703,17 +3705,17 @@ static int e1000_open(struct net_device *netdev) e1000_irq_enable(adapter); netif_start_queue(netdev); - - adapter->idle_check = true; - pm_runtime_put(&pdev->dev); - - /* fire a link status change interrupt to start the watchdog */ - if (adapter->msix_entries) - ew32(ICS, E1000_ICS_LSC | E1000_ICR_OTHER); - else - ew32(ICS, E1000_ICS_LSC); } + adapter->idle_check = true; + pm_runtime_put(&pdev->dev); + + /* fire a link status change interrupt to start the watchdog */ + if (adapter->msix_entries) + ew32(ICS, E1000_ICS_LSC | E1000_ICR_OTHER); + else + ew32(ICS, E1000_ICS_LSC); + return 0; err_req_irq: diff --git a/devices/e1000e/netdev-3.2-ethercat.c b/devices/e1000e/netdev-3.2-ethercat.c index 5dc78176..d0a4ef94 100644 --- a/devices/e1000e/netdev-3.2-ethercat.c +++ b/devices/e1000e/netdev-3.2-ethercat.c @@ -24,6 +24,8 @@ e1000-devel Mailing List Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497 + vim: noexpandtab + *******************************************************************************/ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt @@ -984,7 +986,7 @@ static bool e1000_clean_rx_irq(struct e1000_adapter *adapter, } else { e1000_receive_skb(adapter, netdev, skb, staterr, rx_desc->wb.upper.vlan); - } + } next_desc: rx_desc->wb.upper.status_error &= cpu_to_le32(~0xFF); @@ -1065,7 +1067,9 @@ static void e1000_print_hw_hang(struct work_struct *work) } /* Real hang detected */ adapter->tx_hang_recheck = false; - netif_stop_queue(netdev); + if (!adapter->ecdev) { + netif_stop_queue(netdev); + } e1e_rphy(hw, PHY_STATUS, &phy_status); e1e_rphy(hw, PHY_1000T_STATUS, &phy_1000t_status); @@ -1664,10 +1668,10 @@ static irqreturn_t e1000_intr_msi(int irq, void *data) struct e1000_hw *hw = &adapter->hw; u32 icr = er32(ICR); - if (adapter->ecdev) { - int ec_work_done = 0; - adapter->clean_rx(adapter, &ec_work_done, 100); - e1000_clean_tx_irq(adapter); + if (adapter->ecdev) { + int ec_work_done = 0; + adapter->clean_rx(adapter, &ec_work_done, 100); + e1000_clean_tx_irq(adapter); return IRQ_HANDLED; } /* @@ -1768,10 +1772,10 @@ static irqreturn_t e1000_intr(int irq, void *data) mod_timer(&adapter->watchdog_timer, jiffies + 1); } - if (adapter->ecdev) { - int ec_work_done = 0; - adapter->clean_rx(adapter, &ec_work_done, 100); - e1000_clean_tx_irq(adapter); + if (adapter->ecdev) { + int ec_work_done = 0; + adapter->clean_rx(adapter, &ec_work_done, 100); + e1000_clean_tx_irq(adapter); return IRQ_HANDLED; } @@ -1851,9 +1855,9 @@ static irqreturn_t e1000_intr_msix_rx(int irq, void *data) adapter->rx_ring->set_itr = 0; } - if (adapter->ecdev) { - int ec_work_done = 0; - adapter->clean_rx(adapter, &ec_work_done, 100); + if (adapter->ecdev) { + int ec_work_done = 0; + adapter->clean_rx(adapter, &ec_work_done, 100); } else { if (napi_schedule_prep(&adapter->napi)) { adapter->total_rx_bytes = 0; @@ -3871,20 +3875,23 @@ static int e1000_open(struct net_device *netdev) napi_enable(&adapter->napi); e1000_irq_enable(adapter); + } adapter->tx_hang_recheck = false; + + if (!adapter->ecdev) { netif_start_queue(netdev); - - adapter->idle_check = true; - pm_runtime_put(&pdev->dev); - - /* fire a link status change interrupt to start the watchdog */ - if (adapter->msix_entries) - ew32(ICS, E1000_ICS_LSC | E1000_ICR_OTHER); - else - ew32(ICS, E1000_ICS_LSC); } + adapter->idle_check = true; + pm_runtime_put(&pdev->dev); + + /* fire a link status change interrupt to start the watchdog */ + if (adapter->msix_entries) + ew32(ICS, E1000_ICS_LSC | E1000_ICR_OTHER); + else + ew32(ICS, E1000_ICS_LSC); + return 0; err_req_irq: