@ -1098,6 +1098,11 @@ static void __devexit e1000_remove(struct pci_dev *pdev)
struct e1000_adapter * adapter = netdev_priv ( netdev ) ;
struct e1000_hw * hw = & adapter - > hw ;
set_bit ( __E1000_DOWN , & adapter - > flags ) ;
del_timer_sync ( & adapter - > tx_fifo_stall_timer ) ;
del_timer_sync ( & adapter - > watchdog_timer ) ;
del_timer_sync ( & adapter - > phy_info_timer ) ;
cancel_work_sync ( & adapter - > reset_task ) ;
e1000_release_manageability ( adapter ) ;
@ -2240,7 +2245,7 @@ static void e1000_82547_tx_fifo_stall(unsigned long data)
adapter - > tx_fifo_head = 0 ;
atomic_set ( & adapter - > tx_fifo_stall , 0 ) ;
netif_wake_queue ( netdev ) ;
} else {
} else if ( ! test_bit ( __E1000_DOWN , & adapter - > flags ) ) {
mod_timer ( & adapter - > tx_fifo_stall_timer , jiffies + 1 ) ;
}
}
@ -2309,8 +2314,9 @@ static void e1000_watchdog(unsigned long data)
ew32 ( TCTL , tctl ) ;
netif_carrier_on ( netdev ) ;
mod_timer ( & adapter - > phy_info_timer ,
round_jiffies ( jiffies + 2 * HZ ) ) ;
if ( ! test_bit ( __E1000_DOWN , & adapter - > flags ) )
mod_timer ( & adapter - > phy_info_timer ,
round_jiffies ( jiffies + 2 * HZ ) ) ;
adapter - > smartspeed = 0 ;
}
} else {
@ -2320,8 +2326,10 @@ static void e1000_watchdog(unsigned long data)
printk ( KERN_INFO " e1000: %s NIC Link is Down \n " ,
netdev - > name ) ;
netif_carrier_off ( netdev ) ;
mod_timer ( & adapter - > phy_info_timer ,
round_jiffies ( jiffies + 2 * HZ ) ) ;
if ( ! test_bit ( __E1000_DOWN , & adapter - > flags ) )
mod_timer ( & adapter - > phy_info_timer ,
round_jiffies ( jiffies + 2 * HZ ) ) ;
}
e1000_smartspeed ( adapter ) ;
@ -2361,7 +2369,9 @@ static void e1000_watchdog(unsigned long data)
adapter - > detect_tx_hung = true ;
/* Reset the timer */
mod_timer ( & adapter - > watchdog_timer , round_jiffies ( jiffies + 2 * HZ ) ) ;
if ( ! test_bit ( __E1000_DOWN , & adapter - > flags ) )
mod_timer ( & adapter - > watchdog_timer ,
round_jiffies ( jiffies + 2 * HZ ) ) ;
}
enum latency_range {
@ -2977,7 +2987,9 @@ static netdev_tx_t e1000_xmit_frame(struct sk_buff *skb,
if ( unlikely ( hw - > mac_type = = e1000_82547 ) ) {
if ( unlikely ( e1000_82547_fifo_workaround ( adapter , skb ) ) ) {
netif_stop_queue ( netdev ) ;
mod_timer ( & adapter - > tx_fifo_stall_timer , jiffies + 1 ) ;
if ( ! test_bit ( __E1000_DOWN , & adapter - > flags ) )
mod_timer ( & adapter - > tx_fifo_stall_timer ,
jiffies + 1 ) ;
return NETDEV_TX_BUSY ;
}
}