]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
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)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 1 Mar 2024 12:16:47 +0000 (13:16 +0100)
[ Upstream commit 5f8a3561ea8bf75ad52cb16dafe69dd550fa542e ]

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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c

index f2096729ac5aca8464f7e94039453421760e40f7..08008b0c0637cd24f0f9012a9a6b387ec6beba8d 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)