ixgbe: Address issues with Tx WHTRESH value not being set correctly
This change is meant to address the fact that the tx_itr_setting was dropping to 0 when no separate Tx vectors were provided. This had resulted in the driver incorrectly configuring the Tx ring with a WTHRESH of 1 in order to avoid Tx hangs even though that was not necessary. This change makes it so that we instead take a look at the Tx ring's q_vector to determine if the ring will have an ITR value less than 8us. Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com> Tested-by: Stephen Ko <stephen.s.ko@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
This commit is contained in:
parent
46646e61ea
commit
e954b374b4
|
@ -2595,12 +2595,15 @@ void ixgbe_configure_tx_ring(struct ixgbe_adapter *adapter,
|
|||
* to or less than the number of on chip descriptors, which is
|
||||
* currently 40.
|
||||
*/
|
||||
if (!adapter->tx_itr_setting || !adapter->rx_itr_setting)
|
||||
if (!ring->q_vector || (ring->q_vector->itr < 8))
|
||||
txdctl |= (1 << 16); /* WTHRESH = 1 */
|
||||
else
|
||||
txdctl |= (8 << 16); /* WTHRESH = 8 */
|
||||
|
||||
/* PTHRESH=32 is needed to avoid a Tx hang with DFP enabled. */
|
||||
/*
|
||||
* Setting PTHRESH to 32 both improves performance
|
||||
* and avoids a TX hang with DFP enabled
|
||||
*/
|
||||
txdctl |= (1 << 8) | /* HTHRESH = 1 */
|
||||
32; /* PTHRESH = 32 */
|
||||
|
||||
|
|
Loading…
Reference in New Issue