net/ixgbe: fix queue release
authorJulien Meunier <julien.meunier@nokia.com>
Tue, 28 Sep 2021 08:12:38 +0000 (10:12 +0200)
committerQi Zhang <qi.z.zhang@intel.com>
Sat, 9 Oct 2021 04:45:03 +0000 (06:45 +0200)
commit6507e67af817183c69b684e81d820791eef18259
tree4b242c3232eafad5b4de7aa1bbe2f71112a3fa85
parent39e4a2577fd05199f53182b7c8509aeed40dc07f
net/ixgbe: fix queue release

On the vector implementation, during the tear-down, the mbufs not
drained in the RxQ and TxQ are freed based on an algorithm which
supposed that the number of descriptors is a power of 2 (max_desc).
Based on this hypothesis, this algorithm uses a bitmask in order to
detect an index overflow during the iteration, and to restart the loop
from 0.

However, there is no such power of 2 requirement in the ixgbe for the
number of descriptors in the RxQ / TxQ. The only requirement is to have
a number correctly aligned.

If a user requested to configure a number of descriptors which is not a
power of 2, as a consequence, during the tear-down, it was possible to
be in an infinite loop, and to never reach the exit loop condition.

By removing the bitmask and changing the loop method, we can avoid this
issue, and allow the user to configure a RxQ / TxQ which is not a power
of 2.

Fixes: c95584dc2b18 ("ixgbe: new vectorized functions for Rx/Tx")
Cc: stable@dpdk.org
Signed-off-by: Julien Meunier <julien.meunier@nokia.com>
Acked-by: Haiyue Wang <haiyue.wang@intel.com>
drivers/net/ixgbe/ixgbe_rxtx_vec_common.h