Commit 2aa485e1 authored by John Crispin's avatar John Crispin Committed by Johannes Berg
Browse files

mac80211: add support for parsing ADDBA_EXT IEs



ADDBA_EXT IEs can be used to negotiate the BA fragmentation level.

Signed-off-by: default avatarJohn Crispin <john@phrozen.org>
Link: https://lore.kernel.org/r/20190713163642.18491-2-john@phrozen.org


Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent 60d7dfea
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -881,6 +881,14 @@ struct ieee80211_tpc_report_ie {
	u8 link_margin;
} __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 {
	__le16 frame_control;
	__le16 duration;
+1 −0
Original line number Diff line number Diff line
@@ -1506,6 +1506,7 @@ struct ieee802_11_elems {
	u8 max_bssid_indicator;
	u8 dtim_count;
	u8 dtim_period;
	const struct ieee80211_addba_ext_ie *addba_ext_ie;

	/* length of them, respectively */
	u8 ext_capab_len;
+7 −0
Original line number Diff line number Diff line
@@ -1200,6 +1200,13 @@ _ieee802_11_parse_elems_crc(const u8 *start, size_t len, bool action,

			elems->cisco_dtpc_elem = pos;
			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:
			if (elen >= sizeof(struct ieee80211_timeout_interval_ie))
				elems->timeout_int = (void *)pos;