diff options
author | Jesse Brandeburg <jesse.brandeburg@intel.com> | 2011-10-05 03:24:41 -0400 |
---|---|---|
committer | Jeff Kirsher <jeffrey.t.kirsher@intel.com> | 2011-10-07 01:38:25 -0400 |
commit | a4010afef585b7142eb605e3a6e4210c0e1b2957 (patch) | |
tree | 770fa2d71222702cae44fd730582b8937b958f43 /drivers/net/ethernet/intel/e1000/e1000.h | |
parent | 19d478bbe690a37489f58843dec20a456573d89f (diff) |
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>
Diffstat (limited to 'drivers/net/ethernet/intel/e1000/e1000.h')
-rw-r--r-- | drivers/net/ethernet/intel/e1000/e1000.h | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/drivers/net/ethernet/intel/e1000/e1000.h b/drivers/net/ethernet/intel/e1000/e1000.h index 4ea87b19ac1a..fc6fbbda98d9 100644 --- a/drivers/net/ethernet/intel/e1000/e1000.h +++ b/drivers/net/ethernet/intel/e1000/e1000.h | |||
@@ -214,9 +214,6 @@ struct e1000_rx_ring { | |||
214 | /* board specific private data structure */ | 214 | /* board specific private data structure */ |
215 | 215 | ||
216 | struct e1000_adapter { | 216 | struct e1000_adapter { |
217 | struct timer_list tx_fifo_stall_timer; | ||
218 | struct timer_list watchdog_timer; | ||
219 | struct timer_list phy_info_timer; | ||
220 | unsigned long active_vlans[BITS_TO_LONGS(VLAN_N_VID)]; | 217 | unsigned long active_vlans[BITS_TO_LONGS(VLAN_N_VID)]; |
221 | u16 mng_vlan_id; | 218 | u16 mng_vlan_id; |
222 | u32 bd_number; | 219 | u32 bd_number; |
@@ -237,7 +234,6 @@ struct e1000_adapter { | |||
237 | u16 tx_itr; | 234 | u16 tx_itr; |
238 | u16 rx_itr; | 235 | u16 rx_itr; |
239 | 236 | ||
240 | struct work_struct reset_task; | ||
241 | u8 fc_autoneg; | 237 | u8 fc_autoneg; |
242 | 238 | ||
243 | /* TX */ | 239 | /* TX */ |
@@ -310,8 +306,10 @@ struct e1000_adapter { | |||
310 | 306 | ||
311 | bool discarding; | 307 | bool discarding; |
312 | 308 | ||
313 | struct work_struct fifo_stall_task; | 309 | struct work_struct reset_task; |
314 | struct work_struct phy_info_task; | 310 | struct delayed_work watchdog_task; |
311 | struct delayed_work fifo_stall_task; | ||
312 | struct delayed_work phy_info_task; | ||
315 | }; | 313 | }; |
316 | 314 | ||
317 | enum e1000_state_t { | 315 | enum e1000_state_t { |