2927 /* hardware has been reset, we need to reload some things */ |
2927 /* hardware has been reset, we need to reload some things */ |
2928 e1000_configure(adapter); |
2928 e1000_configure(adapter); |
2929 |
2929 |
2930 clear_bit(__E1000_DOWN, &adapter->state); |
2930 clear_bit(__E1000_DOWN, &adapter->state); |
2931 |
2931 |
2932 if (!adapter->ecdev) |
2932 if (!adapter->ecdev) |
2933 napi_enable(&adapter->napi); |
2933 napi_enable(&adapter->napi); |
2934 |
2934 |
2935 if (adapter->msix_entries) |
2935 if (adapter->msix_entries) |
2936 e1000_configure_msix(adapter); |
2936 e1000_configure_msix(adapter); |
2937 |
2937 |
2961 /* disable receives in the hardware */ |
2961 /* disable receives in the hardware */ |
2962 rctl = er32(RCTL); |
2962 rctl = er32(RCTL); |
2963 ew32(RCTL, rctl & ~E1000_RCTL_EN); |
2963 ew32(RCTL, rctl & ~E1000_RCTL_EN); |
2964 /* flush and sleep below */ |
2964 /* flush and sleep below */ |
2965 |
2965 |
2966 if (!adapter->ecdev) |
2966 if (!adapter->ecdev) |
2967 netif_stop_queue(netdev); |
2967 netif_stop_queue(netdev); |
2968 |
2968 |
2969 /* disable transmits in the hardware */ |
2969 /* disable transmits in the hardware */ |
2970 tctl = er32(TCTL); |
2970 tctl = er32(TCTL); |
2971 tctl &= ~E1000_TCTL_EN; |
2971 tctl &= ~E1000_TCTL_EN; |
3663 if ((e1000e_enable_tx_pkt_filtering(hw)) && |
3663 if ((e1000e_enable_tx_pkt_filtering(hw)) && |
3664 (adapter->mng_vlan_id != adapter->hw.mng_cookie.vlan_id)) |
3664 (adapter->mng_vlan_id != adapter->hw.mng_cookie.vlan_id)) |
3665 e1000_update_mng_vlan(adapter); |
3665 e1000_update_mng_vlan(adapter); |
3666 |
3666 |
3667 if (link) { |
3667 if (link) { |
3668 if ((adapter->ecdev && !ecdev_get_link(adapter->ecdev)) |
3668 if ((adapter->ecdev && !ecdev_get_link(adapter->ecdev)) |
3669 || (!adapter->ecdev && !netif_carrier_ok(netdev))) { |
3669 || (!adapter->ecdev && !netif_carrier_ok(netdev))) { |
3670 bool txb2b = 1; |
3670 bool txb2b = 1; |
3671 /* update snapshot of PHY registers on LSC */ |
3671 /* update snapshot of PHY registers on LSC */ |
3672 e1000_phy_read_status(adapter); |
3672 e1000_phy_read_status(adapter); |
3673 mac->ops.get_link_up_info(&adapter->hw, |
3673 mac->ops.get_link_up_info(&adapter->hw, |
3763 if (phy->ops.cfg_on_link_up) |
3763 if (phy->ops.cfg_on_link_up) |
3764 phy->ops.cfg_on_link_up(hw); |
3764 phy->ops.cfg_on_link_up(hw); |
3765 |
3765 |
3766 if (adapter->ecdev) |
3766 if (adapter->ecdev) |
3767 ecdev_set_link(adapter->ecdev, 1); |
3767 ecdev_set_link(adapter->ecdev, 1); |
3768 else |
3768 else |
3769 netif_carrier_on(netdev); |
3769 netif_carrier_on(netdev); |
3770 |
3770 |
3771 if (!adapter->ecdev && !test_bit(__E1000_DOWN, &adapter->state)) |
3771 if (!adapter->ecdev && !test_bit(__E1000_DOWN, &adapter->state)) |
3772 mod_timer(&adapter->phy_info_timer, |
3772 mod_timer(&adapter->phy_info_timer, |
3773 round_jiffies(jiffies + 2 * HZ)); |
3773 round_jiffies(jiffies + 2 * HZ)); |
3774 } |
3774 } |
3775 } else { |
3775 } else { |
3776 if ((adapter->ecdev && ecdev_get_link(adapter->ecdev)) |
3776 if ((adapter->ecdev && ecdev_get_link(adapter->ecdev)) |
3777 || (!adapter->ecdev && netif_carrier_ok(netdev))) { |
3777 || (!adapter->ecdev && netif_carrier_ok(netdev))) { |
3778 adapter->link_speed = 0; |
3778 adapter->link_speed = 0; |
3779 adapter->link_duplex = 0; |
3779 adapter->link_duplex = 0; |
3780 /* Link status message must follow this format */ |
3780 /* Link status message must follow this format */ |
3781 printk(KERN_INFO "e1000e: %s NIC Link is Down\n", |
3781 printk(KERN_INFO "e1000e: %s NIC Link is Down\n", |
3806 adapter->gotc = adapter->stats.gotc - adapter->gotc_old; |
3806 adapter->gotc = adapter->stats.gotc - adapter->gotc_old; |
3807 adapter->gotc_old = adapter->stats.gotc; |
3807 adapter->gotc_old = adapter->stats.gotc; |
3808 |
3808 |
3809 e1000e_update_adaptive(&adapter->hw); |
3809 e1000e_update_adaptive(&adapter->hw); |
3810 |
3810 |
3811 if ((adapter->ecdev && !ecdev_get_link(adapter->ecdev)) |
3811 if ((adapter->ecdev && !ecdev_get_link(adapter->ecdev)) |
3812 || (!adapter->ecdev && !netif_carrier_ok(netdev))) { |
3812 || (!adapter->ecdev && !netif_carrier_ok(netdev))) { |
3813 tx_pending = (e1000_desc_unused(tx_ring) + 1 < |
3813 tx_pending = (e1000_desc_unused(tx_ring) + 1 < |
3814 tx_ring->count); |
3814 tx_ring->count); |
3815 if (tx_pending) { |
3815 if (tx_pending) { |
3816 /* |
3816 /* |