Commit d94475c2 authored by Mohammed Shafi Shajakhan's avatar Mohammed Shafi Shajakhan Committed by Kalle Valo

ath10k: cancel coverage class work during stop and restart

It seems set_coverage_class_work is not cancelled anywhere,
though I could not find a crash/warning  with this existing
design, its safer to cancel it during stop() and also before
restarting the hardware.
Signed-off-by: default avatarMohammed Shafi Shajakhan <mohammed@qti.qualcomm.com>
Signed-off-by: default avatarKalle Valo <kvalo@qca.qualcomm.com>
parent fefcd115
...@@ -1627,6 +1627,13 @@ static void ath10k_core_restart(struct work_struct *work) ...@@ -1627,6 +1627,13 @@ static void ath10k_core_restart(struct work_struct *work)
wake_up(&ar->wmi.tx_credits_wq); wake_up(&ar->wmi.tx_credits_wq);
wake_up(&ar->peer_mapping_wq); wake_up(&ar->peer_mapping_wq);
/* TODO: We can have one instance of cancelling coverage_class_work by
* moving it to ath10k_halt(), so that both stop() and restart() would
* call that but it takes conf_mutex() and if we call cancel_work_sync()
* with conf_mutex it will deadlock.
*/
cancel_work_sync(&ar->set_coverage_class_work);
mutex_lock(&ar->conf_mutex); mutex_lock(&ar->conf_mutex);
switch (ar->state) { switch (ar->state) {
......
...@@ -4717,6 +4717,7 @@ static void ath10k_stop(struct ieee80211_hw *hw) ...@@ -4717,6 +4717,7 @@ static void ath10k_stop(struct ieee80211_hw *hw)
} }
mutex_unlock(&ar->conf_mutex); mutex_unlock(&ar->conf_mutex);
cancel_work_sync(&ar->set_coverage_class_work);
cancel_delayed_work_sync(&ar->scan.timeout); cancel_delayed_work_sync(&ar->scan.timeout);
cancel_work_sync(&ar->restart_work); cancel_work_sync(&ar->restart_work);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment