aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/intel/igb/igb_main.c
diff options
context:
space:
mode:
authorSergey Nemov <sergey.nemov@intel.com>2018-05-18 05:58:40 -0400
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>2018-06-04 13:11:14 -0400
commit06140c793db51476585ee9abf032845e221982cb (patch)
treee87b3f9b92083f17b59f935ec1304d7cd30d2de1 /drivers/net/ethernet/intel/igb/igb_main.c
parent1ec2297c5cacefd9198a3cc4a27751b6a2203cf3 (diff)
igb: Wait 10ms just once after TX queues reset
Move 10ms sleep out of function resetting TX queue. Reset all the TX queues in one turn and wait for all of them just once. Use usleep_range() instead of mdelay() in order not to affect transmission on other interfaces. Signed-off-by: Sergey Nemov <sergey.nemov@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/igb/igb_main.c')
-rw-r--r--drivers/net/ethernet/intel/igb/igb_main.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c
index 20b728218d20..c33821d2afb3 100644
--- a/drivers/net/ethernet/intel/igb/igb_main.c
+++ b/drivers/net/ethernet/intel/igb/igb_main.c
@@ -4055,11 +4055,6 @@ void igb_configure_tx_ring(struct igb_adapter *adapter,
4055 u64 tdba = ring->dma; 4055 u64 tdba = ring->dma;
4056 int reg_idx = ring->reg_idx; 4056 int reg_idx = ring->reg_idx;
4057 4057
4058 /* disable the queue */
4059 wr32(E1000_TXDCTL(reg_idx), 0);
4060 wrfl();
4061 mdelay(10);
4062
4063 wr32(E1000_TDLEN(reg_idx), 4058 wr32(E1000_TDLEN(reg_idx),
4064 ring->count * sizeof(union e1000_adv_tx_desc)); 4059 ring->count * sizeof(union e1000_adv_tx_desc));
4065 wr32(E1000_TDBAL(reg_idx), 4060 wr32(E1000_TDBAL(reg_idx),
@@ -4090,8 +4085,16 @@ void igb_configure_tx_ring(struct igb_adapter *adapter,
4090 **/ 4085 **/
4091static void igb_configure_tx(struct igb_adapter *adapter) 4086static void igb_configure_tx(struct igb_adapter *adapter)
4092{ 4087{
4088 struct e1000_hw *hw = &adapter->hw;
4093 int i; 4089 int i;
4094 4090
4091 /* disable the queues */
4092 for (i = 0; i < adapter->num_tx_queues; i++)
4093 wr32(E1000_TXDCTL(adapter->tx_ring[i]->reg_idx), 0);
4094
4095 wrfl();
4096 usleep_range(10000, 20000);
4097
4095 for (i = 0; i < adapter->num_tx_queues; i++) 4098 for (i = 0; i < adapter->num_tx_queues; i++)
4096 igb_configure_tx_ring(adapter, adapter->tx_ring[i]); 4099 igb_configure_tx_ring(adapter, adapter->tx_ring[i]);
4097} 4100}