net/iavf: check RSS rule queue region size
[dpdk.git] / drivers / net / iavf / iavf_fdir.c
index f584e56..d683a46 100644 (file)
@@ -256,6 +256,7 @@ iavf_fdir_parse_action_qregion(struct iavf_adapter *ad,
                        const struct rte_flow_action *act,
                        struct virtchnl_filter_action *filter_action)
 {
+       struct iavf_info *vf = IAVF_DEV_PRIVATE_TO_VF(ad);
        const struct rte_flow_action_rss *rss = act->conf;
        uint32_t i;
 
@@ -300,6 +301,13 @@ iavf_fdir_parse_action_qregion(struct iavf_adapter *ad,
                return -rte_errno;
        }
 
+       if (rss->queue_num > vf->max_rss_qregion) {
+               rte_flow_error_set(error, EINVAL,
+                               RTE_FLOW_ERROR_TYPE_ACTION, act,
+                               "The region size cannot be large than the supported max RSS queue region");
+               return -rte_errno;
+       }
+
        filter_action->act_conf.queue.index = rss->queue[0];
        filter_action->act_conf.queue.region = rte_fls_u32(rss->queue_num) - 1;