wifi: mac80211: add API to parse multi-link element
Add the necessary API to parse the multi-link element in the future. For now, link only to the element when found so we can use it in the client-side code later. Later, we'll need to fill this in to deal with element fragmentation, parse the STA profile, etc. Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
af4f2aa35a
commit
425f4b5fce
@ -1658,6 +1658,7 @@ struct ieee802_11_elems {
|
|||||||
const struct ieee80211_aid_response_ie *aid_resp;
|
const struct ieee80211_aid_response_ie *aid_resp;
|
||||||
const struct ieee80211_eht_cap_elem *eht_cap;
|
const struct ieee80211_eht_cap_elem *eht_cap;
|
||||||
const struct ieee80211_eht_operation *eht_operation;
|
const struct ieee80211_eht_operation *eht_operation;
|
||||||
|
const struct ieee80211_multi_link_elem *multi_link;
|
||||||
|
|
||||||
/* length of them, respectively */
|
/* length of them, respectively */
|
||||||
u8 ext_capab_len;
|
u8 ext_capab_len;
|
||||||
@ -2161,6 +2162,8 @@ static inline void ieee80211_tx_skb(struct ieee80211_sub_if_data *sdata,
|
|||||||
* @bss: the BSS to parse this as, for multi-BSSID cases this can
|
* @bss: the BSS to parse this as, for multi-BSSID cases this can
|
||||||
* represent a non-transmitting BSS in which case the data
|
* represent a non-transmitting BSS in which case the data
|
||||||
* for that non-transmitting BSS is returned
|
* for that non-transmitting BSS is returned
|
||||||
|
* @link_id: the link ID to parse elements for, if a STA profile
|
||||||
|
* is present in the multi-link element, or -1 to ignore
|
||||||
*/
|
*/
|
||||||
struct ieee80211_elems_parse_params {
|
struct ieee80211_elems_parse_params {
|
||||||
const u8 *start;
|
const u8 *start;
|
||||||
@ -2169,6 +2172,7 @@ struct ieee80211_elems_parse_params {
|
|||||||
u64 filter;
|
u64 filter;
|
||||||
u32 crc;
|
u32 crc;
|
||||||
struct cfg80211_bss *bss;
|
struct cfg80211_bss *bss;
|
||||||
|
int link_id;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ieee802_11_elems *
|
struct ieee802_11_elems *
|
||||||
@ -2186,6 +2190,7 @@ ieee802_11_parse_elems_crc(const u8 *start, size_t len, bool action,
|
|||||||
.filter = filter,
|
.filter = filter,
|
||||||
.crc = crc,
|
.crc = crc,
|
||||||
.bss = bss,
|
.bss = bss,
|
||||||
|
.link_id = -1,
|
||||||
};
|
};
|
||||||
|
|
||||||
return ieee802_11_parse_elems_full(¶ms);
|
return ieee802_11_parse_elems_full(¶ms);
|
||||||
|
@ -1022,6 +1022,10 @@ static void ieee80211_parse_extension_element(u32 *crc,
|
|||||||
if (ieee80211_eht_oper_size_ok(data, len))
|
if (ieee80211_eht_oper_size_ok(data, len))
|
||||||
elems->eht_operation = data;
|
elems->eht_operation = data;
|
||||||
break;
|
break;
|
||||||
|
case WLAN_EID_EXT_EHT_MULTI_LINK:
|
||||||
|
if (ieee80211_mle_size_ok(data, len))
|
||||||
|
elems->multi_link = (void *)data;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1524,6 +1528,7 @@ ieee802_11_parse_elems_full(struct ieee80211_elems_parse_params *params)
|
|||||||
.start = nontransmitted_profile,
|
.start = nontransmitted_profile,
|
||||||
.len = nontransmitted_profile_len,
|
.len = nontransmitted_profile_len,
|
||||||
.action = params->action,
|
.action = params->action,
|
||||||
|
.link_id = params->link_id,
|
||||||
};
|
};
|
||||||
|
|
||||||
_ieee802_11_parse_elems_full(&sub, elems, NULL);
|
_ieee802_11_parse_elems_full(&sub, elems, NULL);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user