Depending on the underlying architecture and CPU flags available, a
different set of Rx paths may be defined by a driver using the common
path selection infrastructure. However the Rx path selection function
iterates through the entire array of potential Rx paths, regardless of
whether they are available for selection by that platform. This could
result in a null Rx burst function being selected. Fix this by
discarding paths with a null Rx burst function from selection.

Fixes: 9d99641d80a0 ("net/intel: introduce infrastructure for Rx path 
selection")
Cc: [email protected]

Signed-off-by: Ciara Loftus <[email protected]>
---
 drivers/net/intel/common/rx.h | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/net/intel/common/rx.h b/drivers/net/intel/common/rx.h
index ea7fb98b47..83259f2737 100644
--- a/drivers/net/intel/common/rx.h
+++ b/drivers/net/intel/common/rx.h
@@ -266,6 +266,10 @@ ci_rx_path_select(struct ci_rx_path_features req_features,
        for (i = 0; i < num_paths; i++) {
                const struct ci_rx_path_features *path_features = 
&infos[i].features;
 
+               /* Do not select a path with a NULL pkt_burst function. */
+               if (infos[i].pkt_burst == NULL)
+                       continue;
+
                /* Do not select a disabled rx path. */
                if (path_features->extra.disabled)
                        continue;
-- 
2.43.0

Reply via email to