mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-01-13 17:46:25 +07:00
iwlwifi: mvm: synchronize TID queue removal
When we mark a TID as no longer having a queue, there's no guarantee the TX path isn't using this txq_id right now, having accessed it just before we reset the value. To fix this, add synchronize_net() when we change the TIDs from having a queue to not having one, so that we can then be sure that the TX path is no longer accessing that queue. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
This commit is contained in:
parent
41c4588b06
commit
06bc6f6ed4
@ -545,6 +545,16 @@ static int iwl_mvm_remove_sta_queue_marking(struct iwl_mvm *mvm, int queue)
|
||||
|
||||
rcu_read_unlock();
|
||||
|
||||
/*
|
||||
* The TX path may have been using this TXQ_ID from the tid_data,
|
||||
* so make sure it's no longer running so that we can safely reuse
|
||||
* this TXQ later. We've set all the TIDs to IWL_MVM_INVALID_QUEUE
|
||||
* above, but nothing guarantees we've stopped using them. Thus,
|
||||
* without this, we could get to iwl_mvm_disable_txq() and remove
|
||||
* the queue while still sending frames to it.
|
||||
*/
|
||||
synchronize_net();
|
||||
|
||||
return disable_agg_tids;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user