iwlwifi: mvm: write queue_sync_state only for sync
authorJohannes Berg <johannes.berg@intel.com>
Wed, 31 Mar 2021 09:14:41 +0000 (12:14 +0300)
committerLuca Coelho <luciano.coelho@intel.com>
Wed, 14 Apr 2021 09:07:16 +0000 (12:07 +0300)
We use mvm->queue_sync_state to wait for synchronous queue sync
messages, but if an async one happens inbetween we shouldn't
clear mvm->queue_sync_state after sending the async one, that
can run concurrently (at least from the CPU POV) with another
synchronous queue sync.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
Link: https://lore.kernel.org/r/iwlwifi.20210331121101.d11c9bcdb4aa.I0772171dbaec87433a11513e9586d98b5d920b5f@changeid
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c

index 9ed6e27..fbd37a1 100644 (file)
@@ -5177,9 +5177,10 @@ void iwl_mvm_sync_rx_queues_internal(struct iwl_mvm *mvm,
        }
 
 out:
-       mvm->queue_sync_state = 0;
-       if (notif->sync)
+       if (notif->sync) {
+               mvm->queue_sync_state = 0;
                mvm->queue_sync_cookie++;
+       }
 }
 
 static void iwl_mvm_sync_rx_queues(struct ieee80211_hw *hw)