There need a queue index check for RSS queue region
in order to aviod error from configuration.

Fixes: ecad87d22383 ("net/i40e: move RSS to flow API")
Signed-off-by: Wei Zhao <wei.zh...@intel.com>
Tested-by: Peng Yuan <yuan.p...@intel.com>
---
 drivers/net/i40e/i40e_flow.c | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/drivers/net/i40e/i40e_flow.c b/drivers/net/i40e/i40e_flow.c
index f3e8c5f..4e86ecb 100644
--- a/drivers/net/i40e/i40e_flow.c
+++ b/drivers/net/i40e/i40e_flow.c
@@ -4249,6 +4249,20 @@ i40e_flow_parse_rss_action(struct rte_eth_dev *dev,
                                return -rte_errno;
                        }
 
+                       for (i = 0; i < rss->num; i++) {
+                               for (j = 0; j < rss_info->num; j++) {
+                                       if (rss->queue[i] == rss_info->queue[j])
+                                               break;
+                               }
+                               if (j == rss_info->num) {
+                                       rte_flow_error_set(error, EINVAL,
+                                               RTE_FLOW_ERROR_TYPE_ACTION,
+                                               act,
+                                               "no valid queues");
+                                       return -rte_errno;
+                               }
+                       }
+
                        for (i = 0; i < info->queue_region_number; i++) {
                                if (info->region[i].queue_num == rss->num &&
                                        info->region[i].queue_start_index ==
-- 
2.7.5

Reply via email to