An issue exists with the way Rx and Tx paths are defined and then used by the common selection infrastructure, which in some cases means not all paths are available for selection. The issue affects four drivers on both Rx and Tx paths resulting in eight fix patches.
Depending on the underlying architecture and CPU flags available, a different set of paths are defined for each driver. The path selection function iterates sequentially from zero to num_paths where num_paths is the size of the array as determined by the RTE_DIM macro. However, depending on the platform, some of these entries may be empty, and valid entries at the end of the array may never be considered in the selection function. Fix this by editing each driver's rx/tx "func_type" enum and only defining a value for the path if it is implemented in the driver's rx/tx "path_infos" array. The fixes for the Tx paths can be squashed into the next-net-intel tree as the commits that those fixes target have not yet made it into the main branch. The fixes for the Rx paths can be squashed into one commit if that's a more desirable approach, since the commit messages of them all are essentially the same but for the driver name. The generic version is the paragraph above. Ciara Loftus (8): net/i40e: ensure all Tx paths are selectable net/iavf: ensure all Tx paths are selectable net/ice: ensure all Tx paths are selectable net/idpf: ensure all Tx paths are selectable net/i40e: ensure all Rx paths are selectable net/iavf: ensure all Rx paths are selectable net/ice: ensure all Rx paths are selectable net/idpf: ensure all Rx paths are selectable drivers/net/intel/i40e/i40e_ethdev.h | 12 ++++++++++++ drivers/net/intel/i40e/i40e_rxtx.c | 8 ++++++-- drivers/net/intel/iavf/iavf.h | 10 ++++++++++ drivers/net/intel/ice/ice_ethdev.h | 8 ++++++++ drivers/net/intel/idpf/idpf_common_device.h | 8 ++++++++ 5 files changed, 44 insertions(+), 2 deletions(-) -- 2.43.0

