When a vsi that already exists in the created vsi_list subscribes to the
same filter again, the return value ICE_SUCCESS results in duplicate flow
rules to be stored, which will cause 'flush' and 'destroy' errors.

Fixes: fed0c5ca5f19 ("net/ice/base: support programming a new switch recipe")
Cc: sta...@dpdk.org

Signed-off-by: Yiding Zhou <yidingx.z...@intel.com>
---
 drivers/net/ice/base/ice_switch.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ice/base/ice_switch.c 
b/drivers/net/ice/base/ice_switch.c
index 4b115ce660..a2581f404d 100644
--- a/drivers/net/ice/base/ice_switch.c
+++ b/drivers/net/ice/base/ice_switch.c
@@ -8786,7 +8786,7 @@ ice_adv_add_update_vsi_list(struct ice_hw *hw,
 
                /* A rule already exists with the new VSI being added */
                if (ice_is_bit_set(m_entry->vsi_list_info->vsi_map, vsi_handle))
-                       return ICE_SUCCESS;
+                       return ICE_ERR_ALREADY_EXISTS;
 
                /* Update the previously created VSI list set with
                 * the new VSI ID passed in
-- 
2.34.1

Reply via email to