2020-02-20 04:02:04

by Yibo Zhao

[permalink] [raw]
Subject: [PATCH] ath10k: fix not registering airtime of 11a station with WMM disable

The tid of 11a station with WMM disable reported by FW is 0x10 in
tx completion. The tid 16 is mapped to a NULL txq since buffer
MMPDU capbility is not supported. Then 11a station's airtime will
not be registered due to NULL txq check. As a results, airtime of
11a station keeps unchanged in debugfs system.

Mask the tid along with IEEE80211_QOS_CTL_TID_MASK to make it in
the valid range.

Hardwares tested : QCA9984
Firmwares tested : 10.4-3.10-00047

Signed-off-by: Yibo Zhao <[email protected]>
---
drivers/net/wireless/ath/ath10k/htt_rx.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/net/wireless/ath/ath10k/htt_rx.c b/drivers/net/wireless/ath/ath10k/htt_rx.c
index 38a5814..f883f2a 100644
--- a/drivers/net/wireless/ath/ath10k/htt_rx.c
+++ b/drivers/net/wireless/ath/ath10k/htt_rx.c
@@ -2744,7 +2744,8 @@ static void ath10k_htt_rx_tx_compl_ind(struct ath10k *ar,
continue;
}

- tid = FIELD_GET(HTT_TX_PPDU_DUR_INFO0_TID_MASK, info0);
+ tid = FIELD_GET(HTT_TX_PPDU_DUR_INFO0_TID_MASK, info0) &
+ IEEE80211_QOS_CTL_TID_MASK;
tx_duration = __le32_to_cpu(ppdu_dur->tx_duration);

ieee80211_sta_register_airtime(peer->sta, tid, tx_duration, 0);
--
1.9.1


2020-02-20 05:11:55

by Justin Capella

[permalink] [raw]
Subject: Re: [PATCH] ath10k: fix not registering airtime of 11a station with WMM disable

ieee80211_sta_register_airtime uses ieee80211_ac_from_tid(tid) which
already applies a mask, so should be returning IEEE80211_AC_BE = 2
already, there has been recent changes to some of this so maybe I'm
looking at the wrong decision but I don't think this change makes a
difference

On Wed, Feb 19, 2020 at 8:02 PM Yibo Zhao <[email protected]> wrote:
>
> The tid of 11a station with WMM disable reported by FW is 0x10 in
> tx completion. The tid 16 is mapped to a NULL txq since buffer
> MMPDU capbility is not supported. Then 11a station's airtime will
> not be registered due to NULL txq check. As a results, airtime of
> 11a station keeps unchanged in debugfs system.
>
> Mask the tid along with IEEE80211_QOS_CTL_TID_MASK to make it in
> the valid range.
>
> Hardwares tested : QCA9984
> Firmwares tested : 10.4-3.10-00047
>
> Signed-off-by: Yibo Zhao <[email protected]>
> ---
> drivers/net/wireless/ath/ath10k/htt_rx.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/net/wireless/ath/ath10k/htt_rx.c b/drivers/net/wireless/ath/ath10k/htt_rx.c
> index 38a5814..f883f2a 100644
> --- a/drivers/net/wireless/ath/ath10k/htt_rx.c
> +++ b/drivers/net/wireless/ath/ath10k/htt_rx.c
> @@ -2744,7 +2744,8 @@ static void ath10k_htt_rx_tx_compl_ind(struct ath10k *ar,
> continue;
> }
>
> - tid = FIELD_GET(HTT_TX_PPDU_DUR_INFO0_TID_MASK, info0);
> + tid = FIELD_GET(HTT_TX_PPDU_DUR_INFO0_TID_MASK, info0) &
> + IEEE80211_QOS_CTL_TID_MASK;
> tx_duration = __le32_to_cpu(ppdu_dur->tx_duration);
>
> ieee80211_sta_register_airtime(peer->sta, tid, tx_duration, 0);
> --
> 1.9.1

2020-03-11 16:47:28

by Kalle Valo

[permalink] [raw]
Subject: Re: [PATCH] ath10k: fix not registering airtime of 11a station with WMM disable

Yibo Zhao <[email protected]> wrote:

> The tid of 11a station with WMM disable reported by FW is 0x10 in
> tx completion. The tid 16 is mapped to a NULL txq since buffer
> MMPDU capbility is not supported. Then 11a station's airtime will
> not be registered due to NULL txq check. As a results, airtime of
> 11a station keeps unchanged in debugfs system.
>
> Mask the tid along with IEEE80211_QOS_CTL_TID_MASK to make it in
> the valid range.
>
> Hardwares tested : QCA9984
> Firmwares tested : 10.4-3.10-00047
>
> Signed-off-by: Yibo Zhao <[email protected]>
> Signed-off-by: Kalle Valo <[email protected]>

Patch applied to ath-next branch of ath.git, thanks.

f9680c75d187 ath10k: fix not registering airtime of 11a station with WMM disable

--
https://patchwork.kernel.org/patch/11393223/

https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches