diff options
| author | Jakub Kicinski <kuba@kernel.org> | 2025-01-18 17:46:53 -0800 | 
|---|---|---|
| committer | Jakub Kicinski <kuba@kernel.org> | 2025-01-18 17:46:54 -0800 | 
| commit | 66cc61a25c7dd64489e0b7d160e3de513fbaca8c (patch) | |
| tree | 7069ebb7bf1884ffb2015528756251b7f6ba8c9c /net/mac80211/parse.c | |
| parent | 185e5b869071812bcb278cf0973b8a7bbce0dc27 (diff) | |
| parent | 68abd0c4ebf24cd499841a488b97a6873d5efabb (diff) | |
Merge tag 'wireless-next-2025-01-17' of git://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless-next
Kalle Valo says:
====================
wireless-next patches for v6.14
Most likely the last "new features" pull request for v6.14 and this is
a bigger one. Multi-Link Operation (MLO) work continues both in stack
in drivers. Few new devices supported and usual fixes all over.
Major changes:
cfg80211
 * Emergency Preparedness Communication Services (EPCS) station mode support
mac80211
 * an option to filter a sta from being flushed
 * some support for RX Operating Mode Indication (OMI) power saving
 * support for adding and removing station links for MLO
iwlwifi
 * new device ids
 * rework firmware error handling and restart
rtw88
 * RTL8812A: RFE type 2 support
 * LED support
rtw89
 * variant info to support RTL8922AE-VS
mt76
 * mt7996: single wiphy multiband support (preparation for MLO)
 * mt7996: support for more variants
 * mt792x: P2P_DEVICE support
 * mt7921u: TP-Link TXE50UH support
ath12k
 * enable MLO for QCN9274 (although it seems to be broken with dual
   band devices)
 * MLO radar detection support
 * debugfs: transmit buffer OFDMA, AST entry and puncture stats
* tag 'wireless-next-2025-01-17' of git://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless-next: (322 commits)
  wifi: brcmfmac: fix NULL pointer dereference in brcmf_txfinalize()
  wifi: rtw88: add RTW88_LEDS depends on LEDS_CLASS to Kconfig
  wifi: wilc1000: unregister wiphy only after netdev registration
  wifi: cfg80211: adjust allocation of colocated AP data
  wifi: mac80211: fix memory leak in ieee80211_mgd_assoc_ml_reconf()
  wifi: ath12k: fix key cache handling
  wifi: ath12k: Fix uninitialized variable access in ath12k_mac_allocate() function
  wifi: ath12k: Remove ath12k_get_num_hw() helper function
  wifi: ath12k: Refactor the ath12k_hw get helper function argument
  wifi: ath12k: Refactor ath12k_hw set helper function argument
  wifi: mt76: mt7996: add implicit beamforming support for mt7992
  wifi: mt76: mt7996: fix beacon command during disabling
  wifi: mt76: mt7996: fix ldpc setting
  wifi: mt76: mt7996: fix definition of tx descriptor
  wifi: mt76: connac: adjust phy capabilities based on band constraints
  wifi: mt76: mt7996: fix incorrect indexing of MIB FW event
  wifi: mt76: mt7996: fix HE Phy capability
  wifi: mt76: mt7996: fix the capability of reception of EHT MU PPDU
  wifi: mt76: mt7996: add max mpdu len capability
  wifi: mt76: mt7921: avoid undesired changes of the preset regulatory domain
  ...
====================
Link: https://patch.msgid.link/20250117203529.72D45C4CEDD@smtp.kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'net/mac80211/parse.c')
| -rw-r--r-- | net/mac80211/parse.c | 29 | 
1 files changed, 29 insertions, 0 deletions
| diff --git a/net/mac80211/parse.c b/net/mac80211/parse.c index 279c5143b335..cd318c1c67be 100644 --- a/net/mac80211/parse.c +++ b/net/mac80211/parse.c @@ -44,6 +44,9 @@ struct ieee80211_elems_parse {  	/* The reconfiguration Multi-Link element in the original elements */  	const struct element *ml_reconf_elem; +	/* The EPCS Multi-Link element in the original elements */ +	const struct element *ml_epcs_elem; +  	/*  	 * scratch buffer that can be used for various element parsing related  	 * tasks, e.g., element de-fragmentation etc. @@ -159,6 +162,9 @@ ieee80211_parse_extension_element(u32 *crc,  			case IEEE80211_ML_CONTROL_TYPE_RECONF:  				elems_parse->ml_reconf_elem = elem;  				break; +			case IEEE80211_ML_CONTROL_TYPE_PRIO_ACCESS: +				elems_parse->ml_epcs_elem = elem; +				break;  			default:  				break;  			} @@ -943,6 +949,27 @@ ieee80211_mle_defrag_reconf(struct ieee80211_elems_parse *elems_parse)  	elems_parse->scratch_pos += ml_len;  } +static void +ieee80211_mle_defrag_epcs(struct ieee80211_elems_parse *elems_parse) +{ +	struct ieee802_11_elems *elems = &elems_parse->elems; +	ssize_t ml_len; + +	ml_len = cfg80211_defragment_element(elems_parse->ml_epcs_elem, +					     elems->ie_start, +					     elems->total_len, +					     elems_parse->scratch_pos, +					     elems_parse->scratch + +						elems_parse->scratch_len - +						elems_parse->scratch_pos, +					     WLAN_EID_FRAGMENT); +	if (ml_len < 0) +		return; +	elems->ml_epcs = (void *)elems_parse->scratch_pos; +	elems->ml_epcs_len = ml_len; +	elems_parse->scratch_pos += ml_len; +} +  struct ieee802_11_elems *  ieee802_11_parse_elems_full(struct ieee80211_elems_parse_params *params)  { @@ -1001,6 +1028,8 @@ ieee802_11_parse_elems_full(struct ieee80211_elems_parse_params *params)  	ieee80211_mle_defrag_reconf(elems_parse); +	ieee80211_mle_defrag_epcs(elems_parse); +  	if (elems->tim && !elems->parse_error) {  		const struct ieee80211_tim_ie *tim_ie = elems->tim; | 
