wifi: mac80211: Parse station profile from association response
authorIlan Peer <ilan.peer@intel.com>
Tue, 6 Sep 2022 08:48:56 +0000 (11:48 +0300)
committerChristian Lamparter <chunkeey@gmail.com>
Sun, 21 May 2023 21:07:11 +0000 (23:07 +0200)
When processing an association response frame for a Multi-Link
connection, extract the per station profile for each additional
link, and use it for parsing the link elements.

As the Multi-Link element might be fragmented, add support for
reassembling a fragmented element. To simplify memory management
logic, extend 'struct ieee802_11_elems' to hold a scratch buffer,
which is used for the defragmentation. Once an element is
reconstructed in the scratch area, point the corresponding element
pointer to it. Currently only defragmentation of Multi-Link element
and the contained per-STA profile subelement is supported.

Signed-off-by: Ilan Peer <ilan.peer@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
include/linux/ieee80211.h

index d3fa31998e2e4dedcc6a743148bafb63014b6a99..a4e66d4bce86291500da3f721d6fbfb9a4a5600d 100644 (file)
@@ -4594,6 +4594,7 @@ static inline bool ieee80211_mle_size_ok(const u8 *data, size_t len)
 
 enum ieee80211_mle_subelems {
        IEEE80211_MLE_SUBELEM_PER_STA_PROFILE           = 0,
+       IEEE80211_MLE_SUBELEM_FRAGMENT                  = 254,
 };
 
 #define IEEE80211_MLE_STA_CONTROL_LINK_ID                      0x000f