2890 /* hardware has been reset, we need to reload some things */ |
2890 /* hardware has been reset, we need to reload some things */ |
2891 e1000_configure(adapter); |
2891 e1000_configure(adapter); |
2892 |
2892 |
2893 clear_bit(__E1000_DOWN, &adapter->state); |
2893 clear_bit(__E1000_DOWN, &adapter->state); |
2894 |
2894 |
2895 if (!adapter->ecdev) |
2895 if (!adapter->ecdev) |
2896 napi_enable(&adapter->napi); |
2896 napi_enable(&adapter->napi); |
2897 |
2897 |
2898 if (adapter->msix_entries) |
2898 if (adapter->msix_entries) |
2899 e1000_configure_msix(adapter); |
2899 e1000_configure_msix(adapter); |
2900 |
2900 |
2924 /* disable receives in the hardware */ |
2924 /* disable receives in the hardware */ |
2925 rctl = er32(RCTL); |
2925 rctl = er32(RCTL); |
2926 ew32(RCTL, rctl & ~E1000_RCTL_EN); |
2926 ew32(RCTL, rctl & ~E1000_RCTL_EN); |
2927 /* flush and sleep below */ |
2927 /* flush and sleep below */ |
2928 |
2928 |
2929 if (!adapter->ecdev) |
2929 if (!adapter->ecdev) |
2930 netif_stop_queue(netdev); |
2930 netif_stop_queue(netdev); |
2931 |
2931 |
2932 /* disable transmits in the hardware */ |
2932 /* disable transmits in the hardware */ |
2933 tctl = er32(TCTL); |
2933 tctl = er32(TCTL); |
2934 tctl &= ~E1000_TCTL_EN; |
2934 tctl &= ~E1000_TCTL_EN; |
3632 if ((e1000e_enable_tx_pkt_filtering(hw)) && |
3632 if ((e1000e_enable_tx_pkt_filtering(hw)) && |
3633 (adapter->mng_vlan_id != adapter->hw.mng_cookie.vlan_id)) |
3633 (adapter->mng_vlan_id != adapter->hw.mng_cookie.vlan_id)) |
3634 e1000_update_mng_vlan(adapter); |
3634 e1000_update_mng_vlan(adapter); |
3635 |
3635 |
3636 if (link) { |
3636 if (link) { |
3637 if ((adapter->ecdev && !ecdev_get_link(adapter->ecdev)) |
3637 if ((adapter->ecdev && !ecdev_get_link(adapter->ecdev)) |
3638 || (!adapter->ecdev && !netif_carrier_ok(netdev))) { |
3638 || (!adapter->ecdev && !netif_carrier_ok(netdev))) { |
3639 bool txb2b = 1; |
3639 bool txb2b = 1; |
3640 /* update snapshot of PHY registers on LSC */ |
3640 /* update snapshot of PHY registers on LSC */ |
3641 e1000_phy_read_status(adapter); |
3641 e1000_phy_read_status(adapter); |
3642 mac->ops.get_link_up_info(&adapter->hw, |
3642 mac->ops.get_link_up_info(&adapter->hw, |
3726 if (phy->ops.cfg_on_link_up) |
3726 if (phy->ops.cfg_on_link_up) |
3727 phy->ops.cfg_on_link_up(hw); |
3727 phy->ops.cfg_on_link_up(hw); |
3728 |
3728 |
3729 if (adapter->ecdev) |
3729 if (adapter->ecdev) |
3730 ecdev_set_link(adapter->ecdev, 1); |
3730 ecdev_set_link(adapter->ecdev, 1); |
3731 else |
3731 else |
3732 netif_carrier_on(netdev); |
3732 netif_carrier_on(netdev); |
3733 |
3733 |
3734 if (!adapter->ecdev && !test_bit(__E1000_DOWN, &adapter->state)) |
3734 if (!adapter->ecdev && !test_bit(__E1000_DOWN, &adapter->state)) |
3735 mod_timer(&adapter->phy_info_timer, |
3735 mod_timer(&adapter->phy_info_timer, |
3736 round_jiffies(jiffies + 2 * HZ)); |
3736 round_jiffies(jiffies + 2 * HZ)); |
3737 } |
3737 } |
3738 } else { |
3738 } else { |
3739 if ((adapter->ecdev && ecdev_get_link(adapter->ecdev)) |
3739 if ((adapter->ecdev && ecdev_get_link(adapter->ecdev)) |
3740 || (!adapter->ecdev && netif_carrier_ok(netdev))) { |
3740 || (!adapter->ecdev && netif_carrier_ok(netdev))) { |
3741 adapter->link_speed = 0; |
3741 adapter->link_speed = 0; |
3742 adapter->link_duplex = 0; |
3742 adapter->link_duplex = 0; |
3743 /* Link status message must follow this format */ |
3743 /* Link status message must follow this format */ |
3744 printk(KERN_INFO "e1000e: %s NIC Link is Down\n", |
3744 printk(KERN_INFO "e1000e: %s NIC Link is Down\n", |
3769 adapter->gotc = adapter->stats.gotc - adapter->gotc_old; |
3769 adapter->gotc = adapter->stats.gotc - adapter->gotc_old; |
3770 adapter->gotc_old = adapter->stats.gotc; |
3770 adapter->gotc_old = adapter->stats.gotc; |
3771 |
3771 |
3772 e1000e_update_adaptive(&adapter->hw); |
3772 e1000e_update_adaptive(&adapter->hw); |
3773 |
3773 |
3774 if ((adapter->ecdev && !ecdev_get_link(adapter->ecdev)) |
3774 if ((adapter->ecdev && !ecdev_get_link(adapter->ecdev)) |
3775 || (!adapter->ecdev && !netif_carrier_ok(netdev))) { |
3775 || (!adapter->ecdev && !netif_carrier_ok(netdev))) { |
3776 tx_pending = (e1000_desc_unused(tx_ring) + 1 < |
3776 tx_pending = (e1000_desc_unused(tx_ring) + 1 < |
3777 tx_ring->count); |
3777 tx_ring->count); |
3778 if (tx_pending) { |
3778 if (tx_pending) { |
3779 /* |
3779 /* |