[dpdk-dev] net/i40e: fix flow RSS queue index check error

Message ID 1523165844-5362-1-git-send-email-wei.zhao1@intel.com (mailing list archive)
State Superseded, archived
Delegated to: Helin Zhang
Headers

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation fail apply issues

Commit Message

Zhao1, Wei April 8, 2018, 5:37 a.m. UTC
  Ther is a error in queue index check for RSS queue region
configuration.

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

Comments

Qi Zhang April 9, 2018, 7:18 a.m. UTC | #1
> -----Original Message-----
> From: Zhao1, Wei
> Sent: Sunday, April 8, 2018 1:37 PM
> To: dev@dpdk.org; stable@dpdk.org
> Cc: Zhang, Qi Z <qi.z.zhang@intel.com>; Zhao1, Wei <wei.zhao1@intel.com>
> Subject: [PATCH] net/i40e: fix flow RSS queue index check error
> 
> Ther is a error in queue index check for RSS queue region configuration.

What is the error?
Would you explain more and please add this in commit log?

Regards
Qi

> 
> Fixes: ecad87d22383 ("net/i40e: move RSS to flow API")
> Signed-off-by: Wei Zhao <wei.zhao1@intel.com>
> Tested-by: Peng Yuan <yuan.peng@intel.com>
> ---
>  drivers/net/i40e/i40e_flow.c | 19 ++++++++-----------
>  1 file changed, 8 insertions(+), 11 deletions(-)
> 
> diff --git a/drivers/net/i40e/i40e_flow.c b/drivers/net/i40e/i40e_flow.c index
> f4d08bb..fb7ad51 100644
> --- a/drivers/net/i40e/i40e_flow.c
> +++ b/drivers/net/i40e/i40e_flow.c
> @@ -4240,6 +4240,14 @@ i40e_flow_parse_rss_action(struct rte_eth_dev
> *dev,
>  				return -rte_errno;
>  			}
>  		}
> +
> +		if (rss_info->num < rss->num) {
> +			rte_flow_error_set(error, EINVAL,
> +				RTE_FLOW_ERROR_TYPE_ACTION,
> +				act,
> +				"no valid queues");
> +			return -rte_errno;
> +		}
>  	}
> 
>  	for (n = 0; n < conf_info->queue_region_number; n++) { @@ -4264,17
> +4272,6 @@ i40e_flow_parse_rss_action(struct rte_eth_dev *dev,
>  				return -rte_errno;
>  			}
> 
> -			if (rss_info->num < rss->num ||
> -				rss->queue[0] < rss_info->queue[0] ||
> -				(rss->queue[0] + rss->num >
> -					rss_info->num + rss_info->queue[0])) {
> -				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
  

Patch

diff --git a/drivers/net/i40e/i40e_flow.c b/drivers/net/i40e/i40e_flow.c
index f4d08bb..fb7ad51 100644
--- a/drivers/net/i40e/i40e_flow.c
+++ b/drivers/net/i40e/i40e_flow.c
@@ -4240,6 +4240,14 @@  i40e_flow_parse_rss_action(struct rte_eth_dev *dev,
 				return -rte_errno;
 			}
 		}
+
+		if (rss_info->num < rss->num) {
+			rte_flow_error_set(error, EINVAL,
+				RTE_FLOW_ERROR_TYPE_ACTION,
+				act,
+				"no valid queues");
+			return -rte_errno;
+		}
 	}
 
 	for (n = 0; n < conf_info->queue_region_number; n++) {
@@ -4264,17 +4272,6 @@  i40e_flow_parse_rss_action(struct rte_eth_dev *dev,
 				return -rte_errno;
 			}
 
-			if (rss_info->num < rss->num ||
-				rss->queue[0] < rss_info->queue[0] ||
-				(rss->queue[0] + rss->num >
-					rss_info->num + rss_info->queue[0])) {
-				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 ==