3573 rctl = er32(RCTL); |
3573 rctl = er32(RCTL); |
3574 if (!(adapter->flags2 & FLAG2_NO_DISABLE_RX)) |
3574 if (!(adapter->flags2 & FLAG2_NO_DISABLE_RX)) |
3575 ew32(RCTL, rctl & ~E1000_RCTL_EN); |
3575 ew32(RCTL, rctl & ~E1000_RCTL_EN); |
3576 /* flush and sleep below */ |
3576 /* flush and sleep below */ |
3577 |
3577 |
3578 if (!adapter->ecdev) |
3578 if (!adapter->ecdev) |
3579 netif_stop_queue(netdev); |
3579 netif_stop_queue(netdev); |
3580 |
3580 |
3581 /* disable transmits in the hardware */ |
3581 /* disable transmits in the hardware */ |
3582 tctl = er32(TCTL); |
3582 tctl = er32(TCTL); |
3583 tctl &= ~E1000_TCTL_EN; |
3583 tctl &= ~E1000_TCTL_EN; |
4389 if ((e1000e_enable_tx_pkt_filtering(hw)) && |
4389 if ((e1000e_enable_tx_pkt_filtering(hw)) && |
4390 (adapter->mng_vlan_id != adapter->hw.mng_cookie.vlan_id)) |
4390 (adapter->mng_vlan_id != adapter->hw.mng_cookie.vlan_id)) |
4391 e1000_update_mng_vlan(adapter); |
4391 e1000_update_mng_vlan(adapter); |
4392 |
4392 |
4393 if (link) { |
4393 if (link) { |
4394 if ((adapter->ecdev && !ecdev_get_link(adapter->ecdev)) |
4394 if ((adapter->ecdev && !ecdev_get_link(adapter->ecdev)) |
4395 || (!adapter->ecdev && !netif_carrier_ok(netdev))) { |
4395 || (!adapter->ecdev && !netif_carrier_ok(netdev))) { |
4396 bool txb2b = 1; |
4396 bool txb2b = 1; |
4397 |
4397 |
4398 /* Cancel scheduled suspend requests. */ |
4398 /* Cancel scheduled suspend requests. */ |
4399 pm_runtime_resume(netdev->dev.parent); |
4399 pm_runtime_resume(netdev->dev.parent); |
4487 if (phy->ops.cfg_on_link_up) |
4487 if (phy->ops.cfg_on_link_up) |
4488 phy->ops.cfg_on_link_up(hw); |
4488 phy->ops.cfg_on_link_up(hw); |
4489 |
4489 |
4490 if (adapter->ecdev) |
4490 if (adapter->ecdev) |
4491 ecdev_set_link(adapter->ecdev, 1); |
4491 ecdev_set_link(adapter->ecdev, 1); |
4492 else |
4492 else |
4493 netif_carrier_on(netdev); |
4493 netif_carrier_on(netdev); |
4494 |
4494 |
4495 if (!adapter->ecdev && !test_bit(__E1000_DOWN, &adapter->state)) |
4495 if (!adapter->ecdev && !test_bit(__E1000_DOWN, &adapter->state)) |
4496 mod_timer(&adapter->phy_info_timer, |
4496 mod_timer(&adapter->phy_info_timer, |
4497 round_jiffies(jiffies + 2 * HZ)); |
4497 round_jiffies(jiffies + 2 * HZ)); |
4498 } |
4498 } |
4499 } else { |
4499 } else { |
4500 if ((adapter->ecdev && ecdev_get_link(adapter->ecdev)) |
4500 if ((adapter->ecdev && ecdev_get_link(adapter->ecdev)) |
4501 || (!adapter->ecdev && netif_carrier_ok(netdev))) { |
4501 || (!adapter->ecdev && netif_carrier_ok(netdev))) { |
4502 adapter->link_speed = 0; |
4502 adapter->link_speed = 0; |
4503 adapter->link_duplex = 0; |
4503 adapter->link_duplex = 0; |
4504 /* Link status message must follow this format */ |
4504 /* Link status message must follow this format */ |
4505 printk(KERN_INFO "e1000e: %s NIC Link is Down\n", |
4505 printk(KERN_INFO "e1000e: %s NIC Link is Down\n", |
4535 adapter->gotc_old = adapter->stats.gotc; |
4535 adapter->gotc_old = adapter->stats.gotc; |
4536 spin_unlock(&adapter->stats64_lock); |
4536 spin_unlock(&adapter->stats64_lock); |
4537 |
4537 |
4538 e1000e_update_adaptive(&adapter->hw); |
4538 e1000e_update_adaptive(&adapter->hw); |
4539 |
4539 |
4540 if ((adapter->ecdev && !ecdev_get_link(adapter->ecdev)) |
4540 if ((adapter->ecdev && !ecdev_get_link(adapter->ecdev)) |
4541 || (!adapter->ecdev && (!netif_carrier_ok(netdev) && |
4541 || (!adapter->ecdev && (!netif_carrier_ok(netdev) && |
4542 (e1000_desc_unused(tx_ring) + 1 < tx_ring->count)))) { |
4542 (e1000_desc_unused(tx_ring) + 1 < tx_ring->count)))) { |
4543 /* |
4543 /* |
4544 * We've lost link, so the controller stops DMA, |
4544 * We've lost link, so the controller stops DMA, |
4545 * but we've got queued Tx work that's never going |
4545 * but we've got queued Tx work that's never going |
5765 static void e1000_shutdown(struct pci_dev *pdev) |
5765 static void e1000_shutdown(struct pci_dev *pdev) |
5766 { |
5766 { |
5767 bool wake = false; |
5767 bool wake = false; |
5768 struct net_device *netdev = pci_get_drvdata(pdev); |
5768 struct net_device *netdev = pci_get_drvdata(pdev); |
5769 struct e1000_adapter *adapter = netdev_priv(netdev); |
5769 struct e1000_adapter *adapter = netdev_priv(netdev); |
5770 |
5770 |
5771 if (adapter->ecdev) |
5771 if (adapter->ecdev) |
5772 return; |
5772 return; |
5773 |
5773 |
5774 __e1000_shutdown(pdev, &wake, false); |
5774 __e1000_shutdown(pdev, &wake, false); |
5775 |
5775 |