From: Shaiq Wani <shaiq.w...@intel.com>

The function ice_add_special_words() is meant to add special words (such
as traffic direction) to the rule. The function that
interprets/translates these additional words is ice_get_sw_fv_list().

However, the ice_get_sw_fv_list() is called *before*
ice_add_special_words(), so the "special" words weren't added at that
point yet, hence they're not translated. This results in the driver
ignoring whatever special words that were added. The fix is to call
ice_get_sw_fv_list() *after* ice_add_special_words().

Fixes: ed3066a3b1b0 ("net/ice/base: refactor DDP code")
Cc: sta...@dpdk.org

Signed-off-by: Jeff Shaw <jeffrey.b.s...@intel.com>
Signed-off-by: Shaiq Wani <shaiq.w...@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.bura...@intel.com>
---
 drivers/net/intel/ice/base/ice_switch.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/net/intel/ice/base/ice_switch.c 
b/drivers/net/intel/ice/base/ice_switch.c
index 54cc2e1c07..f16bec044c 100644
--- a/drivers/net/intel/ice/base/ice_switch.c
+++ b/drivers/net/intel/ice/base/ice_switch.c
@@ -8287,10 +8287,6 @@ ice_add_adv_recipe(struct ice_hw *hw, struct 
ice_adv_lkup_elem *lkups,
         */
        ice_get_compat_fv_bitmap(hw, rinfo, fv_bitmap);
 
-       status = ice_get_sw_fv_list(hw, lkup_exts, fv_bitmap, &rm->fv_list);
-       if (status)
-               goto err_unroll;
-
        /* Create any special protocol/offset pairs, such as looking at tunnel
         * bits by extracting metadata
         */
@@ -8298,6 +8294,10 @@ ice_add_adv_recipe(struct ice_hw *hw, struct 
ice_adv_lkup_elem *lkups,
        if (status)
                goto err_free_lkup_exts;
 
+       status = ice_get_sw_fv_list(hw, lkup_exts, fv_bitmap, &rm->fv_list);
+       if (status)
+               goto err_unroll;
+
        /* Group match words into recipes using preferred recipe grouping
         * criteria.
         */
-- 
2.47.3

Reply via email to