ice_init_pkg_hints() clears hw->tnl before enumerating package labels,
but leaves hw->dvm_upd untouched. Every subsequent call to
ice_init_pkg() during reset recovery appends duplicate DVM and SVM boost
entries to hw->dvm_upd.tbl[] until hw->dvm_upd.count saturates at
ICE_DVM_MAX_ENTRIES (48).

During package download, ice_set_dvm_boost_entries() then issues a
redundant Update Package Admin Queue command for every accumulated
duplicate while holding the firmware Global Configuration Lock.

Zero hw->dvm_upd alongside hw->tnl before enumerating package hints.

Fixes: a1ffafb0b4a4 ("ice: Support configuring the device to Double VLAN Mode")
Signed-off-by: Aaron Ma <[email protected]>
---
 drivers/net/ethernet/intel/ice/ice_ddp.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/net/ethernet/intel/ice/ice_ddp.c 
b/drivers/net/ethernet/intel/ice/ice_ddp.c
index b71f3fb791db7..a86ef097826d5 100644
--- a/drivers/net/ethernet/intel/ice/ice_ddp.c
+++ b/drivers/net/ethernet/intel/ice/ice_ddp.c
@@ -2101,6 +2101,7 @@ static void ice_init_pkg_hints(struct ice_hw *hw, struct 
ice_seg *ice_seg)
        int i;
 
        memset(&hw->tnl, 0, sizeof(hw->tnl));
+       memset(&hw->dvm_upd, 0, sizeof(hw->dvm_upd));
        memset(&state, 0, sizeof(state));
 
        if (!ice_seg)
-- 
2.53.0

Reply via email to