Subject: [PATCH] ath10k : Fix channel survey dump

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 <[email protected]>
---
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;

lockdep_assert_held(&ar->conf_mutex);

--
1.7.9.5


2017-04-26 15:29:16

by Felix Fietkau

[permalink] [raw]
Subject: 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 <[email protected]>
> ---
> 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

2017-05-22 15:17:55

by Venkateswara Naralasetty

[permalink] [raw]
Subject: RE: [PATCH] ath10k : Fix channel survey dump


-----Original Message-----
From: Kalle Valo=20
Sent: Friday, May 19, 2017 2:48 PM
To: [email protected]
Cc: Venkateswara Naralasettty <[email protected]>; [email protected]=
radead.org; [email protected]
Subject: Re: [PATCH] ath10k : Fix channel survey dump

Felix Fietkau <[email protected]> writes:

> On 2017-04-26 16:41, Venkateswara Rao Naralasetty wrote:
>> Channel active/busy time are showing incorrect (less than previous or=20
>> sometimes zero) for successive survey dump command.
>>=20
>> 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
>>=20
>> This patch fix this issue by assigning 'wmi_bss_survey_req_type'
>> as 'WMI_BSS_SURVEY_REQ_TYPE_READ'.
>>=20
>> Firmware ver 10.4-3.4-00082
>> Hardware QCA4019
>>=20
>> Signed-off-by: Venkateswara Rao Naralasetty=20
>> <[email protected]>
>> ---
>> drivers/net/wireless/ath/ath10k/mac.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>=20
>> diff --git a/drivers/net/wireless/ath/ath10k/mac.c=20
>> 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 ieee80=
211_hw *hw,
>> struct ieee80211_channel *channel) {
>> int ret;
>> - enum wmi_bss_survey_req_type type =3D WMI_BSS_SURVEY_REQ_TYPE_READ_CLE=
AR;
>> + enum wmi_bss_survey_req_type type =3D WMI_BSS_SURVEY_REQ_TYPE_READ;
>
> Does the firmware read the registers directly, or does it accumulate=20
> the results in a way that can't overflow? If you don't clear the=20
> counters on reset, the overflow will be problematic for the=20
> current-channel stats. I think a better approach would be to use=20
> 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.

2017-05-19 15:32:56

by Adrian Chadd

[permalink] [raw]
Subject: Re: [PATCH] ath10k : Fix channel survey dump

On 19 May 2017 at 02:17, Kalle Valo <[email protected]> wrote:
> Felix Fietkau <[email protected]> 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

2017-05-19 09:18:08

by Kalle Valo

[permalink] [raw]
Subject: Re: [PATCH] ath10k : Fix channel survey dump

Felix Fietkau <[email protected]> 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.
>>=20
>> 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
>>=20
>> This patch fix this issue by assigning 'wmi_bss_survey_req_type'
>> as 'WMI_BSS_SURVEY_REQ_TYPE_READ'.
>>=20
>> Firmware ver 10.4-3.4-00082
>> Hardware QCA4019
>>=20
>> Signed-off-by: Venkateswara Rao Naralasetty <[email protected]>
>> ---
>> drivers/net/wireless/ath/ath10k/mac.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>=20
>> diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireles=
s/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 ieee80=
211_hw *hw,
>> struct ieee80211_channel *channel)
>> {
>> int ret;
>> - enum wmi_bss_survey_req_type type =3D WMI_BSS_SURVEY_REQ_TYPE_READ_CLE=
AR;
>> + enum wmi_bss_survey_req_type type =3D 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?

--=20
Kalle Valo=

2017-05-22 06:11:21

by Johannes Berg

[permalink] [raw]
Subject: 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

2017-05-30 12:01:51

by Venkateswara Naralasetty

[permalink] [raw]
Subject: RE: [PATCH] ath10k : Fix channel survey dump



-----Original Message-----
From: ath10k [mailto:[email protected]] On Behalf Of Venka=
teswara Naralasettty
Sent: Monday, May 22, 2017 8:48 PM
To: Kalle Valo <[email protected]>; [email protected]
Cc: [email protected]; [email protected]
Subject: RE: [PATCH] ath10k : Fix channel survey dump


-----Original Message-----
From: Kalle Valo
Sent: Friday, May 19, 2017 2:48 PM
To: [email protected]
Cc: Venkateswara Naralasettty <[email protected]>; [email protected]=
radead.org; [email protected]
Subject: Re: [PATCH] ath10k : Fix channel survey dump

Felix Fietkau <[email protected]> writes:

> On 2017-04-26 16:41, Venkateswara Rao Naralasetty wrote:
>> Channel active/busy time are showing incorrect (less than previous or=20
>> sometimes zero) for successive survey dump command.
>>=20
>> 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
>>=20
>> This patch fix this issue by assigning 'wmi_bss_survey_req_type'
>> as 'WMI_BSS_SURVEY_REQ_TYPE_READ'.
>>=20
>> Firmware ver 10.4-3.4-00082
>> Hardware QCA4019
>>=20
>> Signed-off-by: Venkateswara Rao Naralasetty=20
>> <[email protected]>
>> ---
>> drivers/net/wireless/ath/ath10k/mac.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>=20
>> 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 ieee80=
211_hw *hw,
>> struct ieee80211_channel *channel) {
>> int ret;
>> - enum wmi_bss_survey_req_type type =3D WMI_BSS_SURVEY_REQ_TYPE_READ_CLE=
AR;
>> + enum wmi_bss_survey_req_type type =3D WMI_BSS_SURVEY_REQ_TYPE_READ;
>
> Does the firmware read the registers directly, or does it accumulate=20
> the results in a way that can't overflow? If you don't clear the=20
> counters on reset, the overflow will be problematic for the=20
> current-channel stats. I think a better approach would be to use=20
> 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.

> Firmware is not handling the overflow while accumulating the results, we=
are looking into some other options to make it in host

-Venkatesh.

_______________________________________________
ath10k mailing list
[email protected]
BLOCKEDlists[.]infradead[.]org/mailman/listinfo/ath10kBLOCKED