When set flow ipv6 tc rule, ice_get_flow_field will set error.
This patch fixes this issue.

Fixes: d76116a4678f ("net/ice: add generic flow API")
Cc: sta...@dpdk.org

Signed-off-by: Wang Ying A <ying.a.w...@intel.com>
---
 drivers/net/ice/ice_generic_flow.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/drivers/net/ice/ice_generic_flow.c 
b/drivers/net/ice/ice_generic_flow.c
index 2c57276..5725bff 100644
--- a/drivers/net/ice/ice_generic_flow.c
+++ b/drivers/net/ice/ice_generic_flow.c
@@ -282,8 +282,7 @@ static uint64_t ice_get_flow_field(const struct 
rte_flow_item pattern[],
                        if (!(ipv6_spec && ipv6_mask))
                                break;
 
-                       if (ipv6_mask->hdr.payload_len ||
-                           ipv6_mask->hdr.vtc_flow) {
+                       if (ipv6_mask->hdr.payload_len) {
                                rte_flow_error_set(error, EINVAL,
                                           RTE_FLOW_ERROR_TYPE_ITEM,
                                           item,
@@ -317,6 +316,11 @@ static uint64_t ice_get_flow_field(const struct 
rte_flow_item pattern[],
                                        input_set |= ICE_INSET_IPV6_PROTO;
                                if (ipv6_mask->hdr.hop_limits == UINT8_MAX)
                                        input_set |= ICE_INSET_IPV6_HOP_LIMIT;
+                               if ((ipv6_mask->hdr.vtc_flow &
+                                       rte_cpu_to_be_32(RTE_IPV6_HDR_TC_MASK))
+                                               == rte_cpu_to_be_32
+                                               (RTE_IPV6_HDR_TC_MASK))
+                                       input_set |= ICE_INSET_IPV6_TOS;
                        }
 
                        break;
@@ -486,7 +490,7 @@ static uint64_t ice_get_flow_field(const struct 
rte_flow_item pattern[],
                        rte_flow_error_set(error, EINVAL,
                                           RTE_FLOW_ERROR_TYPE_ITEM,
                                           item,
-                                          "Invalid mask no exist");
+                                          "Invalid pattern");
                        break;
                }
        }
-- 
1.8.3.1

Reply via email to