Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

mac80211: enable TDLS peer buffer STA feature

Allow drivers to set the buffer station extended capability
for TDLS links, with a new hardware flag indicating this.

Signed-off-by: Yingying Tang <yintang@qti.qualcomm.com>
[change commit log/documentation wording]
Signed-off-by: Johannes Berg <johannes.berg@intel.com>

authored by

Yingying Tang and committed by
Johannes Berg
e2fb1b83 d559e303

+9 -1
+4
include/net/mac80211.h
··· 2056 2056 * The stack will not do fragmentation. 2057 2057 * The callback for @set_frag_threshold should be set as well. 2058 2058 * 2059 + * @IEEE80211_HW_SUPPORTS_TDLS_BUFFER_STA: Hardware supports buffer STA on 2060 + * TDLS links. 2061 + * 2059 2062 * @NUM_IEEE80211_HW_FLAGS: number of hardware flags, used for sizing arrays 2060 2063 */ 2061 2064 enum ieee80211_hw_flags { ··· 2101 2098 IEEE80211_HW_TX_FRAG_LIST, 2102 2099 IEEE80211_HW_REPORTS_LOW_ACK, 2103 2100 IEEE80211_HW_SUPPORTS_TX_FRAG, 2101 + IEEE80211_HW_SUPPORTS_TDLS_BUFFER_STA, 2104 2102 2105 2103 /* keep last, obviously */ 2106 2104 NUM_IEEE80211_HW_FLAGS
+1
net/mac80211/debugfs.c
··· 211 211 FLAG(TX_FRAG_LIST), 212 212 FLAG(REPORTS_LOW_ACK), 213 213 FLAG(SUPPORTS_TX_FRAG), 214 + FLAG(SUPPORTS_TDLS_BUFFER_STA), 214 215 #undef FLAG 215 216 }; 216 217
+4 -1
net/mac80211/tdls.c
··· 47 47 NL80211_FEATURE_TDLS_CHANNEL_SWITCH; 48 48 bool wider_band = ieee80211_hw_check(&local->hw, TDLS_WIDER_BW) && 49 49 !ifmgd->tdls_wider_bw_prohibited; 50 + bool buffer_sta = ieee80211_hw_check(&local->hw, 51 + SUPPORTS_TDLS_BUFFER_STA); 50 52 struct ieee80211_supported_band *sband = ieee80211_get_sband(sdata); 51 53 bool vht = sband && sband->vht_cap.vht_supported; 52 54 u8 *pos = skb_put(skb, 10); ··· 58 56 *pos++ = 0x0; 59 57 *pos++ = 0x0; 60 58 *pos++ = 0x0; 61 - *pos++ = chan_switch ? WLAN_EXT_CAPA4_TDLS_CHAN_SWITCH : 0; 59 + *pos++ = (chan_switch ? WLAN_EXT_CAPA4_TDLS_CHAN_SWITCH : 0) | 60 + (buffer_sta ? WLAN_EXT_CAPA4_TDLS_BUFFER_STA : 0); 62 61 *pos++ = WLAN_EXT_CAPA5_TDLS_ENABLED; 63 62 *pos++ = 0; 64 63 *pos++ = 0;