mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-09 06:43:09 +00:00
wifi: mac80211: Add support for parsing Reconfiguration Multi Link element
Parse Reconfiguration Multi Link IE. Signed-off-by: Ilan Peer <ilan.peer@intel.com> Signed-off-by: Gregory Greenman <gregory.greenman@intel.com> Link: https://lore.kernel.org/r/20230616094949.6eeb6c9a4a6e.I1cb137da9b3c712fc7c7949a6dec9e314b5d7f63@changeid Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
a286de1aa3
commit
cf36cdef10
@ -1727,6 +1727,7 @@ struct ieee802_11_elems {
|
||||
const struct ieee80211_eht_cap_elem *eht_cap;
|
||||
const struct ieee80211_eht_operation *eht_operation;
|
||||
const struct ieee80211_multi_link_elem *ml_basic;
|
||||
const struct ieee80211_multi_link_elem *ml_reconf;
|
||||
|
||||
/* length of them, respectively */
|
||||
u8 ext_capab_len;
|
||||
@ -1752,10 +1753,14 @@ struct ieee802_11_elems {
|
||||
|
||||
/* mult-link element can be de-fragmented and thus u8 is not sufficient */
|
||||
size_t ml_basic_len;
|
||||
size_t ml_reconf_len;
|
||||
|
||||
/* The basic Multi-Link element in the original IEs */
|
||||
const struct element *ml_basic_elem;
|
||||
|
||||
/* The reconfiguration Multi-Link element in the original IEs */
|
||||
const struct element *ml_reconf_elem;
|
||||
|
||||
/*
|
||||
* store the per station profile pointer and length in case that the
|
||||
* parsing also handled Multi-Link element parsing for a specific link
|
||||
|
@ -984,9 +984,24 @@ ieee80211_parse_extension_element(u32 *crc,
|
||||
break;
|
||||
case WLAN_EID_EXT_EHT_MULTI_LINK:
|
||||
if (ieee80211_mle_size_ok(data, len)) {
|
||||
elems->ml_basic_elem = (void *)elem;
|
||||
elems->ml_basic = (void *)data;
|
||||
elems->ml_basic_len = len;
|
||||
const struct ieee80211_multi_link_elem *mle =
|
||||
(void *)data;
|
||||
|
||||
switch (le16_get_bits(mle->control,
|
||||
IEEE80211_ML_CONTROL_TYPE)) {
|
||||
case IEEE80211_ML_CONTROL_TYPE_BASIC:
|
||||
elems->ml_basic_elem = (void *)elem;
|
||||
elems->ml_basic = data;
|
||||
elems->ml_basic_len = len;
|
||||
break;
|
||||
case IEEE80211_ML_CONTROL_TYPE_RECONF:
|
||||
elems->ml_reconf_elem = (void *)elem;
|
||||
elems->ml_reconf = data;
|
||||
elems->ml_reconf_len = len;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user