]> git.ipfire.org Git - thirdparty/openwrt.git/commitdiff
mac80211: bump to version 6.18.39 24353/head
authorHauke Mehrtens <hauke@hauke-m.de>
Tue, 21 Jul 2026 21:15:48 +0000 (23:15 +0200)
committerHauke Mehrtens <hauke@hauke-m.de>
Thu, 23 Jul 2026 19:47:25 +0000 (21:47 +0200)
This contains many fixes from upstream Linux.

mac80211/371-wifi-mac80211-Add-eMLSR-eMLMR-action-frame-parsing-s.patch
  adapted to upstream split of include/linux/ieee80211.h

Changes:
```
$ git log --oneline  v6.18.26...v6.18.39 -- drivers/net/wireless/ net/mac80211/ net/wireless/ include/linux/ieee80211*
1de92789ce31 wifi: iwlwifi: mld: validate sta_mask before ffs() in BA session handlers
b0b07e04f0c7 wifi: iwlwifi: mld: fix race condition in PTP removal
df626f284cb9 wifi: iwlwifi: mvm: fix race condition in PTP removal
200d58c851b8 wifi: rtw88: usb: fix memory leaks on USB write failures
73d427d271f7 wifi: rtw88: increase TX report timeout to fix race condition
0aeb4d3ff6ce wifi: rtlwifi: rtl8821ae: Fix C2H bit location in RX descriptor
40aa3c2b0cb8 wifi: ath11k: fix warning when unbinding
a7cdc384c9c5 wifi: mt76: mt7925: don't disable AP BSS when removing TDLS peer
7e25b5e22c1f wifi: mt76: mt76x2u: Add support for ELECOM WDC-867SU3S
3c499851753a wifi: mt76: add wcid publish check in mt76_sta_add
37c059d4d92f wifi: mac80211: tests: mark HT check strict
4dac39a4db14 wifi: mac80211: skip ieee80211_verify_sta_ht_mcs_support check in non-strict mode
265c07c09c83 wifi: nl80211: reject oversized EMA RNR lists
ac2000be0cbe wifi: iwlwifi: pcie: simplify the resume flow if fast resume is not used
fb8db813eba2 wifi: fix leak if split 6 GHz scanning fails
9b40c59bab08 wifi: mac80211: limit injected antenna index in ieee80211_parse_tx_radiotap
9dca67624721 wifi: iwlwifi: mvm: don't support the reset handshake for old firmwares
95c82d498d74 wifi: wilc1000: fix dma_buffer leak on bus acquire failure
55c479aae99b wifi: mac80211: fix MLE defragmentation
2d8379834800 wifi: mac80211: bounds-check link_id in ieee80211_ml_epcs
926a08cf19be wifi: ath11k: fix peer resolution on rx path when peer_id=0
3a74aaad0473 wifi: iwlwifi: mld: don't dereference a pointer before NULL checking it
9e360e610a73 wifi: iwlwifi: mld: fix TSO segmentation explosion when AMSDU is disabled
e1b429d8e712 wifi: ath10k: skip WMI and beacon transmission when device is wedged
d94127d04017 wifi: ath11k: fix error path leak in ath11k_tm_cmd_wmi_ftm()
acde4692afcd wifi: ath11k: fix error path leaks in some WMI WOW calls
2dd9304727c7 wifi: mac80211: consume only present negotiated TTLM maps
6cfae4914439 wifi: cfg80211: advance loop vars in cfg80211_merge_profile()
dc31c6947652 wifi: iwlwifi: mld: stop TX during firmware restart
6fe92651b44f wifi: iwlwifi: mvm: fix driver-set TX rates on old devices
614cacec60fe wifi: ath11k: clear shared SRNG pointer state on restart
254633506626 wifi: ath10k: fix station lookup failure during disconnect
a9937a3ac585 wifi: mac80211: handle VHT EXT NSS in ieee80211_determine_our_sta_mode()
cbea71b44803 wifi: brcmfmac: Fix error pointer dereference
6b9694702c37 wifi: rtw89: phy: fix uninitialized variable access in rtw89_phy_cfo_set_crystal_cap()
a1a8a8bdfa21 wifi: mt76: mt7996: fix RRO EMU configuration
dc34c01521bf wifi: mt76: support upgrading passive scans to active
a2cde15af378 wifi: mt76: fix multi-radio on-channel scanning
98e0118ab51c wifi: mt76: mt7996: Decrement sta counter removing the link in mt7996_mac_reset_sta_iter()
e54c6440114d wifi: mt76: mt7996: Switch to the secondary link if the default one is removed
d6f6b3a65660 wifi: mt76: mt7996: use correct link_id when filling TXD and TXP
5a3353b06387 wifi: mt76: mt7996: Remove link pointer dependency in mt7996_mac_sta_remove_links()
7da35e2d2fb7 wifi: mt76: mt7996: Add missing CHANCTX_STA_CSA property
1e0f3e5e2835 wifi: mt76: mt7921: fix 6GHz regulatory update on connection
aa4a31cd89f4 wifi: mt76: mt7996: fix use-after-free bugs in mt7996_mac_dump_work()
6b7cbb13c838 wifi: mt76: mt7915: fix use-after-free bugs in mt7915_mac_dump_work()
419babee9b5c wifi: mt76: mt7996: fix struct mt7996_mcu_uni_event
ae94ef093a15 wifi: mt76: mt7996: fix wrong DMAD length when using MAC TXP
5fc8c5d45e44 wifi: mt76: fix deadlock in remain-on-channel
35180c772f5e wifi: mt76: mt7921: fix potential deadlock in mt7921_roc_abort_sync
153bcba36c87 wifi: mt76: mt7925: fix potential deadlock in mt7925_roc_abort_sync
e125def8b380 wifi: mt76: mt7925: drop puncturing handling from BSS change path
a1a59bd3cd1e wifi: mt76: mt7925: cqm rssi low/high event notify
dcbc13d19bef wifi: mt76: Fix memory leak destroying device
35835ff71e6e wifi: mt76: mt7921: Place upper limit on station AID
e00c27608536 wifi: mt76: mt7996: fix FCS error flag check in RX descriptor
815db7fd57aa wifi: mt76: mt7925: prevent NULL vif dereference in mt7925_mac_write_txwi
93d0694fb56d wifi: mt76: mt7925: prevent NULL pointer dereference in mt7925_tx_check_aggr()
b81a93dc0aed wifi: mt76: mt7915: fix use_cts_prot support
729b4adad191 wifi: mt76: mt7615: fix use_cts_prot support
9aa3b49e1c5b wifi: mt76: mt7925: Fix incorrect MLO mode in firmware control
3880639cec09 wifi: mt76: mt7921: Reset ampdu_state state in case of failure in mt76_connac2_tx_check_aggr()
1e16b0a9b988 wifi: mt76: mt7996: Reset ampdu_state state in case of failure in mt7996_tx_check_aggr()
455a48685fee wifi: mt76: mt7996: Clear wcid pointer in mt7996_mac_sta_deinit_link()
6d7f231d5fff wifi: mt76: mt7996: Reset mtxq->idx if primary link is removed in mt7996_vif_link_remove()
15205c72f1ec wifi: mt76: mt7996: Set mtxq->wcid just for primary link
900579479395 wifi: mt76: mt7996: fix iface combination for different chipsets
096b74331df2 wifi: mt76: mt7996: fix the behavior of radar detection
00c0317cebf4 wifi: libertas: don't kill URBs in interrupt context
a761a1539a55 wifi: libertas: use USB anchors for tracking in-flight URBs
0ee803fc4787 wifi: ieee80211: fix definition of EHT-MCS 15 in MRU
dd827cff429d wifi: ieee80211: split EHT definitions out
df5720d35848 wifi: ieee80211: split HE definitions out
f8d1e8038bc7 wifi: ieee80211: split VHT definitions out
4d5caab09dab wifi: ieee80211: split HT definitions out
3f459076b2d8 wifi: ieee80211: split mesh definitions out
aa10a452e348 wifi: rtlwifi: pci: fix possible use-after-free caused by unfinished irq_prepare_bcn_tasklet
9fe48cacab63 wifi: mwifiex: Fix memory leak in mwifiex_11n_aggregate_pkt()
658d2e46c2e9 wifi: brcmfmac: Fix potential use-after-free issue when stopping watchdog task
d7029879bafd wifi: b43: enforce bounds check on firmware key index in b43_rx()
9e28654f79f4 wifi: mac80211: remove station if connection prep fails
e9f1081bc775 wifi: ath5k: do not access array OOB
7577a4b8a10f wifi: mac80211: use safe list iteration in radar detect work
4f9a4ae8d2c1 wifi: rsi: fix kthread lifetime race between self-exit and external-stop
e131562d6f2b wifi: mac80211: drop stray 'static' from fast-RX rx_result
9d1bc1558029 wifi: b43legacy: enforce bounds check on firmware key index in RX path
6d55948a62ab wifi: mt76: mt7921: fix ROC abort flow interruption in mt7921_roc_work
0aa63d33742b wifi: mt76: mt7921: fix a potential clc buffer length underflow
6fc7c8b414ce wifi: mt76: mt7925: fix incorrect length field in txpower command
5860ab3ddeaa wifi: mt76: mt7925: fix AMPDU state handling in mt7925_tx_check_aggr
8c4339dbab49 wifi: mt76: mt7925: fix incorrect TLV length in CLC command
7d7863018f40 wifi: mt76: mt792x: fix mt7925u USB WFSYS reset handling
0bc155c4ca47 wifi: mt76: mt792x: describe USB WFSYS reset with a descriptor
69c4d137b22d wifi: rtl8xxxu: fix potential use of uninitialized value
4e179a60a60c wifi: mwifiex: fix use-after-free in mwifiex_adapter_cleanup()
000134a20bbf wifi: rtw88: check for PCI upstream bridge existence
```

Link: https://github.com/openwrt/openwrt/pull/24353
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
12 files changed:
package/kernel/mac80211/Makefile
package/kernel/mac80211/patches/ath11k/949-wifi-ath11k-fix-monitor-rx-pktlen.patch
package/kernel/mac80211/patches/ath12k/700-ath12k-read-calibration-variant-from-dt.patch
package/kernel/mac80211/patches/ath5k/411-ath5k_allow_adhoc_and_ap.patch
package/kernel/mac80211/patches/brcm/870-04-rpi-6.12-brcmfmac-non-upstream-support-DS1-exit-firmware-re-download.patch
package/kernel/mac80211/patches/build/240-realtek-rtw88-BH-workqueue.patch
package/kernel/mac80211/patches/subsys/305-mac80211-increase-quantum-for-airtime-scheduler.patch
package/kernel/mac80211/patches/subsys/310-cfg80211-allow-grace-period-for-DFS-available-after-.patch
package/kernel/mac80211/patches/subsys/311-cfg80211-allow-concurrent-AP-operation-on-DFS-channe.patch
package/kernel/mac80211/patches/subsys/320-mac80211-add-AQL-support-for-broadcast-packets.patch
package/kernel/mac80211/patches/subsys/321-wifi-mac80211-add-ieee80211_txq_aql_pending.patch
package/kernel/mac80211/patches/subsys/371-wifi-mac80211-Add-eMLSR-eMLMR-action-frame-parsing-s.patch

index aec88b692ba08c192cd6e42406b70f180edbb94f..9014ce85e53fb681e61561dbf999e6884e4060ba 100644 (file)
@@ -10,13 +10,13 @@ include $(INCLUDE_DIR)/kernel.mk
 
 PKG_NAME:=mac80211
 
-PKG_VERSION:=6.18.26
+PKG_VERSION:=6.18.39
 PKG_RELEASE:=1
 PKG_LICENSE:=GPL-2.0-only
 PKG_LICENSE_FILES:=COPYING
 
 PKG_SOURCE_URL:=https://github.com/openwrt/backports/releases/download/backports-v$(PKG_VERSION)
-PKG_HASH:=2ad578c6cae22f192fefd44e1449725228d4109ee781998b41dcbae872554968
+PKG_HASH:=8951c1e270d7c311432377bd50951cd1d5dee2b5fedf33d30db41aa8e428aeb0
 
 PKG_SOURCE:=backports-$(PKG_VERSION).tar.zst
 PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/$(if $(BUILD_VARIANT),$(PKG_NAME)-$(BUILD_VARIANT)/)backports-$(PKG_VERSION)
index f174d60749c72d4a9863753efafa9dcf09db411b..33f71d28c359ba3c24416955ca1994fe82e075c8 100644 (file)
@@ -24,7 +24,7 @@ to the monitor RX delivery path.
 
 --- a/drivers/net/wireless/ath/ath11k/dp_rx.c
 +++ b/drivers/net/wireless/ath/ath11k/dp_rx.c
-@@ -4930,8 +4930,13 @@ ath11k_dp_rx_mon_merg_msdus(struct ath11
+@@ -4929,8 +4929,13 @@ ath11k_dp_rx_mon_merg_msdus(struct ath11
                }
  
                prev_buf->next = NULL;
@@ -39,7 +39,7 @@ to the monitor RX delivery path.
        } else if (decap_format == DP_RX_DECAP_TYPE_NATIVE_WIFI) {
                u8 qos_pkt = 0;
  
-@@ -4957,10 +4962,13 @@ ath11k_dp_rx_mon_merg_msdus(struct ath11
+@@ -4956,10 +4961,13 @@ ath11k_dp_rx_mon_merg_msdus(struct ath11
                        prev_buf = msdu;
                        msdu = msdu->next;
                }
@@ -57,7 +57,7 @@ to the monitor RX delivery path.
                ath11k_dbg(ab, ATH11K_DBG_DATA,
                           "mpdu_buf %p mpdu_buf->len %u",
                           prev_buf, prev_buf->len);
-@@ -5085,12 +5093,27 @@ static int ath11k_dp_rx_mon_deliver(stru
+@@ -5084,12 +5092,27 @@ static int ath11k_dp_rx_mon_deliver(stru
  
        header = mon_skb;
  
index e7dc7467da11e3b86a21ad492cf4749646ecd351..9f857301def08948913d1d1afed074f224d467ed 100644 (file)
@@ -32,7 +32,7 @@ Changes in v2:
 
 --- a/drivers/net/wireless/ath/ath12k/core.c
 +++ b/drivers/net/wireless/ath/ath12k/core.c
-@@ -812,6 +812,28 @@ int ath12k_core_check_smbios(struct ath12k_base *ab)
+@@ -806,6 +806,28 @@ int ath12k_core_check_smbios(struct ath1
        return 0;
  }
  
@@ -63,7 +63,7 @@ Changes in v2:
        int ret;
 --- a/drivers/net/wireless/ath/ath12k/qmi.c
 +++ b/drivers/net/wireless/ath/ath12k/qmi.c
-@@ -2945,6 +2945,10 @@ int ath12k_qmi_request_target_cap(struct ath12k_base *ab)
+@@ -2903,6 +2903,10 @@ int ath12k_qmi_request_target_cap(struct
        if (r)
                ath12k_dbg(ab, ATH12K_DBG_QMI, "SMBIOS bdf variant name not set.\n");
  
index 1df4aab57ee47c985a8fc1d609cab395038bdfdc..6c416ae9803bbaa267c044764a13063a8c7b8b57 100644 (file)
@@ -18,7 +18,7 @@
                goto end;
 --- a/drivers/net/wireless/ath/ath5k/base.c
 +++ b/drivers/net/wireless/ath/ath5k/base.c
-@@ -2009,7 +2009,7 @@ ath5k_beacon_send(struct ath5k_hw *ah)
+@@ -2010,7 +2010,7 @@ ath5k_beacon_send(struct ath5k_hw *ah)
        }
  
        if ((ah->opmode == NL80211_IFTYPE_AP && ah->num_ap_vifs +
@@ -27,7 +27,7 @@
                        ah->opmode == NL80211_IFTYPE_MESH_POINT) {
                u64 tsf = ath5k_hw_get_tsf64(ah);
                u32 tsftu = TSF_TO_TU(tsf);
-@@ -2095,7 +2095,7 @@ ath5k_beacon_update_timers(struct ath5k_
+@@ -2096,7 +2096,7 @@ ath5k_beacon_update_timers(struct ath5k_
  
        intval = ah->bintval & AR5K_BEACON_PERIOD;
        if (ah->opmode == NL80211_IFTYPE_AP && ah->num_ap_vifs
@@ -36,7 +36,7 @@
                intval /= ATH_BCBUF;    /* staggered multi-bss beacons */
                if (intval < 15)
                        ATH5K_WARN(ah, "intval %u is too low, min 15\n",
-@@ -2561,6 +2561,7 @@ static const struct ieee80211_iface_limi
+@@ -2562,6 +2562,7 @@ static const struct ieee80211_iface_limi
                                 BIT(NL80211_IFTYPE_MESH_POINT) |
  #endif
                                 BIT(NL80211_IFTYPE_AP) },
index bbeb4d3744168405c9bf8acacdd62382918f2042..8f6076e4a3944d5ad3501edcfebc571c8467e65c 100644 (file)
@@ -266,7 +266,7 @@ JIRA: SWWLAN-136577
  
        return intstatus;
  }
-@@ -2581,6 +2596,182 @@ static int brcmf_sdio_intr_rstatus(struc
+@@ -2582,6 +2597,182 @@ static int brcmf_sdio_intr_rstatus(struc
        return ret;
  }
  
@@ -449,7 +449,7 @@ JIRA: SWWLAN-136577
  static void brcmf_sdio_dpc(struct brcmf_sdio *bus)
  {
        struct brcmf_sdio_dev *sdiod = bus->sdiodev;
-@@ -2652,8 +2843,11 @@ static void brcmf_sdio_dpc(struct brcmf_
+@@ -2653,8 +2844,11 @@ static void brcmf_sdio_dpc(struct brcmf_
  
        /* Handle host mailbox indication */
        if (intstatus & I_HMB_HOST_INT) {
@@ -462,7 +462,7 @@ JIRA: SWWLAN-136577
        }
  
        sdio_release_host(bus->sdiodev->func1);
-@@ -2698,7 +2892,7 @@ static void brcmf_sdio_dpc(struct brcmf_
+@@ -2699,7 +2893,7 @@ static void brcmf_sdio_dpc(struct brcmf_
        brcmf_sdio_clrintr(bus);
  
        if (bus->ctrl_frame_stat && (bus->clkstate == CLK_AVAIL) &&
@@ -471,7 +471,7 @@ JIRA: SWWLAN-136577
                sdio_claim_host(bus->sdiodev->func1);
                if (bus->ctrl_frame_stat) {
                        err = brcmf_sdio_tx_ctrlframe(bus,  bus->ctrl_frame_buf,
-@@ -3569,6 +3763,10 @@ static int brcmf_sdio_bus_preinit(struct
+@@ -3570,6 +3764,10 @@ static int brcmf_sdio_bus_preinit(struct
        if (err < 0)
                goto done;
  
@@ -482,7 +482,7 @@ JIRA: SWWLAN-136577
        bus->tx_hdrlen = SDPCM_HWHDR_LEN + SDPCM_SWHDR_LEN;
        if (sdiodev->sg_support) {
                bus->txglom = false;
-@@ -4219,7 +4417,7 @@ static void brcmf_sdio_firmware_callback
+@@ -4220,7 +4418,7 @@ static void brcmf_sdio_firmware_callback
        u8 saveclk, bpreq;
        u8 devctl;
  
@@ -491,7 +491,7 @@ JIRA: SWWLAN-136577
  
        if (err)
                goto fail;
-@@ -4397,12 +4595,25 @@ static void brcmf_sdio_firmware_callback
+@@ -4398,12 +4596,25 @@ static void brcmf_sdio_firmware_callback
        }
  
        /* Attach to the common layer, reserve hdr space */
@@ -518,7 +518,7 @@ JIRA: SWWLAN-136577
        /* ready */
        return;
  
-@@ -4650,3 +4861,40 @@ int brcmf_sdio_sleep(struct brcmf_sdio *
+@@ -4652,3 +4863,40 @@ int brcmf_sdio_sleep(struct brcmf_sdio *
  
        return ret;
  }
index 53631859f046234f4d2abd039af2ce71c273027e..f7665af06eee0ff92f7b0d22dcd67d444038aa8c 100644 (file)
@@ -1,6 +1,6 @@
 --- a/drivers/net/wireless/realtek/rtw88/usb.c
 +++ b/drivers/net/wireless/realtek/rtw88/usb.c
-@@ -965,7 +965,11 @@ static int rtw_usb_init_rx(struct rtw_de
+@@ -974,7 +974,11 @@ static int rtw_usb_init_rx(struct rtw_de
        struct sk_buff *rx_skb;
        int i;
  
index c0820ea23e592f89d486d4a1117f40df8831b8d1..34c86a7aff3196b02e445f9655399a7ed4212e46 100644 (file)
@@ -23,7 +23,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  
 --- a/net/mac80211/tx.c
 +++ b/net/mac80211/tx.c
-@@ -4088,7 +4088,7 @@ struct ieee80211_txq *ieee80211_next_txq
+@@ -4090,7 +4090,7 @@ struct ieee80211_txq *ieee80211_next_txq
  
                if (deficit < 0)
                        sta->airtime[txqi->txq.ac].deficit +=
@@ -32,7 +32,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  
                if (deficit < 0 || !aql_check) {
                        list_move_tail(&txqi->schedule_order,
-@@ -4233,7 +4233,8 @@ bool ieee80211_txq_may_transmit(struct i
+@@ -4235,7 +4235,8 @@ bool ieee80211_txq_may_transmit(struct i
                }
                sta = container_of(iter->txq.sta, struct sta_info, sta);
                if (ieee80211_sta_deficit(sta, ac) < 0)
@@ -42,7 +42,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
                list_move_tail(&iter->schedule_order, &local->active_txqs[ac]);
        }
  
-@@ -4241,7 +4242,7 @@ bool ieee80211_txq_may_transmit(struct i
+@@ -4243,7 +4244,7 @@ bool ieee80211_txq_may_transmit(struct i
        if (sta->airtime[ac].deficit >= 0)
                goto out;
  
index 5ada929cc7d3efef68168d8cd778c65582cadfe0..33715a7eb5f97a359e60c1a1251b7650612868e8 100644 (file)
@@ -148,7 +148,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
                                c->dfs_state_entered = jiffies;
 --- a/net/wireless/nl80211.c
 +++ b/net/wireless/nl80211.c
-@@ -20967,6 +20967,9 @@ void cfg80211_ch_switch_notify(struct ne
+@@ -20970,6 +20970,9 @@ void cfg80211_ch_switch_notify(struct ne
                break;
        case NL80211_IFTYPE_AP:
        case NL80211_IFTYPE_P2P_GO:
index 92ab297a2cfa83ac5eb0f83dda5b286546ddd566..b75aab21fe2b40517fa2711ec7dd97f5f3170175 100644 (file)
@@ -88,7 +88,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  void cfg80211_update_last_available(struct wiphy *wiphy,
 --- a/net/wireless/nl80211.c
 +++ b/net/wireless/nl80211.c
-@@ -6741,6 +6741,8 @@ static int nl80211_start_ap(struct sk_bu
+@@ -6744,6 +6744,8 @@ static int nl80211_start_ap(struct sk_bu
                goto out;
        }
  
index d1e9c0deb099c9150c1a12148763a0c339940824..a24c5ecfbfbde40f3364c042fcf7c7a83431e5cc 100644 (file)
@@ -127,7 +127,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
                        atomic_add(tx_airtime,
 --- a/net/mac80211/tx.c
 +++ b/net/mac80211/tx.c
-@@ -2558,7 +2558,7 @@ static u16 ieee80211_store_ack_skb(struc
+@@ -2560,7 +2560,7 @@ static u16 ieee80211_store_ack_skb(struc
  
                spin_lock_irqsave(&local->ack_status_lock, flags);
                id = idr_alloc(&local->ack_status_frames, ack_skb,
@@ -136,7 +136,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
                spin_unlock_irqrestore(&local->ack_status_lock, flags);
  
                if (id >= 0) {
-@@ -3989,20 +3989,20 @@ begin:
+@@ -3991,20 +3991,20 @@ begin:
  encap_out:
        info->control.vif = vif;
  
@@ -167,7 +167,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
        }
  
        return skb;
-@@ -4054,6 +4054,7 @@ struct ieee80211_txq *ieee80211_next_txq
+@@ -4056,6 +4056,7 @@ struct ieee80211_txq *ieee80211_next_txq
        struct ieee80211_txq *ret = NULL;
        struct txq_info *txqi = NULL, *head = NULL;
        bool found_eligible_txq = false;
@@ -175,7 +175,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  
        spin_lock_bh(&local->active_txq_lock[ac]);
  
-@@ -4077,26 +4078,26 @@ struct ieee80211_txq *ieee80211_next_txq
+@@ -4079,26 +4080,26 @@ struct ieee80211_txq *ieee80211_next_txq
        if (!head)
                head = txqi;
  
@@ -214,7 +214,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
        if (txqi->schedule_round == local->schedule_round[ac])
                goto out;
  
-@@ -4163,7 +4164,8 @@ bool ieee80211_txq_airtime_check(struct
+@@ -4165,7 +4166,8 @@ bool ieee80211_txq_airtime_check(struct
                return true;
  
        if (!txq->sta)
@@ -224,7 +224,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  
        if (unlikely(txq->tid == IEEE80211_NUM_TIDS))
                return true;
-@@ -4212,15 +4214,15 @@ bool ieee80211_txq_may_transmit(struct i
+@@ -4214,15 +4216,15 @@ bool ieee80211_txq_may_transmit(struct i
  
        spin_lock_bh(&local->active_txq_lock[ac]);
  
index 91facb3c93c559b811f155f02402d8ac527a36ee..ad7beeaeeeee288856c37a965add553d804cc384 100644 (file)
@@ -32,7 +32,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
   * @vif: virtual interface to iterate, may be %NULL for all
 --- a/net/mac80211/tx.c
 +++ b/net/mac80211/tx.c
-@@ -4185,6 +4185,24 @@ bool ieee80211_txq_airtime_check(struct
+@@ -4187,6 +4187,24 @@ bool ieee80211_txq_airtime_check(struct
  }
  EXPORT_SYMBOL(ieee80211_txq_airtime_check);
  
index 3d1e17cec9647796775dedefc7f1584a05a9017e..9b578a5f0cd975aa90718d94371ae5f94754ca86 100644 (file)
@@ -1,6 +1,7 @@
+From 0d95280a2d54ebd3d38adc4ff67808009798978c Mon Sep 17 00:00:00 2001
 From: Lorenzo Bianconi <lorenzo@kernel.org>
 Date: Thu, 29 Jan 2026 14:15:46 +0100
-Subject: [PATCH] wifi: mac80211: Add eMLSR/eMLMR action frame parsing support
+Subject: wifi: mac80211: Add eMLSR/eMLMR action frame parsing support
 
 Introduce support in AP mode for parsing of the Operating Mode Notification
 frame sent by the client to enable/disable MLO eMLSR or eMLMR if supported
@@ -13,25 +14,22 @@ Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
 Link: https://patch.msgid.link/20260129-mac80211-emlsr-v4-1-14bdadf57380@kernel.org
 Signed-off-by: Johannes Berg <johannes.berg@intel.com>
 ---
+ include/linux/ieee80211-eht.h |  11 +++
+ include/linux/ieee80211.h     |   6 ++
+ include/net/mac80211.h        |  32 +++++++
+ net/mac80211/driver-ops.h     |  21 ++++
+ net/mac80211/eht.c            | 175 ++++++++++++++++++++++++++++++++++
+ net/mac80211/ieee80211_i.h    |   2 +
+ net/mac80211/iface.c          |  10 +-
+ net/mac80211/rx.c             |   8 ++
+ net/mac80211/trace.h          |  32 +++++++
+ 9 files changed, 296 insertions(+), 1 deletion(-)
 
---- a/include/linux/ieee80211.h
-+++ b/include/linux/ieee80211.h
-@@ -1612,6 +1612,12 @@ struct ieee80211_mgmt {
-                                       u8 action_code;
-                                       u8 variable[];
-                               } __packed epcs;
-+                              struct {
-+                                      u8 action_code;
-+                                      u8 dialog_token;
-+                                      u8 control;
-+                                      u8 variable[];
-+                              } __packed eml_omn;
-                       } u;
-               } __packed action;
-               DECLARE_FLEX_ARRAY(u8, body); /* Generic frame body */
-@@ -5462,6 +5468,17 @@ struct ieee80211_mle_tdls_common_info {
+--- a/include/linux/ieee80211-eht.h
++++ b/include/linux/ieee80211-eht.h
+@@ -558,6 +558,17 @@ struct ieee80211_mle_tdls_common_info {
  
- /* no fixed fields in PRIO_ACCESS */
+ #define IEEE80211_MLC_PRIO_ACCESS_PRES_AP_MLD_MAC_ADDR        0x0010
  
 +#define IEEE80211_EML_CTRL_EMLSR_MODE         BIT(0)
 +#define IEEE80211_EML_CTRL_EMLMR_MODE         BIT(1)
@@ -44,9 +42,24 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
 +#define IEEE80211_EML_EMLMR_RX_MCS_MAP                0xf0
 +#define IEEE80211_EML_EMLMR_TX_MCS_MAP                0x0f
 +
+ /* no fixed fields in PRIO_ACCESS */
  /**
-  * ieee80211_mle_common_size - check multi-link element common size
-  * @data: multi-link element, must already be checked for size using
+--- a/include/linux/ieee80211.h
++++ b/include/linux/ieee80211.h
+@@ -1367,6 +1367,12 @@ struct ieee80211_mgmt {
+                                       u8 action_code;
+                                       u8 variable[];
+                               } __packed epcs;
++                              struct {
++                                      u8 action_code;
++                                      u8 dialog_token;
++                                      u8 control;
++                                      u8 variable[];
++                              } __packed eml_omn;
+                       } u;
+               } __packed action;
+               DECLARE_FLEX_ARRAY(u8, body); /* Generic frame body */
 --- a/include/net/mac80211.h
 +++ b/include/net/mac80211.h
 @@ -1901,6 +1901,31 @@ enum ieee80211_offload_flags {
@@ -406,7 +419,3 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
  #endif /* !__MAC80211_DRIVER_TRACE || TRACE_HEADER_MULTI_READ */
  
  #undef TRACE_INCLUDE_PATH
---- /dev/null
-+++ b/include/linux/ieee80211-eht.h
-@@ -0,0 +1 @@
-+#include <linux/ieee80211.h>