On Mon, Dec 15, 2025 at 02:05:45PM +0000, Ciara Loftus wrote: > 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. > I wonder if there is an alternative/better approach that can work here. For each array, RTE_DIM will correctly give its size, and the indexes are set according to the enum values which are common across each platform. Therefore, the remaining entries in each array are going to be all zeroed, since they are not explicitly initialized, e.g. the AXV entries on ARM platforms. Would it not then work to just check during selection for a non-NULL pkt_burst pointer in each entry we are comparing and skip those which are NULL?
/Bruce

