Commit cf36cdef authored by Ilan Peer's avatar Ilan Peer Committed by Johannes Berg
Browse files

wifi: mac80211: Add support for parsing Reconfiguration Multi Link element

parent a286de1a
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -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
+18 −3
Original line number Diff line number Diff line
@@ -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)) {
			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 = (void *)data;
				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;
	}