[TDLS,V3,1/5] mac80211: Enable TDLS peer buffer STA feature
diff mbox

Message ID 1505790913-28377-2-git-send-email-yintang@qti.qualcomm.com
State New
Headers show

Commit Message

yintang@qti.qualcomm.com Sept. 19, 2017, 3:15 a.m. UTC
From: Yingying Tang <yintang@qti.qualcomm.com>

Enable TDLS peer buffer STA feature.
Set extended capability bit to enable buffer STA when driver
support it.

Signed-off-by: Yingying Tang <yintang@qti.qualcomm.com>
---
 include/net/cfg80211.h |    3 +++
 net/mac80211/tdls.c    |    5 ++++-
 2 files changed, 7 insertions(+), 1 deletion(-)

Comments

Arend Van Spriel Sept. 19, 2017, 7:56 a.m. UTC | #1
On 19-09-17 05:15, yintang@qti.qualcomm.com wrote:
> From: Yingying Tang <yintang@qti.qualcomm.com>
> 
> Enable TDLS peer buffer STA feature.
> Set extended capability bit to enable buffer STA when driver
> support it.
> 
> Signed-off-by: Yingying Tang <yintang@qti.qualcomm.com>
> ---
>   include/net/cfg80211.h |    3 +++
>   net/mac80211/tdls.c    |    5 ++++-
>   2 files changed, 7 insertions(+), 1 deletion(-)
> 
> diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
> index f12fa52..edefc25 100644
> --- a/include/net/cfg80211.h
> +++ b/include/net/cfg80211.h
> @@ -3249,6 +3249,8 @@ struct cfg80211_ops {
>    *	beaconing mode (AP, IBSS, Mesh, ...).
>    * @WIPHY_FLAG_HAS_STATIC_WEP: The device supports static WEP key installation
>    *	before connection.
> + * @WIPHY_FLAG_SUPPORT_TDLS_BUFFER_STA: Device support buffer STA when TDLS is
> + *	established.

If I am not mistaken no new wiphy flags are supposed to be added. 
Although this might be something not reported to user-space, right? Have 
a look at struct wiphy::ext_features.

Regards,
Arend
Johannes Berg Sept. 19, 2017, 8:15 a.m. UTC | #2
On Tue, 2017-09-19 at 09:56 +0200, Arend van Spriel wrote:
> 
> > --- a/include/net/cfg80211.h
> > +++ b/include/net/cfg80211.h
> > @@ -3249,6 +3249,8 @@ struct cfg80211_ops {
> >    *	beaconing mode (AP, IBSS, Mesh, ...).
> >    * @WIPHY_FLAG_HAS_STATIC_WEP: The device supports static WEP key
> > installation
> >    *	before connection.
> > + * @WIPHY_FLAG_SUPPORT_TDLS_BUFFER_STA: Device support buffer STA
> > when TDLS is
> > + *	established.
> 
> If I am not mistaken no new wiphy flags are supposed to be added. 
> Although this might be something not reported to user-space, right?
> Have  a look at struct wiphy::ext_features.

I guess it should just be a HW flag in mac80211? Not sure why userspace
even needs to know.

johannes
Arend Van Spriel Sept. 19, 2017, 9:55 a.m. UTC | #3
On 19-09-17 10:15, Johannes Berg wrote:
> On Tue, 2017-09-19 at 09:56 +0200, Arend van Spriel wrote:
>>
>>> --- a/include/net/cfg80211.h
>>> +++ b/include/net/cfg80211.h
>>> @@ -3249,6 +3249,8 @@ struct cfg80211_ops {
>>>     *	beaconing mode (AP, IBSS, Mesh, ...).
>>>     * @WIPHY_FLAG_HAS_STATIC_WEP: The device supports static WEP key
>>> installation
>>>     *	before connection.
>>> + * @WIPHY_FLAG_SUPPORT_TDLS_BUFFER_STA: Device support buffer STA
>>> when TDLS is
>>> + *	established.
>>
>> If I am not mistaken no new wiphy flags are supposed to be added.
>> Although this might be something not reported to user-space, right?
>> Have  a look at struct wiphy::ext_features.
> 
> I guess it should just be a HW flag in mac80211? Not sure why userspace
> even needs to know.

Indeed seems specific to stack functionality in mac80211.

Regards,
Arend

Patch
diff mbox

diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
index f12fa52..edefc25 100644
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
@@ -3249,6 +3249,8 @@  struct cfg80211_ops {
  *	beaconing mode (AP, IBSS, Mesh, ...).
  * @WIPHY_FLAG_HAS_STATIC_WEP: The device supports static WEP key installation
  *	before connection.
+ * @WIPHY_FLAG_SUPPORT_TDLS_BUFFER_STA: Device support buffer STA when TDLS is
+ *	established.
  */
 enum wiphy_flags {
 	/* use hole at 0 */
@@ -3275,6 +3277,7 @@  enum wiphy_flags {
 	WIPHY_FLAG_SUPPORTS_5_10_MHZ		= BIT(22),
 	WIPHY_FLAG_HAS_CHANNEL_SWITCH		= BIT(23),
 	WIPHY_FLAG_HAS_STATIC_WEP		= BIT(24),
+	WIPHY_FLAG_SUPPORT_TDLS_BUFFER_STA      = BIT(25),
 };
 
 /**
diff --git a/net/mac80211/tdls.c b/net/mac80211/tdls.c
index 91093d4..f99e379 100644
--- a/net/mac80211/tdls.c
+++ b/net/mac80211/tdls.c
@@ -49,6 +49,8 @@  static void ieee80211_tdls_add_ext_capab(struct ieee80211_sub_if_data *sdata,
 			  !ifmgd->tdls_wider_bw_prohibited;
 	struct ieee80211_supported_band *sband = ieee80211_get_sband(sdata);
 	bool vht = sband && sband->vht_cap.vht_supported;
+	bool buffer_sta =
+		local->hw.wiphy->flags & WIPHY_FLAG_SUPPORT_TDLS_BUFFER_STA;
 	u8 *pos = skb_put(skb, 10);
 
 	*pos++ = WLAN_EID_EXT_CAPABILITY;
@@ -56,7 +58,8 @@  static void ieee80211_tdls_add_ext_capab(struct ieee80211_sub_if_data *sdata,
 	*pos++ = 0x0;
 	*pos++ = 0x0;
 	*pos++ = 0x0;
-	*pos++ = chan_switch ? WLAN_EXT_CAPA4_TDLS_CHAN_SWITCH : 0;
+	*pos++ = (chan_switch ? WLAN_EXT_CAPA4_TDLS_CHAN_SWITCH : 0) |
+		 (buffer_sta ? WLAN_EXT_CAPA4_TDLS_BUFFER_STA : 0);
 	*pos++ = WLAN_EXT_CAPA5_TDLS_ENABLED;
 	*pos++ = 0;
 	*pos++ = 0;