Message ID | 1505790913-28377-2-git-send-email-yintang@qti.qualcomm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
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
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
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
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;