From b4b9288f2aa3dd1a759e5effbc8378f614bd5755 Mon Sep 17 00:00:00 2001 From: Hauke Mehrtens Date: Sun, 31 Aug 2025 21:43:06 +0200 Subject: [PATCH] mac80211: Update to 6.12.44 Updates backports to kernel version 6.12.44. This includes many fixes for normal and security bugs. The removed patches were applied upstream and backported to kernel 6.12.44. This is based on the same backports code as used for the old tar based on kernel 6.12.6. removed upstream patches: ath11k/001-wifi-ath11k-Fix-DMA-buffer-allocation-to-resolve-SWIOTLB-issues.patch [1] ath11k/002-wifi-ath11k-use-dma-alloc-noncoherent-for-rx-tid-buffer-allocation.patch [2] rtl/050-wifi-rtlwifi-rtl8821ae-phy-restore-removed-code-to-f.patch [3] subsys/400-v6.16-wifi-mac80211-do-not-offer-a-mesh-path-if-forwarding.patch [4] Part of the following patch was merged upstream: subsys/350-wifi-mac80211-Add-link-iteration-macro-for-link-data.patch [5] [1]: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-6.12.y&id=b92c5179db4b19152c6492d1dfda457bff789272 [2]: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-6.12.y&id=115360031be90aa6cf11d718caf19fea94824285 [3]: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-6.12.y&id=411c7738669907b5e2288ee7a0396ec0980e58fc [4]: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-6.12.y&id=4c43d2c649269e91a81cbc6b2d6b7c552d3eeb45 [5]: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-6.12.y&id=a4afc3d522ca03920fe14c2b95638237fb6edbd8 Link: https://github.com/openwrt/openwrt/pull/19920 Signed-off-by: Hauke Mehrtens --- package/kernel/mac80211/Makefile | 4 +- .../patches/ath/404-regd_no_assoc_hints.patch | 4 +- ...21-ath10k_init_devices_synchronously.patch | 2 +- .../930-ath10k_add_tpt_led_trigger.patch | 4 +- ...75-ath10k-use-tpt-trigger-by-default.patch | 4 +- ...h10k-Try-to-get-mac-address-from-dts.patch | 2 +- ...k-always-use-mac80211-loss-detection.patch | 2 +- ...allocation-to-resolve-SWIOTLB-issues.patch | 91 ------- ...oherent-for-rx-tid-buffer-allocation.patch | 255 ------------------ ...upport-setting-FW-memory-mode-via-DT.patch | 4 +- ...-and-handle-country-code-for-WCN7850.patch | 54 ++-- .../ath9k/410-ath9k_allow_adhoc_and_ap.patch | 2 +- ...abled-MFP-capability-unconditionally.patch | 4 +- .../patches/ath9k/501-ath9k_ahb_init.patch | 2 +- .../ath9k/512-ath9k_channelbw_debugfs.patch | 2 +- .../patches/ath9k/530-ath9k_extra_leds.patch | 2 +- .../ath9k/543-ath9k_entropy_from_adc.patch | 6 +- .../ath9k/553-ath9k_of_gpio_mask.patch | 4 +- ...upport-DS1-exit-firmware-re-download.patch | 8 +- .../150-ath_iommu_paging_domain_revert.patch | 2 +- .../210-wireless_netns_local_backport.patch | 2 +- .../220-brcmfmac_usb_driver_backport.patch | 2 +- ...x-init_vqs-build-error-on-kernel-6.6.patch | 4 +- ...700-mwl8k-missing-pci-id-for-WNR854T.patch | 2 +- ...940-mwl8k_init_devices_synchronously.patch | 4 +- ...w88-Constify-some-arrays-and-structs.patch | 16 +- ...-the-RX-descriptor-with-a-single-fun.patch | 14 +- ...ome-definitions-for-RTL8821AU-RTL881.patch | 44 +-- ...-the-HW-features-only-for-some-chips.patch | 6 +- ...-Allow-different-C2H-RA-report-sizes.patch | 4 +- ...ach-driver-control-the-power-on-off-.patch | 16 +- ...e-data-rate-fallback-for-older-chips.patch | 12 +- ...upport-TX-page-sizes-bigger-than-128.patch | 2 +- ...-pwr_track_tbl-to-struct-rtw_rfe_def.patch | 16 +- ...et-pkt_info.ls-for-the-reserved-page.patch | 2 +- ...w88-usb-Support-USB-3-with-RTL8812AU.patch | 6 +- ...nable-RX-aggregation-for-8821au-8812.patch | 4 +- ...8821ae-phy-restore-removed-code-to-f.patch | 32 --- .../patches/subsys/130-disable_auto_vif.patch | 2 +- .../230-avoid-crashing-missing-band.patch | 2 +- ...domize-BA-session-dialog-token-alloc.patch | 2 +- ...crease-quantum-for-airtime-scheduler.patch | 6 +- ...race-period-for-DFS-available-after-.patch | 8 +- ...dd-AQL-support-for-broadcast-packets.patch | 16 +- ...11-add-option-for-vif-allowed-radios.patch | 40 +-- ...e-vif-radio-mask-to-limit-ibss-scan-.patch | 8 +- ...e-vif-radio-mask-to-limit-chanctx-an.patch | 2 +- ...s-net_device-to-.set_monitor_channel.patch | 8 +- ...d-flag-to-opt-out-of-virtual-monitor.patch | 18 +- ...fi-cfg80211-add-monitor-SKIP_TX-flag.patch | 10 +- ...d-support-for-the-monitor-SKIP_TX-fl.patch | 4 +- ...-report-per-wiphy-radio-antenna-mask.patch | 10 +- ...x-vif-addr-when-switching-from-monit.patch | 2 +- ...d-link-iteration-macro-for-link-data.patch | 24 +- ...211-extend-beacon-monitoring-for-MLO.patch | 4 +- ...extend-connection-monitoring-for-MLO.patch | 6 +- ...-not-offer-a-mesh-path-if-forwarding.patch | 56 ---- 57 files changed, 217 insertions(+), 657 deletions(-) delete mode 100644 package/kernel/mac80211/patches/ath11k/001-wifi-ath11k-Fix-DMA-buffer-allocation-to-resolve-SWIOTLB-issues.patch delete mode 100644 package/kernel/mac80211/patches/ath11k/002-wifi-ath11k-use-dma-alloc-noncoherent-for-rx-tid-buffer-allocation.patch delete mode 100644 package/kernel/mac80211/patches/rtl/050-wifi-rtlwifi-rtl8821ae-phy-restore-removed-code-to-f.patch delete mode 100644 package/kernel/mac80211/patches/subsys/400-v6.16-wifi-mac80211-do-not-offer-a-mesh-path-if-forwarding.patch diff --git a/package/kernel/mac80211/Makefile b/package/kernel/mac80211/Makefile index 375a2d869b5..c93f177aecf 100644 --- a/package/kernel/mac80211/Makefile +++ b/package/kernel/mac80211/Makefile @@ -10,13 +10,13 @@ include $(INCLUDE_DIR)/kernel.mk PKG_NAME:=mac80211 -PKG_VERSION:=6.12.6 +PKG_VERSION:=6.12.44 PKG_RELEASE:=2 PKG_LICENSE:=GPL-2.0-only PKG_LICENSE_FILES:=COPYING PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources/ -PKG_HASH:=28ec39425a1b3270e1422d92a8131a6a3d8919cc13e8ee250c315e55d922ba68 +PKG_HASH:=85a9f92ddba3bf2970a089e7af576c1135217c387205f4481ea9131c0c45c509 PKG_SOURCE:=backports-$(PKG_VERSION).tar.xz PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/$(if $(BUILD_VARIANT),$(PKG_NAME)-$(BUILD_VARIANT)/)backports-$(PKG_VERSION) diff --git a/package/kernel/mac80211/patches/ath/404-regd_no_assoc_hints.patch b/package/kernel/mac80211/patches/ath/404-regd_no_assoc_hints.patch index 895e2ff8d8d..8c3d8108aa7 100644 --- a/package/kernel/mac80211/patches/ath/404-regd_no_assoc_hints.patch +++ b/package/kernel/mac80211/patches/ath/404-regd_no_assoc_hints.patch @@ -1,6 +1,6 @@ --- a/net/wireless/reg.c +++ b/net/wireless/reg.c -@@ -3364,6 +3364,8 @@ void regulatory_hint_country_ie(struct w +@@ -3367,6 +3367,8 @@ void regulatory_hint_country_ie(struct w enum environment_cap env = ENVIRON_ANY; struct regulatory_request *request = NULL, *lr; @@ -9,7 +9,7 @@ /* IE len must be evenly divisible by 2 */ if (country_ie_len & 0x01) return; -@@ -3615,6 +3617,7 @@ static bool is_wiphy_all_set_reg_flag(en +@@ -3618,6 +3620,7 @@ static bool is_wiphy_all_set_reg_flag(en void regulatory_hint_disconnect(void) { diff --git a/package/kernel/mac80211/patches/ath10k/921-ath10k_init_devices_synchronously.patch b/package/kernel/mac80211/patches/ath10k/921-ath10k_init_devices_synchronously.patch index a7e11679a31..df0a0a028e7 100644 --- a/package/kernel/mac80211/patches/ath10k/921-ath10k_init_devices_synchronously.patch +++ b/package/kernel/mac80211/patches/ath10k/921-ath10k_init_devices_synchronously.patch @@ -14,7 +14,7 @@ Signed-off-by: Sven Eckelmann --- a/drivers/net/wireless/ath/ath10k/core.c +++ b/drivers/net/wireless/ath/ath10k/core.c -@@ -3539,6 +3539,16 @@ int ath10k_core_register(struct ath10k * +@@ -3577,6 +3577,16 @@ int ath10k_core_register(struct ath10k * queue_work(ar->workqueue, &ar->register_work); diff --git a/package/kernel/mac80211/patches/ath10k/930-ath10k_add_tpt_led_trigger.patch b/package/kernel/mac80211/patches/ath10k/930-ath10k_add_tpt_led_trigger.patch index b13bc334982..c71123a8fee 100644 --- a/package/kernel/mac80211/patches/ath10k/930-ath10k_add_tpt_led_trigger.patch +++ b/package/kernel/mac80211/patches/ath10k/930-ath10k_add_tpt_led_trigger.patch @@ -1,6 +1,6 @@ --- a/drivers/net/wireless/ath/ath10k/mac.c +++ b/drivers/net/wireless/ath/ath10k/mac.c -@@ -9919,6 +9919,21 @@ static int ath10k_mac_init_rd(struct ath +@@ -9924,6 +9924,21 @@ static int ath10k_mac_init_rd(struct ath return 0; } @@ -22,7 +22,7 @@ int ath10k_mac_register(struct ath10k *ar) { static const u32 cipher_suites[] = { -@@ -10281,6 +10296,12 @@ int ath10k_mac_register(struct ath10k *a +@@ -10286,6 +10301,12 @@ int ath10k_mac_register(struct ath10k *a ar->hw->weight_multiplier = ATH10K_AIRTIME_WEIGHT_MULTIPLIER; diff --git a/package/kernel/mac80211/patches/ath10k/975-ath10k-use-tpt-trigger-by-default.patch b/package/kernel/mac80211/patches/ath10k/975-ath10k-use-tpt-trigger-by-default.patch index fc41f5f1511..be2ccfd0bf7 100644 --- a/package/kernel/mac80211/patches/ath10k/975-ath10k-use-tpt-trigger-by-default.patch +++ b/package/kernel/mac80211/patches/ath10k/975-ath10k-use-tpt-trigger-by-default.patch @@ -16,7 +16,7 @@ Signed-off-by: Mathias Kresin --- a/drivers/net/wireless/ath/ath10k/core.h +++ b/drivers/net/wireless/ath/ath10k/core.h -@@ -1315,6 +1315,10 @@ struct ath10k { +@@ -1320,6 +1320,10 @@ struct ath10k { s32 tx_power_2g_limit; s32 tx_power_5g_limit; @@ -40,7 +40,7 @@ Signed-off-by: Mathias Kresin if (ret) --- a/drivers/net/wireless/ath/ath10k/mac.c +++ b/drivers/net/wireless/ath/ath10k/mac.c -@@ -10297,7 +10297,7 @@ int ath10k_mac_register(struct ath10k *a +@@ -10302,7 +10302,7 @@ int ath10k_mac_register(struct ath10k *a ar->hw->weight_multiplier = ATH10K_AIRTIME_WEIGHT_MULTIPLIER; #ifdef CPTCFG_MAC80211_LEDS diff --git a/package/kernel/mac80211/patches/ath10k/984-ath10k-Try-to-get-mac-address-from-dts.patch b/package/kernel/mac80211/patches/ath10k/984-ath10k-Try-to-get-mac-address-from-dts.patch index beec6a95eaf..b62e3c09a0d 100644 --- a/package/kernel/mac80211/patches/ath10k/984-ath10k-Try-to-get-mac-address-from-dts.patch +++ b/package/kernel/mac80211/patches/ath10k/984-ath10k-Try-to-get-mac-address-from-dts.patch @@ -26,7 +26,7 @@ Signed-off-by: Ansuel Smith #include #include #include -@@ -3411,6 +3412,8 @@ static int ath10k_core_probe_fw(struct a +@@ -3449,6 +3450,8 @@ static int ath10k_core_probe_fw(struct a device_get_mac_address(ar->dev, ar->mac_addr); diff --git a/package/kernel/mac80211/patches/ath10k/988-ath10k-always-use-mac80211-loss-detection.patch b/package/kernel/mac80211/patches/ath10k/988-ath10k-always-use-mac80211-loss-detection.patch index b9cdae7e1f9..f7387595a95 100644 --- a/package/kernel/mac80211/patches/ath10k/988-ath10k-always-use-mac80211-loss-detection.patch +++ b/package/kernel/mac80211/patches/ath10k/988-ath10k-always-use-mac80211-loss-detection.patch @@ -18,7 +18,7 @@ Signed-off-by: David Bauer --- a/drivers/net/wireless/ath/ath10k/mac.c +++ b/drivers/net/wireless/ath/ath10k/mac.c -@@ -10089,7 +10089,6 @@ int ath10k_mac_register(struct ath10k *a +@@ -10094,7 +10094,6 @@ int ath10k_mac_register(struct ath10k *a ieee80211_hw_set(ar->hw, CHANCTX_STA_CSA); ieee80211_hw_set(ar->hw, QUEUE_CONTROL); ieee80211_hw_set(ar->hw, SUPPORTS_TX_FRAG); diff --git a/package/kernel/mac80211/patches/ath11k/001-wifi-ath11k-Fix-DMA-buffer-allocation-to-resolve-SWIOTLB-issues.patch b/package/kernel/mac80211/patches/ath11k/001-wifi-ath11k-Fix-DMA-buffer-allocation-to-resolve-SWIOTLB-issues.patch deleted file mode 100644 index d5d80a395d7..00000000000 --- a/package/kernel/mac80211/patches/ath11k/001-wifi-ath11k-Fix-DMA-buffer-allocation-to-resolve-SWIOTLB-issues.patch +++ /dev/null @@ -1,91 +0,0 @@ -wifi: ath11k: Fix DMA buffer allocation to resolve SWIOTLB issues -Currently, the driver allocates cacheable DMA buffers for rings like -HAL_REO_DST and HAL_WBM2SW_RELEASE. The buffers for HAL_WBM2SW_RELEASE -are large (1024 KiB), exceeding the SWIOTLB slot size of 256 KiB. This -leads to "swiotlb buffer is full" error messages on systems without an -IOMMU that use SWIOTLB, causing driver initialization failures. The driver -calls dma_map_single() with these large buffers obtained from kzalloc(), -resulting in ring initialization errors on systems without an IOMMU that -use SWIOTLB. - -To address these issues, replace the flawed buffer allocation mechanism -with the appropriate DMA API. Specifically, use dma_alloc_noncoherent() -for cacheable DMA buffers, ensuring proper freeing of buffers with -dma_free_noncoherent(). - -Error log: -[ 10.194343] ath11k_pci 0000:04:00.0: swiotlb buffer is full (sz:1048583 bytes), total 32768 (slots), used 2529 (slots) -[ 10.194406] ath11k_pci 0000:04:00.0: failed to set up tcl_comp ring (0) :-12 -[ 10.194781] ath11k_pci 0000:04:00.0: failed to init DP: -12 - -Tested-on: QCN9074 hw1.0 PCI WLAN.HK.2.7.0.1-01744-QCAHKSWPL_SILICONZ-1 -Tested-on: WCN6855 hw2.0 PCI WLAN.HSP.1.1-03125-QCAHSPSWPL_V1_V2_SILICONZ_LITE-3 - -Reported-by: Tim Harvey -Closes: https://lore.kernel.org/all/20241210041133.GA17116@lst.de/ -Signed-off-by: P Praneesh -Tested-by: Tim Harvey -Link: https://patch.msgid.link/20250119164219.647059-2-quic_ppranees@quicinc.com -Signed-off-by: Jeff Johnson ---- a/drivers/net/wireless/ath/ath11k/dp.c -+++ b/drivers/net/wireless/ath/ath11k/dp.c -@@ -1,7 +1,7 @@ - // SPDX-License-Identifier: BSD-3-Clause-Clear - /* - * Copyright (c) 2018-2019 The Linux Foundation. All rights reserved. -- * Copyright (c) 2021-2024 Qualcomm Innovation Center, Inc. All rights reserved. -+ * Copyright (c) 2021-2025 Qualcomm Innovation Center, Inc. All rights reserved. - */ - - #include -@@ -104,14 +104,12 @@ void ath11k_dp_srng_cleanup(struct ath11 - if (!ring->vaddr_unaligned) - return; - -- if (ring->cached) { -- dma_unmap_single(ab->dev, ring->paddr_unaligned, ring->size, -- DMA_FROM_DEVICE); -- kfree(ring->vaddr_unaligned); -- } else { -+ if (ring->cached) -+ dma_free_noncoherent(ab->dev, ring->size, ring->vaddr_unaligned, -+ ring->paddr_unaligned, DMA_FROM_DEVICE); -+ else - dma_free_coherent(ab->dev, ring->size, ring->vaddr_unaligned, - ring->paddr_unaligned); -- } - - ring->vaddr_unaligned = NULL; - } -@@ -249,25 +247,14 @@ int ath11k_dp_srng_setup(struct ath11k_b - default: - cached = false; - } -- -- if (cached) { -- ring->vaddr_unaligned = kzalloc(ring->size, GFP_KERNEL); -- if (!ring->vaddr_unaligned) -- return -ENOMEM; -- -- ring->paddr_unaligned = dma_map_single(ab->dev, -- ring->vaddr_unaligned, -- ring->size, -- DMA_FROM_DEVICE); -- if (dma_mapping_error(ab->dev, ring->paddr_unaligned)) { -- kfree(ring->vaddr_unaligned); -- ring->vaddr_unaligned = NULL; -- return -ENOMEM; -- } -- } - } - -- if (!cached) -+ if (cached) -+ ring->vaddr_unaligned = dma_alloc_noncoherent(ab->dev, ring->size, -+ &ring->paddr_unaligned, -+ DMA_FROM_DEVICE, -+ GFP_KERNEL); -+ else - ring->vaddr_unaligned = dma_alloc_coherent(ab->dev, ring->size, - &ring->paddr_unaligned, - GFP_KERNEL); diff --git a/package/kernel/mac80211/patches/ath11k/002-wifi-ath11k-use-dma-alloc-noncoherent-for-rx-tid-buffer-allocation.patch b/package/kernel/mac80211/patches/ath11k/002-wifi-ath11k-use-dma-alloc-noncoherent-for-rx-tid-buffer-allocation.patch deleted file mode 100644 index 2257b069107..00000000000 --- a/package/kernel/mac80211/patches/ath11k/002-wifi-ath11k-use-dma-alloc-noncoherent-for-rx-tid-buffer-allocation.patch +++ /dev/null @@ -1,255 +0,0 @@ -wifi: ath11k: Use dma_alloc_noncoherent for rx_tid buffer allocation - -Currently, the driver allocates cacheable DMA buffers for the rx_tid -structure using kzalloc() and dma_map_single(). These buffers are -long-lived and can persist for the lifetime of the peer, which is not -advisable. Instead of using kzalloc() and dma_map_single() for allocating -cacheable DMA buffers, utilize the dma_alloc_noncoherent() helper for the -allocation of long-lived cacheable DMA buffers, such as the peer's rx_tid. -Since dma_alloc_noncoherent() returns unaligned physical and virtual -addresses, align them internally before use within the driver. This -ensures proper allocation of non-coherent memory through the kernel -helper. - -Tested-on: QCN9074 hw1.0 PCI WLAN.HK.2.7.0.1-01744-QCAHKSWPL_SILICONZ-1 -Tested-on: WCN6855 hw2.0 PCI WLAN.HSP.1.1-03125-QCAHSPSWPL_V1_V2_SILICONZ_LITE-3 - -Signed-off-by: P Praneesh ---- a/drivers/net/wireless/ath/ath11k/dp.h -+++ b/drivers/net/wireless/ath/ath11k/dp.h -@@ -1,7 +1,7 @@ - /* SPDX-License-Identifier: BSD-3-Clause-Clear */ - /* - * Copyright (c) 2018-2019 The Linux Foundation. All rights reserved. -- * Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved. -+ * Copyright (c) 2021-2023, 2025 Qualcomm Innovation Center, Inc. All rights reserved. - */ - - #ifndef ATH11K_DP_H -@@ -20,7 +20,6 @@ struct ath11k_ext_irq_grp; - - struct dp_rx_tid { - u8 tid; -- u32 *vaddr; - dma_addr_t paddr; - u32 size; - u32 ba_win_sz; -@@ -37,6 +36,9 @@ struct dp_rx_tid { - /* Timer info related to fragments */ - struct timer_list frag_timer; - struct ath11k_base *ab; -+ u32 *vaddr_unaligned; -+ dma_addr_t paddr_unaligned; -+ u32 unaligned_size; - }; - - #define DP_REO_DESC_FREE_THRESHOLD 64 ---- a/drivers/net/wireless/ath/ath11k/dp_rx.c -+++ b/drivers/net/wireless/ath/ath11k/dp_rx.c -@@ -1,7 +1,7 @@ - // SPDX-License-Identifier: BSD-3-Clause-Clear - /* - * Copyright (c) 2018-2019 The Linux Foundation. All rights reserved. -- * Copyright (c) 2021-2024 Qualcomm Innovation Center, Inc. All rights reserved. -+ * Copyright (c) 2021-2025 Qualcomm Innovation Center, Inc. All rights reserved. - */ - - #include -@@ -675,11 +675,11 @@ void ath11k_dp_reo_cmd_list_cleanup(stru - list_for_each_entry_safe(cmd, tmp, &dp->reo_cmd_list, list) { - list_del(&cmd->list); - rx_tid = &cmd->data; -- if (rx_tid->vaddr) { -- dma_unmap_single(ab->dev, rx_tid->paddr, -- rx_tid->size, DMA_BIDIRECTIONAL); -- kfree(rx_tid->vaddr); -- rx_tid->vaddr = NULL; -+ if (rx_tid->vaddr_unaligned) { -+ dma_free_noncoherent(ab->dev, rx_tid->unaligned_size, -+ rx_tid->vaddr_unaligned, -+ rx_tid->paddr_unaligned, DMA_BIDIRECTIONAL); -+ rx_tid->vaddr_unaligned = NULL; - } - kfree(cmd); - } -@@ -689,11 +689,11 @@ void ath11k_dp_reo_cmd_list_cleanup(stru - list_del(&cmd_cache->list); - dp->reo_cmd_cache_flush_count--; - rx_tid = &cmd_cache->data; -- if (rx_tid->vaddr) { -- dma_unmap_single(ab->dev, rx_tid->paddr, -- rx_tid->size, DMA_BIDIRECTIONAL); -- kfree(rx_tid->vaddr); -- rx_tid->vaddr = NULL; -+ if (rx_tid->vaddr_unaligned) { -+ dma_free_noncoherent(ab->dev, rx_tid->unaligned_size, -+ rx_tid->vaddr_unaligned, -+ rx_tid->paddr_unaligned, DMA_BIDIRECTIONAL); -+ rx_tid->vaddr_unaligned = NULL; - } - kfree(cmd_cache); - } -@@ -708,11 +708,11 @@ static void ath11k_dp_reo_cmd_free(struc - if (status != HAL_REO_CMD_SUCCESS) - ath11k_warn(dp->ab, "failed to flush rx tid hw desc, tid %d status %d\n", - rx_tid->tid, status); -- if (rx_tid->vaddr) { -- dma_unmap_single(dp->ab->dev, rx_tid->paddr, rx_tid->size, -- DMA_BIDIRECTIONAL); -- kfree(rx_tid->vaddr); -- rx_tid->vaddr = NULL; -+ if (rx_tid->vaddr_unaligned) { -+ dma_free_noncoherent(dp->ab->dev, rx_tid->unaligned_size, -+ rx_tid->vaddr_unaligned, -+ rx_tid->paddr_unaligned, DMA_BIDIRECTIONAL); -+ rx_tid->vaddr_unaligned = NULL; - } - } - -@@ -749,10 +749,10 @@ static void ath11k_dp_reo_cache_flush(st - if (ret) { - ath11k_err(ab, "failed to send HAL_REO_CMD_FLUSH_CACHE cmd, tid %d (%d)\n", - rx_tid->tid, ret); -- dma_unmap_single(ab->dev, rx_tid->paddr, rx_tid->size, -- DMA_BIDIRECTIONAL); -- kfree(rx_tid->vaddr); -- rx_tid->vaddr = NULL; -+ dma_free_noncoherent(ab->dev, rx_tid->unaligned_size, -+ rx_tid->vaddr_unaligned, -+ rx_tid->paddr_unaligned, DMA_BIDIRECTIONAL); -+ rx_tid->vaddr_unaligned = NULL; - } - } - -@@ -802,10 +802,10 @@ static void ath11k_dp_rx_tid_del_func(st - - return; - free_desc: -- dma_unmap_single(ab->dev, rx_tid->paddr, rx_tid->size, -- DMA_BIDIRECTIONAL); -- kfree(rx_tid->vaddr); -- rx_tid->vaddr = NULL; -+ dma_free_noncoherent(ab->dev, rx_tid->unaligned_size, -+ rx_tid->vaddr_unaligned, -+ rx_tid->paddr_unaligned, DMA_BIDIRECTIONAL); -+ rx_tid->vaddr_unaligned = NULL; - } - - void ath11k_peer_rx_tid_delete(struct ath11k *ar, -@@ -831,14 +831,16 @@ void ath11k_peer_rx_tid_delete(struct at - if (ret != -ESHUTDOWN) - ath11k_err(ar->ab, "failed to send HAL_REO_CMD_UPDATE_RX_QUEUE cmd, tid %d (%d)\n", - tid, ret); -- dma_unmap_single(ar->ab->dev, rx_tid->paddr, rx_tid->size, -- DMA_BIDIRECTIONAL); -- kfree(rx_tid->vaddr); -- rx_tid->vaddr = NULL; -+ dma_free_noncoherent(ar->ab->dev, rx_tid->unaligned_size, -+ rx_tid->vaddr_unaligned, -+ rx_tid->paddr_unaligned, DMA_BIDIRECTIONAL); -+ rx_tid->vaddr_unaligned = NULL; - } - - rx_tid->paddr = 0; -+ rx_tid->paddr_unaligned = 0; - rx_tid->size = 0; -+ rx_tid->unaligned_size = 0; - } - - static int ath11k_dp_rx_link_desc_return(struct ath11k_base *ab, -@@ -982,10 +984,9 @@ static void ath11k_dp_rx_tid_mem_free(st - if (!rx_tid->active) - goto unlock_exit; - -- dma_unmap_single(ab->dev, rx_tid->paddr, rx_tid->size, -- DMA_BIDIRECTIONAL); -- kfree(rx_tid->vaddr); -- rx_tid->vaddr = NULL; -+ dma_free_noncoherent(ab->dev, rx_tid->unaligned_size, rx_tid->vaddr_unaligned, -+ rx_tid->paddr_unaligned, DMA_BIDIRECTIONAL); -+ rx_tid->vaddr_unaligned = NULL; - - rx_tid->active = false; - -@@ -1000,9 +1001,8 @@ int ath11k_peer_rx_tid_setup(struct ath1 - struct ath11k_base *ab = ar->ab; - struct ath11k_peer *peer; - struct dp_rx_tid *rx_tid; -- u32 hw_desc_sz; -- u32 *addr_aligned; -- void *vaddr; -+ u32 hw_desc_sz, *vaddr; -+ void *vaddr_unaligned; - dma_addr_t paddr; - int ret; - -@@ -1050,37 +1050,34 @@ int ath11k_peer_rx_tid_setup(struct ath1 - else - hw_desc_sz = ath11k_hal_reo_qdesc_size(DP_BA_WIN_SZ_MAX, tid); - -- vaddr = kzalloc(hw_desc_sz + HAL_LINK_DESC_ALIGN - 1, GFP_ATOMIC); -- if (!vaddr) { -+ rx_tid->unaligned_size = hw_desc_sz + HAL_LINK_DESC_ALIGN - 1; -+ vaddr_unaligned = dma_alloc_noncoherent(ab->dev, rx_tid->unaligned_size, &paddr, -+ DMA_BIDIRECTIONAL, GFP_ATOMIC); -+ if (!vaddr_unaligned) { - spin_unlock_bh(&ab->base_lock); - return -ENOMEM; - } - -- addr_aligned = PTR_ALIGN(vaddr, HAL_LINK_DESC_ALIGN); -- -- ath11k_hal_reo_qdesc_setup(addr_aligned, tid, ba_win_sz, -- ssn, pn_type); -- -- paddr = dma_map_single(ab->dev, addr_aligned, hw_desc_sz, -- DMA_BIDIRECTIONAL); -- -- ret = dma_mapping_error(ab->dev, paddr); -- if (ret) { -- spin_unlock_bh(&ab->base_lock); -- ath11k_warn(ab, "failed to setup dma map for peer %pM rx tid %d: %d\n", -- peer_mac, tid, ret); -- goto err_mem_free; -- } -- -- rx_tid->vaddr = vaddr; -- rx_tid->paddr = paddr; -+ rx_tid->vaddr_unaligned = vaddr_unaligned; -+ vaddr = PTR_ALIGN(vaddr_unaligned, HAL_LINK_DESC_ALIGN); -+ rx_tid->paddr_unaligned = paddr; -+ rx_tid->paddr = rx_tid->paddr_unaligned + ((unsigned long)vaddr - -+ (unsigned long)rx_tid->vaddr_unaligned); -+ ath11k_hal_reo_qdesc_setup(vaddr, tid, ba_win_sz, ssn, pn_type); - rx_tid->size = hw_desc_sz; - rx_tid->active = true; - -+ /* After dma_alloc_noncoherent, vaddr is being modified for reo qdesc setup. -+ * Since these changes are not reflected in the device, driver now needs to -+ * explicitly call dma_sync_single_for_device. -+ */ -+ dma_sync_single_for_device(ab->dev, rx_tid->paddr, -+ rx_tid->size, -+ DMA_TO_DEVICE); - spin_unlock_bh(&ab->base_lock); - -- ret = ath11k_wmi_peer_rx_reorder_queue_setup(ar, vdev_id, peer_mac, -- paddr, tid, 1, ba_win_sz); -+ ret = ath11k_wmi_peer_rx_reorder_queue_setup(ar, vdev_id, peer_mac, rx_tid->paddr, -+ tid, 1, ba_win_sz); - if (ret) { - ath11k_warn(ar->ab, "failed to setup rx reorder queue for peer %pM tid %d: %d\n", - peer_mac, tid, ret); -@@ -1088,12 +1085,6 @@ int ath11k_peer_rx_tid_setup(struct ath1 - } - - return ret; -- --err_mem_free: -- kfree(rx_tid->vaddr); -- rx_tid->vaddr = NULL; -- -- return ret; - } - - int ath11k_dp_rx_ampdu_start(struct ath11k *ar, diff --git a/package/kernel/mac80211/patches/ath11k/903-ath11k-support-setting-FW-memory-mode-via-DT.patch b/package/kernel/mac80211/patches/ath11k/903-ath11k-support-setting-FW-memory-mode-via-DT.patch index 1250147e2bd..e747738b818 100644 --- a/package/kernel/mac80211/patches/ath11k/903-ath11k-support-setting-FW-memory-mode-via-DT.patch +++ b/package/kernel/mac80211/patches/ath11k/903-ath11k-support-setting-FW-memory-mode-via-DT.patch @@ -31,7 +31,7 @@ Signed-off-by: Robert Marko { .hw_rev = ATH11K_HW_IPQ8074, .name = "ipq8074 hw2.0", -@@ -2147,7 +2147,8 @@ static void ath11k_core_reset(struct wor +@@ -2200,7 +2200,8 @@ static void ath11k_core_reset(struct wor static int ath11k_init_hw_params(struct ath11k_base *ab) { const struct ath11k_hw_params *hw_params = NULL; @@ -41,7 +41,7 @@ Signed-off-by: Robert Marko for (i = 0; i < ARRAY_SIZE(ath11k_hw_params); i++) { hw_params = &ath11k_hw_params[i]; -@@ -2163,7 +2164,31 @@ static int ath11k_init_hw_params(struct +@@ -2216,7 +2217,31 @@ static int ath11k_init_hw_params(struct ab->hw_params = *hw_params; diff --git a/package/kernel/mac80211/patches/ath12k/001-wifi-ath12k-add-11d-scan-offload-support-and-handle-country-code-for-WCN7850.patch b/package/kernel/mac80211/patches/ath12k/001-wifi-ath12k-add-11d-scan-offload-support-and-handle-country-code-for-WCN7850.patch index caa4e20f971..b265fcdeab1 100644 --- a/package/kernel/mac80211/patches/ath12k/001-wifi-ath12k-add-11d-scan-offload-support-and-handle-country-code-for-WCN7850.patch +++ b/package/kernel/mac80211/patches/ath12k/001-wifi-ath12k-add-11d-scan-offload-support-and-handle-country-code-for-WCN7850.patch @@ -121,7 +121,7 @@ Acked-by: Jeff Johnson }; static __le32 ath12k_wmi_tlv_hdr(u32 cmd, u32 len) -@@ -2364,7 +2366,10 @@ int ath12k_wmi_send_scan_start_cmd(struc +@@ -2374,7 +2376,10 @@ int ath12k_wmi_send_scan_start_cmd(struc cmd->scan_id = cpu_to_le32(arg->scan_id); cmd->scan_req_id = cpu_to_le32(arg->scan_req_id); cmd->vdev_id = cpu_to_le32(arg->vdev_id); @@ -133,7 +133,7 @@ Acked-by: Jeff Johnson cmd->notify_scan_events = cpu_to_le32(arg->notify_scan_events); ath12k_wmi_copy_scan_event_cntrl_flags(cmd, arg); -@@ -3084,6 +3089,110 @@ out: +@@ -3094,6 +3099,110 @@ out: return ret; } @@ -244,7 +244,7 @@ Acked-by: Jeff Johnson int ath12k_wmi_send_twt_enable_cmd(struct ath12k *ar, u32 pdev_id) { -@@ -5669,6 +5778,50 @@ static void ath12k_wmi_op_ep_tx_credits( +@@ -5714,6 +5823,50 @@ static void ath12k_wmi_op_ep_tx_credits( wake_up(&ab->wmi_ab.tx_credits_wq); } @@ -295,7 +295,7 @@ Acked-by: Jeff Johnson static void ath12k_wmi_htc_tx_complete(struct ath12k_base *ab, struct sk_buff *skb) { -@@ -7270,6 +7423,9 @@ static void ath12k_wmi_op_rx(struct ath1 +@@ -7317,6 +7470,9 @@ static void ath12k_wmi_op_rx(struct ath1 case WMI_GTK_OFFLOAD_STATUS_EVENTID: ath12k_wmi_gtk_offload_status_event(ab, skb); break; @@ -336,9 +336,9 @@ Acked-by: Jeff Johnson struct wmi_delba_send_cmd { __le32 tlv_header; __le32 vdev_id; -@@ -3945,6 +3967,16 @@ struct ath12k_wmi_eht_rate_set_params { +@@ -3944,6 +3966,16 @@ struct ath12k_wmi_eht_rate_set_params { + #define REG_ALPHA2_LEN 2 #define MAX_6G_REG_RULES 5 - #define REG_US_5G_NUM_REG_RULES 4 +struct wmi_set_current_country_arg { + u8 alpha2[REG_ALPHA2_LEN]; @@ -353,7 +353,7 @@ Acked-by: Jeff Johnson enum wmi_start_event_param { WMI_VDEV_START_RESP_EVENT = 0, WMI_VDEV_RESTART_RESP_EVENT, -@@ -5547,11 +5579,17 @@ int ath12k_wmi_send_bcn_offload_control_ +@@ -5546,11 +5578,17 @@ int ath12k_wmi_send_bcn_offload_control_ u32 vdev_id, u32 bcn_ctrl_op); int ath12k_wmi_send_init_country_cmd(struct ath12k *ar, struct ath12k_wmi_init_country_arg *arg); @@ -373,7 +373,7 @@ Acked-by: Jeff Johnson struct ath12k_wmi_rx_reorder_queue_remove_arg *arg); --- a/drivers/net/wireless/ath/ath12k/core.c +++ b/drivers/net/wireless/ath/ath12k/core.c -@@ -1014,6 +1014,7 @@ void ath12k_core_halt(struct ath12k *ar) +@@ -1017,6 +1017,7 @@ void ath12k_core_halt(struct ath12k *ar) cancel_delayed_work_sync(&ar->scan.timeout); cancel_work_sync(&ar->regd_update_work); cancel_work_sync(&ab->rfkill_work); @@ -381,7 +381,7 @@ Acked-by: Jeff Johnson rcu_assign_pointer(ab->pdevs_active[ar->pdev_idx], NULL); synchronize_rcu(); -@@ -1021,6 +1022,34 @@ void ath12k_core_halt(struct ath12k *ar) +@@ -1029,6 +1030,34 @@ void ath12k_core_halt(struct ath12k *ar) idr_init(&ar->txmgmt_idr); } @@ -416,7 +416,7 @@ Acked-by: Jeff Johnson static void ath12k_core_pre_reconfigure_recovery(struct ath12k_base *ab) { struct ath12k *ar; -@@ -1045,8 +1074,10 @@ static void ath12k_core_pre_reconfigure_ +@@ -1053,8 +1082,10 @@ static void ath12k_core_pre_reconfigure_ ar = &ah->radio[j]; ath12k_mac_drain_tx(ar); @@ -428,7 +428,7 @@ Acked-by: Jeff Johnson complete(&ar->scan.on_channel); complete(&ar->peer_assoc_done); complete(&ar->peer_delete_done); -@@ -1312,6 +1343,7 @@ struct ath12k_base *ath12k_core_alloc(st +@@ -1320,6 +1351,7 @@ struct ath12k_base *ath12k_core_alloc(st INIT_WORK(&ab->restart_work, ath12k_core_restart); INIT_WORK(&ab->reset_work, ath12k_core_reset); INIT_WORK(&ab->rfkill_work, ath12k_rfkill_work); @@ -438,7 +438,7 @@ Acked-by: Jeff Johnson init_completion(&ab->htc_suspend); --- a/drivers/net/wireless/ath/ath12k/core.h +++ b/drivers/net/wireless/ath/ath12k/core.h -@@ -199,6 +199,12 @@ enum ath12k_scan_state { +@@ -200,6 +200,12 @@ enum ath12k_scan_state { ATH12K_SCAN_ABORTING, }; @@ -451,7 +451,7 @@ Acked-by: Jeff Johnson enum ath12k_dev_flags { ATH12K_CAC_RUNNING, ATH12K_FLAG_CRASH_FLUSH, -@@ -319,6 +325,8 @@ struct ath12k_vif_iter { +@@ -320,6 +326,8 @@ struct ath12k_vif_iter { #define ATH12K_RX_RATE_TABLE_11AX_NUM 576 #define ATH12K_RX_RATE_TABLE_NUM 320 @@ -460,7 +460,7 @@ Acked-by: Jeff Johnson struct ath12k_rx_peer_rate_stats { u64 ht_mcs_count[HAL_RX_MAX_MCS_HT + 1]; u64 vht_mcs_count[HAL_RX_MAX_MCS_VHT + 1]; -@@ -654,6 +662,13 @@ struct ath12k { +@@ -655,6 +663,13 @@ struct ath12k { u32 freq_low; u32 freq_high; @@ -474,7 +474,7 @@ Acked-by: Jeff Johnson bool nlo_enabled; }; -@@ -886,6 +901,8 @@ struct ath12k_base { +@@ -887,6 +902,8 @@ struct ath12k_base { /* continuous recovery fail count */ atomic_t fail_cont_count; unsigned long reset_fail_timeout; @@ -532,7 +532,7 @@ Acked-by: Jeff Johnson return ret; } -@@ -5994,7 +6009,7 @@ static int ath12k_mac_start(struct ath12 +@@ -5998,7 +6013,7 @@ static int ath12k_mac_start(struct ath12 /* TODO: Do we need to enable ANI? */ @@ -541,7 +541,7 @@ Acked-by: Jeff Johnson ar->num_started_vdevs = 0; ar->num_created_vdevs = 0; -@@ -6174,6 +6189,9 @@ static void ath12k_mac_stop(struct ath12 +@@ -6178,6 +6193,9 @@ static void ath12k_mac_stop(struct ath12 cancel_delayed_work_sync(&ar->scan.timeout); cancel_work_sync(&ar->regd_update_work); cancel_work_sync(&ar->ab->rfkill_work); @@ -551,7 +551,7 @@ Acked-by: Jeff Johnson spin_lock_bh(&ar->data_lock); list_for_each_entry_safe(ppdu_stats, tmp, &ar->ppdu_stats_info, list) { -@@ -6420,6 +6438,117 @@ static void ath12k_mac_op_update_vif_off +@@ -6424,6 +6442,117 @@ static void ath12k_mac_op_update_vif_off ath12k_mac_update_vif_offload(arvif); } @@ -669,7 +669,7 @@ Acked-by: Jeff Johnson static int ath12k_mac_vdev_create(struct ath12k *ar, struct ieee80211_vif *vif) { struct ath12k_hw *ah = ar->ah; -@@ -6534,6 +6663,7 @@ static int ath12k_mac_vdev_create(struct +@@ -6538,6 +6667,7 @@ static int ath12k_mac_vdev_create(struct arvif->vdev_id, ret); goto err_peer_del; } @@ -677,7 +677,7 @@ Acked-by: Jeff Johnson break; case WMI_VDEV_TYPE_STA: param_id = WMI_STA_PS_PARAM_RX_WAKE_POLICY; -@@ -6572,6 +6702,13 @@ static int ath12k_mac_vdev_create(struct +@@ -6576,6 +6706,13 @@ static int ath12k_mac_vdev_create(struct arvif->vdev_id, ret); goto err_peer_del; } @@ -691,7 +691,7 @@ Acked-by: Jeff Johnson break; default: break; -@@ -6912,6 +7049,11 @@ static void ath12k_mac_op_remove_interfa +@@ -6916,6 +7053,11 @@ static void ath12k_mac_op_remove_interfa ath12k_dbg(ab, ATH12K_DBG_MAC, "mac remove interface (vdev %d)\n", arvif->vdev_id); @@ -703,7 +703,7 @@ Acked-by: Jeff Johnson if (arvif->vdev_type == WMI_VDEV_TYPE_AP) { ret = ath12k_peer_delete(ar, arvif->vdev_id, vif->addr); if (ret) -@@ -7752,6 +7894,14 @@ ath12k_mac_op_unassign_vif_chanctx(struc +@@ -7756,6 +7898,14 @@ ath12k_mac_op_unassign_vif_chanctx(struc ar->num_started_vdevs == 1 && ar->monitor_vdev_created) ath12k_mac_monitor_stop(ar); @@ -718,7 +718,7 @@ Acked-by: Jeff Johnson mutex_unlock(&ar->conf_mutex); } -@@ -8290,6 +8440,14 @@ ath12k_mac_op_reconfig_complete(struct i +@@ -8294,6 +8444,14 @@ ath12k_mac_op_reconfig_complete(struct i ath12k_warn(ar->ab, "pdev %d successfully recovered\n", ar->pdev->pdev_id); @@ -733,7 +733,7 @@ Acked-by: Jeff Johnson if (ab->is_reset) { recovery_count = atomic_inc_return(&ab->recovery_count); -@@ -9339,6 +9497,9 @@ static void ath12k_mac_setup(struct ath1 +@@ -9344,6 +9502,9 @@ static void ath12k_mac_setup(struct ath1 INIT_WORK(&ar->wmi_mgmt_tx_work, ath12k_mgmt_over_wmi_tx_work); skb_queue_head_init(&ar->wmi_mgmt_tx_queue); @@ -888,7 +888,7 @@ Acked-by: Jeff Johnson #endif --- a/drivers/net/wireless/ath/ath12k/hw.c +++ b/drivers/net/wireless/ath/ath12k/hw.c -@@ -928,6 +928,7 @@ static const struct ath12k_hw_params ath +@@ -961,6 +961,7 @@ static const struct ath12k_hw_params ath .iova_mask = 0, .supports_aspm = false, @@ -896,7 +896,7 @@ Acked-by: Jeff Johnson }, { .name = "wcn7850 hw2.0", -@@ -1008,6 +1009,7 @@ static const struct ath12k_hw_params ath +@@ -1041,6 +1042,7 @@ static const struct ath12k_hw_params ath .iova_mask = ATH12K_PCIE_MAX_PAYLOAD_SIZE - 1, .supports_aspm = true, @@ -904,7 +904,7 @@ Acked-by: Jeff Johnson }, { .name = "qcn9274 hw2.0", -@@ -1084,6 +1086,7 @@ static const struct ath12k_hw_params ath +@@ -1117,6 +1119,7 @@ static const struct ath12k_hw_params ath .iova_mask = 0, .supports_aspm = false, diff --git a/package/kernel/mac80211/patches/ath9k/410-ath9k_allow_adhoc_and_ap.patch b/package/kernel/mac80211/patches/ath9k/410-ath9k_allow_adhoc_and_ap.patch index b2f2763e8e1..3144f8291af 100644 --- a/package/kernel/mac80211/patches/ath9k/410-ath9k_allow_adhoc_and_ap.patch +++ b/package/kernel/mac80211/patches/ath9k/410-ath9k_allow_adhoc_and_ap.patch @@ -1,6 +1,6 @@ --- a/drivers/net/wireless/ath/ath9k/init.c +++ b/drivers/net/wireless/ath/ath9k/init.c -@@ -882,6 +882,7 @@ static const struct ieee80211_iface_limi +@@ -884,6 +884,7 @@ static const struct ieee80211_iface_limi BIT(NL80211_IFTYPE_AP) }, { .max = 1, .types = BIT(NL80211_IFTYPE_P2P_CLIENT) | BIT(NL80211_IFTYPE_P2P_GO) }, diff --git a/package/kernel/mac80211/patches/ath9k/450-ath9k-enabled-MFP-capability-unconditionally.patch b/package/kernel/mac80211/patches/ath9k/450-ath9k-enabled-MFP-capability-unconditionally.patch index f424ca530be..50ba45c2a82 100644 --- a/package/kernel/mac80211/patches/ath9k/450-ath9k-enabled-MFP-capability-unconditionally.patch +++ b/package/kernel/mac80211/patches/ath9k/450-ath9k-enabled-MFP-capability-unconditionally.patch @@ -14,7 +14,7 @@ Signed-off-by: David Bauer --- a/drivers/net/wireless/ath/ath9k/init.c +++ b/drivers/net/wireless/ath/ath9k/init.c -@@ -963,6 +963,7 @@ static void ath9k_set_hw_capab(struct at +@@ -965,6 +965,7 @@ static void ath9k_set_hw_capab(struct at ieee80211_hw_set(hw, HOST_BROADCAST_PS_BUFFERING); ieee80211_hw_set(hw, SUPPORT_FAST_XMIT); ieee80211_hw_set(hw, SUPPORTS_CLONED_SKBS); @@ -22,7 +22,7 @@ Signed-off-by: David Bauer if (ath9k_ps_enable) ieee80211_hw_set(hw, SUPPORTS_PS); -@@ -975,9 +976,6 @@ static void ath9k_set_hw_capab(struct at +@@ -977,9 +978,6 @@ static void ath9k_set_hw_capab(struct at IEEE80211_RADIOTAP_MCS_HAVE_STBC; } diff --git a/package/kernel/mac80211/patches/ath9k/501-ath9k_ahb_init.patch b/package/kernel/mac80211/patches/ath9k/501-ath9k_ahb_init.patch index 740ddc39dc3..f4d17f5f57e 100644 --- a/package/kernel/mac80211/patches/ath9k/501-ath9k_ahb_init.patch +++ b/package/kernel/mac80211/patches/ath9k/501-ath9k_ahb_init.patch @@ -1,6 +1,6 @@ --- a/drivers/net/wireless/ath/ath9k/init.c +++ b/drivers/net/wireless/ath/ath9k/init.c -@@ -1178,25 +1178,25 @@ static int __init ath9k_init(void) +@@ -1180,25 +1180,25 @@ static int __init ath9k_init(void) { int error; diff --git a/package/kernel/mac80211/patches/ath9k/512-ath9k_channelbw_debugfs.patch b/package/kernel/mac80211/patches/ath9k/512-ath9k_channelbw_debugfs.patch index 87d18626da3..b96f60cde68 100644 --- a/package/kernel/mac80211/patches/ath9k/512-ath9k_channelbw_debugfs.patch +++ b/package/kernel/mac80211/patches/ath9k/512-ath9k_channelbw_debugfs.patch @@ -181,7 +181,7 @@ hw->max_listen_interval = 1; --- a/drivers/net/wireless/ath/ath9k/init.c +++ b/drivers/net/wireless/ath/ath9k/init.c -@@ -733,6 +733,7 @@ static int ath9k_init_softc(u16 devid, s +@@ -735,6 +735,7 @@ static int ath9k_init_softc(u16 devid, s if (!ath9k_is_chanctx_enabled()) sc->cur_chan->hw_queue_base = 0; diff --git a/package/kernel/mac80211/patches/ath9k/530-ath9k_extra_leds.patch b/package/kernel/mac80211/patches/ath9k/530-ath9k_extra_leds.patch index 4bb27d558cc..e0b1bf21bee 100644 --- a/package/kernel/mac80211/patches/ath9k/530-ath9k_extra_leds.patch +++ b/package/kernel/mac80211/patches/ath9k/530-ath9k_extra_leds.patch @@ -181,7 +181,7 @@ --- a/drivers/net/wireless/ath/ath9k/init.c +++ b/drivers/net/wireless/ath/ath9k/init.c -@@ -1089,7 +1089,7 @@ int ath9k_init_device(u16 devid, struct +@@ -1091,7 +1091,7 @@ int ath9k_init_device(u16 devid, struct #ifdef CPTCFG_MAC80211_LEDS /* must be initialized before ieee80211_register_hw */ diff --git a/package/kernel/mac80211/patches/ath9k/543-ath9k_entropy_from_adc.patch b/package/kernel/mac80211/patches/ath9k/543-ath9k_entropy_from_adc.patch index 0fedc712701..8967d59a408 100644 --- a/package/kernel/mac80211/patches/ath9k/543-ath9k_entropy_from_adc.patch +++ b/package/kernel/mac80211/patches/ath9k/543-ath9k_entropy_from_adc.patch @@ -55,7 +55,7 @@ ops->spectral_scan_config = ar9003_hw_spectral_scan_config; --- a/drivers/net/wireless/ath/ath9k/init.c +++ b/drivers/net/wireless/ath/ath9k/init.c -@@ -871,7 +871,8 @@ static void ath9k_init_txpower_limits(st +@@ -873,7 +873,8 @@ static void ath9k_init_txpower_limits(st if (ah->caps.hw_caps & ATH9K_HW_CAP_5GHZ) ath9k_init_band_txpower(sc, NL80211_BAND_5GHZ); @@ -65,7 +65,7 @@ } static const struct ieee80211_iface_limit if_limits[] = { -@@ -1049,6 +1050,18 @@ static void ath9k_set_hw_capab(struct at +@@ -1051,6 +1052,18 @@ static void ath9k_set_hw_capab(struct at wiphy_ext_feature_set(hw->wiphy, NL80211_EXT_FEATURE_CAN_REPLACE_PTK0); } @@ -84,7 +84,7 @@ int ath9k_init_device(u16 devid, struct ath_softc *sc, const struct ath_bus_ops *bus_ops) { -@@ -1096,6 +1109,8 @@ int ath9k_init_device(u16 devid, struct +@@ -1098,6 +1111,8 @@ int ath9k_init_device(u16 devid, struct wiphy_read_of_freq_limits(hw->wiphy); diff --git a/package/kernel/mac80211/patches/ath9k/553-ath9k_of_gpio_mask.patch b/package/kernel/mac80211/patches/ath9k/553-ath9k_of_gpio_mask.patch index 752a4980a40..2f9f6d5bd2d 100644 --- a/package/kernel/mac80211/patches/ath9k/553-ath9k_of_gpio_mask.patch +++ b/package/kernel/mac80211/patches/ath9k/553-ath9k_of_gpio_mask.patch @@ -1,6 +1,6 @@ --- a/drivers/net/wireless/ath/ath9k/init.c +++ b/drivers/net/wireless/ath/ath9k/init.c -@@ -696,6 +696,12 @@ static int ath9k_of_init(struct ath_soft +@@ -698,6 +698,12 @@ static int ath9k_of_init(struct ath_soft return 0; } @@ -13,7 +13,7 @@ static int ath9k_init_softc(u16 devid, struct ath_softc *sc, const struct ath_bus_ops *bus_ops) { -@@ -804,6 +810,9 @@ static int ath9k_init_softc(u16 devid, s +@@ -806,6 +812,9 @@ static int ath9k_init_softc(u16 devid, s if (ret) goto err_hw; diff --git a/package/kernel/mac80211/patches/brcm/870-04-rpi-6.12-brcmfmac-non-upstream-support-DS1-exit-firmware-re-download.patch b/package/kernel/mac80211/patches/brcm/870-04-rpi-6.12-brcmfmac-non-upstream-support-DS1-exit-firmware-re-download.patch index 1e2016bcade..e02149a7a05 100644 --- a/package/kernel/mac80211/patches/brcm/870-04-rpi-6.12-brcmfmac-non-upstream-support-DS1-exit-firmware-re-download.patch +++ b/package/kernel/mac80211/patches/brcm/870-04-rpi-6.12-brcmfmac-non-upstream-support-DS1-exit-firmware-re-download.patch @@ -112,7 +112,7 @@ JIRA: SWWLAN-136577 BRCMF_DEFAULT_SCAN_CHANNEL_TIME); --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c -@@ -1317,7 +1317,7 @@ int brcmf_alloc(struct device *dev, stru +@@ -1322,7 +1322,7 @@ int brcmf_alloc(struct device *dev, stru return 0; } @@ -121,7 +121,7 @@ JIRA: SWWLAN-136577 { struct brcmf_bus *bus_if = dev_get_drvdata(dev); struct brcmf_pub *drvr = bus_if->drvr; -@@ -1358,10 +1358,13 @@ int brcmf_attach(struct device *dev) +@@ -1363,10 +1363,13 @@ int brcmf_attach(struct device *dev) brcmf_fweh_register(drvr, BRCMF_E_PSM_WATCHDOG, brcmf_psm_watchdog_notify); @@ -692,7 +692,7 @@ JIRA: SWWLAN-136577 #endif /* BRCMFMAC_SDIO_H */ --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c -@@ -1200,7 +1200,7 @@ static void brcmf_usb_probe_phase2(struc +@@ -1202,7 +1202,7 @@ static void brcmf_usb_probe_phase2(struc goto error; /* Attach to the common driver interface */ @@ -701,7 +701,7 @@ JIRA: SWWLAN-136577 if (ret) goto error; -@@ -1277,7 +1277,7 @@ static int brcmf_usb_probe_cb(struct brc +@@ -1279,7 +1279,7 @@ static int brcmf_usb_probe_cb(struct brc ret = brcmf_alloc(devinfo->dev, devinfo->settings); if (ret) goto fail; diff --git a/package/kernel/mac80211/patches/build/150-ath_iommu_paging_domain_revert.patch b/package/kernel/mac80211/patches/build/150-ath_iommu_paging_domain_revert.patch index 2c5235e49f1..f5ef0c629c2 100644 --- a/package/kernel/mac80211/patches/build/150-ath_iommu_paging_domain_revert.patch +++ b/package/kernel/mac80211/patches/build/150-ath_iommu_paging_domain_revert.patch @@ -1,6 +1,6 @@ --- a/drivers/net/wireless/ath/ath10k/snoc.c +++ b/drivers/net/wireless/ath/ath10k/snoc.c -@@ -1635,10 +1635,10 @@ static int ath10k_fw_init(struct ath10k +@@ -1637,10 +1637,10 @@ static int ath10k_fw_init(struct ath10k ar_snoc->fw.dev = &pdev->dev; diff --git a/package/kernel/mac80211/patches/build/210-wireless_netns_local_backport.patch b/package/kernel/mac80211/patches/build/210-wireless_netns_local_backport.patch index 9b0e95e8453..9a467c43b16 100644 --- a/package/kernel/mac80211/patches/build/210-wireless_netns_local_backport.patch +++ b/package/kernel/mac80211/patches/build/210-wireless_netns_local_backport.patch @@ -32,7 +32,7 @@ } return err; -@@ -1518,7 +1526,9 @@ static int cfg80211_netdev_notifier_call +@@ -1525,7 +1533,9 @@ static int cfg80211_netdev_notifier_call SET_NETDEV_DEVTYPE(dev, &wiphy_type); wdev->netdev = dev; /* can only change netns with wiphy */ diff --git a/package/kernel/mac80211/patches/build/220-brcmfmac_usb_driver_backport.patch b/package/kernel/mac80211/patches/build/220-brcmfmac_usb_driver_backport.patch index 25dab469054..185b71f1ff0 100644 --- a/package/kernel/mac80211/patches/build/220-brcmfmac_usb_driver_backport.patch +++ b/package/kernel/mac80211/patches/build/220-brcmfmac_usb_driver_backport.patch @@ -1,6 +1,6 @@ --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c -@@ -1574,7 +1574,11 @@ static int brcmf_usb_reset_device(struct +@@ -1576,7 +1576,11 @@ static int brcmf_usb_reset_device(struct void brcmf_usb_exit(void) { diff --git a/package/kernel/mac80211/patches/build/230-fix-init_vqs-build-error-on-kernel-6.6.patch b/package/kernel/mac80211/patches/build/230-fix-init_vqs-build-error-on-kernel-6.6.patch index 4b0fe6003f6..229deee9e8c 100644 --- a/package/kernel/mac80211/patches/build/230-fix-init_vqs-build-error-on-kernel-6.6.patch +++ b/package/kernel/mac80211/patches/build/230-fix-init_vqs-build-error-on-kernel-6.6.patch @@ -1,6 +1,6 @@ --- a/drivers/net/wireless/virtual/mac80211_hwsim.c +++ b/drivers/net/wireless/virtual/mac80211_hwsim.c -@@ -6629,6 +6629,7 @@ static void hwsim_virtio_rx_done(struct +@@ -6636,6 +6636,7 @@ static void hwsim_virtio_rx_done(struct static int init_vqs(struct virtio_device *vdev) { @@ -8,7 +8,7 @@ struct virtqueue_info vqs_info[HWSIM_NUM_VQS] = { [HWSIM_VQ_TX] = { "tx", hwsim_virtio_tx_done }, [HWSIM_VQ_RX] = { "rx", hwsim_virtio_rx_done }, -@@ -6636,6 +6637,19 @@ static int init_vqs(struct virtio_device +@@ -6643,6 +6644,19 @@ static int init_vqs(struct virtio_device return virtio_find_vqs(vdev, HWSIM_NUM_VQS, hwsim_vqs, vqs_info, NULL); diff --git a/package/kernel/mac80211/patches/mwl/700-mwl8k-missing-pci-id-for-WNR854T.patch b/package/kernel/mac80211/patches/mwl/700-mwl8k-missing-pci-id-for-WNR854T.patch index cfb7dcf7386..7baab80d245 100644 --- a/package/kernel/mac80211/patches/mwl/700-mwl8k-missing-pci-id-for-WNR854T.patch +++ b/package/kernel/mac80211/patches/mwl/700-mwl8k-missing-pci-id-for-WNR854T.patch @@ -1,6 +1,6 @@ --- a/drivers/net/wireless/marvell/mwl8k.c +++ b/drivers/net/wireless/marvell/mwl8k.c -@@ -5712,6 +5712,7 @@ MODULE_FIRMWARE("mwl8k/fmimage_8366.fw") +@@ -5716,6 +5716,7 @@ MODULE_FIRMWARE("mwl8k/fmimage_8366.fw") MODULE_FIRMWARE(MWL8K_8366_AP_FW(MWL8K_8366_AP_FW_API)); static const struct pci_device_id mwl8k_pci_id_table[] = { diff --git a/package/kernel/mac80211/patches/mwl/940-mwl8k_init_devices_synchronously.patch b/package/kernel/mac80211/patches/mwl/940-mwl8k_init_devices_synchronously.patch index d09cfac448c..d021b1e40b9 100644 --- a/package/kernel/mac80211/patches/mwl/940-mwl8k_init_devices_synchronously.patch +++ b/package/kernel/mac80211/patches/mwl/940-mwl8k_init_devices_synchronously.patch @@ -1,6 +1,6 @@ --- a/drivers/net/wireless/marvell/mwl8k.c +++ b/drivers/net/wireless/marvell/mwl8k.c -@@ -6298,6 +6298,8 @@ static int mwl8k_probe(struct pci_dev *p +@@ -6302,6 +6302,8 @@ static int mwl8k_probe(struct pci_dev *p priv->running_bsses = 0; @@ -9,7 +9,7 @@ return rc; err_stop_firmware: -@@ -6331,8 +6333,6 @@ static void mwl8k_remove(struct pci_dev +@@ -6335,8 +6337,6 @@ static void mwl8k_remove(struct pci_dev return; priv = hw->priv; diff --git a/package/kernel/mac80211/patches/rtl/017-v6.13-wifi-rtw88-Constify-some-arrays-and-structs.patch b/package/kernel/mac80211/patches/rtl/017-v6.13-wifi-rtw88-Constify-some-arrays-and-structs.patch index 8d2bb9aa7a9..04b5d4cd794 100644 --- a/package/kernel/mac80211/patches/rtl/017-v6.13-wifi-rtw88-Constify-some-arrays-and-structs.patch +++ b/package/kernel/mac80211/patches/rtl/017-v6.13-wifi-rtw88-Constify-some-arrays-and-structs.patch @@ -284,7 +284,7 @@ Link: https://patch.msgid.link/dae7994f-3491-40de-b537-ebf68df084bb@gmail.com .query_rx_desc = rtw8821c_query_rx_desc, --- a/drivers/net/wireless/realtek/rtw88/rtw8822b.c +++ b/drivers/net/wireless/realtek/rtw88/rtw8822b.c -@@ -1978,13 +1978,13 @@ static const struct rtw_pwr_seq_cmd tran +@@ -1980,13 +1980,13 @@ static const struct rtw_pwr_seq_cmd tran RTW_PWR_CMD_END, 0, 0}, }; @@ -300,7 +300,7 @@ Link: https://patch.msgid.link/dae7994f-3491-40de-b537-ebf68df084bb@gmail.com trans_act_to_cardemu_8822b, trans_cardemu_to_carddis_8822b, NULL -@@ -2156,7 +2156,7 @@ static const struct rtw_rqpn rqpn_table_ +@@ -2158,7 +2158,7 @@ static const struct rtw_rqpn rqpn_table_ RTW_DMA_MAPPING_EXTRA, RTW_DMA_MAPPING_HIGH}, }; @@ -309,7 +309,7 @@ Link: https://patch.msgid.link/dae7994f-3491-40de-b537-ebf68df084bb@gmail.com .prio[RTW_DMA_MAPPING_EXTRA] = { .rsvd = REG_FIFOPAGE_INFO_4, .avail = REG_FIFOPAGE_INFO_4 + 2, }, -@@ -2172,7 +2172,7 @@ static struct rtw_prioq_addrs prioq_addr +@@ -2174,7 +2174,7 @@ static struct rtw_prioq_addrs prioq_addr .wsize = true, }; @@ -318,7 +318,7 @@ Link: https://patch.msgid.link/dae7994f-3491-40de-b537-ebf68df084bb@gmail.com .phy_set_param = rtw8822b_phy_set_param, .read_efuse = rtw8822b_read_efuse, .query_rx_desc = rtw8822b_query_rx_desc, -@@ -2521,7 +2521,7 @@ static const struct rtw_reg_domain coex_ +@@ -2523,7 +2523,7 @@ static const struct rtw_reg_domain coex_ {0xc50, MASKBYTE0, RTW_REG_DOMAIN_MAC8}, }; @@ -329,7 +329,7 @@ Link: https://patch.msgid.link/dae7994f-3491-40de-b537-ebf68df084bb@gmail.com }; --- a/drivers/net/wireless/realtek/rtw88/rtw8822c.c +++ b/drivers/net/wireless/realtek/rtw88/rtw8822c.c -@@ -4874,13 +4874,13 @@ static const struct rtw_pwr_seq_cmd tran +@@ -4875,13 +4875,13 @@ static const struct rtw_pwr_seq_cmd tran RTW_PWR_CMD_END, 0, 0}, }; @@ -345,7 +345,7 @@ Link: https://patch.msgid.link/dae7994f-3491-40de-b537-ebf68df084bb@gmail.com trans_act_to_cardemu_8822c, trans_cardemu_to_carddis_8822c, NULL -@@ -4972,7 +4972,7 @@ static const struct rtw_rqpn rqpn_table_ +@@ -4973,7 +4973,7 @@ static const struct rtw_rqpn rqpn_table_ RTW_DMA_MAPPING_EXTRA, RTW_DMA_MAPPING_HIGH}, }; @@ -354,7 +354,7 @@ Link: https://patch.msgid.link/dae7994f-3491-40de-b537-ebf68df084bb@gmail.com .prio[RTW_DMA_MAPPING_EXTRA] = { .rsvd = REG_FIFOPAGE_INFO_4, .avail = REG_FIFOPAGE_INFO_4 + 2, }, -@@ -4988,7 +4988,7 @@ static struct rtw_prioq_addrs prioq_addr +@@ -4989,7 +4989,7 @@ static struct rtw_prioq_addrs prioq_addr .wsize = true, }; @@ -363,7 +363,7 @@ Link: https://patch.msgid.link/dae7994f-3491-40de-b537-ebf68df084bb@gmail.com .phy_set_param = rtw8822c_phy_set_param, .read_efuse = rtw8822c_read_efuse, .query_rx_desc = rtw8822c_query_rx_desc, -@@ -5301,7 +5301,7 @@ static const struct rtw_pwr_track_tbl rt +@@ -5302,7 +5302,7 @@ static const struct rtw_pwr_track_tbl rt .pwrtrk_2g_ccka_p = rtw8822c_pwrtrk_2g_cck_a_p, }; diff --git a/package/kernel/mac80211/patches/rtl/019-v6.13-wifi-rtw88-Parse-the-RX-descriptor-with-a-single-fun.patch b/package/kernel/mac80211/patches/rtl/019-v6.13-wifi-rtw88-Parse-the-RX-descriptor-with-a-single-fun.patch index 4a32831ea3e..4c6966a3c6c 100644 --- a/package/kernel/mac80211/patches/rtl/019-v6.13-wifi-rtw88-Parse-the-RX-descriptor-with-a-single-fun.patch +++ b/package/kernel/mac80211/patches/rtl/019-v6.13-wifi-rtw88-Parse-the-RX-descriptor-with-a-single-fun.patch @@ -48,7 +48,7 @@ Link: https://patch.msgid.link/913f1747-38fc-4409-85a4-57bb9cee506b@gmail.com bool (*write_rf)(struct rtw_dev *rtwdev, enum rtw_rf_path rf_path, --- a/drivers/net/wireless/realtek/rtw88/pci.c +++ b/drivers/net/wireless/realtek/rtw88/pci.c -@@ -1065,7 +1065,7 @@ static u32 rtw_pci_rx_napi(struct rtw_de +@@ -1066,7 +1066,7 @@ static u32 rtw_pci_rx_napi(struct rtw_de dma_sync_single_for_cpu(rtwdev->dev, dma, RTK_PCI_RX_BUF_SIZE, DMA_FROM_DEVICE); rx_desc = skb->data; @@ -302,9 +302,9 @@ Link: https://patch.msgid.link/913f1747-38fc-4409-85a4-57bb9cee506b@gmail.com -} - static void - rtw8822b_set_tx_power_index_by_rate(struct rtw_dev *rtwdev, u8 path, u8 rs) - { -@@ -2175,7 +2134,7 @@ static const struct rtw_prioq_addrs prio + rtw8822b_set_tx_power_index_by_rate(struct rtw_dev *rtwdev, u8 path, + u8 rs, u32 *phy_pwr_idx) +@@ -2177,7 +2136,7 @@ static const struct rtw_prioq_addrs prio static const struct rtw_chip_ops rtw8822b_ops = { .phy_set_param = rtw8822b_phy_set_param, .read_efuse = rtw8822b_read_efuse, @@ -364,7 +364,7 @@ Link: https://patch.msgid.link/913f1747-38fc-4409-85a4-57bb9cee506b@gmail.com static void rtw8822c_set_write_tx_power_ref(struct rtw_dev *rtwdev, u8 *tx_pwr_ref_cck, u8 *tx_pwr_ref_ofdm) -@@ -4991,7 +4949,7 @@ static const struct rtw_prioq_addrs prio +@@ -4992,7 +4950,7 @@ static const struct rtw_prioq_addrs prio static const struct rtw_chip_ops rtw8822c_ops = { .phy_set_param = rtw8822c_phy_set_param, .read_efuse = rtw8822c_read_efuse, @@ -535,7 +535,7 @@ Link: https://patch.msgid.link/913f1747-38fc-4409-85a4-57bb9cee506b@gmail.com struct rtw_rx_pkt_stat *pkt_stat); --- a/drivers/net/wireless/realtek/rtw88/sdio.c +++ b/drivers/net/wireless/realtek/rtw88/sdio.c -@@ -981,8 +981,7 @@ static void rtw_sdio_rxfifo_recv(struct +@@ -979,8 +979,7 @@ static void rtw_sdio_rxfifo_recv(struct while (true) { rx_desc = skb->data; @@ -547,7 +547,7 @@ Link: https://patch.msgid.link/913f1747-38fc-4409-85a4-57bb9cee506b@gmail.com --- a/drivers/net/wireless/realtek/rtw88/usb.c +++ b/drivers/net/wireless/realtek/rtw88/usb.c -@@ -571,8 +571,8 @@ static void rtw_usb_rx_handler(struct wo +@@ -625,8 +625,8 @@ static void rtw_usb_rx_handler(struct wo do { rx_desc = skb->data; diff --git a/package/kernel/mac80211/patches/rtl/024-v6.13-wifi-rtw88-Add-some-definitions-for-RTL8821AU-RTL881.patch b/package/kernel/mac80211/patches/rtl/024-v6.13-wifi-rtw88-Add-some-definitions-for-RTL8821AU-RTL881.patch index bf3d2fe267f..8d63717c59f 100644 --- a/package/kernel/mac80211/patches/rtl/024-v6.13-wifi-rtw88-Add-some-definitions-for-RTL8821AU-RTL881.patch +++ b/package/kernel/mac80211/patches/rtl/024-v6.13-wifi-rtw88-Add-some-definitions-for-RTL8821AU-RTL881.patch @@ -82,7 +82,7 @@ Link: https://patch.msgid.link/9279a9cd-6f86-4dc3-a095-7c36cb9b9d06@gmail.com #define REG_AFE_CTRL_4 0x0078 #define BIT_CK320M_AFE_EN BIT(4) #define BIT_EN_SYN BIT(15) -@@ -134,6 +143,11 @@ +@@ -135,6 +144,11 @@ #define REG_PMC_DBG_CTRL1 0xa8 #define BITS_PMC_BT_IQK_STS GENMASK(22, 21) @@ -94,7 +94,7 @@ Link: https://patch.msgid.link/9279a9cd-6f86-4dc3-a095-7c36cb9b9d06@gmail.com #define REG_PAD_CTRL2 0x00C4 #define BIT_RSM_EN_V1 BIT(16) #define BIT_NO_PDN_CHIPOFF_V1 BIT(17) -@@ -185,6 +199,15 @@ +@@ -186,6 +200,15 @@ #define MAC_TRX_ENABLE (BIT_HCI_TXDMA_EN | BIT_HCI_RXDMA_EN | BIT_TXDMA_EN | \ BIT_RXDMA_EN | BIT_PROTOCOL_EN | BIT_SCHEDULE_EN | \ BIT_MACTXEN | BIT_MACRXEN) @@ -110,7 +110,7 @@ Link: https://patch.msgid.link/9279a9cd-6f86-4dc3-a095-7c36cb9b9d06@gmail.com #define BIT_SHIFT_TXDMA_VOQ_MAP 4 #define BIT_MASK_TXDMA_VOQ_MAP 0x3 #define BIT_TXDMA_VOQ_MAP(x) \ -@@ -256,6 +279,8 @@ +@@ -257,6 +280,8 @@ #define REG_HMEBOX1 0x01D4 #define REG_HMEBOX2 0x01D8 #define REG_HMEBOX3 0x01DC @@ -119,7 +119,7 @@ Link: https://patch.msgid.link/9279a9cd-6f86-4dc3-a095-7c36cb9b9d06@gmail.com #define REG_HMEBOX0_EX 0x01F0 #define REG_HMEBOX1_EX 0x01F4 #define REG_HMEBOX2_EX 0x01F8 -@@ -298,6 +323,7 @@ +@@ -299,6 +324,7 @@ #define REG_AUTO_LLT 0x0224 #define BIT_AUTO_INIT_LLT BIT(16) @@ -127,7 +127,7 @@ Link: https://patch.msgid.link/9279a9cd-6f86-4dc3-a095-7c36cb9b9d06@gmail.com #define REG_RQPN_CTRL_1 0x0228 #define REG_RQPN_CTRL_2 0x022C #define BIT_LD_RQPN BIT(31) -@@ -329,6 +355,7 @@ +@@ -330,6 +356,7 @@ #define BIT_DMA_BURST_SIZE_1024 0 #define REG_RXPKTNUM 0x02B0 @@ -135,7 +135,7 @@ Link: https://patch.msgid.link/9279a9cd-6f86-4dc3-a095-7c36cb9b9d06@gmail.com #define REG_INT_MIG 0x0304 #define REG_HCI_MIX_CFG 0x03FC -@@ -336,6 +363,7 @@ +@@ -337,6 +364,7 @@ #define REG_BCNQ_INFO 0x0418 #define BIT_MGQ_CPU_EMPTY BIT(24) @@ -143,7 +143,7 @@ Link: https://patch.msgid.link/9279a9cd-6f86-4dc3-a095-7c36cb9b9d06@gmail.com #define REG_FWHW_TXQ_CTRL 0x0420 #define BIT_EN_BCNQ_DL BIT(22) #define BIT_EN_WR_FREE_TAIL BIT(20) -@@ -362,10 +390,12 @@ +@@ -363,10 +391,12 @@ #define REG_AMPDU_MAX_TIME_V1 0x0455 #define REG_BCNQ1_BDNY_V1 0x0456 #define REG_AMPDU_MAX_TIME 0x0456 @@ -156,7 +156,7 @@ Link: https://patch.msgid.link/9279a9cd-6f86-4dc3-a095-7c36cb9b9d06@gmail.com #define REG_DATA_SC 0x0483 #define REG_ARFR2_V1 0x048C #define REG_ARFRH2_V1 0x0490 -@@ -390,6 +420,8 @@ +@@ -391,6 +421,8 @@ #define REG_PRECNT_CTRL 0x04E5 #define BIT_BTCCA_CTRL (BIT(0) | BIT(1)) #define BIT_EN_PRECNT BIT(11) @@ -165,7 +165,7 @@ Link: https://patch.msgid.link/9279a9cd-6f86-4dc3-a095-7c36cb9b9d06@gmail.com #define REG_DUMMY_PAGE4_V1 0x04FC #define REG_EDCA_VO_PARAM 0x0500 -@@ -400,6 +432,7 @@ +@@ -401,6 +433,7 @@ #define BIT_MASK_CWMAX GENMASK(15, 12) #define BIT_MASK_CWMIN GENMASK(11, 8) #define BIT_MASK_AIFS GENMASK(7, 0) @@ -173,7 +173,7 @@ Link: https://patch.msgid.link/9279a9cd-6f86-4dc3-a095-7c36cb9b9d06@gmail.com #define REG_PIFS 0x0512 #define REG_SIFS 0x0514 #define BIT_SHIFT_SIFS_OFDM_CTX 8 -@@ -526,6 +559,8 @@ +@@ -527,6 +560,8 @@ #define REG_BT_COEX_V2 0x0762 #define BIT_GNT_BT_POLARITY BIT(12) #define BIT_LTE_COEX_EN BIT(7) @@ -182,7 +182,7 @@ Link: https://patch.msgid.link/9279a9cd-6f86-4dc3-a095-7c36cb9b9d06@gmail.com #define REG_BT_COEX_ENH_INTR_CTRL 0x76E #define BIT_R_GRANTALL_WLMASK BIT(3) #define BIT_STATIS_BT_EN BIT(2) -@@ -543,14 +578,43 @@ +@@ -544,14 +579,43 @@ #define REG_FPGA0_RFMOD 0x0800 #define BIT_CCKEN BIT(24) #define BIT_OFDMEN BIT(25) @@ -226,7 +226,7 @@ Link: https://patch.msgid.link/9279a9cd-6f86-4dc3-a095-7c36cb9b9d06@gmail.com #define REG_DIS_DPD 0x0a70 #define DIS_DPD_MASK GENMASK(9, 0) -@@ -566,13 +630,109 @@ +@@ -567,13 +631,109 @@ #define DIS_DPD_RATEVHT2SS_MCS1 BIT(9) #define DIS_DPD_RATEALL GENMASK(9, 0) @@ -336,7 +336,7 @@ Link: https://patch.msgid.link/9279a9cd-6f86-4dc3-a095-7c36cb9b9d06@gmail.com #define REG_ANAPARSW_MAC_0 0x1010 #define BIT_CF_L_V2 GENMASK(29, 28) -@@ -709,6 +869,10 @@ +@@ -710,6 +870,10 @@ #define REG_IGN_GNTBT4 0x4160 @@ -347,7 +347,7 @@ Link: https://patch.msgid.link/9279a9cd-6f86-4dc3-a095-7c36cb9b9d06@gmail.com #define RF_MODE 0x00 #define RF_MODOPT 0x01 #define RF_WLINT 0x01 -@@ -716,7 +880,13 @@ +@@ -717,7 +881,13 @@ #define RF_DTXLOK 0x08 #define RF_CFGCH 0x18 #define BIT_BAND GENMASK(18, 16) @@ -361,7 +361,7 @@ Link: https://patch.msgid.link/9279a9cd-6f86-4dc3-a095-7c36cb9b9d06@gmail.com #define RF_LUTWA 0x33 #define RF_LUTWD1 0x3e #define RF_LUTWD0 0x3f -@@ -725,10 +895,14 @@ +@@ -726,10 +896,14 @@ #define RF_T_METER 0x42 #define RF_BSPAD 0x54 #define RF_GAINTX 0x56 @@ -378,7 +378,7 @@ Link: https://patch.msgid.link/9279a9cd-6f86-4dc3-a095-7c36cb9b9d06@gmail.com #define RF_MALSEL 0xbe --- a/drivers/net/wireless/realtek/rtw88/rtw8821c.h +++ b/drivers/net/wireless/realtek/rtw88/rtw8821c.h -@@ -214,19 +214,10 @@ extern const struct rtw_chip_info rtw882 +@@ -215,19 +215,10 @@ extern const struct rtw_chip_info rtw882 #define BIT_FEN_EN BIT(26) #define REG_INIRTS_RATE_SEL 0x0480 #define REG_HTSTFWT 0x800 @@ -398,7 +398,7 @@ Link: https://patch.msgid.link/9279a9cd-6f86-4dc3-a095-7c36cb9b9d06@gmail.com #define REG_ADC40 0x8c8 #define REG_CHFIR 0x8f0 #define REG_CDDTXP 0x93c -@@ -234,14 +225,11 @@ extern const struct rtw_chip_info rtw882 +@@ -235,14 +226,11 @@ extern const struct rtw_chip_info rtw882 #define REG_ACBB0 0x948 #define REG_ACBBRXFIR 0x94c #define REG_ACGG2TBL 0x958 @@ -413,7 +413,7 @@ Link: https://patch.msgid.link/9279a9cd-6f86-4dc3-a095-7c36cb9b9d06@gmail.com #define REG_RXDESC 0xa2c #define REG_ENTXCCK 0xa80 #define BTG_LNA 0xfc84 -@@ -252,12 +240,8 @@ extern const struct rtw_chip_info rtw882 +@@ -253,12 +241,8 @@ extern const struct rtw_chip_info rtw882 #define REG_PWRTH2 0xaa8 #define REG_CSRATIO 0xaaa #define REG_TXFILTER 0xaac @@ -426,7 +426,7 @@ Link: https://patch.msgid.link/9279a9cd-6f86-4dc3-a095-7c36cb9b9d06@gmail.com #define REG_TRSW 0xca0 #define REG_RFESEL0 0xcb0 #define REG_RFESEL8 0xcb4 -@@ -269,14 +253,6 @@ extern const struct rtw_chip_info rtw882 +@@ -270,14 +254,6 @@ extern const struct rtw_chip_info rtw882 #define B_WLA_SWITCH BIT(23) #define REG_RFEINV 0xcbc #define REG_AGCTR_B 0xe08 @@ -443,7 +443,7 @@ Link: https://patch.msgid.link/9279a9cd-6f86-4dc3-a095-7c36cb9b9d06@gmail.com #define REG_ANTWT 0x1904 --- a/drivers/net/wireless/realtek/rtw88/rtw8822b.h +++ b/drivers/net/wireless/realtek/rtw88/rtw8822b.h -@@ -151,21 +151,12 @@ _rtw_write32s_mask(struct rtw_dev *rtwde +@@ -152,21 +152,12 @@ _rtw_write32s_mask(struct rtw_dev *rtwde #define RTW8822B_EDCCA_MAX 0x7f #define RTW8822B_EDCCA_SRC_DEF 1 #define REG_HTSTFWT 0x800 @@ -465,7 +465,7 @@ Link: https://patch.msgid.link/9279a9cd-6f86-4dc3-a095-7c36cb9b9d06@gmail.com #define REG_ADC40 0x8c8 #define REG_EDCCA_DECISION 0x8dc #define BIT_EDCCA_OPTION BIT(5) -@@ -176,7 +167,6 @@ _rtw_write32s_mask(struct rtw_dev *rtwde +@@ -177,7 +168,6 @@ _rtw_write32s_mask(struct rtw_dev *rtwde #define REG_ACBB0 0x948 #define REG_ACBBRXFIR 0x94c #define REG_ACGG2TBL 0x958 @@ -473,7 +473,7 @@ Link: https://patch.msgid.link/9279a9cd-6f86-4dc3-a095-7c36cb9b9d06@gmail.com #define REG_ADCINI 0xa04 #define REG_TXSF2 0xa24 #define REG_TXSF6 0xa28 -@@ -184,14 +174,12 @@ _rtw_write32s_mask(struct rtw_dev *rtwde +@@ -185,14 +175,12 @@ _rtw_write32s_mask(struct rtw_dev *rtwde #define REG_ENTXCCK 0xa80 #define REG_AGCTR_A 0xc08 #define REG_TXDFIR 0xc20 diff --git a/package/kernel/mac80211/patches/rtl/025-v6.13-wifi-rtw88-Dump-the-HW-features-only-for-some-chips.patch b/package/kernel/mac80211/patches/rtl/025-v6.13-wifi-rtw88-Dump-the-HW-features-only-for-some-chips.patch index 279e8ba761d..7c949ef79ca 100644 --- a/package/kernel/mac80211/patches/rtl/025-v6.13-wifi-rtw88-Dump-the-HW-features-only-for-some-chips.patch +++ b/package/kernel/mac80211/patches/rtl/025-v6.13-wifi-rtw88-Dump-the-HW-features-only-for-some-chips.patch @@ -21,7 +21,7 @@ Link: https://patch.msgid.link/8becd851-8760-4480-8e8c-c4869ce72507@gmail.com --- a/drivers/net/wireless/realtek/rtw88/main.c +++ b/drivers/net/wireless/realtek/rtw88/main.c -@@ -1917,6 +1917,9 @@ static int rtw_dump_hw_feature(struct rt +@@ -1907,6 +1907,9 @@ static int rtw_dump_hw_feature(struct rt u8 bw; int i; @@ -73,7 +73,7 @@ Link: https://patch.msgid.link/8becd851-8760-4480-8e8c-c4869ce72507@gmail.com .lps_deep_mode_supported = BIT(LPS_DEEP_MODE_LCLK), --- a/drivers/net/wireless/realtek/rtw88/rtw8822b.c +++ b/drivers/net/wireless/realtek/rtw88/rtw8822b.c -@@ -2509,6 +2509,7 @@ const struct rtw_chip_info rtw8822b_hw_s +@@ -2511,6 +2511,7 @@ const struct rtw_chip_info rtw8822b_hw_s .page_size = TX_PAGE_SIZE, .dig_min = 0x1c, .usb_tx_agg_desc_num = 3, @@ -83,7 +83,7 @@ Link: https://patch.msgid.link/8becd851-8760-4480-8e8c-c4869ce72507@gmail.com .lps_deep_mode_supported = BIT(LPS_DEEP_MODE_LCLK), --- a/drivers/net/wireless/realtek/rtw88/rtw8822c.c +++ b/drivers/net/wireless/realtek/rtw88/rtw8822c.c -@@ -5329,6 +5329,7 @@ const struct rtw_chip_info rtw8822c_hw_s +@@ -5330,6 +5330,7 @@ const struct rtw_chip_info rtw8822c_hw_s .page_size = TX_PAGE_SIZE, .dig_min = 0x20, .usb_tx_agg_desc_num = 3, diff --git a/package/kernel/mac80211/patches/rtl/026-v6.13-wifi-rtw88-Allow-different-C2H-RA-report-sizes.patch b/package/kernel/mac80211/patches/rtl/026-v6.13-wifi-rtw88-Allow-different-C2H-RA-report-sizes.patch index 0e97febb727..fb69a06d64e 100644 --- a/package/kernel/mac80211/patches/rtl/026-v6.13-wifi-rtw88-Allow-different-C2H-RA-report-sizes.patch +++ b/package/kernel/mac80211/patches/rtl/026-v6.13-wifi-rtw88-Allow-different-C2H-RA-report-sizes.patch @@ -155,7 +155,7 @@ Link: https://patch.msgid.link/c3e73c3a-fb2f-4013-9f06-d5274211e282@gmail.com .lps_deep_mode_supported = BIT(LPS_DEEP_MODE_LCLK), --- a/drivers/net/wireless/realtek/rtw88/rtw8822b.c +++ b/drivers/net/wireless/realtek/rtw88/rtw8822b.c -@@ -2510,6 +2510,7 @@ const struct rtw_chip_info rtw8822b_hw_s +@@ -2512,6 +2512,7 @@ const struct rtw_chip_info rtw8822b_hw_s .dig_min = 0x1c, .usb_tx_agg_desc_num = 3, .hw_feature_report = true, @@ -165,7 +165,7 @@ Link: https://patch.msgid.link/c3e73c3a-fb2f-4013-9f06-d5274211e282@gmail.com .lps_deep_mode_supported = BIT(LPS_DEEP_MODE_LCLK), --- a/drivers/net/wireless/realtek/rtw88/rtw8822c.c +++ b/drivers/net/wireless/realtek/rtw88/rtw8822c.c -@@ -5330,6 +5330,7 @@ const struct rtw_chip_info rtw8822c_hw_s +@@ -5331,6 +5331,7 @@ const struct rtw_chip_info rtw8822c_hw_s .dig_min = 0x20, .usb_tx_agg_desc_num = 3, .hw_feature_report = true, diff --git a/package/kernel/mac80211/patches/rtl/029-v6.13-wifi-rtw88-Let-each-driver-control-the-power-on-off-.patch b/package/kernel/mac80211/patches/rtl/029-v6.13-wifi-rtw88-Let-each-driver-control-the-power-on-off-.patch index 10464b80cd0..5e9aee9bde4 100644 --- a/package/kernel/mac80211/patches/rtl/029-v6.13-wifi-rtw88-Let-each-driver-control-the-power-on-off-.patch +++ b/package/kernel/mac80211/patches/rtl/029-v6.13-wifi-rtw88-Let-each-driver-control-the-power-on-off-.patch @@ -67,7 +67,7 @@ Link: https://patch.msgid.link/98ab839f-9100-44ae-9551-9af743a4aa3a@gmail.com static int rtw_mac_power_switch(struct rtw_dev *rtwdev, bool pwr_on) { -@@ -994,6 +995,7 @@ int rtw_download_firmware(struct rtw_dev +@@ -999,6 +1000,7 @@ int rtw_download_firmware(struct rtw_dev return 0; } @@ -75,7 +75,7 @@ Link: https://patch.msgid.link/98ab839f-9100-44ae-9551-9af743a4aa3a@gmail.com static u32 get_priority_queues(struct rtw_dev *rtwdev, u32 queues) { -@@ -1127,7 +1129,7 @@ static int txdma_queue_mapping(struct rt +@@ -1132,7 +1134,7 @@ static int txdma_queue_mapping(struct rt return 0; } @@ -84,7 +84,7 @@ Link: https://patch.msgid.link/98ab839f-9100-44ae-9551-9af743a4aa3a@gmail.com { const struct rtw_chip_info *chip = rtwdev->chip; struct rtw_fifo_conf *fifo = &rtwdev->fifo; -@@ -1179,6 +1181,7 @@ static int set_trx_fifo_info(struct rtw_ +@@ -1184,6 +1186,7 @@ static int set_trx_fifo_info(struct rtw_ return 0; } @@ -92,7 +92,7 @@ Link: https://patch.msgid.link/98ab839f-9100-44ae-9551-9af743a4aa3a@gmail.com static int __priority_queue_cfg(struct rtw_dev *rtwdev, const struct rtw_page_table *pg_tbl, -@@ -1256,7 +1259,7 @@ static int priority_queue_cfg(struct rtw +@@ -1261,7 +1264,7 @@ static int priority_queue_cfg(struct rtw u16 pubq_num; int ret; @@ -103,7 +103,7 @@ Link: https://patch.msgid.link/98ab839f-9100-44ae-9551-9af743a4aa3a@gmail.com --- a/drivers/net/wireless/realtek/rtw88/mac.h +++ b/drivers/net/wireless/realtek/rtw88/mac.h -@@ -30,11 +30,14 @@ +@@ -30,6 +30,8 @@ void rtw_set_channel_mac(struct rtw_dev *rtwdev, u8 channel, u8 bw, u8 primary_ch_idx); @@ -111,6 +111,8 @@ Link: https://patch.msgid.link/98ab839f-9100-44ae-9551-9af743a4aa3a@gmail.com + const struct rtw_pwr_seq_cmd * const *cmd_seq); int rtw_mac_power_on(struct rtw_dev *rtwdev); void rtw_mac_power_off(struct rtw_dev *rtwdev); + void rtw_write_firmware_page(struct rtw_dev *rtwdev, u32 page, +@@ -37,6 +39,7 @@ void rtw_write_firmware_page(struct rtw_ int rtw_download_firmware(struct rtw_dev *rtwdev, struct rtw_fw_state *fw); int rtw_mac_init(struct rtw_dev *rtwdev); void rtw_mac_flush_queues(struct rtw_dev *rtwdev, u32 queues, bool drop); @@ -250,7 +252,7 @@ Link: https://patch.msgid.link/98ab839f-9100-44ae-9551-9af743a4aa3a@gmail.com .query_phy_status = query_phy_status, --- a/drivers/net/wireless/realtek/rtw88/rtw8822b.c +++ b/drivers/net/wireless/realtek/rtw88/rtw8822b.c -@@ -2132,6 +2132,8 @@ static const struct rtw_prioq_addrs prio +@@ -2134,6 +2134,8 @@ static const struct rtw_prioq_addrs prio }; static const struct rtw_chip_ops rtw8822b_ops = { @@ -261,7 +263,7 @@ Link: https://patch.msgid.link/98ab839f-9100-44ae-9551-9af743a4aa3a@gmail.com .query_phy_status = query_phy_status, --- a/drivers/net/wireless/realtek/rtw88/rtw8822c.c +++ b/drivers/net/wireless/realtek/rtw88/rtw8822c.c -@@ -4947,6 +4947,8 @@ static const struct rtw_prioq_addrs prio +@@ -4948,6 +4948,8 @@ static const struct rtw_prioq_addrs prio }; static const struct rtw_chip_ops rtw8822c_ops = { diff --git a/package/kernel/mac80211/patches/rtl/030-v6.13-wifi-rtw88-Enable-data-rate-fallback-for-older-chips.patch b/package/kernel/mac80211/patches/rtl/030-v6.13-wifi-rtw88-Enable-data-rate-fallback-for-older-chips.patch index 944985edc97..9c3bf293211 100644 --- a/package/kernel/mac80211/patches/rtl/030-v6.13-wifi-rtw88-Enable-data-rate-fallback-for-older-chips.patch +++ b/package/kernel/mac80211/patches/rtl/030-v6.13-wifi-rtw88-Enable-data-rate-fallback-for-older-chips.patch @@ -60,7 +60,7 @@ Link: https://patch.msgid.link/2b3e3e6f-541b-4a3b-8ca3-65b267e6a95a@gmail.com --- a/drivers/net/wireless/realtek/rtw88/pci.c +++ b/drivers/net/wireless/realtek/rtw88/pci.c -@@ -824,7 +824,7 @@ static int rtw_pci_tx_write_data(struct +@@ -825,7 +825,7 @@ static int rtw_pci_tx_write_data(struct pkt_desc = skb_push(skb, chip->tx_pkt_desc_sz); memset(pkt_desc, 0, tx_pkt_desc_sz); pkt_info->qsel = rtw_pci_get_tx_qsel(skb, queue); @@ -101,7 +101,7 @@ Link: https://patch.msgid.link/2b3e3e6f-541b-4a3b-8ca3-65b267e6a95a@gmail.com .lps_deep_mode_supported = BIT(LPS_DEEP_MODE_LCLK), --- a/drivers/net/wireless/realtek/rtw88/rtw8822b.c +++ b/drivers/net/wireless/realtek/rtw88/rtw8822b.c -@@ -2513,6 +2513,7 @@ const struct rtw_chip_info rtw8822b_hw_s +@@ -2515,6 +2515,7 @@ const struct rtw_chip_info rtw8822b_hw_s .usb_tx_agg_desc_num = 3, .hw_feature_report = true, .c2h_ra_report_size = 7, @@ -111,7 +111,7 @@ Link: https://patch.msgid.link/2b3e3e6f-541b-4a3b-8ca3-65b267e6a95a@gmail.com .lps_deep_mode_supported = BIT(LPS_DEEP_MODE_LCLK), --- a/drivers/net/wireless/realtek/rtw88/rtw8822c.c +++ b/drivers/net/wireless/realtek/rtw88/rtw8822c.c -@@ -5333,6 +5333,7 @@ const struct rtw_chip_info rtw8822c_hw_s +@@ -5334,6 +5334,7 @@ const struct rtw_chip_info rtw8822c_hw_s .usb_tx_agg_desc_num = 3, .hw_feature_report = true, .c2h_ra_report_size = 7, @@ -121,7 +121,7 @@ Link: https://patch.msgid.link/2b3e3e6f-541b-4a3b-8ca3-65b267e6a95a@gmail.com .ht_supported = true, --- a/drivers/net/wireless/realtek/rtw88/sdio.c +++ b/drivers/net/wireless/realtek/rtw88/sdio.c -@@ -864,7 +864,7 @@ static void rtw_sdio_tx_skb_prepare(stru +@@ -862,7 +862,7 @@ static void rtw_sdio_tx_skb_prepare(stru pkt_info->qsel = rtw_sdio_get_tx_qsel(rtwdev, skb, queue); @@ -174,7 +174,7 @@ Link: https://patch.msgid.link/2b3e3e6f-541b-4a3b-8ca3-65b267e6a95a@gmail.com void rtw_tx_rsvd_page_pkt_info_update(struct rtw_dev *rtwdev, --- a/drivers/net/wireless/realtek/rtw88/usb.c +++ b/drivers/net/wireless/realtek/rtw88/usb.c -@@ -458,7 +458,7 @@ static int rtw_usb_write_data(struct rtw +@@ -512,7 +512,7 @@ static int rtw_usb_write_data(struct rtw skb_put_data(skb, buf, size); skb_push(skb, chip->tx_pkt_desc_sz); memset(skb->data, 0, chip->tx_pkt_desc_sz); @@ -183,7 +183,7 @@ Link: https://patch.msgid.link/2b3e3e6f-541b-4a3b-8ca3-65b267e6a95a@gmail.com rtw_tx_fill_txdesc_checksum(rtwdev, pkt_info, skb->data); ret = rtw_usb_write_port(rtwdev, qsel, skb, -@@ -525,7 +525,7 @@ static int rtw_usb_tx_write(struct rtw_d +@@ -579,7 +579,7 @@ static int rtw_usb_tx_write(struct rtw_d pkt_desc = skb_push(skb, chip->tx_pkt_desc_sz); memset(pkt_desc, 0, chip->tx_pkt_desc_sz); ep = qsel_to_ep(rtwusb, pkt_info->qsel); diff --git a/package/kernel/mac80211/patches/rtl/032-v6.13-wifi-rtw88-Support-TX-page-sizes-bigger-than-128.patch b/package/kernel/mac80211/patches/rtl/032-v6.13-wifi-rtw88-Support-TX-page-sizes-bigger-than-128.patch index 7d77e0e6717..c2c57cac9ff 100644 --- a/package/kernel/mac80211/patches/rtl/032-v6.13-wifi-rtw88-Support-TX-page-sizes-bigger-than-128.patch +++ b/package/kernel/mac80211/patches/rtl/032-v6.13-wifi-rtw88-Support-TX-page-sizes-bigger-than-128.patch @@ -93,7 +93,7 @@ Link: https://patch.msgid.link/acdefbb1-3daf-4349-9e03-9472754d5f1e@gmail.com if (rtw_fw_feature_ext_check(&rtwdev->fw, FW_FEATURE_EXT_OLD_PAGE_NUM)) --- a/drivers/net/wireless/realtek/rtw88/mac.c +++ b/drivers/net/wireless/realtek/rtw88/mac.c -@@ -1138,7 +1138,7 @@ int rtw_set_trx_fifo_info(struct rtw_dev +@@ -1143,7 +1143,7 @@ int rtw_set_trx_fifo_info(struct rtw_dev /* config rsvd page num */ fifo->rsvd_drv_pg_num = chip->rsvd_drv_pg_num; diff --git a/package/kernel/mac80211/patches/rtl/033-v6.13-wifi-rtw88-Move-pwr_track_tbl-to-struct-rtw_rfe_def.patch b/package/kernel/mac80211/patches/rtl/033-v6.13-wifi-rtw88-Move-pwr_track_tbl-to-struct-rtw_rfe_def.patch index cda3e7a56e0..09bf846a6d6 100644 --- a/package/kernel/mac80211/patches/rtl/033-v6.13-wifi-rtw88-Move-pwr_track_tbl-to-struct-rtw_rfe_def.patch +++ b/package/kernel/mac80211/patches/rtl/033-v6.13-wifi-rtw88-Move-pwr_track_tbl-to-struct-rtw_rfe_def.patch @@ -199,7 +199,7 @@ Link: https://patch.msgid.link/904d0ab1-c046-40cd-a3a3-d4fdcf663c9d@gmail.com .bfer_mu_max_num = 1, --- a/drivers/net/wireless/realtek/rtw88/rtw8822b.c +++ b/drivers/net/wireless/realtek/rtw88/rtw8822b.c -@@ -2072,12 +2072,6 @@ static const struct rtw_intf_phy_para_ta +@@ -2074,12 +2074,6 @@ static const struct rtw_intf_phy_para_ta .n_gen2_para = ARRAY_SIZE(pcie_gen2_param_8822b), }; @@ -212,7 +212,7 @@ Link: https://patch.msgid.link/904d0ab1-c046-40cd-a3a3-d4fdcf663c9d@gmail.com static const struct rtw_hw_reg rtw8822b_dig[] = { [0] = { .addr = 0xc50, .mask = 0x7f }, [1] = { .addr = 0xe50, .mask = 0x7f }, -@@ -2432,7 +2426,7 @@ static const u8 rtw8822b_pwrtrk_2g_cck_a +@@ -2434,7 +2428,7 @@ static const u8 rtw8822b_pwrtrk_2g_cck_a 10, 11, 11, 12, 12, 13, 13, 14, 14, 15 }; @@ -221,7 +221,7 @@ Link: https://patch.msgid.link/904d0ab1-c046-40cd-a3a3-d4fdcf663c9d@gmail.com .pwrtrk_5gb_n[RTW_PWR_TRK_5G_1] = rtw8822b_pwrtrk_5gb_n[RTW_PWR_TRK_5G_1], .pwrtrk_5gb_n[RTW_PWR_TRK_5G_2] = rtw8822b_pwrtrk_5gb_n[RTW_PWR_TRK_5G_2], .pwrtrk_5gb_n[RTW_PWR_TRK_5G_3] = rtw8822b_pwrtrk_5gb_n[RTW_PWR_TRK_5G_3], -@@ -2455,6 +2449,12 @@ static const struct rtw_pwr_track_tbl rt +@@ -2457,6 +2451,12 @@ static const struct rtw_pwr_track_tbl rt .pwrtrk_2g_ccka_p = rtw8822b_pwrtrk_2g_cck_a_p, }; @@ -234,7 +234,7 @@ Link: https://patch.msgid.link/904d0ab1-c046-40cd-a3a3-d4fdcf663c9d@gmail.com static const struct rtw_reg_domain coex_info_hw_regs_8822b[] = { {0xcb0, MASKDWORD, RTW_REG_DOMAIN_MAC32}, {0xcb4, MASKDWORD, RTW_REG_DOMAIN_MAC32}, -@@ -2535,7 +2535,6 @@ const struct rtw_chip_info rtw8822b_hw_s +@@ -2537,7 +2537,6 @@ const struct rtw_chip_info rtw8822b_hw_s .rf_tbl = {&rtw8822b_rf_a_tbl, &rtw8822b_rf_b_tbl}, .rfe_defs = rtw8822b_rfe_defs, .rfe_defs_size = ARRAY_SIZE(rtw8822b_rfe_defs), @@ -244,7 +244,7 @@ Link: https://patch.msgid.link/904d0ab1-c046-40cd-a3a3-d4fdcf663c9d@gmail.com .bfer_mu_max_num = 1, --- a/drivers/net/wireless/realtek/rtw88/rtw8822c.c +++ b/drivers/net/wireless/realtek/rtw88/rtw8822c.c -@@ -4883,16 +4883,6 @@ static const struct rtw_intf_phy_para_ta +@@ -4884,16 +4884,6 @@ static const struct rtw_intf_phy_para_ta .n_gen2_para = ARRAY_SIZE(pcie_gen2_param_8822c), }; @@ -261,7 +261,7 @@ Link: https://patch.msgid.link/904d0ab1-c046-40cd-a3a3-d4fdcf663c9d@gmail.com static const struct rtw_hw_reg rtw8822c_dig[] = { [0] = { .addr = 0x1d70, .mask = 0x7f }, [1] = { .addr = 0x1d70, .mask = 0x7f00 }, -@@ -5238,7 +5228,7 @@ static const u8 rtw8822c_pwrtrk_2g_cck_a +@@ -5239,7 +5229,7 @@ static const u8 rtw8822c_pwrtrk_2g_cck_a 18, 18, 19, 20, 21, 22, 23, 24, 24, 25 }; @@ -270,7 +270,7 @@ Link: https://patch.msgid.link/904d0ab1-c046-40cd-a3a3-d4fdcf663c9d@gmail.com .pwrtrk_5gb_n[RTW_PWR_TRK_5G_1] = rtw8822c_pwrtrk_5gb_n[RTW_PWR_TRK_5G_1], .pwrtrk_5gb_n[RTW_PWR_TRK_5G_2] = rtw8822c_pwrtrk_5gb_n[RTW_PWR_TRK_5G_2], .pwrtrk_5gb_n[RTW_PWR_TRK_5G_3] = rtw8822c_pwrtrk_5gb_n[RTW_PWR_TRK_5G_3], -@@ -5261,6 +5251,16 @@ static const struct rtw_pwr_track_tbl rt +@@ -5262,6 +5252,16 @@ static const struct rtw_pwr_track_tbl rt .pwrtrk_2g_ccka_p = rtw8822c_pwrtrk_2g_cck_a_p, }; @@ -287,7 +287,7 @@ Link: https://patch.msgid.link/904d0ab1-c046-40cd-a3a3-d4fdcf663c9d@gmail.com static const struct rtw_hw_reg_offset rtw8822c_edcca_th[] = { [EDCCA_TH_L2H_IDX] = { {.addr = 0x84c, .mask = MASKBYTE2}, .offset = 0x80 -@@ -5360,7 +5360,6 @@ const struct rtw_chip_info rtw8822c_hw_s +@@ -5361,7 +5361,6 @@ const struct rtw_chip_info rtw8822c_hw_s .rfe_defs_size = ARRAY_SIZE(rtw8822c_rfe_defs), .en_dis_dpd = true, .dpd_ratemask = DIS_DPD_RATEALL, diff --git a/package/kernel/mac80211/patches/rtl/034-v6.13-wifi-rtw88-usb-Set-pkt_info.ls-for-the-reserved-page.patch b/package/kernel/mac80211/patches/rtl/034-v6.13-wifi-rtw88-usb-Set-pkt_info.ls-for-the-reserved-page.patch index 67d7d230f4e..2a8d15dfae5 100644 --- a/package/kernel/mac80211/patches/rtl/034-v6.13-wifi-rtw88-usb-Set-pkt_info.ls-for-the-reserved-page.patch +++ b/package/kernel/mac80211/patches/rtl/034-v6.13-wifi-rtw88-usb-Set-pkt_info.ls-for-the-reserved-page.patch @@ -17,7 +17,7 @@ Link: https://patch.msgid.link/e443f5d9-4b53-4f64-985c-64313ec80bef@gmail.com --- a/drivers/net/wireless/realtek/rtw88/usb.c +++ b/drivers/net/wireless/realtek/rtw88/usb.c -@@ -478,6 +478,7 @@ static int rtw_usb_write_data_rsvd_page( +@@ -532,6 +532,7 @@ static int rtw_usb_write_data_rsvd_page( pkt_info.tx_pkt_size = size; pkt_info.qsel = TX_DESC_QSEL_BEACON; pkt_info.offset = chip->tx_pkt_desc_sz; diff --git a/package/kernel/mac80211/patches/rtl/048-wifi-rtw88-usb-Support-USB-3-with-RTL8812AU.patch b/package/kernel/mac80211/patches/rtl/048-wifi-rtw88-usb-Support-USB-3-with-RTL8812AU.patch index 33ca91d77d8..86ecfcd4a4a 100644 --- a/package/kernel/mac80211/patches/rtl/048-wifi-rtw88-usb-Support-USB-3-with-RTL8812AU.patch +++ b/package/kernel/mac80211/patches/rtl/048-wifi-rtw88-usb-Support-USB-3-with-RTL8812AU.patch @@ -12,7 +12,7 @@ Signed-off-by: Bitterblue Smith --- a/drivers/net/wireless/realtek/rtw88/usb.c +++ b/drivers/net/wireless/realtek/rtw88/usb.c -@@ -930,6 +930,32 @@ static void rtw_usb_intf_deinit(struct r +@@ -985,6 +985,32 @@ static void rtw_usb_intf_deinit(struct r usb_set_intfdata(intf, NULL); } @@ -45,7 +45,7 @@ Signed-off-by: Bitterblue Smith static int rtw_usb_switch_mode_new(struct rtw_dev *rtwdev) { enum usb_device_speed cur_speed; -@@ -983,7 +1009,8 @@ static int rtw_usb_switch_mode(struct rt +@@ -1038,7 +1064,8 @@ static int rtw_usb_switch_mode(struct rt { u8 id = rtwdev->chip->id; @@ -55,7 +55,7 @@ Signed-off-by: Bitterblue Smith return 0; if (!rtwdev->efuse.usb_mode_switch) { -@@ -998,7 +1025,10 @@ static int rtw_usb_switch_mode(struct rt +@@ -1053,7 +1080,10 @@ static int rtw_usb_switch_mode(struct rt return 0; } diff --git a/package/kernel/mac80211/patches/rtl/049-wifi-rtw88-usb-Enable-RX-aggregation-for-8821au-8812.patch b/package/kernel/mac80211/patches/rtl/049-wifi-rtw88-usb-Enable-RX-aggregation-for-8821au-8812.patch index d4c3ef34957..5b4530871b4 100644 --- a/package/kernel/mac80211/patches/rtl/049-wifi-rtw88-usb-Enable-RX-aggregation-for-8821au-8812.patch +++ b/package/kernel/mac80211/patches/rtl/049-wifi-rtw88-usb-Enable-RX-aggregation-for-8821au-8812.patch @@ -19,7 +19,7 @@ Signed-off-by: Bitterblue Smith --- a/drivers/net/wireless/realtek/rtw88/usb.c +++ b/drivers/net/wireless/realtek/rtw88/usb.c -@@ -789,6 +789,32 @@ static void rtw_usb_dynamic_rx_agg_v1(st +@@ -843,6 +843,32 @@ static void rtw_usb_dynamic_rx_agg_v1(st rtw_write16(rtwdev, REG_RXDMA_AGG_PG_TH, val16); } @@ -52,7 +52,7 @@ Signed-off-by: Bitterblue Smith static void rtw_usb_dynamic_rx_agg(struct rtw_dev *rtwdev, bool enable) { switch (rtwdev->chip->id) { -@@ -797,6 +823,10 @@ static void rtw_usb_dynamic_rx_agg(struc +@@ -851,6 +877,10 @@ static void rtw_usb_dynamic_rx_agg(struc case RTW_CHIP_TYPE_8821C: rtw_usb_dynamic_rx_agg_v1(rtwdev, enable); break; diff --git a/package/kernel/mac80211/patches/rtl/050-wifi-rtlwifi-rtl8821ae-phy-restore-removed-code-to-f.patch b/package/kernel/mac80211/patches/rtl/050-wifi-rtlwifi-rtl8821ae-phy-restore-removed-code-to-f.patch deleted file mode 100644 index 798a59351f7..00000000000 --- a/package/kernel/mac80211/patches/rtl/050-wifi-rtlwifi-rtl8821ae-phy-restore-removed-code-to-f.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 927dcd0ab53f39ee00a2d1f204b5aac77e28fcf9 Mon Sep 17 00:00:00 2001 -From: Colin Ian King -Date: Wed, 6 Nov 2024 15:46:42 +0000 -Subject: [PATCH 5/6] wifi: rtlwifi: rtl8821ae: phy: restore removed code to - fix infinite loop - -A previous clean-up fix removed the assignment of v2 inside a while loop -that turned it into an infinite loop. Fix this by restoring the assignment -of v2 from array[] so that v2 is updated inside the loop. - -Fixes: cda37445718d ("wifi: rtlwifi: rtl8821ae: phy: remove some useless code") -Signed-off-by: Colin Ian King -Tested-by: Ping-Ke Shih -Reviewed-by: Su Hui ---- - drivers/net/wireless/realtek/rtlwifi/rtl8821ae/phy.c | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - ---- a/drivers/net/wireless/realtek/rtlwifi/rtl8821ae/phy.c -+++ b/drivers/net/wireless/realtek/rtlwifi/rtl8821ae/phy.c -@@ -2033,8 +2033,10 @@ static bool _rtl8821ae_phy_config_bb_wit - if (!_rtl8821ae_check_condition(hw, v1)) { - i += 2; /* skip the pair of expression*/ - v2 = array[i+1]; -- while (v2 != 0xDEAD) -+ while (v2 != 0xDEAD) { - i += 3; -+ v2 = array[i + 1]; -+ } - } - } - } diff --git a/package/kernel/mac80211/patches/subsys/130-disable_auto_vif.patch b/package/kernel/mac80211/patches/subsys/130-disable_auto_vif.patch index c9496b5e709..b56531435c6 100644 --- a/package/kernel/mac80211/patches/subsys/130-disable_auto_vif.patch +++ b/package/kernel/mac80211/patches/subsys/130-disable_auto_vif.patch @@ -1,6 +1,6 @@ --- a/net/mac80211/main.c +++ b/net/mac80211/main.c -@@ -1583,24 +1583,6 @@ int ieee80211_register_hw(struct ieee802 +@@ -1585,24 +1585,6 @@ int ieee80211_register_hw(struct ieee802 ieee80211_check_wbrf_support(local); diff --git a/package/kernel/mac80211/patches/subsys/230-avoid-crashing-missing-band.patch b/package/kernel/mac80211/patches/subsys/230-avoid-crashing-missing-band.patch index 9e9e3844b7a..b6b3f6af8f1 100644 --- a/package/kernel/mac80211/patches/subsys/230-avoid-crashing-missing-band.patch +++ b/package/kernel/mac80211/patches/subsys/230-avoid-crashing-missing-band.patch @@ -18,7 +18,7 @@ Signed-off-by: David Bauer --- a/net/mac80211/sta_info.c +++ b/net/mac80211/sta_info.c -@@ -2439,6 +2439,13 @@ static void sta_stats_decode_rate(struct +@@ -2446,6 +2446,13 @@ static void sta_stats_decode_rate(struct sband = local->hw.wiphy->bands[band]; diff --git a/package/kernel/mac80211/patches/subsys/301-mac80211-sta-randomize-BA-session-dialog-token-alloc.patch b/package/kernel/mac80211/patches/subsys/301-mac80211-sta-randomize-BA-session-dialog-token-alloc.patch index edec97cce94..77bc2c0df23 100644 --- a/package/kernel/mac80211/patches/subsys/301-mac80211-sta-randomize-BA-session-dialog-token-alloc.patch +++ b/package/kernel/mac80211/patches/subsys/301-mac80211-sta-randomize-BA-session-dialog-token-alloc.patch @@ -28,7 +28,7 @@ Signed-off-by: Johannes Berg --- a/net/mac80211/sta_info.c +++ b/net/mac80211/sta_info.c -@@ -565,6 +565,7 @@ __sta_info_alloc(struct ieee80211_sub_if +@@ -564,6 +564,7 @@ __sta_info_alloc(struct ieee80211_sub_if spin_lock_init(&sta->ps_lock); INIT_WORK(&sta->drv_deliver_wk, sta_deliver_ps_frames); wiphy_work_init(&sta->ampdu_mlme.work, ieee80211_ba_session_work); diff --git a/package/kernel/mac80211/patches/subsys/305-mac80211-increase-quantum-for-airtime-scheduler.patch b/package/kernel/mac80211/patches/subsys/305-mac80211-increase-quantum-for-airtime-scheduler.patch index 6cf46ce7e51..a9929875014 100644 --- a/package/kernel/mac80211/patches/subsys/305-mac80211-increase-quantum-for-airtime-scheduler.patch +++ b/package/kernel/mac80211/patches/subsys/305-mac80211-increase-quantum-for-airtime-scheduler.patch @@ -23,7 +23,7 @@ Signed-off-by: Felix Fietkau --- a/net/mac80211/tx.c +++ b/net/mac80211/tx.c -@@ -4081,7 +4081,7 @@ struct ieee80211_txq *ieee80211_next_txq +@@ -4082,7 +4082,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 if (deficit < 0 || !aql_check) { list_move_tail(&txqi->schedule_order, -@@ -4224,7 +4224,8 @@ bool ieee80211_txq_may_transmit(struct i +@@ -4227,7 +4227,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 list_move_tail(&iter->schedule_order, &local->active_txqs[ac]); } -@@ -4232,7 +4233,7 @@ bool ieee80211_txq_may_transmit(struct i +@@ -4235,7 +4236,7 @@ bool ieee80211_txq_may_transmit(struct i if (sta->airtime[ac].deficit >= 0) goto out; diff --git a/package/kernel/mac80211/patches/subsys/310-cfg80211-allow-grace-period-for-DFS-available-after-.patch b/package/kernel/mac80211/patches/subsys/310-cfg80211-allow-grace-period-for-DFS-available-after-.patch index c86b836f2f5..ae65ff082fa 100644 --- a/package/kernel/mac80211/patches/subsys/310-cfg80211-allow-grace-period-for-DFS-available-after-.patch +++ b/package/kernel/mac80211/patches/subsys/310-cfg80211-allow-grace-period-for-DFS-available-after-.patch @@ -11,7 +11,7 @@ Signed-off-by: Felix Fietkau --- a/include/net/cfg80211.h +++ b/include/net/cfg80211.h -@@ -187,6 +187,8 @@ enum ieee80211_channel_flags { +@@ -190,6 +190,8 @@ enum ieee80211_channel_flags { * @dfs_state: current state of this channel. Only relevant if radar is required * on this channel. * @dfs_state_entered: timestamp (jiffies) when the dfs state was entered. @@ -20,7 +20,7 @@ Signed-off-by: Felix Fietkau * @dfs_cac_ms: DFS CAC time in milliseconds, this is valid for DFS channels. * @psd: power spectral density (in dBm) */ -@@ -204,6 +206,7 @@ struct ieee80211_channel { +@@ -207,6 +209,7 @@ struct ieee80211_channel { int orig_mag, orig_mpwr; enum nl80211_dfs_state dfs_state; unsigned long dfs_state_entered; @@ -124,7 +124,7 @@ Signed-off-by: Felix Fietkau --- a/net/wireless/mlme.c +++ b/net/wireless/mlme.c -@@ -1031,6 +1031,8 @@ void cfg80211_dfs_channels_update_work(s +@@ -1032,6 +1032,8 @@ void cfg80211_dfs_channels_update_work(s if (c->dfs_state == NL80211_DFS_UNAVAILABLE) { time_dfs_update = IEEE80211_DFS_MIN_NOP_TIME_MS; radar_event = NL80211_RADAR_NOP_FINISHED; @@ -133,7 +133,7 @@ Signed-off-by: Felix Fietkau } else { if (regulatory_pre_cac_allowed(wiphy) || cfg80211_any_wiphy_oper_chan(wiphy, c)) -@@ -1038,11 +1040,10 @@ void cfg80211_dfs_channels_update_work(s +@@ -1039,11 +1041,10 @@ void cfg80211_dfs_channels_update_work(s time_dfs_update = REG_PRE_CAC_EXPIRY_GRACE_MS; radar_event = NL80211_RADAR_PRE_CAC_EXPIRED; diff --git a/package/kernel/mac80211/patches/subsys/320-mac80211-add-AQL-support-for-broadcast-packets.patch b/package/kernel/mac80211/patches/subsys/320-mac80211-add-AQL-support-for-broadcast-packets.patch index 9513dc14bc3..6ec52af9a47 100644 --- a/package/kernel/mac80211/patches/subsys/320-mac80211-add-AQL-support-for-broadcast-packets.patch +++ b/package/kernel/mac80211/patches/subsys/320-mac80211-add-AQL-support-for-broadcast-packets.patch @@ -12,7 +12,7 @@ Signed-off-by: Felix Fietkau --- a/include/net/cfg80211.h +++ b/include/net/cfg80211.h -@@ -3423,6 +3423,7 @@ enum wiphy_params_flags { +@@ -3426,6 +3426,7 @@ enum wiphy_params_flags { /* The per TXQ device queue limit in airtime */ #define IEEE80211_DEFAULT_AQL_TXQ_LIMIT_L 5000 #define IEEE80211_DEFAULT_AQL_TXQ_LIMIT_H 12000 @@ -70,7 +70,7 @@ Signed-off-by: Felix Fietkau --- a/net/mac80211/ieee80211_i.h +++ b/net/mac80211/ieee80211_i.h -@@ -1351,10 +1351,12 @@ struct ieee80211_local { +@@ -1360,10 +1360,12 @@ struct ieee80211_local { spinlock_t handle_wake_tx_queue_lock; u16 airtime_flags; @@ -95,7 +95,7 @@ Signed-off-by: Felix Fietkau spin_lock_init(&local->active_txq_lock[i]); --- a/net/mac80211/sta_info.c +++ b/net/mac80211/sta_info.c -@@ -2353,13 +2353,28 @@ EXPORT_SYMBOL(ieee80211_sta_recalc_aggre +@@ -2360,13 +2360,28 @@ EXPORT_SYMBOL(ieee80211_sta_recalc_aggre void ieee80211_sta_update_pending_airtime(struct ieee80211_local *local, struct sta_info *sta, u8 ac, @@ -136,7 +136,7 @@ Signed-off-by: Felix Fietkau spin_unlock_irqrestore(&local->ack_status_lock, flags); if (id >= 0) { -@@ -3982,20 +3982,20 @@ begin: +@@ -3983,20 +3983,20 @@ begin: encap_out: info->control.vif = vif; @@ -167,7 +167,7 @@ Signed-off-by: Felix Fietkau } return skb; -@@ -4047,6 +4047,7 @@ struct ieee80211_txq *ieee80211_next_txq +@@ -4048,6 +4048,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 spin_lock_bh(&local->active_txq_lock[ac]); -@@ -4070,26 +4071,26 @@ struct ieee80211_txq *ieee80211_next_txq +@@ -4071,26 +4072,26 @@ struct ieee80211_txq *ieee80211_next_txq if (!head) head = txqi; @@ -214,7 +214,7 @@ Signed-off-by: Felix Fietkau if (txqi->schedule_round == local->schedule_round[ac]) goto out; -@@ -4154,7 +4155,8 @@ bool ieee80211_txq_airtime_check(struct +@@ -4157,7 +4158,8 @@ bool ieee80211_txq_airtime_check(struct return true; if (!txq->sta) @@ -224,7 +224,7 @@ Signed-off-by: Felix Fietkau if (unlikely(txq->tid == IEEE80211_NUM_TIDS)) return true; -@@ -4203,15 +4205,15 @@ bool ieee80211_txq_may_transmit(struct i +@@ -4206,15 +4208,15 @@ bool ieee80211_txq_may_transmit(struct i spin_lock_bh(&local->active_txq_lock[ac]); diff --git a/package/kernel/mac80211/patches/subsys/330-wifi-cfg80211-add-option-for-vif-allowed-radios.patch b/package/kernel/mac80211/patches/subsys/330-wifi-cfg80211-add-option-for-vif-allowed-radios.patch index 3b09c46f28a..dca56f8680f 100644 --- a/package/kernel/mac80211/patches/subsys/330-wifi-cfg80211-add-option-for-vif-allowed-radios.patch +++ b/package/kernel/mac80211/patches/subsys/330-wifi-cfg80211-add-option-for-vif-allowed-radios.patch @@ -23,7 +23,7 @@ Signed-off-by: Felix Fietkau --- a/include/net/cfg80211.h +++ b/include/net/cfg80211.h -@@ -6271,6 +6271,7 @@ enum ieee80211_ap_reg_power { +@@ -6274,6 +6274,7 @@ enum ieee80211_ap_reg_power { * entered. * @links.cac_time_ms: CAC time in ms * @valid_links: bitmap describing what elements of @links are valid @@ -31,7 +31,7 @@ Signed-off-by: Felix Fietkau */ struct wireless_dev { struct wiphy *wiphy; -@@ -6383,6 +6384,8 @@ struct wireless_dev { +@@ -6386,6 +6387,8 @@ struct wireless_dev { unsigned int cac_time_ms; } links[IEEE80211_MLD_MAX_NUM_LINKS]; u16 valid_links; @@ -40,7 +40,7 @@ Signed-off-by: Felix Fietkau }; static inline const u8 *wdev_address(struct wireless_dev *wdev) -@@ -6569,6 +6572,17 @@ bool cfg80211_radio_chandef_valid(const +@@ -6572,6 +6575,17 @@ bool cfg80211_radio_chandef_valid(const const struct cfg80211_chan_def *chandef); /** @@ -81,7 +81,7 @@ Signed-off-by: Felix Fietkau __NL80211_ATTR_AFTER_LAST, --- a/net/wireless/nl80211.c +++ b/net/wireless/nl80211.c -@@ -829,6 +829,7 @@ static const struct nla_policy nl80211_p +@@ -832,6 +832,7 @@ static const struct nla_policy nl80211_p [NL80211_ATTR_MLO_TTLM_DLINK] = NLA_POLICY_EXACT_LEN(sizeof(u16) * 8), [NL80211_ATTR_MLO_TTLM_ULINK] = NLA_POLICY_EXACT_LEN(sizeof(u16) * 8), [NL80211_ATTR_ASSOC_SPP_AMSDU] = { .type = NLA_FLAG }, @@ -89,7 +89,7 @@ Signed-off-by: Felix Fietkau }; /* policy for the key attributes */ -@@ -3996,7 +3997,8 @@ static int nl80211_send_iface(struct sk_ +@@ -4003,7 +4004,8 @@ static int nl80211_send_iface(struct sk_ nla_put_u32(msg, NL80211_ATTR_GENERATION, rdev->devlist_generation ^ (cfg80211_rdev_list_generation << 2)) || @@ -99,7 +99,7 @@ Signed-off-by: Felix Fietkau goto nla_put_failure; if (rdev->ops->get_channel && !wdev->valid_links) { -@@ -4312,6 +4314,29 @@ static int nl80211_valid_4addr(struct cf +@@ -4324,6 +4326,29 @@ static int nl80211_valid_4addr(struct cf return -EOPNOTSUPP; } @@ -129,7 +129,7 @@ Signed-off-by: Felix Fietkau static int nl80211_set_interface(struct sk_buff *skb, struct genl_info *info) { struct cfg80211_registered_device *rdev = info->user_ptr[0]; -@@ -4319,6 +4344,8 @@ static int nl80211_set_interface(struct +@@ -4331,6 +4356,8 @@ static int nl80211_set_interface(struct int err; enum nl80211_iftype otype, ntype; struct net_device *dev = info->user_ptr[1]; @@ -138,7 +138,7 @@ Signed-off-by: Felix Fietkau bool change = false; memset(¶ms, 0, sizeof(params)); -@@ -4332,8 +4359,6 @@ static int nl80211_set_interface(struct +@@ -4344,8 +4371,6 @@ static int nl80211_set_interface(struct } if (info->attrs[NL80211_ATTR_MESH_ID]) { @@ -147,7 +147,7 @@ Signed-off-by: Felix Fietkau if (ntype != NL80211_IFTYPE_MESH_POINT) return -EINVAL; if (otype != NL80211_IFTYPE_MESH_POINT) -@@ -4364,6 +4389,12 @@ static int nl80211_set_interface(struct +@@ -4376,6 +4401,12 @@ static int nl80211_set_interface(struct if (err > 0) change = true; @@ -160,7 +160,7 @@ Signed-off-by: Felix Fietkau if (change) err = cfg80211_change_iface(rdev, dev, ntype, ¶ms); else -@@ -4372,11 +4403,11 @@ static int nl80211_set_interface(struct +@@ -4384,11 +4415,11 @@ static int nl80211_set_interface(struct if (!err && params.use_4addr != -1) dev->ieee80211_ptr->use_4addr = params.use_4addr; @@ -175,7 +175,7 @@ Signed-off-by: Felix Fietkau return err; } -@@ -4387,6 +4418,7 @@ static int _nl80211_new_interface(struct +@@ -4399,6 +4430,7 @@ static int _nl80211_new_interface(struct struct vif_params params; struct wireless_dev *wdev; struct sk_buff *msg; @@ -183,7 +183,7 @@ Signed-off-by: Felix Fietkau int err; enum nl80211_iftype type = NL80211_IFTYPE_UNSPECIFIED; -@@ -4424,6 +4456,10 @@ static int _nl80211_new_interface(struct +@@ -4436,6 +4468,10 @@ static int _nl80211_new_interface(struct if (err < 0) return err; @@ -194,7 +194,7 @@ Signed-off-by: Felix Fietkau msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL); if (!msg) return -ENOMEM; -@@ -4465,6 +4501,9 @@ static int _nl80211_new_interface(struct +@@ -4477,6 +4513,9 @@ static int _nl80211_new_interface(struct break; } @@ -204,7 +204,7 @@ Signed-off-by: Felix Fietkau if (nl80211_send_iface(msg, info->snd_portid, info->snd_seq, 0, rdev, wdev, NL80211_CMD_NEW_INTERFACE) < 0) { nlmsg_free(msg); -@@ -9180,6 +9219,9 @@ static bool cfg80211_off_channel_oper_al +@@ -9192,6 +9231,9 @@ static bool cfg80211_off_channel_oper_al lockdep_assert_wiphy(wdev->wiphy); @@ -214,7 +214,7 @@ Signed-off-by: Felix Fietkau if (!cfg80211_beaconing_iface_active(wdev)) return true; -@@ -9392,7 +9434,8 @@ static int nl80211_trigger_scan(struct s +@@ -9404,7 +9446,8 @@ static int nl80211_trigger_scan(struct s } /* ignore disabled channels */ @@ -224,7 +224,7 @@ Signed-off-by: Felix Fietkau continue; request->channels[i] = chan; -@@ -9412,7 +9455,8 @@ static int nl80211_trigger_scan(struct s +@@ -9424,7 +9467,8 @@ static int nl80211_trigger_scan(struct s chan = &wiphy->bands[band]->channels[j]; @@ -236,7 +236,7 @@ Signed-off-by: Felix Fietkau request->channels[i] = chan; --- a/net/wireless/scan.c +++ b/net/wireless/scan.c -@@ -956,7 +956,8 @@ static int cfg80211_scan_6ghz(struct cfg +@@ -953,7 +953,8 @@ static int cfg80211_scan_6ghz(struct cfg struct ieee80211_channel *chan = ieee80211_get_channel(&rdev->wiphy, ap->center_freq); @@ -246,7 +246,7 @@ Signed-off-by: Felix Fietkau continue; for (i = 0; i < rdev_req->n_channels; i++) { -@@ -3519,9 +3520,12 @@ int cfg80211_wext_siwscan(struct net_dev +@@ -3512,9 +3513,12 @@ int cfg80211_wext_siwscan(struct net_dev continue; for (j = 0; j < wiphy->bands[band]->n_channels; j++) { @@ -263,7 +263,7 @@ Signed-off-by: Felix Fietkau /* If we have a wireless request structure and the --- a/net/wireless/util.c +++ b/net/wireless/util.c -@@ -2923,3 +2923,32 @@ bool cfg80211_radio_chandef_valid(const +@@ -2970,3 +2970,32 @@ bool cfg80211_radio_chandef_valid(const return true; } EXPORT_SYMBOL(cfg80211_radio_chandef_valid); @@ -298,7 +298,7 @@ Signed-off-by: Felix Fietkau +EXPORT_SYMBOL(cfg80211_wdev_channel_allowed); --- a/net/wireless/core.c +++ b/net/wireless/core.c -@@ -1424,6 +1424,8 @@ void cfg80211_init_wdev(struct wireless_ +@@ -1431,6 +1431,8 @@ void cfg80211_init_wdev(struct wireless_ /* allow mac80211 to determine the timeout */ wdev->ps_timeout = -1; diff --git a/package/kernel/mac80211/patches/subsys/331-wifi-mac80211-use-vif-radio-mask-to-limit-ibss-scan-.patch b/package/kernel/mac80211/patches/subsys/331-wifi-mac80211-use-vif-radio-mask-to-limit-ibss-scan-.patch index 779857fe88a..fd31a00dc5d 100644 --- a/package/kernel/mac80211/patches/subsys/331-wifi-mac80211-use-vif-radio-mask-to-limit-ibss-scan-.patch +++ b/package/kernel/mac80211/patches/subsys/331-wifi-mac80211-use-vif-radio-mask-to-limit-ibss-scan-.patch @@ -10,7 +10,7 @@ Signed-off-by: Felix Fietkau --- a/net/mac80211/scan.c +++ b/net/mac80211/scan.c -@@ -1176,14 +1176,14 @@ int ieee80211_request_ibss_scan(struct i +@@ -1175,14 +1175,14 @@ int ieee80211_request_ibss_scan(struct i unsigned int n_channels) { struct ieee80211_local *local = sdata->local; @@ -27,7 +27,7 @@ Signed-off-by: Felix Fietkau /* fill internal scan request */ if (!channels) { -@@ -1200,7 +1200,9 @@ int ieee80211_request_ibss_scan(struct i +@@ -1199,7 +1199,9 @@ int ieee80211_request_ibss_scan(struct i &local->hw.wiphy->bands[band]->channels[i]; if (tmp_ch->flags & (IEEE80211_CHAN_NO_IR | @@ -38,7 +38,7 @@ Signed-off-by: Felix Fietkau continue; local->int_scan_req->channels[n_ch] = tmp_ch; -@@ -1209,21 +1211,23 @@ int ieee80211_request_ibss_scan(struct i +@@ -1208,21 +1210,23 @@ int ieee80211_request_ibss_scan(struct i } if (WARN_ON_ONCE(n_ch == 0)) @@ -66,7 +66,7 @@ Signed-off-by: Felix Fietkau local->int_scan_req->n_channels = n_ch; } -@@ -1233,9 +1237,7 @@ int ieee80211_request_ibss_scan(struct i +@@ -1232,9 +1236,7 @@ int ieee80211_request_ibss_scan(struct i memcpy(local->int_scan_req->ssids[0].ssid, ssid, IEEE80211_MAX_SSID_LEN); local->int_scan_req->ssids[0].ssid_len = ssid_len; diff --git a/package/kernel/mac80211/patches/subsys/332-wifi-mac80211-use-vif-radio-mask-to-limit-chanctx-an.patch b/package/kernel/mac80211/patches/subsys/332-wifi-mac80211-use-vif-radio-mask-to-limit-chanctx-an.patch index 0c8c894eaaa..04d2f2291ac 100644 --- a/package/kernel/mac80211/patches/subsys/332-wifi-mac80211-use-vif-radio-mask-to-limit-chanctx-an.patch +++ b/package/kernel/mac80211/patches/subsys/332-wifi-mac80211-use-vif-radio-mask-to-limit-chanctx-an.patch @@ -39,7 +39,7 @@ Signed-off-by: Felix Fietkau new_ctx = ieee80211_new_chanctx(local, chanreq, mode, false, radio_idx); else -@@ -1883,7 +1888,9 @@ int _ieee80211_link_use_channel(struct i +@@ -1884,7 +1889,9 @@ int _ieee80211_link_use_channel(struct i /* Note: context is now reserved */ if (ctx) reserved = true; diff --git a/package/kernel/mac80211/patches/subsys/334-wifi-cfg80211-pass-net_device-to-.set_monitor_channel.patch b/package/kernel/mac80211/patches/subsys/334-wifi-cfg80211-pass-net_device-to-.set_monitor_channel.patch index ef8a36a9af7..f1fc9190fc8 100644 --- a/package/kernel/mac80211/patches/subsys/334-wifi-cfg80211-pass-net_device-to-.set_monitor_channel.patch +++ b/package/kernel/mac80211/patches/subsys/334-wifi-cfg80211-pass-net_device-to-.set_monitor_channel.patch @@ -49,7 +49,7 @@ Signed-off-by: Felix Fietkau --- a/include/net/cfg80211.h +++ b/include/net/cfg80211.h -@@ -4700,6 +4700,7 @@ struct cfg80211_ops { +@@ -4703,6 +4703,7 @@ struct cfg80211_ops { struct ieee80211_channel *chan); int (*set_monitor_channel)(struct wiphy *wiphy, @@ -69,7 +69,7 @@ Signed-off-by: Felix Fietkau struct ieee80211_local *local = wiphy_priv(wiphy); --- a/net/wireless/chan.c +++ b/net/wireless/chan.c -@@ -1673,6 +1673,7 @@ bool cfg80211_reg_check_beaconing(struct +@@ -1679,6 +1679,7 @@ bool cfg80211_reg_check_beaconing(struct EXPORT_SYMBOL(cfg80211_reg_check_beaconing); int cfg80211_set_monitor_channel(struct cfg80211_registered_device *rdev, @@ -77,7 +77,7 @@ Signed-off-by: Felix Fietkau struct cfg80211_chan_def *chandef) { if (!rdev->ops->set_monitor_channel) -@@ -1680,7 +1681,7 @@ int cfg80211_set_monitor_channel(struct +@@ -1686,7 +1687,7 @@ int cfg80211_set_monitor_channel(struct if (!cfg80211_has_monitors_only(rdev)) return -EBUSY; @@ -98,7 +98,7 @@ Signed-off-by: Felix Fietkau int ieee80211_get_ratemask(struct ieee80211_supported_band *sband, --- a/net/wireless/nl80211.c +++ b/net/wireless/nl80211.c -@@ -3562,7 +3562,7 @@ static int __nl80211_set_channel(struct +@@ -3569,7 +3569,7 @@ static int __nl80211_set_channel(struct case NL80211_IFTYPE_MESH_POINT: return cfg80211_set_mesh_channel(rdev, wdev, &chandef); case NL80211_IFTYPE_MONITOR: diff --git a/package/kernel/mac80211/patches/subsys/335-wifi-mac80211-add-flag-to-opt-out-of-virtual-monitor.patch b/package/kernel/mac80211/patches/subsys/335-wifi-mac80211-add-flag-to-opt-out-of-virtual-monitor.patch index 604abfd43fc..bb2d5da1a4a 100644 --- a/package/kernel/mac80211/patches/subsys/335-wifi-mac80211-add-flag-to-opt-out-of-virtual-monitor.patch +++ b/package/kernel/mac80211/patches/subsys/335-wifi-mac80211-add-flag-to-opt-out-of-virtual-monitor.patch @@ -25,7 +25,7 @@ Signed-off-by: Felix Fietkau * @IEEE80211_HW_NO_AUTO_VIF: The driver would like for no wlanX to * be created. It is expected user-space will create vifs as * desired (and thus have them named as desired). -@@ -2838,6 +2843,7 @@ enum ieee80211_hw_flags { +@@ -2843,6 +2848,7 @@ enum ieee80211_hw_flags { IEEE80211_HW_SUPPORTS_DYNAMIC_PS, IEEE80211_HW_MFP_CAPABLE, IEEE80211_HW_WANT_MONITOR_VIF, @@ -217,7 +217,7 @@ Signed-off-by: Felix Fietkau } /* Regardless of eth_mac_addr() return we still want to add the -@@ -699,9 +704,11 @@ static void ieee80211_do_stop(struct iee +@@ -705,9 +710,11 @@ static void ieee80211_do_stop(struct iee ieee80211_recalc_idle(local); ieee80211_recalc_offload(local); @@ -230,7 +230,7 @@ Signed-off-by: Felix Fietkau fallthrough; default: if (!going_down) -@@ -1131,7 +1138,8 @@ int ieee80211_add_virtual_monitor(struct +@@ -1140,7 +1147,8 @@ int ieee80211_add_virtual_monitor(struct ASSERT_RTNL(); lockdep_assert_wiphy(local->hw.wiphy); @@ -240,7 +240,7 @@ Signed-off-by: Felix Fietkau return 0; sdata = kzalloc(sizeof(*sdata) + local->hw.vif_data_size, GFP_KERNEL); -@@ -1193,6 +1201,9 @@ void ieee80211_del_virtual_monitor(struc +@@ -1202,6 +1210,9 @@ void ieee80211_del_virtual_monitor(struc { struct ieee80211_sub_if_data *sdata; @@ -250,7 +250,7 @@ Signed-off-by: Felix Fietkau ASSERT_RTNL(); lockdep_assert_wiphy(local->hw.wiphy); -@@ -1328,7 +1339,8 @@ int ieee80211_do_open(struct wireless_de +@@ -1345,7 +1356,8 @@ int ieee80211_do_open(struct wireless_de break; } @@ -284,7 +284,7 @@ Signed-off-by: Felix Fietkau vif = &sdata->vif; break; } -@@ -3952,7 +3953,8 @@ begin: +@@ -3953,7 +3954,8 @@ begin: switch (tx.sdata->vif.type) { case NL80211_IFTYPE_MONITOR: @@ -296,7 +296,7 @@ Signed-off-by: Felix Fietkau } --- a/net/mac80211/util.c +++ b/net/mac80211/util.c -@@ -739,7 +739,8 @@ static void __iterate_interfaces(struct +@@ -740,7 +740,8 @@ static void __iterate_interfaces(struct lockdep_is_held(&local->hw.wiphy->mtx)) { switch (sdata->vif.type) { case NL80211_IFTYPE_MONITOR: @@ -306,7 +306,7 @@ Signed-off-by: Felix Fietkau continue; break; case NL80211_IFTYPE_AP_VLAN: -@@ -1856,8 +1857,10 @@ int ieee80211_reconfig(struct ieee80211_ +@@ -1860,8 +1861,10 @@ int ieee80211_reconfig(struct ieee80211_ } list_for_each_entry(sdata, &local->interfaces, list) { @@ -318,7 +318,7 @@ Signed-off-by: Felix Fietkau ieee80211_sdata_running(sdata)) { res = drv_add_interface(local, sdata); if (WARN_ON(res)) -@@ -1870,11 +1873,14 @@ int ieee80211_reconfig(struct ieee80211_ +@@ -1874,11 +1877,14 @@ int ieee80211_reconfig(struct ieee80211_ */ if (res) { list_for_each_entry_continue_reverse(sdata, &local->interfaces, diff --git a/package/kernel/mac80211/patches/subsys/336-wifi-cfg80211-add-monitor-SKIP_TX-flag.patch b/package/kernel/mac80211/patches/subsys/336-wifi-cfg80211-add-monitor-SKIP_TX-flag.patch index dfc01c6c9bc..d60f74fc113 100644 --- a/package/kernel/mac80211/patches/subsys/336-wifi-cfg80211-add-monitor-SKIP_TX-flag.patch +++ b/package/kernel/mac80211/patches/subsys/336-wifi-cfg80211-add-monitor-SKIP_TX-flag.patch @@ -10,7 +10,7 @@ Signed-off-by: Felix Fietkau --- a/include/net/cfg80211.h +++ b/include/net/cfg80211.h -@@ -2272,6 +2272,7 @@ static inline int cfg80211_get_station(s +@@ -2275,6 +2275,7 @@ static inline int cfg80211_get_station(s * @MONITOR_FLAG_OTHER_BSS: disable BSSID filtering * @MONITOR_FLAG_COOK_FRAMES: report frames after processing * @MONITOR_FLAG_ACTIVE: active monitor, ACKs frames on its MAC address @@ -18,7 +18,7 @@ Signed-off-by: Felix Fietkau */ enum monitor_flags { MONITOR_FLAG_CHANGED = BIT(__NL80211_MNTR_FLAG_INVALID), -@@ -2281,6 +2282,7 @@ enum monitor_flags { +@@ -2284,6 +2285,7 @@ enum monitor_flags { MONITOR_FLAG_OTHER_BSS = BIT(NL80211_MNTR_FLAG_OTHER_BSS), MONITOR_FLAG_COOK_FRAMES = BIT(NL80211_MNTR_FLAG_COOK_FRAMES), MONITOR_FLAG_ACTIVE = BIT(NL80211_MNTR_FLAG_ACTIVE), @@ -28,7 +28,7 @@ Signed-off-by: Felix Fietkau /** --- a/include/uapi/linux/nl80211.h +++ b/include/uapi/linux/nl80211.h -@@ -4703,6 +4703,7 @@ enum nl80211_survey_info { +@@ -4709,6 +4709,7 @@ enum nl80211_survey_info { * overrides all other flags. * @NL80211_MNTR_FLAG_ACTIVE: use the configured MAC address * and ACK incoming unicast packets. @@ -36,7 +36,7 @@ Signed-off-by: Felix Fietkau * * @__NL80211_MNTR_FLAG_AFTER_LAST: internal use * @NL80211_MNTR_FLAG_MAX: highest possible monitor flag -@@ -4715,6 +4716,7 @@ enum nl80211_mntr_flags { +@@ -4721,6 +4722,7 @@ enum nl80211_mntr_flags { NL80211_MNTR_FLAG_OTHER_BSS, NL80211_MNTR_FLAG_COOK_FRAMES, NL80211_MNTR_FLAG_ACTIVE, @@ -46,7 +46,7 @@ Signed-off-by: Felix Fietkau __NL80211_MNTR_FLAG_AFTER_LAST, --- a/net/wireless/nl80211.c +++ b/net/wireless/nl80211.c -@@ -4201,6 +4201,7 @@ static const struct nla_policy mntr_flag +@@ -4208,6 +4208,7 @@ static const struct nla_policy mntr_flag [NL80211_MNTR_FLAG_OTHER_BSS] = { .type = NLA_FLAG }, [NL80211_MNTR_FLAG_COOK_FRAMES] = { .type = NLA_FLAG }, [NL80211_MNTR_FLAG_ACTIVE] = { .type = NLA_FLAG }, diff --git a/package/kernel/mac80211/patches/subsys/337-wifi-mac80211-add-support-for-the-monitor-SKIP_TX-fl.patch b/package/kernel/mac80211/patches/subsys/337-wifi-mac80211-add-support-for-the-monitor-SKIP_TX-fl.patch index d9e484eebaa..3cd8baefe13 100644 --- a/package/kernel/mac80211/patches/subsys/337-wifi-mac80211-add-support-for-the-monitor-SKIP_TX-fl.patch +++ b/package/kernel/mac80211/patches/subsys/337-wifi-mac80211-add-support-for-the-monitor-SKIP_TX-fl.patch @@ -11,7 +11,7 @@ Signed-off-by: Felix Fietkau --- a/net/mac80211/ieee80211_i.h +++ b/net/mac80211/ieee80211_i.h -@@ -1373,7 +1373,7 @@ struct ieee80211_local { +@@ -1382,7 +1382,7 @@ struct ieee80211_local { spinlock_t queue_stop_reason_lock; int open_count; @@ -22,7 +22,7 @@ Signed-off-by: Felix Fietkau fif_probe_req; --- a/net/mac80211/iface.c +++ b/net/mac80211/iface.c -@@ -1094,6 +1094,8 @@ void ieee80211_adjust_monitor_flags(stru +@@ -1103,6 +1103,8 @@ void ieee80211_adjust_monitor_flags(stru ADJUST(CONTROL, control); ADJUST(CONTROL, pspoll); ADJUST(OTHER_BSS, other_bss); diff --git a/package/kernel/mac80211/patches/subsys/340-wifi-cfg80211-report-per-wiphy-radio-antenna-mask.patch b/package/kernel/mac80211/patches/subsys/340-wifi-cfg80211-report-per-wiphy-radio-antenna-mask.patch index 178e01dc163..8ce24cd3e64 100644 --- a/package/kernel/mac80211/patches/subsys/340-wifi-cfg80211-report-per-wiphy-radio-antenna-mask.patch +++ b/package/kernel/mac80211/patches/subsys/340-wifi-cfg80211-report-per-wiphy-radio-antenna-mask.patch @@ -11,7 +11,7 @@ Signed-off-by: Felix Fietkau --- a/include/net/cfg80211.h +++ b/include/net/cfg80211.h -@@ -5443,6 +5443,8 @@ struct wiphy_radio_freq_range { +@@ -5446,6 +5446,8 @@ struct wiphy_radio_freq_range { * @iface_combinations: Valid interface combinations array, should not * list single interface types. * @n_iface_combinations: number of entries in @iface_combinations array. @@ -20,7 +20,7 @@ Signed-off-by: Felix Fietkau */ struct wiphy_radio { const struct wiphy_radio_freq_range *freq_range; -@@ -5450,6 +5452,8 @@ struct wiphy_radio { +@@ -5453,6 +5455,8 @@ struct wiphy_radio { const struct ieee80211_iface_combination *iface_combinations; int n_iface_combinations; @@ -31,7 +31,7 @@ Signed-off-by: Felix Fietkau #define CFG80211_HW_TIMESTAMP_ALL_PEERS 0xffff --- a/include/uapi/linux/nl80211.h +++ b/include/uapi/linux/nl80211.h -@@ -8038,6 +8038,8 @@ enum nl80211_ap_settings_flags { +@@ -8044,6 +8044,8 @@ enum nl80211_ap_settings_flags { * @NL80211_WIPHY_RADIO_ATTR_INTERFACE_COMBINATION: Supported interface * combination for this radio. Attribute may be present multiple times * and contains attributes defined in &enum nl80211_if_combination_attrs. @@ -40,7 +40,7 @@ Signed-off-by: Felix Fietkau * * @__NL80211_WIPHY_RADIO_ATTR_LAST: Internal * @NL80211_WIPHY_RADIO_ATTR_MAX: Highest attribute -@@ -8048,6 +8050,7 @@ enum nl80211_wiphy_radio_attrs { +@@ -8054,6 +8056,7 @@ enum nl80211_wiphy_radio_attrs { NL80211_WIPHY_RADIO_ATTR_INDEX, NL80211_WIPHY_RADIO_ATTR_FREQ_RANGE, NL80211_WIPHY_RADIO_ATTR_INTERFACE_COMBINATION, @@ -50,7 +50,7 @@ Signed-off-by: Felix Fietkau __NL80211_WIPHY_RADIO_ATTR_LAST, --- a/net/wireless/nl80211.c +++ b/net/wireless/nl80211.c -@@ -2431,6 +2431,11 @@ static int nl80211_put_radio(struct wiph +@@ -2438,6 +2438,11 @@ static int nl80211_put_radio(struct wiph if (nla_put_u32(msg, NL80211_WIPHY_RADIO_ATTR_INDEX, idx)) goto nla_put_failure; diff --git a/package/kernel/mac80211/patches/subsys/341-wifi-mac80211-fix-vif-addr-when-switching-from-monit.patch b/package/kernel/mac80211/patches/subsys/341-wifi-mac80211-fix-vif-addr-when-switching-from-monit.patch index f4cfc95aa3b..4e6d2ee5e93 100644 --- a/package/kernel/mac80211/patches/subsys/341-wifi-mac80211-fix-vif-addr-when-switching-from-monit.patch +++ b/package/kernel/mac80211/patches/subsys/341-wifi-mac80211-fix-vif-addr-when-switching-from-monit.patch @@ -52,7 +52,7 @@ Signed-off-by: Felix Fietkau } /* Regardless of eth_mac_addr() return we still want to add the -@@ -1324,6 +1319,8 @@ int ieee80211_do_open(struct wireless_de +@@ -1336,6 +1331,8 @@ int ieee80211_do_open(struct wireless_de } } diff --git a/package/kernel/mac80211/patches/subsys/350-wifi-mac80211-Add-link-iteration-macro-for-link-data.patch b/package/kernel/mac80211/patches/subsys/350-wifi-mac80211-Add-link-iteration-macro-for-link-data.patch index d78a72d246f..fd6e5dc1691 100644 --- a/package/kernel/mac80211/patches/subsys/350-wifi-mac80211-Add-link-iteration-macro-for-link-data.patch +++ b/package/kernel/mac80211/patches/subsys/350-wifi-mac80211-Add-link-iteration-macro-for-link-data.patch @@ -1,7 +1,8 @@ +From 4e1916dec9850cd49dd5792200ab649061cbedc1 Mon Sep 17 00:00:00 2001 From: Maharaja Kennadyrajan Date: Fri, 18 Jul 2025 11:38:35 +0530 -Subject: [PATCH] wifi: mac80211: Add link iteration macro for link data - with rcu_dereference +Subject: [PATCH] wifi: mac80211: Add link iteration macro for link data with + rcu_dereference Currently, the existing macro for_each_link_data() uses sdata_dereference() which requires the wiphy lock. This lock cannot be used in atomic or RCU @@ -19,24 +20,15 @@ Signed-off-by: Maharaja Kennadyrajan Link: https://patch.msgid.link/20250718060837.59371-3-maharaja.kennadyrajan@oss.qualcomm.com Signed-off-by: Johannes Berg --- + net/mac80211/ieee80211_i.h | 13 +++++++++++++ + 1 file changed, 13 insertions(+) --- a/net/mac80211/ieee80211_i.h +++ b/net/mac80211/ieee80211_i.h -@@ -1211,6 +1211,30 @@ struct ieee80211_sub_if_data *vif_to_sda - if ((_link = wiphy_dereference((local)->hw.wiphy, \ - ___sdata->link[___link_id]))) +@@ -1220,6 +1220,19 @@ struct ieee80211_sub_if_data *vif_to_sda + ((__link) = sdata_dereference((__sdata)->link[__link_id], \ + (__sdata)))) -+#define for_each_link_data(sdata, __link) \ -+ /* outer loop just to define the variable ... */ \ -+ for (struct ieee80211_sub_if_data *__sdata = (sdata); __sdata; \ -+ __sdata = NULL /* always stop */) \ -+ for (int __link_id = 0; \ -+ __link_id < ARRAY_SIZE((__sdata)->link); __link_id++) \ -+ if ((!(__sdata)->vif.valid_links || \ -+ (__sdata)->vif.valid_links & BIT(__link_id)) && \ -+ ((__link) = sdata_dereference((__sdata)->link[__link_id], \ -+ (__sdata)))) -+ +/* + * for_each_link_data_rcu should be used under RCU read lock. + */ diff --git a/package/kernel/mac80211/patches/subsys/351-wifi-mac80211-extend-beacon-monitoring-for-MLO.patch b/package/kernel/mac80211/patches/subsys/351-wifi-mac80211-extend-beacon-monitoring-for-MLO.patch index b1986dc8aac..7722bcf64c9 100644 --- a/package/kernel/mac80211/patches/subsys/351-wifi-mac80211-extend-beacon-monitoring-for-MLO.patch +++ b/package/kernel/mac80211/patches/subsys/351-wifi-mac80211-extend-beacon-monitoring-for-MLO.patch @@ -23,7 +23,7 @@ Signed-off-by: Johannes Berg --- a/net/mac80211/mlme.c +++ b/net/mac80211/mlme.c -@@ -2159,6 +2159,21 @@ static void ieee80211_csa_switch_work(st +@@ -2167,6 +2167,21 @@ static void ieee80211_csa_switch_work(st } } @@ -45,7 +45,7 @@ Signed-off-by: Johannes Berg ieee80211_sta_reset_beacon_monitor(sdata); ieee80211_sta_reset_conn_monitor(sdata); } -@@ -7863,6 +7878,29 @@ void ieee80211_sta_work(struct ieee80211 +@@ -7892,6 +7907,29 @@ void ieee80211_sta_work(struct ieee80211 } } diff --git a/package/kernel/mac80211/patches/subsys/352-wifi-mac80211-extend-connection-monitoring-for-MLO.patch b/package/kernel/mac80211/patches/subsys/352-wifi-mac80211-extend-connection-monitoring-for-MLO.patch index e6227b97ea9..9f16bea626a 100644 --- a/package/kernel/mac80211/patches/subsys/352-wifi-mac80211-extend-connection-monitoring-for-MLO.patch +++ b/package/kernel/mac80211/patches/subsys/352-wifi-mac80211-extend-connection-monitoring-for-MLO.patch @@ -25,7 +25,7 @@ Signed-off-by: Johannes Berg --- a/net/mac80211/mlme.c +++ b/net/mac80211/mlme.c -@@ -3831,9 +3831,6 @@ static void ieee80211_mgd_probe_ap_send( +@@ -3841,9 +3841,6 @@ static void ieee80211_mgd_probe_ap_send( lockdep_assert_wiphy(sdata->local->hw.wiphy); @@ -35,7 +35,7 @@ Signed-off-by: Johannes Berg /* * Try sending broadcast probe requests for the last three * probe requests after the first ones failed since some -@@ -3879,9 +3876,6 @@ static void ieee80211_mgd_probe_ap(struc +@@ -3889,9 +3886,6 @@ static void ieee80211_mgd_probe_ap(struc lockdep_assert_wiphy(sdata->local->hw.wiphy); @@ -45,7 +45,7 @@ Signed-off-by: Johannes Berg if (!ieee80211_sdata_running(sdata)) return; -@@ -7921,36 +7915,73 @@ static void ieee80211_sta_bcn_mon_timer( +@@ -7950,36 +7944,73 @@ static void ieee80211_sta_bcn_mon_timer( &sdata->u.mgd.beacon_connection_loss_work); } diff --git a/package/kernel/mac80211/patches/subsys/400-v6.16-wifi-mac80211-do-not-offer-a-mesh-path-if-forwarding.patch b/package/kernel/mac80211/patches/subsys/400-v6.16-wifi-mac80211-do-not-offer-a-mesh-path-if-forwarding.patch deleted file mode 100644 index 7c2c0b9f3fb..00000000000 --- a/package/kernel/mac80211/patches/subsys/400-v6.16-wifi-mac80211-do-not-offer-a-mesh-path-if-forwarding.patch +++ /dev/null @@ -1,56 +0,0 @@ -From 0d47666f48a084363ee54f389bec2865de4934b8 Mon Sep 17 00:00:00 2001 -From: Benjamin Berg -Date: Wed, 30 Apr 2025 20:25:38 +0200 -Subject: [PATCH] wifi: mac80211: do not offer a mesh path if forwarding is - disabled - -When processing a PREQ the code would always check whether we have a -mesh path locally and reply accordingly. However, when forwarding is -disabled then we should not reply with this information as we will not -forward data packets down that path. - -Move the check for dot11MeshForwarding up in the function and skip the -mesh path lookup in that case. In the else block, set forward to false -so that the rest of the function becomes a no-op and the -dot11MeshForwarding check does not need to be duplicated. - -This explains an effect observed in the Freifunk community where mesh -forwarding is disabled. In that case a mesh with three STAs and only bad -links in between them, individual STAs would occionally have indirect -mpath entries. This should not have happened. - -Signed-off-by: Benjamin Berg -Reviewed-by: Rouven Czerwinski ---- - net/mac80211/mesh_hwmp.c | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - ---- a/net/mac80211/mesh_hwmp.c -+++ b/net/mac80211/mesh_hwmp.c -@@ -630,7 +630,7 @@ static void hwmp_preq_frame_process(stru - mesh_path_add_gate(mpath); - } - rcu_read_unlock(); -- } else { -+ } else if (ifmsh->mshcfg.dot11MeshForwarding) { - rcu_read_lock(); - mpath = mesh_path_lookup(sdata, target_addr); - if (mpath) { -@@ -648,6 +648,8 @@ static void hwmp_preq_frame_process(stru - } - } - rcu_read_unlock(); -+ } else { -+ forward = false; - } - - if (reply) { -@@ -665,7 +667,7 @@ static void hwmp_preq_frame_process(stru - } - } - -- if (forward && ifmsh->mshcfg.dot11MeshForwarding) { -+ if (forward) { - u32 preq_id; - u8 hopcount; - -- 2.47.3