]> git.baikalelectronics.ru Git - kernel.git/commit
igb, ixgbe: netdev_tx_reset_queue incorrectly called from tx init path
authorJohn Fastabend <john.r.fastabend@intel.com>
Mon, 23 Apr 2012 12:22:39 +0000 (12:22 +0000)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Fri, 4 May 2012 10:58:33 +0000 (03:58 -0700)
commit251b6b2148d4170dc2cc88c5bcaa8f3c0f2d0f94
treecd99b9b1b78047791f7d7f34d24039032dd200b8
parent829e30ce178211f08f43d3ec37e0006fe04acc5a
igb, ixgbe: netdev_tx_reset_queue incorrectly called from tx init path

igb and ixgbe incorrectly call netdev_tx_reset_queue() from
i{gb|xgbe}_clean_tx_ring() this sort of works in most cases except
when the number of real tx queues changes. When the number of real
tx queues changes netdev_tx_reset_queue() only gets called on the
new number of queues so when we reduce the number of queues we risk
triggering the watchdog timer and repeated device resets.

So this is not only a cosmetic issue but causes real bugs. For
example enabling/disabling DCB or FCoE in ixgbe will trigger this.

CC: Alexander Duyck <alexander.h.duyck@intel.com>
Signed-off-by: John Fastabend <john.r.fastabend@intel.com>
Tested-by: John Bishop <johnx.bishop@intel.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/igb/igb_main.c
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c