diff mbox

[v3,RESEND,1/2] ath10k: Add support for ath10k_sta_statistics support

Message ID 1462204347-31012-1-git-send-email-mohammed@qca.qualcomm.com (mailing list archive)
State Superseded
Delegated to: Kalle Valo
Headers show

Commit Message

Mohammed Shafi Shajakhan May 2, 2016, 3:52 p.m. UTC
From: Mohammed Shafi Shajakhan <mohammed@qti.qualcomm.com>

Enable support for 'drv_sta_statistics' callback.
Export rx_duration support if available to cfg80211/nl80211

This can also act as a placeholder for any new per STA stats support

Signed-off-by: Mohammed Shafi Shajakhan <mohammed@qti.qualcomm.com>
---
[v3] removed conditions for ath10k state checks based on Michal's suggestion

Dependencies:

1. cfg80211/nl80211: Add support for NL80211_STA_INFO_RX_DURATION (under review)
2. iw: Add support for NL80211_STA_INFO_RX_DURATION netlink
 attribute (under review)
3. ath10k: Enable debugfs provision to enable Peer Stats feature (merged in pending branch)

 drivers/net/wireless/ath/ath10k/debug.h       |    4 ++++
 drivers/net/wireless/ath/ath10k/debugfs_sta.c |   14 ++++++++++++++
 drivers/net/wireless/ath/ath10k/mac.c         |    1 +
 3 files changed, 19 insertions(+)

Comments

Kalle Valo May 13, 2016, 3:13 p.m. UTC | #1
Mohammed Shafi Shajakhan <mohammed@qti.qualcomm.com> writes:

> From: Mohammed Shafi Shajakhan <mohammed@qti.qualcomm.com>
>
> Enable support for 'drv_sta_statistics' callback.
> Export rx_duration support if available to cfg80211/nl80211
>
> This can also act as a placeholder for any new per STA stats support
>
> Signed-off-by: Mohammed Shafi Shajakhan <mohammed@qti.qualcomm.com>
> ---
> [v3] removed conditions for ath10k state checks based on Michal's suggestion

It's nicer to ping than resend a patch. This patchset has been in
"Awaiting Upstream" state while waiting for the dependencies trickle
down to ath-next.

> Dependencies:
>
> 1. cfg80211/nl80211: Add support for NL80211_STA_INFO_RX_DURATION (under review)

739960f128e5 cfg80211/nl80211: Add support for NL80211_STA_INFO_RX_DURATION

Currently in net-next, should come to ath-next soon.
Sebastian Gottschall May 14, 2016, 4:37 a.m. UTC | #2
Hello

a long time ago i discovered that ath10k doesnt seem to support lower 
extension channel configuration which raises also a bug report for 
DD-WRT in my case.
when will this issue be fixed?
if i set channel 100 and extension channel to 106 (and ht40+) in 
hostapd, all is working
but channel 108 and extension channel 102 (-6) and ht40- it will be refused

does somebody or you know how to configure it properly or is it really 
not possible at the time. and if not possible, will it be fixed in future?
Michal Kazior May 16, 2016, 5:35 a.m. UTC | #3
On 14 May 2016 at 06:37, Sebastian Gottschall <s.gottschall@dd-wrt.com> wrote:
> Hello
>
> a long time ago i discovered that ath10k doesnt seem to support lower
> extension channel configuration which raises also a bug report for DD-WRT in
> my case.
> when will this issue be fixed?
> if i set channel 100 and extension channel to 106 (and ht40+) in hostapd,
> all is working

You probably mean 100 and 104. There's no control channel 106.

106 could be used as center channel/frequency for vht80 across 100 and 112.


> but channel 108 and extension channel 102 (-6) and ht40- it will be refused

Again, you probably mean 108 and 104. There's no 102 control channel.

Anyway, this is forbidden by the spec (IEEE 802.11n Annex J.). See
this channel allocation map:

 http://twimgs.com/networkcomputing/news/2013/10/graphic-80211-acChannels-all.png

You can find references to this in a few places in
hostap/wpa_supplicant code. Just grep for:

  36, 44, 52

.. and you'll find e.g.

  https://w1.fi/cgit/hostap/tree/src/common/hw_features_common.c#n91
  https://w1.fi/cgit/hostap/tree/src/common/hw_features_common.c#n120


Micha?
Michal Kazior May 16, 2016, 7:31 a.m. UTC | #4
On 16 May 2016 at 09:08, Sebastian Gottschall <s.gottschall@dd-wrt.com> wrote:
> Am 16.05.2016 um 07:35 schrieb Michal Kazior:
>
> On 14 May 2016 at 06:37, Sebastian Gottschall <s.gottschall@dd-wrt.com>
> wrote:
>
> Hello
>
> a long time ago i discovered that ath10k doesnt seem to support lower
> extension channel configuration which raises also a bug report for DD-WRT in
> my case.
> when will this issue be fixed?
> if i set channel 100 and extension channel to 106 (and ht40+) in hostapd,
> all is working
>
> You probably mean 100 and 104. There's no control channel 106.
>
> 106 could be used as center channel/frequency for vht80 across 100 and 112.
>
> for your own reference. this one here is working
>
> vht_oper_chwidth=1
> vht_oper_centr_freq_seg0_idx=106
> channel=100
>
> you're right i swapped center and control
>
> according to the documentation of ath10k. the distance of center and
> control. is "6" for vht80. and not 4

It's an oversimplification and works for channels that are first in a
segment (e.g. 36).


> the problem now is, it wont work for lower
>
> so the following hostapd snipped wont work
> vht_oper_chwidth=1
> vht_oper_centr_freq_seg0_idx=102
> channel=108

This is incorrect configuration. You can't use channel 102 as center
channel for vht80. See the channel allocation map I've linked in my
previous email.

Valid VHT80 center channels (seg0_idx) are: 42, 58, 106, 122, 138, 155.

If you want to use channel 108 as control channel you need to use
seg0_idx=106 with HT40+.
You should be able to use channel=104 (and seg0_idx=106) with HT40- as well.


Micha?
Sebastian Gottschall May 16, 2016, 12:51 p.m. UTC | #5
you're right. my fault


Am 16.05.2016 um 09:31 schrieb Michal Kazior:
> On 16 May 2016 at 09:08, Sebastian Gottschall <s.gottschall@dd-wrt.com> wrote:
>> Am 16.05.2016 um 07:35 schrieb Michal Kazior:
>>
>> On 14 May 2016 at 06:37, Sebastian Gottschall <s.gottschall@dd-wrt.com>
>> wrote:
>>
>> Hello
>>
>> a long time ago i discovered that ath10k doesnt seem to support lower
>> extension channel configuration which raises also a bug report for DD-WRT in
>> my case.
>> when will this issue be fixed?
>> if i set channel 100 and extension channel to 106 (and ht40+) in hostapd,
>> all is working
>>
>> You probably mean 100 and 104. There's no control channel 106.
>>
>> 106 could be used as center channel/frequency for vht80 across 100 and 112.
>>
>> for your own reference. this one here is working
>>
>> vht_oper_chwidth=1
>> vht_oper_centr_freq_seg0_idx=106
>> channel=100
>>
>> you're right i swapped center and control
>>
>> according to the documentation of ath10k. the distance of center and
>> control. is "6" for vht80. and not 4
> It's an oversimplification and works for channels that are first in a
> segment (e.g. 36).
>
>
>> the problem now is, it wont work for lower
>>
>> so the following hostapd snipped wont work
>> vht_oper_chwidth=1
>> vht_oper_centr_freq_seg0_idx=102
>> channel=108
> This is incorrect configuration. You can't use channel 102 as center
> channel for vht80. See the channel allocation map I've linked in my
> previous email.
>
> Valid VHT80 center channels (seg0_idx) are: 42, 58, 106, 122, 138, 155.
>
> If you want to use channel 108 as control channel you need to use
> seg0_idx=106 with HT40+.
> You should be able to use channel=104 (and seg0_idx=106) with HT40- as well.
>
>
> Micha?
>
Mohammed Shafi Shajakhan May 17, 2016, 7:15 a.m. UTC | #6
Hi Kalle,

On Fri, May 13, 2016 at 03:13:36PM +0000, Valo, Kalle wrote:
> Mohammed Shafi Shajakhan <mohammed@qti.qualcomm.com> writes:
> 
> > From: Mohammed Shafi Shajakhan <mohammed@qti.qualcomm.com>
> >
> > Enable support for 'drv_sta_statistics' callback.
> > Export rx_duration support if available to cfg80211/nl80211
> >
> > This can also act as a placeholder for any new per STA stats support
> >
> > Signed-off-by: Mohammed Shafi Shajakhan <mohammed@qti.qualcomm.com>
> > ---
> > [v3] removed conditions for ath10k state checks based on Michal's suggestion
> 
> It's nicer to ping than resend a patch. This patchset has been in
> "Awaiting Upstream" state while waiting for the dependencies trickle
> down to ath-next.

[shafi] sure, thanks ! will do this next time. I was afraid this patch got lost.

> 
> > Dependencies:
> >
> > 1. cfg80211/nl80211: Add support for NL80211_STA_INFO_RX_DURATION (under review)
> 
> 739960f128e5 cfg80211/nl80211: Add support for NL80211_STA_INFO_RX_DURATION
> 
> Currently in net-next, should come to ath-next soon.

[shafi] thanks for the info.

regards,
shafi
diff mbox

Patch

diff --git a/drivers/net/wireless/ath/ath10k/debug.h b/drivers/net/wireless/ath/ath10k/debug.h
index 6206edd..01c500f 100644
--- a/drivers/net/wireless/ath/ath10k/debug.h
+++ b/drivers/net/wireless/ath/ath10k/debug.h
@@ -155,6 +155,10 @@  ath10k_debug_get_new_fw_crash_data(struct ath10k *ar)
 void ath10k_sta_add_debugfs(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
 			    struct ieee80211_sta *sta, struct dentry *dir);
 void ath10k_sta_update_rx_duration(struct ath10k *ar, struct list_head *peer);
+void ath10k_sta_statistics(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
+			   struct ieee80211_sta *sta,
+			   struct station_info *sinfo);
+
 #else
 static inline void ath10k_sta_update_rx_duration(struct ath10k *ar,
 						 struct list_head *peer)
diff --git a/drivers/net/wireless/ath/ath10k/debugfs_sta.c b/drivers/net/wireless/ath/ath10k/debugfs_sta.c
index 67ef75b..c5396bf 100644
--- a/drivers/net/wireless/ath/ath10k/debugfs_sta.c
+++ b/drivers/net/wireless/ath/ath10k/debugfs_sta.c
@@ -35,6 +35,20 @@  void ath10k_sta_update_rx_duration(struct ath10k *ar, struct list_head *head)
 	rcu_read_unlock();
 }
 
+void ath10k_sta_statistics(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
+			   struct ieee80211_sta *sta,
+			   struct station_info *sinfo)
+{
+	struct ath10k_sta *arsta = (struct ath10k_sta *)sta->drv_priv;
+	struct ath10k *ar = arsta->arvif->ar;
+
+	if (!ath10k_peer_stats_enabled(ar))
+		return;
+
+	sinfo->rx_duration = arsta->rx_duration;
+	sinfo->filled |= 1ULL << NL80211_STA_INFO_RX_DURATION;
+}
+
 static ssize_t ath10k_dbg_sta_read_aggr_mode(struct file *file,
 					     char __user *user_buf,
 					     size_t count, loff_t *ppos)
diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c
index 20d72e2..02edeff 100644
--- a/drivers/net/wireless/ath/ath10k/mac.c
+++ b/drivers/net/wireless/ath/ath10k/mac.c
@@ -7271,6 +7271,7 @@  static const struct ieee80211_ops ath10k_ops = {
 #endif
 #ifdef CONFIG_MAC80211_DEBUGFS
 	.sta_add_debugfs		= ath10k_sta_add_debugfs,
+	.sta_statistics			= ath10k_sta_statistics,
 #endif
 };