wifi: iwlwifi: mvm: d3: avoid intermediate/early mutex unlock
authorJohannes Berg <johannes.berg@intel.com>
Tue, 19 Dec 2023 19:58:53 +0000 (21:58 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Thu, 21 Dec 2023 19:35:16 +0000 (20:35 +0100)
Now with the mac80211 locking model changed, we no longer can
cause any bad dependencies here between mvm->mutex and other
mutexes in mac80211, so we no longer need to drop the mutex
early or even temporarily. Clean this up.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Reviewed-by: Gregory Greenman <gregory.greenman@intel.com>
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
Link: https://msgid.link/20231219215605.1f2f5289ecc6.I7e3b8e806b6d50e88ba0c26767da8261806eb9c7@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
drivers/net/wireless/intel/iwlwifi/mvm/d3.c

index 92c45571bd6917b7a474ce70e132fe62d1935dad..4582afb149d720d077f30c0e7bb1814e5106d453 100644 (file)
@@ -1130,14 +1130,7 @@ iwl_mvm_wowlan_config(struct iwl_mvm *mvm,
                        return ret;
        }
 
-       /*
-        * This needs to be unlocked due to lock ordering
-        * constraints. Since we're in the suspend path
-        * that isn't really a problem though.
-        */
-       mutex_unlock(&mvm->mutex);
        ret = iwl_mvm_wowlan_config_key_params(mvm, vif);
-       mutex_lock(&mvm->mutex);
        if (ret)
                return ret;
 
@@ -2497,7 +2490,7 @@ static bool iwl_mvm_query_wakeup_reasons(struct iwl_mvm *mvm,
                                         struct iwl_wowlan_status_data *status)
 {
        int i;
-       bool keep;
+       bool keep = false;
        struct iwl_mvm_sta *mvm_ap_sta;
 
        if (!status)
@@ -2525,18 +2518,12 @@ static bool iwl_mvm_query_wakeup_reasons(struct iwl_mvm *mvm,
                                     mvm_ap_sta->tid_data[i].seq_number >> 4);
        }
 
-       /* now we have all the data we need, unlock to avoid mac80211 issues */
-       mutex_unlock(&mvm->mutex);
-
        iwl_mvm_report_wakeup_reasons(mvm, vif, status);
 
        keep = iwl_mvm_setup_connection_keep(mvm, vif, status);
-
-       return keep;
-
 out_unlock:
        mutex_unlock(&mvm->mutex);
-       return false;
+       return keep;
 }
 
 #define ND_QUERY_BUF_LEN (sizeof(struct iwl_scan_offload_profile_match) * \