aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/ath/ath10k/mac.h
diff options
context:
space:
mode:
authorMichal Kazior <michal.kazior@tieto.com>2014-08-05 14:54:44 +0200
committerKalle Valo <kvalo@qca.qualcomm.com>2014-08-12 10:47:48 +0300
commit5c81c7fd62004be13a3c9345ca25607d14862cc4 (patch)
tree49826629326a55210f514427776fdc39fa8c51fb /drivers/net/wireless/ath/ath10k/mac.h
parentath10k: simplify scan debug prints (diff)
downloadlinux-dev-5c81c7fd62004be13a3c9345ca25607d14862cc4.tar.xz
linux-dev-5c81c7fd62004be13a3c9345ca25607d14862cc4.zip
ath10k: introduce a stricter scan state machine
This aims at fixing some rare scan bugs related to firmware reporting unexpected scan event sequences. One such bug was if spectral scan phyerr reporting prevented firmware from properly propagating scan events to host. This led to scan timeout. After that next scan would trigger scan completed event first (before scan started event) leading to ar->scan.in_progress and timeout timer states to be overwritten incorrectly and making the very next scan to hang forever. Reported-by: Janusz Dziedzic <janusz.dziedzic@tieto.com> Signed-off-by: Michal Kazior <michal.kazior@tieto.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
Diffstat (limited to 'drivers/net/wireless/ath/ath10k/mac.h')
-rw-r--r--drivers/net/wireless/ath/ath10k/mac.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/net/wireless/ath/ath10k/mac.h b/drivers/net/wireless/ath/ath10k/mac.h
index ef4f84376d7c..e64fce70e9eb 100644
--- a/drivers/net/wireless/ath/ath10k/mac.h
+++ b/drivers/net/wireless/ath/ath10k/mac.h
@@ -31,7 +31,9 @@ void ath10k_mac_destroy(struct ath10k *ar);
int ath10k_mac_register(struct ath10k *ar);
void ath10k_mac_unregister(struct ath10k *ar);
struct ath10k_vif *ath10k_get_arvif(struct ath10k *ar, u32 vdev_id);
-void ath10k_reset_scan(unsigned long ptr);
+void __ath10k_scan_finish(struct ath10k *ar);
+void ath10k_scan_finish(struct ath10k *ar);
+void ath10k_scan_timeout_work(struct work_struct *work);
void ath10k_offchan_tx_purge(struct ath10k *ar);
void ath10k_offchan_tx_work(struct work_struct *work);
void ath10k_mgmt_over_wmi_tx_purge(struct ath10k *ar);