]> git.baikalelectronics.ru Git - kernel.git/commit
iwlwifi: mvm: don't schedule the roc_done_wk if it is already running
authorAvraham Stern <avraham.stern@intel.com>
Thu, 19 Aug 2021 15:40:34 +0000 (18:40 +0300)
committerLuca Coelho <luciano.coelho@intel.com>
Thu, 26 Aug 2021 20:37:07 +0000 (23:37 +0300)
commita76b57311b1a247e31b055872d021c38707dc3a8
treee04a198b43639b5afb9b7ccd5d69b0385539441f
parent89639e06d0f35625db506f43971d08b0489cd2ce
iwlwifi: mvm: don't schedule the roc_done_wk if it is already running

When P2P roc is removed, the IWL_MVM_STATUS_NEED_FLUSH_P2P bit is set
to indicate to iwl_mvm_roc_done_wk() that the removed roc is a P2P
one, so it will flush the broadcast station and not the aux station.

However, since setting this bit and scheduling the worker is done
in roc ended flow as well as in case the roc is removed, there is
a race where the worker has already started running (but did not
test this bit yet) and then it is scheduled again. In this case,
the first run of the worker will clear this bit, and thus the second
run will find it already cleared and will try to flush and remove
the aux station by mistake.

Fix it by scheduling the worker only if this bit is not yet set. In
case this bit is already set, the worker is either running or
scheduled, so there is no need to re-schedule it.

Signed-off-by: Avraham Stern <avraham.stern@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
Link: https://lore.kernel.org/r/iwlwifi.20210819183728.8c147659b331.If5924375e9bfd46214ab8ab81cb9d0f5c82fbcbc@changeid
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
drivers/net/wireless/intel/iwlwifi/mvm/time-event.c