Re: [PATCH] ath10k: Add sta rx packet stats per tid

2018-03-02 Thread Kalle Valo
Vasanthakumar Thiagarajan  writes:

>> This added new ath10k-check warnings, I fixed those in the pending
>> branch:
>> 
>> drivers/net/wireless/ath/ath10k/debug.h:203: Alignment should match open 
>> parenthesis
>> drivers/net/wireless/ath/ath10k/debug.h:226: Alignment should match open 
>> parenthesis
>> drivers/net/wireless/ath/ath10k/debugfs_sta.c:24: Alignment should
>> match open parenthesis
>> drivers/net/wireless/ath/ath10k/debugfs_sta.c:40: Alignment should
>> match open parenthesis
>> drivers/net/wireless/ath/ath10k/debugfs_sta.c:60: Alignment should
>> match open parenthesis
>> 
>> Also I fixed the typo "rages" in debug.h. My changes:
>
> Thanks for fixing it. In most of the cases, fixing above warnings
> would result in lines > 80 chars.
> May be we need not be very strict about > 80 char limit?

In ath10k-check I set the limit to 90 chars, but I guess it could be
even higher than that. But on the other it shouldn't be too long, not
everyone like to have one huge window for editor :)

-- 
Kalle Valo


Re: [PATCH] ath10k: Add sta rx packet stats per tid

2018-03-02 Thread Vasanthakumar Thiagarajan
On Wednesday 28 February 2018 06:47 PM, Kalle Valo wrote:
> Vasanthakumar Thiagarajan  writes:
> 
>> Added per tid sta counters for the following
>>
>> - Total number MSDUs received from firmware
>> - Number of MSDUs received with errors like decryption, crc, mic ,etc.
>> - Number of MSDUs dropped in the driver
>> - A-MPDU/A-MSDU subframe stats
>> - Number of MSDUS passed to mac80211
>>
>> All stats other than A-MPDU stats are only for received data frames.
>> A-MPDU stats might have stats for management frames when monitor
>> interface is active where management frames are notified both in wmi
>> and HTT interfaces.
>>
>> These per tid stats can be enabled with tid bitmask through a debugfs
>> like below
>>
>>   echo  > 
>> /sys/kernel/debug/ieee80211/phyX/ath10k/sta_tid_stats_mask
>>
>>   tid 16 (tid_bitmask 0x1) is used for non-qos data/management frames
>>
>> The stats are read from
>> /sys/kernel/debug/ieee80211/phyX/netdev\:wlanX/stations//dump_tid_stats
>>
>> Sample output:
>>
>>   To enable rx stats for tid 0, 5 and 6,
>>
>>   echo 0x0061 > 
>> /sys/kernel/debug/ieee80211/phy0/ath10k/sta_tid_stats_mask
>>
>> cat 
>> /sys/kernel/debug/ieee80211/phy0/netdev\:wlan15/stations/8c\:fd\:f0\:0a\:8e\:df/dump_tid_stats
>>
>>  Driver Rx pkt stats per tid, ([tid] count)
>>  --
>> MSDUs from FW   [00] 2567[05] 3178[06] 1089
>> MSDUs unchained [00] 0   [05] 0   [06] 0
>> MSDUs locally dropped:chained   [00] 0   [05] 0   [06] 0
>> MSDUs locally dropped:filtered  [00] 0   [05] 0   [06] 0
>> MSDUs queued for mac80211   [00] 2567[05] 3178[06] 1089
>> MSDUs with error:fcs_err[00] 0   [05] 0   [06] 2
>> MSDUs with error:tkip_err   [00] 0   [05] 0   [06] 0
>> MSDUs with error:crypt_err  [00] 0   [05] 0   [06] 0
>> MSDUs with error:peer_idx_inval [00] 0   [05] 0   [06] 0
>>
>> A-MPDU num subframes upto 10[00] 2567[05] 3178[06] 1087
>> A-MPDU num subframes 11-20  [00] 0   [05] 0   [06] 0
>> A-MPDU num subframes 21-30  [00] 0   [05] 0   [06] 0
>> A-MPDU num subframes 31-40  [00] 0   [05] 0   [06] 0
>> A-MPDU num subframes 41-50  [00] 0   [05] 0   [06] 0
>> A-MPDU num subframes 51-60  [00] 0   [05] 0   [06] 0
>> A-MPDU num subframes >60[00] 0   [05] 0   [06] 0
>>
>> A-MSDU num subframes 1  [00] 2567[05] 3178[06] 1089
>> A-MSDU num subframes 2  [00] 0   [05] 0   [06] 0
>> A-MSDU num subframes 3  [00] 0   [05] 0   [06] 0
>> A-MSDU num subframes 4  [00] 0   [05] 0   [06] 0
>> A-MSDU num subframes >4 [00] 0   [05] 0   [06] 0
>>
>> Signed-off-by: Vasanthakumar Thiagarajan 
> 
> This added new ath10k-check warnings, I fixed those in the pending
> branch:
> 
> drivers/net/wireless/ath/ath10k/debug.h:203: Alignment should match open 
> parenthesis
> drivers/net/wireless/ath/ath10k/debug.h:226: Alignment should match open 
> parenthesis
> drivers/net/wireless/ath/ath10k/debugfs_sta.c:24: Alignment should match open 
> parenthesis
> drivers/net/wireless/ath/ath10k/debugfs_sta.c:40: Alignment should match open 
> parenthesis
> drivers/net/wireless/ath/ath10k/debugfs_sta.c:60: Alignment should match open 
> parenthesis
> 
> Also I fixed the typo "rages" in debug.h. My changes:

Thanks for fixing it. In most of the cases, fixing above warnings would result 
in lines > 80 chars.
May be we need not be very strict about > 80 char limit?

Vasanth

Re: [PATCH] ath10k: Add sta rx packet stats per tid

2018-02-28 Thread Kalle Valo
Vasanthakumar Thiagarajan  writes:

> Added per tid sta counters for the following
>
> - Total number MSDUs received from firmware
> - Number of MSDUs received with errors like decryption, crc, mic ,etc.
> - Number of MSDUs dropped in the driver
> - A-MPDU/A-MSDU subframe stats
> - Number of MSDUS passed to mac80211
>
> All stats other than A-MPDU stats are only for received data frames.
> A-MPDU stats might have stats for management frames when monitor
> interface is active where management frames are notified both in wmi
> and HTT interfaces.
>
> These per tid stats can be enabled with tid bitmask through a debugfs
> like below
>
>  echo  > 
> /sys/kernel/debug/ieee80211/phyX/ath10k/sta_tid_stats_mask
>
>  tid 16 (tid_bitmask 0x1) is used for non-qos data/management frames
>
> The stats are read from
> /sys/kernel/debug/ieee80211/phyX/netdev\:wlanX/stations//dump_tid_stats
>
> Sample output:
>
>  To enable rx stats for tid 0, 5 and 6,
>
>  echo 0x0061 > /sys/kernel/debug/ieee80211/phy0/ath10k/sta_tid_stats_mask
>
> cat 
> /sys/kernel/debug/ieee80211/phy0/netdev\:wlan15/stations/8c\:fd\:f0\:0a\:8e\:df/dump_tid_stats
>
>   Driver Rx pkt stats per tid, ([tid] count)
> --
> MSDUs from FW   [00] 2567[05] 3178[06] 1089
> MSDUs unchained [00] 0   [05] 0   [06] 0
> MSDUs locally dropped:chained   [00] 0   [05] 0   [06] 0
> MSDUs locally dropped:filtered  [00] 0   [05] 0   [06] 0
> MSDUs queued for mac80211   [00] 2567[05] 3178[06] 1089
> MSDUs with error:fcs_err[00] 0   [05] 0   [06] 2
> MSDUs with error:tkip_err   [00] 0   [05] 0   [06] 0
> MSDUs with error:crypt_err  [00] 0   [05] 0   [06] 0
> MSDUs with error:peer_idx_inval [00] 0   [05] 0   [06] 0
>
> A-MPDU num subframes upto 10[00] 2567[05] 3178[06] 1087
> A-MPDU num subframes 11-20  [00] 0   [05] 0   [06] 0
> A-MPDU num subframes 21-30  [00] 0   [05] 0   [06] 0
> A-MPDU num subframes 31-40  [00] 0   [05] 0   [06] 0
> A-MPDU num subframes 41-50  [00] 0   [05] 0   [06] 0
> A-MPDU num subframes 51-60  [00] 0   [05] 0   [06] 0
> A-MPDU num subframes >60[00] 0   [05] 0   [06] 0
>
> A-MSDU num subframes 1  [00] 2567[05] 3178[06] 1089
> A-MSDU num subframes 2  [00] 0   [05] 0   [06] 0
> A-MSDU num subframes 3  [00] 0   [05] 0   [06] 0
> A-MSDU num subframes 4  [00] 0   [05] 0   [06] 0
> A-MSDU num subframes >4 [00] 0   [05] 0   [06] 0
>
> Signed-off-by: Vasanthakumar Thiagarajan 

This added new ath10k-check warnings, I fixed those in the pending
branch:

drivers/net/wireless/ath/ath10k/debug.h:203: Alignment should match open 
parenthesis
drivers/net/wireless/ath/ath10k/debug.h:226: Alignment should match open 
parenthesis
drivers/net/wireless/ath/ath10k/debugfs_sta.c:24: Alignment should match open 
parenthesis
drivers/net/wireless/ath/ath10k/debugfs_sta.c:40: Alignment should match open 
parenthesis
drivers/net/wireless/ath/ath10k/debugfs_sta.c:60: Alignment should match open 
parenthesis

Also I fixed the typo "rages" in debug.h. My changes:

diff --git a/drivers/net/wireless/ath/ath10k/debug.h 
b/drivers/net/wireless/ath/ath10k/debug.h
index 306796dcedae..7ebb9b1e7e69 100644
--- a/drivers/net/wireless/ath/ath10k/debug.h
+++ b/drivers/net/wireless/ath/ath10k/debug.h
@@ -200,9 +200,9 @@ void ath10k_sta_update_rx_tid_stats(struct ath10k *ar, u8 
*first_hdr,
unsigned long int drop_cnt_filter,
unsigned long int queued_msdus);
 void ath10k_sta_update_rx_tid_stats_ampdu(struct ath10k *ar,
-   u16 peer_id, u8 tid,
-   struct htt_rx_indication_mpdu_range *mpdu_ranges,
-   int num_mpdu_rages);
+ u16 peer_id, u8 tid,
+ struct htt_rx_indication_mpdu_range 
*ranges,
+ int num_ranges);
 #else
 static inline
 void ath10k_sta_update_rx_duration(struct ath10k *ar,
@@ -223,9 +223,9 @@ void ath10k_sta_update_rx_tid_stats(struct ath10k *ar, u8 
*first_hdr,
 
 static inline
 void ath10k_sta_update_rx_tid_stats_ampdu(struct ath10k *ar,
-   u16 peer_id, u8 tid,
-   struct htt_rx_indication_mpdu_range *mpdu_ranges,
-   int num_mpdu_rages)
+ u16 peer_id, u8 tid,
+ struct htt_rx_indication_mpdu_range 
*ranges,
+

[PATCH] ath10k: Add sta rx packet stats per tid

2018-01-31 Thread Vasanthakumar Thiagarajan
Added per tid sta counters for the following

- Total number MSDUs received from firmware
- Number of MSDUs received with errors like decryption, crc, mic ,etc.
- Number of MSDUs dropped in the driver
- A-MPDU/A-MSDU subframe stats
- Number of MSDUS passed to mac80211

All stats other than A-MPDU stats are only for received data frames.
A-MPDU stats might have stats for management frames when monitor
interface is active where management frames are notified both in wmi
and HTT interfaces.

These per tid stats can be enabled with tid bitmask through a debugfs
like below

 echo  > /sys/kernel/debug/ieee80211/phyX/ath10k/sta_tid_stats_mask

 tid 16 (tid_bitmask 0x1) is used for non-qos data/management frames

The stats are read from
/sys/kernel/debug/ieee80211/phyX/netdev\:wlanX/stations//dump_tid_stats

Sample output:

 To enable rx stats for tid 0, 5 and 6,

 echo 0x0061 > /sys/kernel/debug/ieee80211/phy0/ath10k/sta_tid_stats_mask

cat 
/sys/kernel/debug/ieee80211/phy0/netdev\:wlan15/stations/8c\:fd\:f0\:0a\:8e\:df/dump_tid_stats

Driver Rx pkt stats per tid, ([tid] count)
--
MSDUs from FW   [00] 2567[05] 3178[06] 1089
MSDUs unchained [00] 0   [05] 0   [06] 0
MSDUs locally dropped:chained   [00] 0   [05] 0   [06] 0
MSDUs locally dropped:filtered  [00] 0   [05] 0   [06] 0
MSDUs queued for mac80211   [00] 2567[05] 3178[06] 1089
MSDUs with error:fcs_err[00] 0   [05] 0   [06] 2
MSDUs with error:tkip_err   [00] 0   [05] 0   [06] 0
MSDUs with error:crypt_err  [00] 0   [05] 0   [06] 0
MSDUs with error:peer_idx_inval [00] 0   [05] 0   [06] 0

A-MPDU num subframes upto 10[00] 2567[05] 3178[06] 1087
A-MPDU num subframes 11-20  [00] 0   [05] 0   [06] 0
A-MPDU num subframes 21-30  [00] 0   [05] 0   [06] 0
A-MPDU num subframes 31-40  [00] 0   [05] 0   [06] 0
A-MPDU num subframes 41-50  [00] 0   [05] 0   [06] 0
A-MPDU num subframes 51-60  [00] 0   [05] 0   [06] 0
A-MPDU num subframes >60[00] 0   [05] 0   [06] 0

A-MSDU num subframes 1  [00] 2567[05] 3178[06] 1089
A-MSDU num subframes 2  [00] 0   [05] 0   [06] 0
A-MSDU num subframes 3  [00] 0   [05] 0   [06] 0
A-MSDU num subframes 4  [00] 0   [05] 0   [06] 0
A-MSDU num subframes >4 [00] 0   [05] 0   [06] 0

Signed-off-by: Vasanthakumar Thiagarajan 
---
 drivers/net/wireless/ath/ath10k/core.h|  45 
 drivers/net/wireless/ath/ath10k/debug.c   |  48 +
 drivers/net/wireless/ath/ath10k/debug.h   |  31 +++
 drivers/net/wireless/ath/ath10k/debugfs_sta.c | 286 ++
 drivers/net/wireless/ath/ath10k/htt_rx.c  |  71 ++-
 5 files changed, 471 insertions(+), 10 deletions(-)

diff --git a/drivers/net/wireless/ath/ath10k/core.h 
b/drivers/net/wireless/ath/ath10k/core.h
index fe6b30356d3b..c624b96f8b84 100644
--- a/drivers/net/wireless/ath/ath10k/core.h
+++ b/drivers/net/wireless/ath/ath10k/core.h
@@ -1,6 +1,7 @@
 /*
  * Copyright (c) 2005-2011 Atheros Communications Inc.
  * Copyright (c) 2011-2017 Qualcomm Atheros, Inc.
+ * Copyright (c) 2018, The Linux Foundation. All rights reserved.
  *
  * Permission to use, copy, modify, and/or distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above
@@ -354,6 +355,45 @@ struct ath10k_txq {
unsigned long num_push_allowed;
 };
 
+enum ath10k_pkt_rx_err {
+   ATH10K_PKT_RX_ERR_FCS,
+   ATH10K_PKT_RX_ERR_TKIP,
+   ATH10K_PKT_RX_ERR_CRYPT,
+   ATH10K_PKT_RX_ERR_PEER_IDX_INVAL,
+   ATH10K_PKT_RX_ERR_MAX,
+};
+
+enum ath10k_ampdu_subfrm_num {
+   ATH10K_AMPDU_SUBFRM_NUM_10,
+   ATH10K_AMPDU_SUBFRM_NUM_20,
+   ATH10K_AMPDU_SUBFRM_NUM_30,
+   ATH10K_AMPDU_SUBFRM_NUM_40,
+   ATH10K_AMPDU_SUBFRM_NUM_50,
+   ATH10K_AMPDU_SUBFRM_NUM_60,
+   ATH10K_AMPDU_SUBFRM_NUM_MORE,
+   ATH10K_AMPDU_SUBFRM_NUM_MAX,
+};
+
+enum ath10k_amsdu_subfrm_num {
+   ATH10K_AMSDU_SUBFRM_NUM_1,
+   ATH10K_AMSDU_SUBFRM_NUM_2,
+   ATH10K_AMSDU_SUBFRM_NUM_3,
+   ATH10K_AMSDU_SUBFRM_NUM_4,
+   ATH10K_AMSDU_SUBFRM_NUM_MORE,
+   ATH10K_AMSDU_SUBFRM_NUM_MAX,
+};
+
+struct ath10k_sta_tid_stats {
+   unsigned long int rx_pkt_from_fw;
+   unsigned long int rx_pkt_unchained;
+   unsigned long int rx_pkt_drop_chained;
+   unsigned long int rx_pkt_drop_filter;
+   unsigned long int rx_pkt_err[ATH10K_PKT_RX_ERR_MAX];
+   unsigned long int rx_pkt_queued_for_mac;
+   unsigned long int rx_pkt_ampdu[ATH10K_AMPDU_SUBFRM_NUM_MAX];
+