RE: [PATCH] ath10k : Fix channel survey dump
-Original Message- From: Kalle Valo Sent: Friday, May 19, 2017 2:48 PM To: n...@nbd.name Cc: Venkateswara Naralasettty <vnara...@qti.qualcomm.com>; ath...@lists.infradead.org; linux-wireless@vger.kernel.org Subject: Re: [PATCH] ath10k : Fix channel survey dump Felix Fietkau <n...@nbd.name> writes: > On 2017-04-26 16:41, Venkateswara Rao Naralasetty wrote: >> Channel active/busy time are showing incorrect (less than previous or >> sometimes zero) for successive survey dump command. >> >> example: >> 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 >> 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 >> >> This patch fix this issue by assigning 'wmi_bss_survey_req_type' >> as 'WMI_BSS_SURVEY_REQ_TYPE_READ'. >> >> Firmware ver 10.4-3.4-00082 >> Hardware QCA4019 >> >> Signed-off-by: Venkateswara Rao Naralasetty >> <c_vna...@qti.qualcomm.com> >> --- >> 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 9977829..87a9b55 100644 >> --- a/drivers/net/wireless/ath/ath10k/mac.c >> +++ b/drivers/net/wireless/ath/ath10k/mac.c >> @@ -6621,7 +6621,7 @@ static void ath10k_reconfig_complete(struct >> ieee80211_hw *hw, >>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; > > Does the firmware read the registers directly, or does it accumulate > the results in a way that can't overflow? If you don't clear the > counters on reset, the overflow will be problematic for the > current-channel stats. I think a better approach would be to use > READ_CLEAR for in-use channels and store the sum inside the driver. Venkateswara, any comments? -- Kalle Valo Sorry for the delayed response I held up with some other work. Currently I am working with firmware team to address your comments. -- Venkatesh.
Re: [PATCH] ath10k : Fix channel survey dump
On Fri, 2017-05-19 at 08:32 -0700, Adrian Chadd wrote: > > I just bumped into this at work. I'm thinking of teaching mac80211 > about optionally summing things so each driver doesn't need another > per-channel array. > We could possibly even do that in cfg80211, I guess. johannes
Re: [PATCH] ath10k : Fix channel survey dump
On 19 May 2017 at 02:17, Kalle Valowrote: > Felix Fietkau writes: > >> On 2017-04-26 16:41, Venkateswara Rao Naralasetty wrote: >>> Channel active/busy time are showing incorrect >>> (less than previous or sometimes zero) for >>> successive survey dump command. [snip] >> Does the firmware read the registers directly, or does it accumulate >> the results in a way that can't overflow? If you don't clear the >> counters on reset, the overflow will be problematic for the >> current-channel stats. I think a better approach would be to use >> READ_CLEAR for in-use channels and store the sum inside the driver. > > Venkateswara, any comments? I just bumped into this at work. I'm thinking of teaching mac80211 about optionally summing things so each driver doesn't need another per-channel array. -adrian
Re: [PATCH] ath10k : Fix channel survey dump
Felix Fietkauwrites: > On 2017-04-26 16:41, Venkateswara Rao Naralasetty wrote: >> Channel active/busy time are showing incorrect >> (less than previous or sometimes zero) for >> successive survey dump command. >> >> example: >> 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 >> 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 >> >> This patch fix this issue by assigning 'wmi_bss_survey_req_type' >> as 'WMI_BSS_SURVEY_REQ_TYPE_READ'. >> >> Firmware ver 10.4-3.4-00082 >> Hardware QCA4019 >> >> Signed-off-by: Venkateswara Rao Naralasetty >> --- >> 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 9977829..87a9b55 100644 >> --- a/drivers/net/wireless/ath/ath10k/mac.c >> +++ b/drivers/net/wireless/ath/ath10k/mac.c >> @@ -6621,7 +6621,7 @@ static void ath10k_reconfig_complete(struct >> ieee80211_hw *hw, >>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; > > Does the firmware read the registers directly, or does it accumulate > the results in a way that can't overflow? If you don't clear the > counters on reset, the overflow will be problematic for the > current-channel stats. I think a better approach would be to use > READ_CLEAR for in-use channels and store the sum inside the driver. Venkateswara, any comments? -- Kalle Valo
Re: [PATCH] ath10k : Fix channel survey dump
On 2017-04-26 16:41, Venkateswara Rao Naralasetty wrote: > Channel active/busy time are showing incorrect > (less than previous or sometimes zero) for > successive survey dump command. > > example: > 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 > 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 > > This patch fix this issue by assigning 'wmi_bss_survey_req_type' > as 'WMI_BSS_SURVEY_REQ_TYPE_READ'. > > Firmware ver 10.4-3.4-00082 > Hardware QCA4019 > > Signed-off-by: Venkateswara Rao Naralasetty> --- > 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 9977829..87a9b55 100644 > --- a/drivers/net/wireless/ath/ath10k/mac.c > +++ b/drivers/net/wireless/ath/ath10k/mac.c > @@ -6621,7 +6621,7 @@ static void ath10k_reconfig_complete(struct > ieee80211_hw *hw, > 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; Does the firmware read the registers directly, or does it accumulate the results in a way that can't overflow? If you don't clear the counters on reset, the overflow will be problematic for the current-channel stats. I think a better approach would be to use READ_CLEAR for in-use channels and store the sum inside the driver. - Felix