提交 d07f3e37 编写于 作者: E Emil Tantilov 提交者: David S. Miller

igb: 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.

Based on e1000e patch by Franco Fichtner <franco@lastsummer.de>
Signed-off-by: NEmil Tantilov <emil.s.tantilov@intel.com>
Signed-off-by: NJeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 fa3d9a6d
...@@ -267,7 +267,6 @@ struct igb_adapter { ...@@ -267,7 +267,6 @@ struct igb_adapter {
/* TX */ /* TX */
struct igb_ring *tx_ring[16]; struct igb_ring *tx_ring[16];
unsigned long tx_queue_len;
u32 tx_timeout_count; u32 tx_timeout_count;
/* RX */ /* RX */
......
...@@ -1105,9 +1105,6 @@ static void igb_configure(struct igb_adapter *adapter) ...@@ -1105,9 +1105,6 @@ static void igb_configure(struct igb_adapter *adapter)
struct igb_ring *ring = adapter->rx_ring[i]; struct igb_ring *ring = adapter->rx_ring[i];
igb_alloc_rx_buffers_adv(ring, igb_desc_unused(ring)); igb_alloc_rx_buffers_adv(ring, igb_desc_unused(ring));
} }
adapter->tx_queue_len = netdev->tx_queue_len;
} }
/** /**
...@@ -1213,7 +1210,6 @@ void igb_down(struct igb_adapter *adapter) ...@@ -1213,7 +1210,6 @@ void igb_down(struct igb_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);
/* record the stats before reset*/ /* record the stats before reset*/
...@@ -3106,17 +3102,13 @@ static void igb_watchdog_task(struct work_struct *work) ...@@ -3106,17 +3102,13 @@ static void igb_watchdog_task(struct work_struct *work)
((ctrl & E1000_CTRL_RFCE) ? "RX" : ((ctrl & E1000_CTRL_RFCE) ? "RX" :
((ctrl & E1000_CTRL_TFCE) ? "TX" : "None"))); ((ctrl & E1000_CTRL_TFCE) ? "TX" : "None")));
/* tweak tx_queue_len according to speed/duplex and /* adjust timeout factor according to speed/duplex */
* 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:
netdev->tx_queue_len = 10;
adapter->tx_timeout_factor = 14; adapter->tx_timeout_factor = 14;
break; break;
case SPEED_100: case SPEED_100:
netdev->tx_queue_len = 100;
/* maybe add some timeout factor ? */ /* maybe add some timeout factor ? */
break; break;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册