| From 4a9e8cb61f55bbd8dbf5feb5baa528e7b6251ab1 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Mon, 15 Jun 2020 20:29:03 +0300 |
| Subject: ath10k: provide survey info as accumulated data |
| |
| From: Venkateswara Naralasetty <vnaralas@codeaurora.org> |
| |
| [ Upstream commit 720e5c03e5cb26d33d97f55192b791bb48478aa5 ] |
| |
| It is expected that the returned counters by .get_survey are monotonic |
| increasing. But the data from ath10k gets reset to zero regularly. Channel |
| active/busy time are then showing incorrect values (less than previous or |
| sometimes zero) for the currently active channel during successive survey |
| dump commands. |
| |
| example: |
| |
| $ iw dev wlan0 survey dump |
| Survey data from wlan0 |
| frequency: 5180 MHz [in use] |
| channel active time: 54995 ms |
| channel busy time: 432 ms |
| channel receive time: 0 ms |
| channel transmit time: 59 ms |
| ... |
| |
| $ iw dev wlan0 survey dump |
| Survey data from wlan0 |
| frequency: 5180 MHz [in use] |
| channel active time: 32592 ms |
| channel busy time: 254 ms |
| channel receive time: 0 ms |
| channel transmit time: 0 ms |
| ... |
| |
| The correct way to handle this is to use the non-clearing |
| WMI_BSS_SURVEY_REQ_TYPE_READ wmi_bss_survey_req_type. The firmware will |
| then accumulate the survey data and handle wrap arounds. |
| |
| Tested-on: QCA9984 hw1.0 10.4-3.5.3-00057 |
| Tested-on: QCA988X hw2.0 10.2.4-1.0-00047 |
| Tested-on: QCA9888 hw2.0 10.4-3.9.0.2-00024 |
| Tested-on: QCA4019 hw1.0 10.4-3.6-00140 |
| |
| Fixes: fa7937e3d5c2 ("ath10k: update bss channel survey information") |
| Signed-off-by: Venkateswara Naralasetty <vnaralas@codeaurora.org> |
| Tested-by: Markus Theil <markus.theil@tu-ilmenau.de> |
| Tested-by: John Deere <24601deerej@gmail.com> |
| [sven@narfation.org: adjust commit message] |
| Signed-off-by: Sven Eckelmann <sven@narfation.org> |
| Signed-off-by: Kalle Valo <kvalo@codeaurora.org> |
| Link: https://lore.kernel.org/r/1592232686-28712-1-git-send-email-kvalo@codeaurora.org |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/net/wireless/ath/ath10k/mac.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c |
| index 2294ba311c47a..8b3fe88d1c4e7 100644 |
| --- a/drivers/net/wireless/ath/ath10k/mac.c |
| +++ b/drivers/net/wireless/ath/ath10k/mac.c |
| @@ -6579,7 +6579,7 @@ ath10k_mac_update_bss_chan_survey(struct ath10k *ar, |
| struct ieee80211_channel *channel) |
| { |
| int ret; |
| - enum wmi_bss_survey_req_type type = WMI_BSS_SURVEY_REQ_TYPE_READ_CLEAR; |
| + enum wmi_bss_survey_req_type type = WMI_BSS_SURVEY_REQ_TYPE_READ; |
| |
| lockdep_assert_held(&ar->conf_mutex); |
| |
| -- |
| 2.25.1 |
| |