mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-05 16:54:27 +00:00
mac80211: add support for parsing ADDBA_EXT IEs
ADDBA_EXT IEs can be used to negotiate the BA fragmentation level. Signed-off-by: John Crispin <john@phrozen.org> Link: https://lore.kernel.org/r/20190713163642.18491-2-john@phrozen.org Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
60d7dfea00
commit
2aa485e114
3 changed files with 16 additions and 0 deletions
|
@ -881,6 +881,14 @@ struct ieee80211_tpc_report_ie {
|
||||||
u8 link_margin;
|
u8 link_margin;
|
||||||
} __packed;
|
} __packed;
|
||||||
|
|
||||||
|
#define IEEE80211_ADDBA_EXT_FRAG_LEVEL_MASK GENMASK(2, 1)
|
||||||
|
#define IEEE80211_ADDBA_EXT_FRAG_LEVEL_SHIFT 1
|
||||||
|
#define IEEE80211_ADDBA_EXT_NO_FRAG BIT(0)
|
||||||
|
|
||||||
|
struct ieee80211_addba_ext_ie {
|
||||||
|
u8 data;
|
||||||
|
} __packed;
|
||||||
|
|
||||||
struct ieee80211_mgmt {
|
struct ieee80211_mgmt {
|
||||||
__le16 frame_control;
|
__le16 frame_control;
|
||||||
__le16 duration;
|
__le16 duration;
|
||||||
|
|
|
@ -1506,6 +1506,7 @@ struct ieee802_11_elems {
|
||||||
u8 max_bssid_indicator;
|
u8 max_bssid_indicator;
|
||||||
u8 dtim_count;
|
u8 dtim_count;
|
||||||
u8 dtim_period;
|
u8 dtim_period;
|
||||||
|
const struct ieee80211_addba_ext_ie *addba_ext_ie;
|
||||||
|
|
||||||
/* length of them, respectively */
|
/* length of them, respectively */
|
||||||
u8 ext_capab_len;
|
u8 ext_capab_len;
|
||||||
|
|
|
@ -1200,6 +1200,13 @@ _ieee802_11_parse_elems_crc(const u8 *start, size_t len, bool action,
|
||||||
|
|
||||||
elems->cisco_dtpc_elem = pos;
|
elems->cisco_dtpc_elem = pos;
|
||||||
break;
|
break;
|
||||||
|
case WLAN_EID_ADDBA_EXT:
|
||||||
|
if (elen != sizeof(struct ieee80211_addba_ext_ie)) {
|
||||||
|
elem_parse_failed = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
elems->addba_ext_ie = (void *)pos;
|
||||||
|
break;
|
||||||
case WLAN_EID_TIMEOUT_INTERVAL:
|
case WLAN_EID_TIMEOUT_INTERVAL:
|
||||||
if (elen >= sizeof(struct ieee80211_timeout_interval_ie))
|
if (elen >= sizeof(struct ieee80211_timeout_interval_ie))
|
||||||
elems->timeout_int = (void *)pos;
|
elems->timeout_int = (void *)pos;
|
||||||
|
|
Loading…
Add table
Reference in a new issue