net/ice/base: fix RSS interference
authorQi Zhang <qi.z.zhang@intel.com>
Sat, 25 Jul 2020 12:14:24 +0000 (20:14 +0800)
committerFerruh Yigit <ferruh.yigit@intel.com>
Wed, 29 Jul 2020 22:41:23 +0000 (00:41 +0200)
A new symmetric RSS rule may force another asymmetric rule to be
symmetric, vice versa. The reason is due to the flow engine will
try to reuse the existing profile if the input set matches with the
new rule. The fix is to disable this optimization for RSS since we
are not at the situation as profile shortage.

Fixes: ddae0440353f ("net/ice/base: enable symmetric hash for RSS")
Cc: stable@dpdk.org
Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Tested-by: Nannan Lu <nannan.lu@intel.com>
Acked-by: Jeff Guo <jia.guo@intel.com>
drivers/net/ice/base/ice_flex_pipe.c

index 2845694..999ad6b 100644 (file)
@@ -2808,10 +2808,10 @@ ice_find_prof_id_with_mask(struct ice_hw *hw, enum ice_block blk,
        struct ice_es *es = &hw->blk[blk].es;
        u8 i;
 
-       /* For FD, we don't want to re-use an existed profile with the same
-        * field vector and mask. This will cause rule interference.
+       /* For FD and RSS, we don't want to re-use an existed profile with the
+        * same field vector and mask. This will cause rule interference.
         */
-       if (blk == ICE_BLK_FD)
+       if (blk == ICE_BLK_FD || blk == ICE_BLK_RSS)
                return ICE_ERR_DOES_NOT_EXIST;
 
        for (i = 0; i < (u8)es->count; i++) {