wifi: iwlwifi: assign phy_ctxt before eSR activation
authorMiri Korenblit <miriam.rachel.korenblit@intel.com>
Tue, 19 Dec 2023 19:58:56 +0000 (21:58 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 25 Jan 2024 23:35:29 +0000 (15:35 -0800)
[ Upstream commit 9b6614e5ead5d19a71893bcca3f1a6569ca0c456 ]

eSR is activated when a chanctx is assigned to more than one link.
During eSR activation we should disable RLC for both phys, and configure
the FW with a special phy command for both phys.
Currently we assign the phy_ctxt to the link only after eSR activation,
so RLC is not disabled for the new phy_ctxt, and a cmd is not sent to FW.
Fix this by first assigning the new phy_ctxt to the link and then
doing the eSR activation.

Fixes: 12bacfc2c065 ("wifi: iwlwifi: handle eSR transitions")
Reviewed-by: Gregory Greenman <gregory.greenman@intel.com>
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
Link: https://msgid.link/20231219215605.3d94507f5d9a.I537fcd73aedf94c7348c03157e486f24301fef14@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/wireless/intel/iwlwifi/mvm/mld-mac80211.c

index 2ddb6f7..1e58f02 100644 (file)
@@ -269,17 +269,17 @@ __iwl_mvm_mld_assign_vif_chanctx(struct iwl_mvm *mvm,
                }
        }
 
+       mvmvif->link[link_id]->phy_ctxt = phy_ctxt;
+
        if (iwl_mvm_is_esr_supported(mvm->fwrt.trans) && n_active > 1) {
                mvmvif->link[link_id]->listen_lmac = true;
                ret = iwl_mvm_esr_mode_active(mvm, vif);
                if (ret) {
                        IWL_ERR(mvm, "failed to activate ESR mode (%d)\n", ret);
-                       return ret;
+                       goto out;
                }
        }
 
-       mvmvif->link[link_id]->phy_ctxt = phy_ctxt;
-
        if (switching_chanctx) {
                /* reactivate if we turned this off during channel switch */
                if (vif->type == NL80211_IFTYPE_AP)