2020-04-23 02:32:36

by Wen Gong

[permalink] [raw]
Subject: [PATCH] ath10k: enable rx duration report default for wmi tlv

When run command "iw dev wlan0 station dump", the rx duration is 0.
When firmware indicate WMI_UPDATE_STATS_EVENTID, extended flag of
statsis not set by default, so firmware do not report rx duration.

one sample:
localhost # iw wlan0 station dump
Station c4:04:15:5d:97:22 (on wlan0)
inactive time: 48 ms
rx bytes: 21670
rx packets: 147
tx bytes: 11529
tx packets: 100
tx retries: 88
tx failed: 36
beacon loss: 1
beacon rx: 31
rx drop misc: 47
signal: -72 [-74, -75] dBm
signal avg: -71 [-74, -75] dBm
beacon signal avg: -71 dBm
tx bitrate: 54.0 MBit/s MCS 3 40MHz
rx bitrate: 1.0 MBit/s
rx duration: 0 us

This patch enable firmware's extened flag of stats by setting flag
WMI_TLV_STAT_PEER_EXTD of ar->fw_stats_req_mask which is set in
ath10k_core_init_firmware_features via WMI_REQUEST_STATS_CMDID.

After apply this patch, rx duration show value with the command:
Station c4:04:15:5d:97:22 (on wlan0)
inactive time: 883 ms
rx bytes: 44289
rx packets: 265
tx bytes: 10838
tx packets: 93
tx retries: 899
tx failed: 103
beacon loss: 0
beacon rx: 78
rx drop misc: 46
signal: -71 [-74, -76] dBm
signal avg: -70 [-74, -76] dBm
beacon signal avg: -70 dBm
tx bitrate: 54.0 MBit/s MCS 3 40MHz
rx bitrate: 1.0 MBit/s
rx duration: 358004 us

This patch do not have side effect for all chips, because function
ath10k_debug_fw_stats_request is already exported to debugfs
"fw_stats" and WMI_REQUEST_STATS_CMDID is safely sent after condition
checked by ath10k_peer_stats_enabled in ath10k_sta_statistics.

Tested with QCA6174 SDIO with firmware WLAN.RMH.4.4.1-00042.

Signed-off-by: Wen Gong <[email protected]>
---
drivers/net/wireless/ath/ath10k/debug.c | 2 +-
drivers/net/wireless/ath/ath10k/debug.h | 8 ++++++++
drivers/net/wireless/ath/ath10k/mac.c | 2 ++
3 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/drivers/net/wireless/ath/ath10k/debug.c b/drivers/net/wireless/ath/ath10k/debug.c
index 69139c2e6f82..e8250a665433 100644
--- a/drivers/net/wireless/ath/ath10k/debug.c
+++ b/drivers/net/wireless/ath/ath10k/debug.c
@@ -349,7 +349,7 @@ void ath10k_debug_fw_stats_process(struct ath10k *ar, struct sk_buff *skb)
spin_unlock_bh(&ar->data_lock);
}

-static int ath10k_debug_fw_stats_request(struct ath10k *ar)
+int ath10k_debug_fw_stats_request(struct ath10k *ar)
{
unsigned long timeout, time_left;
int ret;
diff --git a/drivers/net/wireless/ath/ath10k/debug.h b/drivers/net/wireless/ath/ath10k/debug.h
index 82f7eb8583d9..4cbfd9279d6f 100644
--- a/drivers/net/wireless/ath/ath10k/debug.h
+++ b/drivers/net/wireless/ath/ath10k/debug.h
@@ -125,6 +125,9 @@ static inline int ath10k_debug_is_extd_tx_stats_enabled(struct ath10k *ar)
{
return ar->debug.enable_extd_tx_stats;
}
+
+int ath10k_debug_fw_stats_request(struct ath10k *ar);
+
#else

static inline int ath10k_debug_start(struct ath10k *ar)
@@ -192,6 +195,11 @@ static inline int ath10k_debug_is_extd_tx_stats_enabled(struct ath10k *ar)
return 0;
}

+static inline int ath10k_debug_fw_stats_request(struct ath10k *ar)
+{
+ return 0;
+}
+
#define ATH10K_DFS_STAT_INC(ar, c) do { } while (0)

#define ath10k_debug_get_et_strings NULL
diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c
index 6791c0035be0..ea5a26ea9b32 100644
--- a/drivers/net/wireless/ath/ath10k/mac.c
+++ b/drivers/net/wireless/ath/ath10k/mac.c
@@ -8306,6 +8306,8 @@ static void ath10k_sta_statistics(struct ieee80211_hw *hw,
if (!ath10k_peer_stats_enabled(ar))
return;

+ ath10k_debug_fw_stats_request(ar);
+
sinfo->rx_duration = arsta->rx_duration;
sinfo->filled |= BIT_ULL(NL80211_STA_INFO_RX_DURATION);

--
2.23.0


2020-04-27 05:03:02

by Kalle Valo

[permalink] [raw]
Subject: Re: [PATCH] ath10k: enable rx duration report default for wmi tlv

Wen Gong <[email protected]> wrote:

> When run command "iw dev wlan0 station dump", the rx duration is 0.
> When firmware indicate WMI_UPDATE_STATS_EVENTID, extended flag of
> statsis not set by default, so firmware do not report rx duration.
>
> one sample:
> localhost # iw wlan0 station dump
> Station c4:04:15:5d:97:22 (on wlan0)
> inactive time: 48 ms
> rx bytes: 21670
> rx packets: 147
> tx bytes: 11529
> tx packets: 100
> tx retries: 88
> tx failed: 36
> beacon loss: 1
> beacon rx: 31
> rx drop misc: 47
> signal: -72 [-74, -75] dBm
> signal avg: -71 [-74, -75] dBm
> beacon signal avg: -71 dBm
> tx bitrate: 54.0 MBit/s MCS 3 40MHz
> rx bitrate: 1.0 MBit/s
> rx duration: 0 us
>
> This patch enable firmware's extened flag of stats by setting flag
> WMI_TLV_STAT_PEER_EXTD of ar->fw_stats_req_mask which is set in
> ath10k_core_init_firmware_features via WMI_REQUEST_STATS_CMDID.
>
> After apply this patch, rx duration show value with the command:
> Station c4:04:15:5d:97:22 (on wlan0)
> inactive time: 883 ms
> rx bytes: 44289
> rx packets: 265
> tx bytes: 10838
> tx packets: 93
> tx retries: 899
> tx failed: 103
> beacon loss: 0
> beacon rx: 78
> rx drop misc: 46
> signal: -71 [-74, -76] dBm
> signal avg: -70 [-74, -76] dBm
> beacon signal avg: -70 dBm
> tx bitrate: 54.0 MBit/s MCS 3 40MHz
> rx bitrate: 1.0 MBit/s
> rx duration: 358004 us
>
> This patch do not have side effect for all chips, because function
> ath10k_debug_fw_stats_request is already exported to debugfs
> "fw_stats" and WMI_REQUEST_STATS_CMDID is safely sent after condition
> checked by ath10k_peer_stats_enabled in ath10k_sta_statistics.
>
> Tested with QCA6174 SDIO with firmware WLAN.RMH.4.4.1-00042.
>
> Signed-off-by: Wen Gong <[email protected]>
> Signed-off-by: Kalle Valo <[email protected]>

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

4913e675630e ath10k: enable rx duration report default for wmi tlv

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

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