Message ID | 20200423022758.5365-1-wgong@codeaurora.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | ath10k: enable rx duration report default for wmi tlv | expand |
Wen Gong <wgong@codeaurora.org> 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 <wgong@codeaurora.org> > Signed-off-by: Kalle Valo <kvalo@codeaurora.org> Patch applied to ath-next branch of ath.git, thanks. 4913e675630e ath10k: enable rx duration report default for wmi tlv
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);
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 <wgong@codeaurora.org> --- 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(-)