[dpdk-dev] [PATCH v2] net/ixgbe: fix parsing fdir nvgre issue
Zhang, Qi Z
qi.z.zhang at intel.com
Fri Dec 22 08:05:22 CET 2017
> -----Original Message-----
> From: Zhao1, Wei
> Sent: Friday, December 22, 2017 1:46 PM
> To: dev at dpdk.org
> Cc: Zhang, Qi Z <qi.z.zhang at intel.com>; Zhao1, Wei <wei.zhao1 at intel.com>
> Subject: [PATCH v2] net/ixgbe: fix parsing fdir nvgre issue
>
> There is some wrong of mask check in nvgre parser for flow API.
>
> Fixes: 11777435c727 ("net/ixgbe: parse flow director filter")
>
> Signed-off-by: Wei Zhao <wei.zhao1 at intel.com>
>
> ---
>
> V2:
> -change c_k_s_rsvd0_ver mask check to 0xFFFF.
> ---
> drivers/net/ixgbe/ixgbe_flow.c | 22 +++++++++++++++++++---
> 1 file changed, 19 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/net/ixgbe/ixgbe_flow.c b/drivers/net/ixgbe/ixgbe_flow.c
> index 19c2d47..887d933 100644
> --- a/drivers/net/ixgbe/ixgbe_flow.c
> +++ b/drivers/net/ixgbe/ixgbe_flow.c
> @@ -2466,8 +2466,7 @@ ixgbe_parse_fdir_filter_tunnel(const struct
> rte_flow_attr *attr,
> item, "Not supported by fdir filter");
> return -rte_errno;
> }
> - if (nvgre_mask->c_k_s_rsvd0_ver !=
> - rte_cpu_to_be_16(0x3000) ||
> + if (nvgre_mask->protocol &&
> nvgre_mask->protocol != 0xFFFF) {
> memset(rule, 0, sizeof(struct ixgbe_fdir_rule));
> rte_flow_error_set(error, EINVAL,
> @@ -2475,6 +2474,15 @@ ixgbe_parse_fdir_filter_tunnel(const struct
> rte_flow_attr *attr,
> item, "Not supported by fdir filter");
> return -rte_errno;
> }
> + if (nvgre_mask->c_k_s_rsvd0_ver &&
> + nvgre_mask->c_k_s_rsvd0_ver !=
> + rte_cpu_to_be_16(0xFFFF)) {
> + memset(rule, 0, sizeof(struct ixgbe_fdir_rule));
> + rte_flow_error_set(error, EINVAL,
> + RTE_FLOW_ERROR_TYPE_ITEM,
> + item, "Not supported by fdir filter");
> + return -rte_errno;
> + }
> /* TNI must be totally masked or not. */
> if (nvgre_mask->tni[0] &&
> ((nvgre_mask->tni[0] != 0xFF) ||
> @@ -2496,7 +2504,15 @@ ixgbe_parse_fdir_filter_tunnel(const struct
> rte_flow_attr *attr,
> nvgre_spec =
> (const struct rte_flow_item_nvgre *)item->spec;
> if (nvgre_spec->c_k_s_rsvd0_ver !=
> - rte_cpu_to_be_16(0x2000) ||
> + rte_cpu_to_be_16(0x2000) &&
> + nvgre_mask->c_k_s_rsvd0_ver) {
> + memset(rule, 0, sizeof(struct ixgbe_fdir_rule));
> + rte_flow_error_set(error, EINVAL,
> + RTE_FLOW_ERROR_TYPE_ITEM,
> + item, "Not supported by fdir filter");
> + return -rte_errno;
> + }
> + if (nvgre_mask->protocol &&
> nvgre_spec->protocol !=
> rte_cpu_to_be_16(NVGRE_PROTOCOL)) {
> memset(rule, 0, sizeof(struct ixgbe_fdir_rule));
> --
> 2.9.3
Acked-by: Qi Zhang <qi.z.zhang at intel.com>
More information about the dev
mailing list