3412 /* disable receives in the hardware */ |
3412 /* disable receives in the hardware */ |
3413 rctl = er32(RCTL); |
3413 rctl = er32(RCTL); |
3414 ew32(RCTL, rctl & ~E1000_RCTL_EN); |
3414 ew32(RCTL, rctl & ~E1000_RCTL_EN); |
3415 /* flush and sleep below */ |
3415 /* flush and sleep below */ |
3416 |
3416 |
3417 if (!adapter->ecdev) |
3417 if (!adapter->ecdev) |
3418 netif_stop_queue(netdev); |
3418 netif_stop_queue(netdev); |
3419 |
3419 |
3420 /* disable transmits in the hardware */ |
3420 /* disable transmits in the hardware */ |
3421 tctl = er32(TCTL); |
3421 tctl = er32(TCTL); |
3422 tctl &= ~E1000_TCTL_EN; |
3422 tctl &= ~E1000_TCTL_EN; |
4234 if ((e1000e_enable_tx_pkt_filtering(hw)) && |
4234 if ((e1000e_enable_tx_pkt_filtering(hw)) && |
4235 (adapter->mng_vlan_id != adapter->hw.mng_cookie.vlan_id)) |
4235 (adapter->mng_vlan_id != adapter->hw.mng_cookie.vlan_id)) |
4236 e1000_update_mng_vlan(adapter); |
4236 e1000_update_mng_vlan(adapter); |
4237 |
4237 |
4238 if (link) { |
4238 if (link) { |
4239 if ((adapter->ecdev && !ecdev_get_link(adapter->ecdev)) |
4239 if ((adapter->ecdev && !ecdev_get_link(adapter->ecdev)) |
4240 || (!adapter->ecdev && !netif_carrier_ok(netdev))) { |
4240 || (!adapter->ecdev && !netif_carrier_ok(netdev))) { |
4241 bool txb2b = 1; |
4241 bool txb2b = 1; |
4242 |
4242 |
4243 /* Cancel scheduled suspend requests. */ |
4243 /* Cancel scheduled suspend requests. */ |
4244 pm_runtime_resume(netdev->dev.parent); |
4244 pm_runtime_resume(netdev->dev.parent); |
4332 if (phy->ops.cfg_on_link_up) |
4332 if (phy->ops.cfg_on_link_up) |
4333 phy->ops.cfg_on_link_up(hw); |
4333 phy->ops.cfg_on_link_up(hw); |
4334 |
4334 |
4335 if (adapter->ecdev) |
4335 if (adapter->ecdev) |
4336 ecdev_set_link(adapter->ecdev, 1); |
4336 ecdev_set_link(adapter->ecdev, 1); |
4337 else |
4337 else |
4338 netif_carrier_on(netdev); |
4338 netif_carrier_on(netdev); |
4339 |
4339 |
4340 if (!adapter->ecdev && !test_bit(__E1000_DOWN, &adapter->state)) |
4340 if (!adapter->ecdev && !test_bit(__E1000_DOWN, &adapter->state)) |
4341 mod_timer(&adapter->phy_info_timer, |
4341 mod_timer(&adapter->phy_info_timer, |
4342 round_jiffies(jiffies + 2 * HZ)); |
4342 round_jiffies(jiffies + 2 * HZ)); |
4343 } |
4343 } |
4344 } else { |
4344 } else { |
4345 if ((adapter->ecdev && ecdev_get_link(adapter->ecdev)) |
4345 if ((adapter->ecdev && ecdev_get_link(adapter->ecdev)) |
4346 || (!adapter->ecdev && netif_carrier_ok(netdev))) { |
4346 || (!adapter->ecdev && netif_carrier_ok(netdev))) { |
4347 adapter->link_speed = 0; |
4347 adapter->link_speed = 0; |
4348 adapter->link_duplex = 0; |
4348 adapter->link_duplex = 0; |
4349 /* Link status message must follow this format */ |
4349 /* Link status message must follow this format */ |
4350 printk(KERN_INFO "e1000e: %s NIC Link is Down\n", |
4350 printk(KERN_INFO "e1000e: %s NIC Link is Down\n", |
4378 adapter->gotc = adapter->stats.gotc - adapter->gotc_old; |
4378 adapter->gotc = adapter->stats.gotc - adapter->gotc_old; |
4379 adapter->gotc_old = adapter->stats.gotc; |
4379 adapter->gotc_old = adapter->stats.gotc; |
4380 |
4380 |
4381 e1000e_update_adaptive(&adapter->hw); |
4381 e1000e_update_adaptive(&adapter->hw); |
4382 |
4382 |
4383 if ((adapter->ecdev && !ecdev_get_link(adapter->ecdev)) |
4383 if ((adapter->ecdev && !ecdev_get_link(adapter->ecdev)) |
4384 || (!adapter->ecdev && !netif_carrier_ok(netdev))) { |
4384 || (!adapter->ecdev && !netif_carrier_ok(netdev))) { |
4385 tx_pending = (e1000_desc_unused(tx_ring) + 1 < |
4385 tx_pending = (e1000_desc_unused(tx_ring) + 1 < |
4386 tx_ring->count); |
4386 tx_ring->count); |
4387 if (tx_pending) { |
4387 if (tx_pending) { |
4388 /* |
4388 /* |
5562 static void e1000_shutdown(struct pci_dev *pdev) |
5562 static void e1000_shutdown(struct pci_dev *pdev) |
5563 { |
5563 { |
5564 bool wake = false; |
5564 bool wake = false; |
5565 struct net_device *netdev = pci_get_drvdata(pdev); |
5565 struct net_device *netdev = pci_get_drvdata(pdev); |
5566 struct e1000_adapter *adapter = netdev_priv(netdev); |
5566 struct e1000_adapter *adapter = netdev_priv(netdev); |
5567 |
5567 |
5568 if (adapter->ecdev) |
5568 if (adapter->ecdev) |
5569 return; |
5569 return; |
5570 |
5570 |
5571 __e1000_shutdown(pdev, &wake, false); |
5571 __e1000_shutdown(pdev, &wake, false); |
5572 |
5572 |