numam-dpdk/drivers/net/ixgbe
Julien Meunier 6507e67af8 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: c95584dc2b ("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>
2021-10-09 06:45:03 +02:00
..
base net/ixgbe: build on Windows 2021-10-07 14:47:35 +02:00
ixgbe_82599_bypass.c drivers: use SPDX tag for Intel copyright files 2018-01-04 22:41:39 +01:00
ixgbe_bypass_api.h drivers: use SPDX tag for Intel copyright files 2018-01-04 22:41:39 +01:00
ixgbe_bypass_defines.h drivers: use SPDX tag for Intel copyright files 2018-01-04 22:41:39 +01:00
ixgbe_bypass.c ethdev: make driver-only headers private 2021-01-29 20:59:09 +01:00
ixgbe_bypass.h drivers: use SPDX tag for Intel copyright files 2018-01-04 22:41:39 +01:00
ixgbe_ethdev.c ethdev: remove legacy Rx descriptor done API 2021-10-11 16:44:57 +02:00
ixgbe_ethdev.h ethdev: remove legacy Rx descriptor done API 2021-10-11 16:44:57 +02:00
ixgbe_fdir.c ethdev: make driver-only headers private 2021-01-29 20:59:09 +01:00
ixgbe_flow.c net/ixgbe: build on Windows 2021-10-07 14:47:35 +02:00
ixgbe_ipsec.c ethdev: make driver-only headers private 2021-01-29 20:59:09 +01:00
ixgbe_ipsec.h cryptodev: make xform key pointer constant 2019-07-19 14:15:21 +02:00
ixgbe_logs.h net/ixgbe: refine debug build option 2021-04-01 16:10:20 +02:00
ixgbe_pf.c ethdev: remove legacy mirroring API 2021-10-07 13:02:26 +02:00
ixgbe_regs.h drivers: use SPDX tag for Intel copyright files 2018-01-04 22:41:39 +01:00
ixgbe_rxtx_vec_common.h net/ixgbe: fix queue release 2021-10-09 06:45:03 +02:00
ixgbe_rxtx_vec_neon.c net/ixgbe: fix UDP zero checksum on Arm 2021-02-10 21:51:38 +01:00
ixgbe_rxtx_vec_sse.c drivers/net: fix vector Rx comments 2021-08-10 05:01:57 +02:00
ixgbe_rxtx.c ethdev: remove legacy Rx descriptor done API 2021-10-11 16:44:57 +02:00
ixgbe_rxtx.h net/ixgbe: fix memzone leak on queue re-configure 2021-10-07 13:38:16 +02:00
ixgbe_tm.c net/ixgbe: build on Windows 2021-10-07 14:47:35 +02:00
ixgbe_vf_representor.c ethdev: fix representor port ID search by name 2021-10-12 16:54:20 +02:00
meson.build net/ixgbe: build on Windows 2021-10-07 14:47:35 +02:00
rte_pmd_ixgbe.c ethdev: make driver-only headers private 2021-01-29 20:59:09 +01:00
rte_pmd_ixgbe.h drivers/net: fix exposing internal headers 2020-07-11 06:18:54 +02:00
version.map version: 21.11-rc0 2021-08-17 08:37:52 +02:00