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

Reply via email to