e1000e: do not modify tx_queue_len on link speed change

Previously the driver tweaked txqueuelen to avoid false Tx hang reports seen at half duplex.
This had the effect of overriding user set values on link change/reset. Testing shows that
adjusting only the timeout factor is sufficient to prevent Tx hang reports at half duplex.

This patch removes all instances of tx_queue_len in the driver.

Originally reported and patched by Franco Fichtner
CC: Franco Fichtner <franco@lastsummer.de>
Signed-off-by: Emil Tantilov <emil.s.tantilov@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Emil Tantilov 2010-03-24 12:55:02 +00:00 committed by David S. Miller
parent a08af745e4
commit f49c57e141
2 changed files with 1 additions and 11 deletions

View File

@ -279,7 +279,6 @@ struct e1000_adapter {
struct napi_struct napi; struct napi_struct napi;
unsigned long tx_queue_len;
unsigned int restart_queue; unsigned int restart_queue;
u32 txd_cmd; u32 txd_cmd;

View File

@ -2289,8 +2289,6 @@ static void e1000_configure_tx(struct e1000_adapter *adapter)
ew32(TCTL, tctl); ew32(TCTL, tctl);
e1000e_config_collision_dist(hw); e1000e_config_collision_dist(hw);
adapter->tx_queue_len = adapter->netdev->tx_queue_len;
} }
/** /**
@ -2877,7 +2875,6 @@ void e1000e_down(struct e1000_adapter *adapter)
del_timer_sync(&adapter->watchdog_timer); del_timer_sync(&adapter->watchdog_timer);
del_timer_sync(&adapter->phy_info_timer); del_timer_sync(&adapter->phy_info_timer);
netdev->tx_queue_len = adapter->tx_queue_len;
netif_carrier_off(netdev); netif_carrier_off(netdev);
adapter->link_speed = 0; adapter->link_speed = 0;
adapter->link_duplex = 0; adapter->link_duplex = 0;
@ -3588,21 +3585,15 @@ static void e1000_watchdog_task(struct work_struct *work)
"link gets many collisions.\n"); "link gets many collisions.\n");
} }
/* /* adjust timeout factor according to speed/duplex */
* tweak tx_queue_len according to speed/duplex
* and adjust the timeout factor
*/
netdev->tx_queue_len = adapter->tx_queue_len;
adapter->tx_timeout_factor = 1; adapter->tx_timeout_factor = 1;
switch (adapter->link_speed) { switch (adapter->link_speed) {
case SPEED_10: case SPEED_10:
txb2b = 0; txb2b = 0;
netdev->tx_queue_len = 10;
adapter->tx_timeout_factor = 16; adapter->tx_timeout_factor = 16;
break; break;
case SPEED_100: case SPEED_100:
txb2b = 0; txb2b = 0;
netdev->tx_queue_len = 100;
adapter->tx_timeout_factor = 10; adapter->tx_timeout_factor = 10;
break; break;
} }