diff options
author | Thomas Pedersen <c_tpeder@qca.qualcomm.com> | 2012-08-15 19:51:24 -0400 |
---|---|---|
committer | Kalle Valo <kvalo@qca.qualcomm.com> | 2012-10-24 04:49:46 -0400 |
commit | b1f47e3a962b8b69612d1eecf4d50082b402fcc5 (patch) | |
tree | 0e7d9fc72282e9ac0e78ec8c3106cecb17176cff /drivers/net/wireless/ath/ath6kl/sdio.c | |
parent | a3b3842c2e27ba07f8f7944a76013425d182c47b (diff) |
ath6kl: rework scheduled scan
This patch reflects changes in the firmware scheduled scan
implementation to behave better in cases with multiple concurrent vifs.
Major changes:
- scheduled scan filters and state are now programmed per-vif.
- decouple scheduled scan from host sleep.
To maintain graceful failure with old firmwares, a new firmware
capability bit is introduced: ATH6KL_FW_CAPABILITY_SCHED_SCAN_V2.
ath6kl simply won't advertise scheduled scan to cfg80211 if the
SCHED_SCAN_V2 is not supported.
Since firmwares from here on out won't support the previous implicit API
for scheduled scan (set WoW filters and host sleep), bump the firmware
API to protect old drivers.
Unfortunately, due to firmware RAM constraints ath6kl still cannot
expect a scan complete event at the end of a scheduled scan results
cycle, so the sched_scan_timer is retained.
Signed-off-by: Thomas Pedersen <c_tpeder@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
Diffstat (limited to 'drivers/net/wireless/ath/ath6kl/sdio.c')
-rw-r--r-- | drivers/net/wireless/ath/ath6kl/sdio.c | 19 |
1 files changed, 0 insertions, 19 deletions
diff --git a/drivers/net/wireless/ath/ath6kl/sdio.c b/drivers/net/wireless/ath/ath6kl/sdio.c index 65e998331517..cc17fe02bdad 100644 --- a/drivers/net/wireless/ath/ath6kl/sdio.c +++ b/drivers/net/wireless/ath/ath6kl/sdio.c | |||
@@ -844,22 +844,6 @@ static int ath6kl_sdio_suspend(struct ath6kl *ar, struct cfg80211_wowlan *wow) | |||
844 | bool try_deepsleep = false; | 844 | bool try_deepsleep = false; |
845 | int ret; | 845 | int ret; |
846 | 846 | ||
847 | if (ar->state == ATH6KL_STATE_SCHED_SCAN) { | ||
848 | ath6kl_dbg(ATH6KL_DBG_SUSPEND, "sched scan is in progress\n"); | ||
849 | |||
850 | ret = ath6kl_set_sdio_pm_caps(ar); | ||
851 | if (ret) | ||
852 | goto cut_pwr; | ||
853 | |||
854 | ret = ath6kl_cfg80211_suspend(ar, | ||
855 | ATH6KL_CFG_SUSPEND_SCHED_SCAN, | ||
856 | NULL); | ||
857 | if (ret) | ||
858 | goto cut_pwr; | ||
859 | |||
860 | return 0; | ||
861 | } | ||
862 | |||
863 | if (ar->suspend_mode == WLAN_POWER_STATE_WOW || | 847 | if (ar->suspend_mode == WLAN_POWER_STATE_WOW || |
864 | (!ar->suspend_mode && wow)) { | 848 | (!ar->suspend_mode && wow)) { |
865 | 849 | ||
@@ -942,9 +926,6 @@ static int ath6kl_sdio_resume(struct ath6kl *ar) | |||
942 | case ATH6KL_STATE_WOW: | 926 | case ATH6KL_STATE_WOW: |
943 | break; | 927 | break; |
944 | 928 | ||
945 | case ATH6KL_STATE_SCHED_SCAN: | ||
946 | break; | ||
947 | |||
948 | case ATH6KL_STATE_SUSPENDING: | 929 | case ATH6KL_STATE_SUSPENDING: |
949 | break; | 930 | break; |
950 | 931 | ||