wifi: iwlwifi: mvm: stop assuming sta id 0 in d3
authorShaul Triebitz <shaul.triebitz@intel.com>
Mon, 11 Mar 2024 06:28:07 +0000 (08:28 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Mon, 25 Mar 2024 14:36:03 +0000 (15:36 +0100)
In MLO, the station id in d3 can be other than 0.
Do not assume the station id is 0 when waking
up from d3.

Signed-off-by: Shaul Triebitz <shaul.triebitz@intel.com>
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
Link: https://msgid.link/20240311081938.6379619f2987.I83de9d868224df76eee8df8dbcf352636535821a@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
drivers/net/wireless/intel/iwlwifi/mvm/d3.c

index 10fed7df853c349fe24591e49fa80c2657718e45..cfbfa8e7040d8fb22617913d906dc524b77145a1 100644 (file)
@@ -2552,6 +2552,12 @@ static bool iwl_mvm_query_wakeup_reasons(struct iwl_mvm *mvm,
        int i;
        bool keep = false;
        struct iwl_mvm_sta *mvm_ap_sta;
+       struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif);
+       int link_id = vif->active_links ? __ffs(vif->active_links) : 0;
+       struct iwl_mvm_vif_link_info *mvm_link = mvmvif->link[link_id];
+
+       if (WARN_ON(!mvm_link))
+               goto out_unlock;
 
        if (!status)
                goto out_unlock;
@@ -2559,8 +2565,7 @@ static bool iwl_mvm_query_wakeup_reasons(struct iwl_mvm *mvm,
        IWL_DEBUG_WOWLAN(mvm, "wakeup reason 0x%x\n",
                         status->wakeup_reasons);
 
-       /* still at hard-coded place 0 for D3 image */
-       mvm_ap_sta = iwl_mvm_sta_from_staid_protected(mvm, 0);
+       mvm_ap_sta = iwl_mvm_sta_from_staid_protected(mvm, mvm_link->ap_sta_id);
        if (!mvm_ap_sta)
                goto out_unlock;