e1000: convert hardware management from timers to threads
Thomas Gleixner (tglx) reported that e1000 was delaying for many milliseconds (using mdelay) from inside timer/interrupt context. None of these paths are performance critical and can be moved into threads/work items. This patch implements the work items and the next patch changes the mdelays to msleeps. Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com> CC: Thomas Gleixner <tglx@linutronix.de> CC: Tushar Dave <tushar.n.dave@intel.com> Tested-by: Aaron Brown <aaron.f.brown@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
This commit is contained in:

committed by
Jeff Kirsher

parent
19d478bbe6
commit
a4010afef5
@@ -214,9 +214,6 @@ struct e1000_rx_ring {
|
||||
/* board specific private data structure */
|
||||
|
||||
struct e1000_adapter {
|
||||
struct timer_list tx_fifo_stall_timer;
|
||||
struct timer_list watchdog_timer;
|
||||
struct timer_list phy_info_timer;
|
||||
unsigned long active_vlans[BITS_TO_LONGS(VLAN_N_VID)];
|
||||
u16 mng_vlan_id;
|
||||
u32 bd_number;
|
||||
@@ -237,7 +234,6 @@ struct e1000_adapter {
|
||||
u16 tx_itr;
|
||||
u16 rx_itr;
|
||||
|
||||
struct work_struct reset_task;
|
||||
u8 fc_autoneg;
|
||||
|
||||
/* TX */
|
||||
@@ -310,8 +306,10 @@ struct e1000_adapter {
|
||||
|
||||
bool discarding;
|
||||
|
||||
struct work_struct fifo_stall_task;
|
||||
struct work_struct phy_info_task;
|
||||
struct work_struct reset_task;
|
||||
struct delayed_work watchdog_task;
|
||||
struct delayed_work fifo_stall_task;
|
||||
struct delayed_work phy_info_task;
|
||||
};
|
||||
|
||||
enum e1000_state_t {
|
||||
|
Reference in New Issue
Block a user