Compare commits

...

275 Commits

Author SHA1 Message Date
Hauke Mehrtens
dbd975a3b6 OpenWrt v24.10.3: adjust config defaults
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-20 22:35:21 +02:00
Linus Kardell
daca7c049b openssl: correct PKG_LICENSE_FILES
Point to correct file name.

Signed-off-by: Linus Kardell <linus.kardell@infobric.com>
Link: https://github.com/openwrt/openwrt/pull/19999
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit bcfc3f01a4)
2025-09-19 23:19:38 +02:00
Linus Kardell
36d93ba2bd libxml2: correct PKG_LICENSE_FILES
Point to correct file name.

Signed-off-by: Linus Kardell <linus.kardell@infobric.com>
Link: https://github.com/openwrt/openwrt/pull/19999
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 24ee23a8a5)
2025-09-19 22:44:54 +02:00
Oliver Sedlbauer
efcdbe1087 mac80211: backport EHT 1024 MPDU TX aggregation
Backport support for 1024 MPDU TX aggregation in EHT from upstream
kernel. Without this fix, TX performance on WiFi-7 links
is severely limited, making the link practically unusable.

Signed-off-by: Oliver Sedlbauer <osedlbauer@tdt.de>
2025-09-19 13:13:03 +02:00
Hauke Mehrtens
de44a34908 uqmi: Increase PKG_RELEASE
Make sure that the package gets updated after the last fix.

Fixes: 9d83c1b1a9 ("uqmi: fix data-format parsing")
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 0203ef3fc9)
2025-09-19 01:56:33 +02:00
David Bauer
9d83c1b1a9 uqmi: fix data-format parsing
wda-get-data-format now returns an object instead of a single string.
Account for this change when reading the packet data format.

Suggested-by: Sebastian Ertz (https://github.com/sebastianertz)
Signed-off-by: David Bauer <mail@david-bauer.net>
(cherry picked from commit cd20ae44f2)
2025-09-18 23:28:41 +02:00
Hauke Mehrtens
640e364ec0 openssl: Backport fix for OpenSSL 3.5.2 and 3.0.17 regression
Fixes segmentation faults in openssl. This problem was introduced in
version 3.5.2 and 3.0.17. Backport a fix from the OpenSSL 3.0 branch.

Link: https://forum.openwrt.org/t/openssl-3-0-17-libcrypto-segmentation-faults-regression/240650/9
Link: https://github.com/openssl/openssl/issues/28171
Link: c0d968f0ac
Fixes: f68c3e5057 ("openssl: Update to version 3.0.17")
Link: https://github.com/openwrt/openwrt/pull/20069
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit aa3c98f821)
2025-09-18 21:18:13 +02:00
Paweł Owoc
bf3bc6a384 qualcommax: ipq807x: add support for Linksys HomeWRK
Hardware specification:
========
SoC: Qualcomm IPQ8174
Flash: 1GB (Micron MT29F8G08ABBCAH4 or AMD/Spansion S34MS08G2)
RAM: 2GB (2x Kingston B5116ECMDXGJD or ESMT M15T2G16128A DDR3L)
Ethernet: 4x 10/100/1000Mbps (Qualcomm QCA8075)
WiFi1: 5GHz ax 2x2 (Qualcomm QCN5054 + Skyworks SKY85755-11) - channels 36-64 (low band)
WiFi2: 2.4GHz ax 2x2 (Qualcomm QCN5024 + Skyworks SKY85340-11)
WiFi3: 5GHz ax 4x4 (Qualcomm QCN5054 + Skyworks SKY85755-11) - channels 100-177 (high band)
LED: 1x RGB status (NXP PCA9633)
USB: 1x USB 3.0
Button: WPS, Reset

Flash instructions:
========
1. Installation from initramfs image using USB drive:
Put the initramfs image on the USB drive:
- dd bs=1M if=openwrt-qualcommax-ipq807x-linksys_homewrk-initramfs-uImage.itb of=/dev/sdX
Connect serial console (JST PH 6-pin connector):
- 1 - GND, 2 - TX, 4 - RX (115200, 8N1, 3.3V)
Stop u-boot and run:
- usb start && usbboot 44000000 0 && bootm 44000000
Write firmware to the flash from initramfs:
- sysupgrade -n openwrt-qualcommax-ipq807x-linksys_homewrk-squashfs-sysupgrade.bin
or
- ubiformat /dev/mtd22 -y -f openwrt-qualcommax-ipq807x-linksys_homewrk-squashfs-factory.ubi

2. USB recovery:
Put the initramfs image on the USB:
- dd bs=1M if=openwrt-qualcommax-ipq807x-linksys_homewrk-initramfs-uImage.itb of=/dev/sdX
Set u-boot env:
- fw_setenv bootusb 'usb start && usbboot 44000000 0 && bootm 44000000'
- fw_setenv bootcmd 'run bootusb; bootipq'

Signed-off-by: Paweł Owoc <frut3k7@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/17463
Signed-off-by: Paweł Owoc <frut3k7@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/17985
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-18 16:41:15 +02:00
Felix Fietkau
457d0ca359 mt76: update to Git HEAD (2025-09-15)
904abc93b7d7 wifi: mt76: mt7996: fix setting beacon protection keys
75cd7c365b26 wifi: mt76: mt7996: fix memory leak on mt7996_mcu_sta_key_tlv error
587012a43306 wifi: mt76: mt7996: delete vif keys when requested
e995f6198d8b wifi: mt76: mt7996: fix key add/remove imbalance
5b0cbb058089 wifi: mt76: mt7996: fix updating beacon protection with beacons enabled
bba7ae0b1a68 wifi: mt76: mt7996: drop connac mcu wtbl clear
1383b5548fd7 wifi: mt76: use altx queue for offchannel tx on connac+
fd4c0858e58d wifi: mt76: mt7996: disable promiscuous mode by default
a9d21b7ece99 wifi: mt76: mt7996: remove the mem_total field of STA_REC_BF command
e88deeb14596 wifi: mt76: mt7996: set VTA in txwi
a06461861f4a wifi: mt76: mt7996: fill User Priority in skb->priority for rx packets
d17519baab77 wifi: mt76: improve phy reset on hw restart
ddbe1f6eb25f wifi: mt76: abort scan/roc on hw restart
6745cece7a07 wifi: mt76: mt7996: reset station links on hardware restart
d4a79d50ffc6 wifi: mt76: mt7996: reset interface links on hardware restart
9b770cb3dacd wifi: mt76: mt76_eeprom_override to int
6467af3bcf11 wifi: mt76: mt7921u: Add VID/PID for Netgear A7500

Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry picked from commit b4d6b6c986)
2025-09-15 13:41:35 +02:00
Felix Fietkau
186534e167 mt76: update to Git HEAD (2025-09-09)
27ad37728c3f wifi: mt76: mt7996: Check phy before init msta_link in mt7996_mac_sta_add_links()
95c9b8099ede wifi: mt76: mt7996: Set EML capabilities for AP interface
08df8dd7b00b wifi: mt76: mt7996: Use proper link_id in link_sta_rc_update callback
15fa4e33ee8f wifi: mt76: mt7996: Enable MLO support for client interfaces
3400b1ba33be wifi: mt76: mt7925: add pci restore for hibernate
51a1c0a086c8 wifi: mt76: mt7921: Add 160MHz beamformee capability for mt7922 device
435e596914fa wifi: mt76: mt7996: Use proper link info in mt7996_mcu_add_group
d30faac3b645 firmware: update mt7996 and mt7992 firmware to 20250606
304226bc4552 wifi: mt76: mt7996: Fix mt7996_reverse_frag0_hdr_trans for MLO
7cf18f8ebbb8 wifi: mt76: mt7996: Add all active links to poll list in mt7996_mac_tx_free()
16090cb27d9f wifi: mt76: mt7996: Implement MLD address translation for EAPOL
a1c319500a53 wifi: mt76: mt7996: Temporarily disable EPCS
5f3ea4562fbf wifi: mt76: mt7921: Place upper limit on station AID
ef2468830f6d wifi: mt76: un-embedd netdev from mt76_dev
29bca0ca462b net: mediatek: wed: Introduce MT7992 WED support to MT7988 SoC
245f6ff460c8 wifi: mt76: Add reset_idx to reset_q mt76_queue_ops signature.
4a3a5a7d71a8 wifi: mt76: Remove q->ndesc check in mt76_dma_rx_fill()
d540538299f7 wifi: mt76: Differentiate between RRO data and RRO MSDU queues
d0217732f96e wifi: mt76: Do not always enable NAPIs for WED RRO queues
1df790839241 wifi: mt76: mt7996: Initial DMA configuration for MT7992 WED support
fca511f401e9 wifi: mt76: mt7996: Enable HW RRO for MT7992 chipset
8134055d3459 wifi: mt76: mt7996: Introduce the capability to reset MT7992 WED device
4f81d751b5de wifi: mt76: mt7996: Fix tx-queues initialization for second phy on mt7996
f559eef156fd wifi: mt76: mt7996: Fix RX packets configuration for primary WED device
6b518355fec6 wifi: mt76: mt7996: Enable WED for MT7992 chipset
13eb05fa4a43 wifi: mt76: mt7996: Introduce RRO MSDU callbacks
ac1bca49973b wifi: mt76: Add rx_queue_init callback
d82330a9d019 wifi: mt76: mt7996: Decouple RRO logic from WED support
0a32ae3cc23d wifi: mt76: Add mt76_dma_get_rxdmad_c_buf utility routione
6c902ccba889 wifi: mt76: mt7996: Add SW path for HW-RRO v3.1
f271ce48d73b mt76: mt7996: fix unsigned comparison
d48b221e39f1 wifi: mt76: mt7925: prevent NULL vif dereference in mt7925_mac_write_txwi
719cda7c9f18 wifi: mt76: mt7925: prevent NULL pointer dereference in mt7925_tx_check_aggr()
03b0c871630a wifi: mt76: mt7996: add missing NULL pointer check
91dcccebfe19 firmware: update mt7996/mt7992 firmware to 20250905
76401f5e2e05 mt76: update RRO patches to the latest version
7b4b6c844554 wifi: mt76: Convert mt76_wed_rro_ind to LE
0d6eaa417441 wifi: mt76: mt7915: fix mt7981 pre-calibration
015349622b0c wifi: mt76: mt7925: fix incorrect length field in txpower command
5776b3292908 wifi: mt76: mt7925: refine the txpower initialization flow
b50c633f9158 wifi: mt76: mt7996: support writing MAC TXD for AddBA Request
ea9998693579 wifi: mt76: mt7996: Add missing DMA sync for EAPOL frames
a4d6f193be22 wifi: mt76: mt7996: remove redundant per-phy mac80211 calls during restart
ffda4432654d wifi: mt76: mt7996: improve hardware restart reliability
a6559a003d1b wifi: mt76: mt7996: decrease timeout for commonly issued MCU commands

Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry picked from commit e401229918)
2025-09-15 13:40:27 +02:00
Álvaro Fernández Rojas
f3a27d09e2 kernel: r8127: update to v11.015.00
Changelog: https://github.com/openwrt/rtl8127/compare/11.014.00...11.015.00

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
(cherry picked from commit 1cffb44b3c)
2025-09-12 19:25:58 +02:00
Álvaro Fernández Rojas
4d6cb65ee0 kernel: r8126: update to v10.016.00
Changelog: https://github.com/openwrt/rtl8126/compare/10.015.00...10.016.00

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
(cherry picked from commit 27a3e5c7b7)
2025-09-12 19:25:58 +02:00
Álvaro Fernández Rojas
03497e6feb kernel: r8125: update to v9.016.01
Changelog: https://github.com/openwrt/rtl8125/compare/9.016.00...9.016.01

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
(cherry picked from commit 2dfad04a82)
2025-09-12 19:25:58 +02:00
Felix Fietkau
05e6fe692b kernel: mtk_eth_soc: zero-initialize PPE flow tables
Prevents invalid flow table data from leaking across reboots

Fixes: https://github.com/openwrt/openwrt/issues/19895
Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry picked from commit 36d0690993)
2025-09-12 14:41:59 +02:00
Andy Chiang
c60b94a195 kernel: r8168: add missing flags
PKG_MAKE_FLAGS is required when compiling r8168-rss

Signed-off-by: Andy Chiang <AndyChiang_git@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/20001
Signed-off-by: Robert Marko <robimarko@gmail.com>
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
(cherry picked from commit 5719d65064)
2025-09-11 12:47:02 +02:00
John Audia
2644445469 lantiq: adapt upstream commit to some dts files
Some lantiq dts files still use etop but 6.12.45[1] changed to ethernet
so bring them into parity with this change.

1. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-6.12.y&id=8c431ea8f3f795c4b9cfa57a85bc4166b9cce0ac

Co-Authored-by: Hauke Mehrtens <hauke@hauke-m.de>
Co-Authored-by: Aleksander Bajkowski <olek2@wp.pl>
Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/19956
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit c55a411af2)
2025-09-10 00:08:24 +02:00
Fabrice Fontaine
d80fc3aaab package/libs/gettext-full: fix license
gettext-full only provides libintl which is not licensed under
GPL-3.0.-or-later but under LGPL-2.1-or-later as stated in
gettext-runtime/intl/COPYING.LIB

Fixes: c10d97484a (Add more license tags with SPDX identifiers)

Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19943
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 13e10bb8d3)
2025-09-10 00:07:36 +02:00
Fabrice Fontaine
e0be7ecdca package/libs/elfutils: fix license
elfutils libraries are not licensed under GPL-3.0-or-later, they are dual
licensed: GPL-2.0-or-later OR LGPL-3.0-or-later as clearly stated in
source files as well as on https://sourceware.org/elfutils:

The libraries and backends are dual GPLv2+/LGPLv3+. The utilities are GPLv3+.

Fixes: b98fb76646 (elfutils: import package from packages.git)

Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19941
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 9a157b5d83)
2025-09-10 00:07:33 +02:00
Tianling Shen
cd6dd1c01e rockchip: backport GATE_LINK support for RK3588
Apart from improved power consumption, this fixes the runtime errors
from the pmdomain driver (failed to set idle on domain '%s')

Backport four clk fixes while at it.

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
Link: https://github.com/openwrt/openwrt/pull/19925
(cherry picked from commit 13db7a0708)
[rebased upon 24.10 branch]
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
Link: https://github.com/openwrt/openwrt/pull/19989
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-10 00:05:41 +02:00
Tianling Shen
b142c7e0c3 rockchip: reorder hwRNG patches
Reorder hwRNG patches to match current naming.

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
Link: https://github.com/openwrt/openwrt/pull/19989
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-10 00:05:41 +02:00
Tianling Shen
67f40cf6ff rockchip: increase the number of serial ports for rk35xx
The RK356x/RK3588 SoCs support up to 10 serial ports.

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
Link: https://github.com/openwrt/openwrt/pull/19917
(cherry picked from commit 672e45e69f)
Link: https://github.com/openwrt/openwrt/pull/19988
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-10 00:03:59 +02:00
Mikhail Zhilkin
08478c517e mediatek: CMCC RAX3000M: add RAX3000Me as alt model
The devices are basically identical. The RAX3000Me can be with
ddr3 RAM.

Signed-off-by: Mikhail Zhilkin <csharper2005@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19760
(cherry picked from commit 23f016cf1e)
Signed-off-by: Mikhail Zhilkin <csharper2005@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19991
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-10 00:02:22 +02:00
Tianling Shen
ac4516d64f kernel: add support for FudanMicro FM25S01A SPI-NAND
Add support for FudanMicro FM25S01A SPI NAND.
Datasheet: http://eng.fmsh.com/nvm/FM25S01A_ds_eng.pdf

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
[add lore.kernel.org link to the patch files]
Signed-off-by: Mikhail Zhilkin <csharper2005@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19760
(cherry picked from commit a140bcbc7c)
[drop patches for kernel 6.12, refresh patches]
Signed-off-by: Mikhail Zhilkin <csharper2005@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19991
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-10 00:02:22 +02:00
Jan Kardell
bc9f1cab83 libxml2: Add abi version
The version of libxml2 was bumped from 2.13.6 to 2.14.5. Since version
2.14, libxml2 is not binary compatible with older versions. Therefore
add an abi version.

From the NEWS file:
Binary compatibility is restricted to versions 2.14 or newer. On ELF
systems, the soname was bumped from libxml2.so.2 to libxml2.so.16.

Signed-off-by: Jan Kardell <jan.kardell@telliq.com>
Link: https://github.com/openwrt/openwrt/pull/19983
(cherry picked from commit 420be05d90)
Link: https://github.com/openwrt/openwrt/pull/19985
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-08 15:00:26 +02:00
Donghyun Ko
cd0b1a209f mediatek: filogic: add support for ipTIME AX3000Q
Specification
-------------
- SoC       : MediaTek MT7981BA dual-core ARM Cortex-A53 1.3GHz
- RAM       : DDR3 256Mbytes, ESMT M15T2G16128A
- Flash     : 128Mbytes NAND Flash, ESMT F50L1G41LB
- WLAN      : MediaTek MT7976CN dual-band Wi-Fi 6
  - 2.4GHz  : b/g/n/ax, MU-MIMO
  - 5GHz    : a/n/ac/ax, MU-MIMO
- Ethernet  : MediaTek MT7531AE
  - LAN     : 10/100/1000 Mbps x4
  - WAN     : 10/100/1000 Mbps x1
- UART      : 1x4 pin header on PCB
  - [J6] TX, RX, GND, 3.3V (115200, 8N1)
- Buttons   : WPS, Reset
- LEDs      : 1x CPU (Amber)
              1x Wi-Fi 5GHz (Amber)
              1x Wi-Fi 2.4GHz (Amber)
              1x WAN activity (Amber)
              4x LAN activity (Amber)
- Power     : 12VDC, 1A (Center positive polarity)

MAC address
-----------
+-----------+-------------------+-----------------------+
| Interface | MAC               | Algorithm             |
+-----------+-------------------+-----------------------+
| WLAN 2.4G | B0:38:6C:48:xx:xx | label                 |
| WLAN 5G   | B2:38:6C:48:xx:xx | label with LA Bit Set |
| WAN       | B0:38:6C:48:xx:xx | label + 1             |
| LAN       | B0:38:6C:48:xx:xx | label + 3             |
+-----------+-------------------+-----------------------+
The WLAN 2.4G MAC was found in 'Factory' partition, 0x4

Installation
------------
1. Download the OEM recovery software from the manufacturer's website
2. Download the *squashfs-factory.bin file from the OpenWrt website
3. Press a reset button, and power up the router(keep pressing the reset button)
4. Wait more than 10 seconds until the CPU LED stop blinking
5. Connect the router(LAN port) to the PC
6. Replace a file in the OEM recovery software with the file from step 2
7. Run the OEM recovery software and follow the instructions
8. Wait for the router to boot from *squashfs-factory.bin

Signed-off-by: Donghyun Ko <nyankosoftware@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19368
(cherry picked from commit aea6d1bf5e)
Signed-off-by: Donghyun Ko <nyankosoftware@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19939
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-08 14:37:25 +02:00
Marty Jones
99bae668a2 rockchip: add RK3588 Hardware Random Number Generator
Backport support for RK3588 hardware RNG driver.

(cherry picked from commit e02c7a2014)
Added 2 patches from 6.12:
057-01-v6.12-hwrng-rockchip-rst-is-used-only-during-probe.patch
057-02-v6.12-hwrng-rockchip-handle-devm_pm_runtime_enable-errors.patch

Signed-off-by: Marty Jones <mj8263788@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19366
Link: https://github.com/openwrt/openwrt/pull/19442
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-08 14:34:40 +02:00
Fil Dunsky
e64f54cc15 mediatek: Huasifei WH3000 Pro wifi fix
typo forgot to add `kmod-mt7915e`

Fixes: db1de8d21f ("mediatek: add Huasifei WH3000 Pro support")
Signed-off-by: Fil Dunsky <filipp.dunsky@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19825
(cherry picked from commit 194466d52a)
Link: https://github.com/openwrt/openwrt/pull/19976
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-08 14:32:47 +02:00
Goetz Goerisch
fe3d783d1e kernel: bump 6.6 to 6.6.104
remove upstreamed patches:
generic/backport-6.6/626-v6.17-net-ipv4-fix-regression-in-local-broadcast-routes.patch [1]

All other patches auto-refreshed.

[1] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.104&id=a208d67cb44ba441bd38e04e270e9f1e230234ee

Signed-off-by: Goetz Goerisch <ggoerisch@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19955
(cherry picked from commit 0ee0846be1)
Signed-off-by: Goetz Goerisch <ggoerisch@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19972
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-08 14:31:30 +02:00
Jakob Haufe
6c7919471e octeon: ubnt-*: Add device specific DTS pruning
This imports device specific DTS pruning from
https://github.com/UI-Packages/kernel_e200/blob/master/arch/mips/cavium-octeon/octeon-platform.c#L1067

- Reduce MMC clock frequency on E200/E220 to make
  MMC communication reliable again. See linked issue.
- Remove unused MMC node on E300.

Link: https://github.com/openwrt/openwrt/issues/13762
Signed-off-by: Jakob Haufe <sur5r@sur5r.net>
Link: https://github.com/openwrt/openwrt/pull/19229
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry-picked from commit 6e58e64501)
Link: https://github.com/openwrt/openwrt/pull/19374
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-05 00:48:55 +02:00
Hauke Mehrtens
78763b7b84 lantiq: Fix VPE kernel patch
This fixes compilation of the vmmc driver, it uses these functions.

Fixes: c676281e7e ("kernel: bump 6.6 to 6.6.103")
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-05 00:34:45 +02:00
FUKAUMI Naoki
2180b1d6de rockchip: Add Realtek RTL8821CU support for the Radxa ROCK Pi E v3
There is a variant of the Radxa ROCK Pi E v3 equipped with the Realtek
RTL8821CU. Add the kmod-rtw88-8821cu package for it.

Signed-off-by: FUKAUMI Naoki <naoki@radxa.com>
Link: https://github.com/openwrt/openwrt/pull/18310
Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
(cherry picked from commit f13ddfb0cf)
Link: https://github.com/openwrt/openwrt/pull/19940
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-04 23:55:53 +02:00
FUKAUMI Naoki
e52a2ca694 rockchip: Add support for Radxa ROCK 4SE
The Radxa ROCK 4SE[1] is a single board computer using the Rockchip
RK3399-T.

Hardware
--------

- Dual-core Cortex-A72 and quad-core Cortex-A53 CPU
- Mali-T860MP4 GPU
- LPDDR4 4GB RAM
- M.2 M Key slot (PCIe 2.1 x4)
- eMMC connector
- microSD card slot
- Wi-Fi 5 (not supported)
- Gigabit Ethernet with PoE support (additional PoE HAT required)
- USB 3.0 Type-A OTG port
- USB 3.0 Type-A HOST port
- 2x USB 2.0 Type-A HOST ports
- USB Type-C power port (5V only)
- 40 Pin GPIO header

[1] https://radxa.com/products/rock4/4se

Installation
------------
Uncompress the OpenWrt sysupgrade and write it to the micro SD card or
internal eMMC using dd.

Signed-off-by: FUKAUMI Naoki <naoki@radxa.com>
Link: https://github.com/openwrt/openwrt/pull/17554
(cherry picked from commit 6690f551c8)
Link: https://github.com/openwrt/openwrt/pull/19940
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-04 23:55:53 +02:00
FUKAUMI Naoki
1ebda1b0fa rockchip: Add support for Radxa ROCK 4C+
The Radxa ROCK 4C+[1] is a single board computer with dual HDMI using
the Rockchip RK3399-T.

Hardware
--------

- Dual-core Cortex-A72 and quad-core Cortex-A53 CPU
- Mali-T860MP4 GPU
- LPDDR4 4GB RAM
- eMMC connector
- microSD card slot
- Wi-Fi 5 (not supported)
- Gigabit Ethernet with PoE support (additional PoE HAT required)
- USB 3.0 Type-A OTG port
- USB 3.0 Type-A HOST port
- 2x USB 2.0 Type-A HOST ports
- USB Type-C power port (5V only)
- 40 Pin GPIO header

[1] https://radxa.com/products/rock4/4cp

Installation
------------
Uncompress the OpenWrt sysupgrade and write it to the micro SD card or
internal eMMC using dd.

Signed-off-by: FUKAUMI Naoki <naoki@radxa.com>
Link: https://github.com/openwrt/openwrt/pull/17554
(cherry picked from commit 18925614c0)
Link: https://github.com/openwrt/openwrt/pull/19940
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-04 23:55:53 +02:00
Hauke Mehrtens
65269fd3fc mac80211: Fix build of rt2800soc
This fixes the following build problem:
```
/drivers/net/wireless/ralink/rt2x00/rt2800soc.c:276:27: error: initialization of 'int (*)(struct platform_device *)' from incompatible pointer type 'void (*)(struct platform_device *)' [-Werror=incompatible-pointer-types]
  276 |         .remove         = rt2x00soc_remove,
      |                           ^~~~~~~~~~~~~~~~
```

Fixes: b4b9288f2a ("mac80211: Update to 6.12.44")
Link: https://github.com/openwrt/openwrt/pull/19946
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-04 12:08:06 +02:00
David Bauer
c46cccde28 uqmi: update to latest HEAD
7914da4 uqmi: extend wda-get-data-format
7aef645 wda: add option for enabling flow-control
f74ddb3 wds: implement retrieval of profile list
6be8b6e wds: implement selection of LTE attach PDNs
21c4aaa wds: implement selection of default profile
5c844c0 wds: implement profile deletion
0756755 wds: reduce code duplication
283fbe0 data: add downlink padding option
4b90804 wda: allow agggregation parameter configuration
c20c017 uqmi: enable binding WDS sessions to QMAP multiplex
a1b37fe uqmi: fix whitespace errors

Signed-off-by: David Bauer <mail@david-bauer.net>
(cherry picked from commit 1df3d0c4b8)
2025-09-03 12:17:02 +02:00
David Bauer
e32ee37fda uqmi: update to latest HEAD
a933061 uqmi nas: fix incorrect parameter order

Signed-off-by: David Bauer <mail@david-bauer.net>
(cherry picked from commit 9099721fb4)
2025-09-03 12:16:56 +02:00
Hauke Mehrtens
b4b9288f2a 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 <hauke@hauke-m.de>
2025-09-02 23:37:28 +02:00
Donghyun Ko
faf4f1e49e mediatek: add factory image for ipTIME AX3000SM
Adds the capability to flash the factory image using the OEM recovery
software, ipTIME Firmware Wizard(11ac).

Installation
------------
1. Download the OEM recovery software from the manufacturer's website
2. Download the *squashfs-factory.bin file from the OpenWrt website
3. Press a reset button, and power up the router(keep pressing the reset button)
4. Wait more than 10 seconds until the CPU LED stop blinking
5. Connect the router(LAN port) to the PC
6. Run the OEM recovery software and follow the instructions
7. Select the *squashfs-factory.bin file during the router recovery process
8. Wait for the router to boot from *squashfs-factory.bin

Signed-off-by: Donghyun Ko <nyankosoftware@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19497
(cherry picked from commit 0e4a69e340)
Signed-off-by: Donghyun Ko <nyankosoftware@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19928
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-02 23:15:49 +02:00
Hauke Mehrtens
8b0eb9c91d kernel: Fix kernel regression in local-broadcast routes
Backport a patch from upstream kernel 6.17-rc4 which fixes a regression
introduced in the latest stable kernel versions.

This is already in the Linus stable queues for the next minor kernel
updates.

Fixes: 1c92e468d5 ("kernel: bump 6.6 to 6.6.103")
Fixes: f39c7e103f ("kernel: bump 6.12 to 6.12.43")
Reported-by: Goetz Goerisch <ggoerisch@gmail.com>
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit c589fb7baf)
2025-09-02 23:12:52 +02:00
Goetz Goerisch
c676281e7e kernel: bump 6.6 to 6.6.103
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.6.103

removed upstream patches:
generic-backport/847-v6.17-Revert-leds-trigger-netdev-Configure-LED-blink-inter.patch [2]
bcm27xx/patches-6.6/950-0135-media-tc358743-Increase-FIFO-level-to-374.patch [4]
bcm27xx/patches-6.6/950-0137-media-tc358743-Check-I2C-succeeded-during-probe.patch [5]
bcm27xx/patches-6.6/950-0143-media-tc358743-Return-an-appropriate-colorspace-from.patch [6]
bcm27xx/patches-6.6/950-0237-media-i2c-tc358743-Only-allow-supported-pixel-fmts-i.patch [7]
bcm27xx/patches-6.6/950-0510-Allow-RESET_BRCMSTB-on-ARCH_BCM2835.patch [8]

update patch to upstream function change
bcm53x/patches-6.6/180-usb-xhci-add-support-for-performing-fake-doorbell.patch
changed function xhci_disable_and_free_slot() upstream [3]
lantiq/patches-6.6/0152-lantiq-VPE.patch [9]

All other patches auto-refreshed.

[2] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.103&id=c66caf21b1d0a0847adc34d368e3f6753a2cbd53
[3] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/drivers/usb/host?h=v6.6.103&id=e600de541c37f97482fea2a7a26f186141e7ddea
[4] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-6.6.y&id=1512ced62c8776707acf2123f7d02f56e80aa782
[5] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-6.6.y&id=5c809ef89e1ba2c3132e959382a3c22f0f62d5f9
[6] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-6.6.y&id=9b023149b97a08bd1c47fb4700381dffdad8c9b0
[7] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.103&id=9b023149b97a08bd1c47fb4700381dffdad8c9b0
[8] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/drivers/reset/Kconfig?id=f8818e29d268efc6b52d301cbb38405651a784cd
[9] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/arch/mips/include/asm/vpe.h?h=linux-6.6.y&id=7fe9533fb069013eafb862cefc60f7a9fb666615

Suggested-by: Leo Barsky <leobrsky@proton.me>
Signed-off-by: Goetz Goerisch <ggoerisch@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19898
(cherry picked from commit 1c92e468d5)
Signed-off-by: Goetz Goerisch <ggoerisch@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19924
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-02 23:09:49 +02:00
Grzegorz Sterniczuk
c77f2b442e rockchip: fix eMMC corruption on NanoPC-T6 with A3A444 chips
Some NanoPC-T6 boards with A3A444 eMMC chips experience I/O errors and
corruption when using HS400 mode. Downgrade to HS200 mode to ensure
stable operation.

Fixes: #18844
Signed-off-by: Grzegorz Sterniczuk <grzegorz@sternicz.uk>
Link: https://github.com/openwrt/openwrt/pull/19398
[Add patch header]
(cherry picked from commit c4586ceae8)
[Merge fixes into patch 121]
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
Link: https://github.com/openwrt/openwrt/pull/19926
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-01 23:23:23 +02:00
Hauke Mehrtens
2a2f1573a7 rpcd: update to git openwrt-24.10 branch HEAD
8b320f9 ucode: adjust for new ext resource type
 e61d2be sys: use strstr() to detect installed packages
 bba9519 rpc-sys: packagelist: don't truncate input lines on read

The removed patch was applied upstream.

Link: https://github.com/openwrt/openwrt/pull/19919
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-01 23:20:26 +02:00
Felix Fietkau
9de2da13bf kernel: mtk_eth_soc: fix tx vlan tag for llc packets
When sending llc packets with vlan tx offload, the hardware fails to
actually add the tag. Deal with this by fixing it up in software.

Fixes: https://github.com/openwrt/openwrt/issues/19916
Reported-by: Thibaut VARENE <hacks@slashdirt.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry picked from commit f7d4036555)
2025-08-31 20:39:38 +02:00
Hauke Mehrtens
af3a18db95 tools: firmware-utils: update to Git HEAD (2025-08-03)
3346d77 build: add mkqdimg
950f834 iptime-crc32: add support for ipTIME AX7800M-6E

(cherry picked from commit f0746741f8)
Signed-off-by: Donghyun Ko <nyankosoftware@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19915
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-31 19:12:02 +02:00
Hauke Mehrtens
d9179345ea tools: firmware-utils: update to Git HEAD (2025-07-24)
075cdc0 iptime-crc32: add support for ipTIME AX3000Q
48ababa iptime-crc32: add support for ipTIME AX3000SM
f29de74 iptime-crc32: Add device support for ipTIME AX6000M

Link: https://github.com/openwrt/openwrt/pull/19520
(cherry picked from commit b087961ccb)
Signed-off-by: Donghyun Ko <nyankosoftware@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19915
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-31 19:12:02 +02:00
Markus Stockhausen
4576d311f8 realtek: fix stall after restart of otto timer
Once tested this will go upstream.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/19468
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit f21475839f)
Signed-off-by: Felix Baumann <felix.bau@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/19891
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-31 19:08:04 +02:00
Markus Stockhausen
203c9f063b realtek: avoid interrupt storm on mass packet receive
RTL83xx devices have two types of receive interrupts for each of its
8 rings. One for packet received and another for ring overflow. When
the switch is flooded with incoming packets the receive handler will
disable the packet receive notification but still keeps the overflow
notification enabled. While the receive path "slowly" processes the
received packets each new packet triggers the overflow IRQ again. The
device becomes unresponsive and eventually produces messages like:

[18441.709764] rcu: Stack dump where RCU GP kthread last ran:
[18441.727892] Sending NMI from CPU 1 to CPUs 0:
[18441.742300] NMI backtrace for cpu 0 skipped: idling at 0x8080e994
[18415.251700] rcu: INFO: rcu_sched detected stalls on CPUs/tasks:
[18415.271350] rcu:     0-...!: (0 ticks this GP) idle=d740/0/0x0 ...
[18415.303046] rcu:     (detected by 1, t=6004 jiffies, g=230925, ...
[18415.326095] Sending NMI from CPU 1 to CPUs 0:
[18415.340540] NMI backtrace for cpu 0

Fix this issue by always disabling receive and overflow interrupts at
the same time.

Test with hping3 --udp -p 5021 -d 1400 --flood 192.168.2.72

Before (3sec run):
[183260.324846] rtl838x-eth 1b00a300.ethernet eth0: RX buffer overrun: status 0x101, mask: 0x7ffeff
[183260.340524] rtl838x-eth 1b00a300.ethernet eth0: RX buffer overrun: status 0x1, mask: 0x7ffeff
[183260.345799] net_ratelimit: 489997 callbacks suppressed

After (3 sec run):
[  373.981479] rtl838x-eth 1b00a300.ethernet eth0: rx ring overrun: status 0x101, mask: 0x7fffff
[  374.031118] rtl838x-eth 1b00a300.ethernet eth0: rx ring overrun: status 0x101, mask: 0x7fffff
[  377.919996] net_ratelimit: 34 callbacks suppressed

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/19365
(cherry picked from commit 963ee6ac3f)
Signed-off-by: Felix Baumann <felix.bau@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/19891
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-31 19:08:04 +02:00
Igor Dyatlov
3db4d8f23a ath79: add calibtation variant for Xiaomi AIoT AC2350
Add calibration variant and ipq-wifi package for Xiaomi AIoT AC2350

Signed-off-by: Igor Dyatlov <dyatlov.igor@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19707
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 664424aaeb)
Link: https://github.com/openwrt/openwrt/pull/19902
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-31 18:43:06 +02:00
Igor Dyatlov
3180294897 ipq-wifi: add entry for Xiaomi AIoT AC2350
Add IPQ WiFi support for Xiaomi AIoT AC2350

Add board file suffixes .QCA9988/.qca9988.
These suffixes are mapped to QCA9984/hw1.0 path

Reference:
https://openwrt.org/toh/xiaomi/aiot_router_ac2350

Signed-off-by: Igor Dyatlov <dyatlov.igor@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19707
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit c42f05bf36)
Link: https://github.com/openwrt/openwrt/pull/19902
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-31 18:43:06 +02:00
Robert Marko
e6bb072af5 ipq-wifi: update to Git HEAD (2025-08-25)
a510502e7922 qca9988: add BDFs for Xiaomi AIoT Router AC2350

Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 30e20d8cb2)
Link: https://github.com/openwrt/openwrt/pull/19902
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-31 18:42:57 +02:00
Robert Marko
d247904482 ipq-wifi: update to Git HEAD (2025-08-12)
967cfe977926 qca9988: add BDFs for Xiaomi AIoT Router AC2350
6db497116709 qcn9274: update board file for 8devices Kiwi-DVK
7a161011d89d Add IPQ5018 and QCN9074 BDF for Yuncore AX850.
30b99fc9cc13 ipq6018: add jdcloud_re-ss-01 BDF

Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit f9a8a3636c)
Link: https://github.com/openwrt/openwrt/pull/19902
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-31 18:42:47 +02:00
Robert Marko
8e5c83ca85 ipq-wifi: update to Git HEAD (2025-06-23)
63bd0faafd4a Add IPQ5018 BDF for Yuncore AX830.

Link: https://github.com/openwrt/openwrt/pull/18968
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 6716fbb122)
Link: https://github.com/openwrt/openwrt/pull/19902
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-31 18:42:38 +02:00
Daniel Golle
c4ea5c0732 ipq-wifi: add BDF for IgniteNet SS-W2-AC2600
The IgniteNet SunSpot AC Wave2 comes with 2x QCA9994 ath10k chips
connected to the IPQ8068 SoC via PCIe.
Add board-2.bin for both radios on this board.

 3ac4a64 qca9984: add BDFs for IgniteNet SS-W2-AC2600

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
(cherry picked from commit d8303b4721)
Link: https://github.com/openwrt/openwrt/pull/19902
[Do not add ignitenet_ss-w2-ac2600]
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-31 18:41:55 +02:00
Robert Marko
777d90a935 ipq-wifi: update to Git HEAD (2025-06-13)
5be4c60a9084 ipq5018: add BDF for Xiaomi AX6000
22588512b844 qcn9074: add BDF for Xiaomi AX6000
4810aacf3b1c qca9889: add BDF for Xiaomi AX6000

Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 17d7e0bf90)
Link: https://github.com/openwrt/openwrt/pull/19902
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-31 18:41:45 +02:00
Robert Marko
bd7ab1e9ce ipq-wifi: update to Git HEAD (2025-06-11)
79ba11f2da5e qca9888: add TP-Link WA1201 v2 BDF
abf47841e7e4 qca9988: add BDFs for Xiaomi AIoT Router AC2350
07af197b77fa qca9988: add BDFs for Xiaomi AIoT Router AC2350
61dbb1c3d694 ipq5018: add BDF for I-O DATA WN-DAX3000GR
1d8452d844b9 qcn6122: add BDF for I-O DATA WN-DAX3000GR

Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 12fd5e8f84)
Link: https://github.com/openwrt/openwrt/pull/19902
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-31 18:41:39 +02:00
Mathew McBride
6ae235bcd0 armsr: remove 'console=tty1' from kernel command line
We have modified the kernel to setup all "default" consoles,
including serial ports and framebuffers/screens, providing
no console= argument is supplied on the kernel command line.

Adding 'console=tty1' caused the 'default' serial port on
device tree systems to break, as the kernel would not carry
over the settings (like baud rate) from the bootloader.

The system administrator can still force the use of a
specific console by adding their own console= arguments.

Signed-off-by: Mathew McBride <matt@traverse.com.au>
Fixes: c099523d66 ("armsr: use console=tty1 to make
console more readily available")
Link: https://github.com/openwrt/openwrt/pull/17012
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit bff179de73)
Link: https://github.com/openwrt/openwrt/pull/19894
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-31 18:30:08 +02:00
Mathew McBride
20271bf505 armsr: add patch (hack) to enable all "default" consoles
A previous change added 'console=tty1' to the default kernel command
line on armsr, in order to ensure the framebuffer console is enabled
on systems capable of graphics output.

Unfortunately, this change broke boards that used device tree
(DT) firmware with serial consoles, as the serial console
specified by the system firmware (stdout-path) was no longer
setup by the kernel.

A bit of probing determined that the SPCR (serial port console
direction table) on ACPI systems was preventing Linux from setting
up a default framebuffer console on these systems (which is why
console=tty1 was added).

(The affected ACPI systems are usually VMs using QEMU's
'virt' machine and EDK2 firmware. The firmware on these systems
does not remove the SPCR when a screen is present)

So to ensure all possible systems are setup correctly, we modify
the kernel so all "default" console types (serial and screen)
are setup when no console= arguments are specified on the kernel
command line.

Signed-off-by: Mathew McBride <matt@traverse.com.au>
Fixes: c099523d66 ("use console=tty1 to make console more
readily available")
Link: https://github.com/openwrt/openwrt/pull/17012
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 3697022ce3)
Link: https://github.com/openwrt/openwrt/pull/19894
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-31 18:30:08 +02:00
Hauke Mehrtens
a65ca44cb7 kernel: bump 6.6 to 6.6.102
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.6.102

Added backport to fix ipv6 breakage with the 6.12.42 release:
generic/backport-6.6/621-proc-fix-missing-pde_set_flags.patch[1]

All patches auto-refreshed.

1. https://lore.kernel.org/all/20250821105806.1453833-1-wangzijie1@honor.com

Link: https://github.com/openwrt/openwrt/pull/19876
(cherry picked from commit 34e1092e88)
Link: https://github.com/openwrt/openwrt/pull/19877
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-28 21:17:44 +02:00
Hauke Mehrtens
406489fd83 kernel: bump 6.6 to 6.6.101
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.6.101
All patches auto-refreshed.

Link: https://github.com/openwrt/openwrt/pull/19876
(cherry picked from commit 9fbbcd16f7)
Link: https://github.com/openwrt/openwrt/pull/19877
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-28 21:16:43 +02:00
Felix Fietkau
03fe596699 mac80211: extend connection monitoring for MLO
Required for latest mt76

Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry picked from commit 6fbf6d0cfd)
2025-08-27 15:44:53 +02:00
Felix Fietkau
64bbe71219 mt76: update to Git HEAD (2025-08-27)
5f61f34087c5 wifi: mt76: mt7996: fix crash on some tx status reports
d729307b5e8b mt76: mt7996: add missing null pointer check
fb22489fd738 wifi: mt76: do not add non-sta wcid entries to the poll list
fb7e0501b8f9 wifi: mt76: mt7996: add missing check for rx wcid entries
4cd64ad1283b wifi: mt76: mt7915: fix list corruption after hardware restart
ee538efba542 wifi: mt76: free pending offchannel tx frames on wcid cleanup
415b5a68878b wifi: mt76: fix list corruption
3ed2c4030d42 wifi: mt76: mt7925u: use connac3 tx aggr check in tx complete
a35af277873f wifi: mt76: mt7925: skip EHT MLD TLV on non-MLD and pass conn_state for sta_cmd
384d3a9bff2d wifi: mt76: mt7996: Use deflink for AMPDU rx reordering
9bae5f956e65 wifi: mt76: Remove dead code in mt76_scan_work
de1df8b888bd wifi: mt76: mt7996: Export MLO AP capabilities to mac80211

Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry picked from commit 2760a08b40)
2025-08-27 13:34:30 +02:00
Felix Fietkau
5c37d1b9a7 udebug: update to Git HEAD (2025-08-24)
6e4ffe2c6657 ucode: add function for getting the number of entries in a snapshot
a62edd89255b ucode: add support for fetching kernel tracepoint events
edeb4d6dc690 udebug-cli: add support for streaming tracing data

Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry picked from commit 78188ee2bc)
2025-08-26 19:22:13 +02:00
Felix Fietkau
3e0bcf3af7 udebug: update to Git HEAD (2025-08-17)
892647b81d30 ucode: add ferror() call to check for closed write file descriptor

Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry picked from commit 899deae535)
2025-08-26 19:22:13 +02:00
Felix Fietkau
c1a8e48f3b udebug: update to Git HEAD (2025-08-15)
3d953628bf17 udebugd: add support for setting an override config
93f6df0240e5 udebug-cli: add support for overriding config on the command line

Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry picked from commit c4e7b9b9b7)
2025-08-26 19:22:13 +02:00
Felix Fietkau
76eb96c875 wifi-scripts: fix reload handling with random macaddr
Allow initially generated MAC address to be preserved across reload

Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry picked from commit 5bdb7a5990)
2025-08-26 11:54:52 +02:00
Hauke Mehrtens
6bf869db0f kernel: Remove patch for fixed bug
The problem was fixed in upstream kernel in a different way and the
change was backported to kernel 6.6 in the following change:
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-6.6.y&id=48e8791843206baf76827df1b6ee3cb88a2a17d8

The removed patch changes the endianness again and breaks the
functionality, use only the upstream code and remove our unneeded patch.

The 823-v6.12-0003-nvmem-layouts-add-U-Boot-env-layout.patch patch was
adapted in the kernel bump too. It moves the code with the fix now.

Fixes: 05d344cb2c ("kernel: bump 6.6 to 6.6.100")
Reported-by: Michael Pratt <mcpratt@pm.me>
Link: https://github.com/openwrt/openwrt/pull/19830
(cherry picked from commit 4cd256c72a)
Link: https://github.com/openwrt/openwrt/pull/19839
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-24 15:30:57 +02:00
Stefan Dösinger
c510f7e973 ramips: fix TP-Link mr600 radio partition offset
This makes 5ghz WiFi work out of the box on these devices, eliminating
the need to flash a magic blob to the radio partition.

This was found by user BulldozerBSG on the OpenWRT Forums:
https://forum.openwrt.org/t/tp-link-archer-mr600-exploration/65489/20
All credit belongs to them. I can confirm the correctness of the
findings. At least one other user (Iggy87100) confirmed them too.

Signed-off-by: Stefan Dösinger <stefandoesinger@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19790
(cherry picked from commit e7ed87b83b)
Link: https://github.com/openwrt/openwrt/pull/19839
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-24 15:30:57 +02:00
Felix Golatofski
52ec0cbab8 ath79: fix LED GPIOs for COMFAST CF-EW71 v2
The vendor DTS defined incorrect GPIOs for the LEDs, which caused them
to not function properly. Initially, the WAN, WLAN LEDs appeared to
work, but further testing showed that they were non-functional.

This patch corrects the GPIO assignments in the DTS, restoring full LED
functionality including blinking, except the power LED which cannot be
software controlled.

Tested on a CF-EW71 v2 unit.

Fixes: ee3a6adc6c ("ath79: add support for Comfast CF-EW71 v2")
Signed-off-by: Felix Golatofski <git@xdfr.de>
Link: https://github.com/openwrt/openwrt/pull/19665
(cherry picked from commit 9ce23ac840)
Link: https://github.com/openwrt/openwrt/pull/19839
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-24 15:30:57 +02:00
Daniel Golle
7f68339963 kernel: add backport to fix broken PHY LEDs
A commit which broke netdev trigger LEDs offloaded to PHYs recently made
it all the way down to the Linux 6.6 stable branch. The revert has been
accepted to linux-next, however, a backport to the various -stable trees
is still pending.

Import the backported revert commit to fix in OpenWrt in the meantime
until the revert also gets picked to linux-stable.

Link: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=26f732791f2bcab18f59c61915bbe35225f30136
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
(cherry picked from commit 1de1df1bea)
Link: https://github.com/openwrt/openwrt/pull/19839
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-24 15:30:57 +02:00
Karsten Sperling
2cffcdc7ae mbedtls: Expose MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED config option
This enables software that requires this cipher suite (e.g. OpenThread Border
Router) to be compiled against the shared library rather than a separate copy.

Signed-off-by: Karsten Sperling <ksperling@apple.com>
Link: https://github.com/openwrt/openwrt/pull/19489
(cherry picked from commit 97dc9f8dbf)
Link: https://github.com/openwrt/openwrt/pull/19839
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-24 15:30:57 +02:00
Hauke Mehrtens
f894fa971b mediatek: Remove modules.builtin file
This file should be generated automatically at runtime by the kernel
build system.

Link: https://github.com/openwrt/openwrt/pull/19473
(cherry picked from commit e53c53b7d5)
Link: https://github.com/openwrt/openwrt/pull/19839
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-24 15:30:57 +02:00
Fengyu Wu
bf0887bd42 ca-certificates: Update to 20250419
upstream changelog:

[ Alexander Kanavin ]
* update-ca-certificates: add a --sysroot option

[ Julien Cristau ]
* Update Mozilla certificate authority bundle to version 2.74.
  The following certificate authorities were added (+):
  + D-TRUST BR Root CA 2 2023
  + D-TRUST EV Root CA 2 2023
  The following certificate authorities were removed (-):
  - Entrust Root Certification Authority - G4
  - SecureSign RootCA11
  - Security Communication RootCA3
  - SwissSign Silver CA - G2

Signed-off-by: Fengyu Wu <saldry@proton.me>
Link: https://github.com/openwrt/openwrt/pull/19462
(cherry picked from commit 8bf023da76)
Link: https://github.com/openwrt/openwrt/pull/19839
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-24 15:30:57 +02:00
Bradley M. Kuhn
fcaa4fdbbf Note inspiration for this script to give credit where it's due
There is some confusion in the Git log of this file.  Specifically,
the commit message on 7b7f1702 incorrectly indicates that there was
"potential fear" about copyright infringement.

Upon review of this situation, there is, in my opinion, no concern of
copyright infringement here.  This is not legal advice; it is my
opinion based of years of work on copyright policy for FOSS.

However, Elliott Mitchell's idea was obviously helpful as inspiration
in writing this script and deserves credit.  Ideas alone, however,
are not to my knowledge copyrightable anywhere in the world.

Signed-off-by: Bradley M. Kuhn <bkuhn@sfconservancy.org>
(cherry picked from commit d8e738e5c4)
Link: https://github.com/openwrt/openwrt/pull/19839
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-24 15:30:57 +02:00
Jan Hoffmann
ba7b5d23f6 ltq-adsl-mei: check status register before reading mailbox messages
The interrupt handler reads from the mailbox if no other reason for the
interrupt is known. If a spurious interrupt is received just after a
mailbox message has been sent, this means that the response to the
previous message is read again and returned by DSL_BSP_SendCMV instead
of the actual response.

To fix this, check the status register before reading from the mailbox
in the interrupt handler.

Tested on Fritzbox 7320. Without this change, there is occasionally a
kernel panic due to an out-of-bounds memory access in the ltq-adsl
driver (in DSL_DRV_DEV_G997_SnrAllocationNscGet), as a result of an
incorrect value returned by DSL_DRV_DANUBE_CmvRead. This is reproducible
by calling "dsl_cpe_pipe.sh g997dsnrg 1 1" multiple times.

Signed-off-by: Jan Hoffmann <jan@3e8.eu>
Link: https://github.com/openwrt/openwrt/pull/19385
(cherry picked from commit 6889ea7b9a)
Link: https://github.com/openwrt/openwrt/pull/19839
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-24 15:30:57 +02:00
Shiji Yang
e627539601 ipq40xx: dts: reduce the maximum SPI clock frequency to 24MHz
The IPQ4019 datasheet indicates that the maximum supported SPI
frequency is 25 MHz. My experiment on SKSpruce WIA3300-20 shows
that exceeding this threshold can lead to instability of SPI
peripheral. Limit the SPI clock frequency to the QSDK recommended
value 24MHz to enhance stability.

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/19744
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 3ff8a3dca8)
Link: https://github.com/openwrt/openwrt/pull/19796
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-21 22:57:20 +02:00
Jiasheng Zhu
191d738469 mediatek: add support for OpenFi 6C
PR of openwrt:main: https://github.com/openwrt/openwrt/pull/19512

OpenFi 6C is a portable Wi-Fi 6 travel router based on MediaTek MT7981B+MT7976CN.

Two slightly different versions have been sold. The V1 board has a green color and lacks the modem LED. The V2 board is black and has a LED for the modem.

Specifications:
- SoC: MediaTek MT7981B (Filogic 820) 1.3GHz dual-core ARM Cortex-A53
- RAM: 1GB DDR4
- Flash: 256MB SPI NAND
- Wireless: 2.4GHz/5GHz 802.11ax
- Ethernet: 1x 10/100/1000M LAN
- USB: 1x USB 3.0 Type-A port
- Expansion: M.2 slot for 5G modem
- Cooling: PWM-controlled fan
- Buttons: Reset, Mode switch
- LEDs: System, Ethernet, 5G WiFi, Modem status

**Installation via U-Boot web page**

1. Set static IP 192.168.21.2/255.255.255.0 on your computer.
2. Connect to the Ethernet port and hold the reset button while booting the device. Wait for 6-8 seconds, and release the reset button.
3. Open U-boot web page on your browser at http://192.168.21.1
4. Select the OpenWRT sysupgrade image, upload it, and start the upgrade.
5. Wait for automatic reboot.

**Installation via sysupgrade**

Flash the sysupgrade file via LuCI upgrade page without saving the settings.

Signed-off-by: Jiasheng Zhu <newbanyaya@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19512
(cherry picked from commit 536a25ebf8)
Link: https://github.com/openwrt/openwrt/pull/19536
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-21 22:52:43 +02:00
Mateusz Krzak
124f61eddb mediatek: filogic: D-Link M30/M60: include initramfs in recovery
Currently, if OEM recovery flashes OpenWrt to second ubi1,
OpenWrt cannot boot. With this commit, recovery image is built
with initramfs kernel, so that it can boot from either ubi or ubi1.

This adds an extra step to OpenWrt installation from OEM:
user needs to sysupgrade from initramfs to full system.

Signed-off-by: Mateusz Krzak <kszaquitto+github@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/18878
(cherry picked from commit 6615c8cfc8)
Signed-off-by: Mateusz Krzak <kszaquitto+github@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19595
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-21 22:48:48 +02:00
Coia Prant
05db6b3c5a ramips: add support for Hongdian H7920 v40
This is an industrial 4G router equipped with OpenWrt SNAPSHOT OEM
customized version

WARNING: The original firmware device tree is modified from evb
boards, and the device tree name is evb board. This submitted device
tree is a modified version, which deletes the non-this-device parts
and adds GPIO watchdog.

Specification:
- SoC: MediaTek MT7628NN
- Flash: 16 MB
- RAM: 128 MB
- Power: DC 5V-36V 1.5A
- Ethernet: 1x WAN [slot not install], 1x LAN (10/100 Mbps)
- Wireless radio: 802.11n 2.4g-only [antenna not install]
- LED:
  System/Power (RUN): GPIO/37 active-low
  Modem: GPIO/3 active-low
  RF (Modem Signal): GPIO/2 active-low
- Button:
  WPS / RESET: GPIO/11 active-low
- UART: 1x UART on PCB - 115200 8N1
- Serial / COM: 1X RS232/RS485 on board (GPIO/6 hi:RS485 lo:RS232)
- GPIO Watchdog: GPIO/0 mode=toggle timeout=1s
- Modem: 1x Built-in modem on board (Power: GPIO/4 active-high)
- PCIe: 1x miniPCIe for modem [slot not install]
- SIM Slots: 1x SIM Slots

Issue:
- Factory partition not store mac address on original firmware

Flash instruction:
Using SSH/Telnet:
1. Connect the board to the computer via RJ45 Ethernet
2. Login 192.168.8.1 with root password "superzxmn" (SSH Port 22, Telnet Port 5188)
3. Download openwrt firmware on the computer.
4. Use scp or sftp put firmware to board /tmp
5. Use command "mtd -r write openwrt-ramips-mt76x8-hongdian_h7920-v40-squashfs-sysupgrade.bin firmware"
   to flash

Original Firmware Dump / More details:
https://blog.gov.cooking/archives/research-hongdian-h7920-v40-and-flash.html

Signed-off-by: Coia Prant <coiaprant@gmail.com>
Tested-by: Coia Prant <coiaprant@gmail.com>
(cherry picked from commit ebee946227)
Link: https://github.com/openwrt/openwrt/pull/19716
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-21 22:43:43 +02:00
Christian Marangi
97a75a72e3 generic: backport some flow offload helper patch
Backport some flow offload helper patch in preparation for Airoha Flow
Offload support.

Link: https://github.com/openwrt/openwrt/pull/18166
(cherry picked from commit 34ba7e8a8a)
[ drop merged patch 705-v6.12-netdevice-add-netdev... ]
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-08-21 17:06:50 +02:00
Christian Marangi
d12f30f760 airoha: backport upstream patch for Flow Offload support for AN7581
Backpot upstream patch for Flow Offload support for AN7581 and refresh
all affected patch. To correctly work a dedicated firmware is needed to
use the dedicated Network Coprocessor (NPU).

This also introduce good cleanup and moves the driver in a dedicated
Airoha directory. While currently not totally usable (due to lack of
firmware blob) this is needed to backport support for external PHY/SFP
support.

Refresh all affected patch.

Tested-by: Aleksander Jan Bajkowski <olek2@wp.pl> # tested on Quantum W1700k
Tested-by: Andrew LaMarche <andrewjlamarche@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/18166
(cherry picked from commit ad2077165b)
[ refresh patches ]
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-08-20 08:47:47 +02:00
Christian Marangi
62cee22812 airoha: backport minor fixes for ethernet driver
Backport some upstream patch for Airoha ethernet driver in preparation
for Flow Offload support.

Tested-by: Aleksander Jan Bajkowski <olek2@wp.pl> # tested on Quantum W1700k
Tested-by: Andrew LaMarche <andrewjlamarche@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/18166
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
(cherry picked from commit afea8bda0d)
2025-08-20 08:43:36 +02:00
Christian Marangi
30bd948a1c airoha: replace PCIe patch with upstream version
Replace PCIe patch with upstream version and update DTS with new PBUS
CSR property now required.

Tested-by: Aleksander Jan Bajkowski <olek2@wp.pl> # tested on Quantum W1700k
Tested-by: Andrew LaMarche <andrewjlamarche@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/18166
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
(cherry picked from commit 921d438564)
2025-08-20 08:43:29 +02:00
Rosen Penev
1c81724718 airoha: pwm: use devm
Removes the need for a remove function in platform_device.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/18660
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
(cherry picked from commit aa4c96b925)
2025-08-20 08:43:18 +02:00
Christian Marangi
1fef2116ac airoha: drop MTD Airoha parser patch
Drop Airoha MTD parser patch as a better solution was agreed with a
fixed partition table.

Tested-by: Aleksander Jan Bajkowski <olek2@wp.pl> # tested on Quantum W1700k
Link: https://github.com/openwrt/openwrt/pull/18112
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
(cherry picked from commit 90dee1ab30)
2025-08-20 08:42:49 +02:00
Stefan Dösinger
92d4f59709 kernel: fix Mediatek queue size patch
This got added in commit 15887235, cherry-picked into the 24.10 branch
as 642b5b61 and was partially lost in a manual patch refresh in
3a2a2c99.

The main branch still contains the full set of rx DMA size changes, so I
assume it was lost by accident.

With rx.dma_size=2K, my TP-Link Archer MR600v2 (MT7621) randomly reboots
due to OOM.

Signed-off-by: Stefan Dösinger <stefandoesinger@gmail.com>
2025-08-15 10:46:13 +02:00
Felix Fietkau
faf168ffc9 mt76: update to Git HEAD (2025-08-13)
3e25f2bc33af wifi: mt76: mt7925: introduce MLO capability control
ce3622257026 wifi: mt76: mt7925: fix fails to enter low power mode in suspend state
dfdb8e975718 wifi: mt76: mt7915: fix possible integer overflows in mt7915_muru_stats_show()
29f0ad5a439a wifi: mt76: mt7925: ensure wow pattern command align fw format
5eab65bb5473 wifi: mt76: mt7925: fix country count limitation for CLC
d6a197dbc9a2 wifi: mt76: Add check for devm_kstrdup()
901492c4621a wifi: mt76: mt7925: Remove unnecessary if-check
24062ce4fa0f wifi: mt76: mt7925: Simplify HIF suspend handling to avoid suspend fail
56c0beddbed8 wifi: mt76: mt7921: fix kernel panic due to null pointer dereference
11bacfcce3b9 Revert "wifi: mt76: mt7925: Update mt7925_mcu_uni_[tx,rx]_ba for MLO"
2823c50b1c15 wifi: mt76: mt7925: fix the wrong link_idx when has p2p_device
f54ff3cabab6 wifi: mt76: mt7925: fix the wrong simultaneous cap for MLO
aa7d366ccf40 wifi: mt76: mt7925: adjust rm BSS flow to prevent next connection failure
d25359e8bb83 wifi: mt76: mt7925: integrate *mlo_sta_cmd and *sta_cmd
25a0285d8ee3 wifi: mt76: mt7925: update the power-saving flow
5910f0806c05 wifi: mt76: mt7925: load the appropriate CLC data based on hardware type
454a69cbb718 wifi: mt76: mt7925: add EHT control support based on the CLC data
bdc09b8f2321 wifi: mt76: mt7925: update the channel usage when the regd domain changed
772dcb4b4e61 wifi: mt76: mt7925: remove unused acpi function for clc
b94b025490ef wifi: mt76: mt792x: extend MTCL of APCI to version3 for EHT control
9ff2afce5fef wifi: mt76: mt7925: add MTCL support to enhance the regulatory compliance
f11807364258 wifi: mt76: add mt76_get_power_bound helper function
ffd1cbfc485e wifi: mt76: mt7921: fix returned txpower
687e2fdfbf40 wifi: mt76: mt7925: fix returned txpower
43aaa62fbc55 wifi: mt76: mt7915: cleanup mt7915_get_power_bound
a4be3fc9ed4b wifi: mt76: mt7996: cleanup mt7996_get_power_bound
0ba7a69f8927 wifi: mt76: move napi_enable() from under BH
1b370c689a2f wifi: mt76: mt7921: avoid undesired changes of the preset regulatory domain
e931cecc45de mt76: mt792x: fix unused variable warning
539e7e711a15 Revert "wifi: mt76: mt7925: fix returned txpower"
67c724cc60b1 Revert "wifi: mt76: mt7921: fix returned txpower"
52f51a398e7e wifi: mt76: mt7996: Add change_vif_links stub
b3b61abd733f wifi: mt76: mt7996: Introduce mt7996_sta_link container
915938e83c35 wifi: mt76: mt7996: Add mt7996_sta_link struct in mt7996_vif_link
3e06380a43a4 wifi: mt76: mt7996: Add vif_cfg_changed callback
f419c62e9198 wifi: mt76: mt7996: Add link_info_changed callback
3082c9edbe35 wifi: mt76: mt7996: Add mt7996_sta_state routine
46e20e5d7455 wifi: mt76: mt7996: Rely on mt7996_sta_link in sta_add/sta_remove callbacks
1de180821525 wifi: mt76: mt7996: Add mt7996_mac_sta_change_links callback
2efb26f1fc10 wifi: mt76: mt7996: Support MLO in mt7996_mac_sta_event()
2e249744bc12 wifi: mt76: Check link_conf pointer in mt76_connac_mcu_sta_basic_tlv()
0eee20d3e388 wifi: mt76: mt7996: Update mt7996_mcu_add_sta to MLO support
200ce414fe61 wifi: mt76: mt7996: Rely on mt7996_vif_link in mt7996_mcu_twt_agrt_update signature
d195324131ba wifi: mt76: mt7996: Rely on mt7996_vif/sta_link in twt teardown
7757e7c140f7 wifi: mac80211: call rate_control_rate_update() for link STA
a3b651aeb551 wifi: mt76: mt7996: Update mt7996_mcu_add_rate_ctrl to MLO
2a005953dc49 wifi: mt76: mt7996: Add mt7996_mcu_sta_mld_setup_tlv() and mt7996_mcu_sta_eht_mld_tlv()
58e8b71782fc wifi: mt76: mt7996: Add mt7996_mcu_teardown_mld_sta rouine
e0b422f2acaf wifi: mt76: mt7996: rework mt7996_mac_write_txwi() for MLO support
21aa0c288470 wifi: mt76: mt7996: Rely on wcid_to_sta in mt7996_mac_add_txs_skb()
87c437fa8b43 wifi: mt76: mt7996: rework mt7996_rx_get_wcid to support MLO
9b4de3ce7fc7 wifi: mt76: mt7996: rework mt7996_sta_set_4addr and mt7996_sta_set_decap_offload to support MLO
a369b0c14d25 wifi: mt76: mt7996: Add mt7996_sta_link to mt7996_mcu_add_bss_info signature
9c6ec015afbb wifi: mt76: mt7996: rework mt7996_set_hw_key to support MLO
60967d28a5e0 wifi: mt76: mt7996: rework mt7996_sta_hw_queue_read to support MLO
3668d57795e3 wifi: mt76: mt7996: remove mt7996_mac_enable_rtscts()
275e6a681bac wifi: mt76: mt7996: rework mt7996_mac_sta_rc_work to support MLO
057822770ca5 wifi: mt76: mt7996: rework mt7996_mac_sta_poll to support MLO
b9682a51c109 wifi: mt76: mt7996: rework mt7996_update_mu_group to support MLO
d1a5a0afa6d6 wifi: mt76: mt7996: rework mt7996_net_fill_forward_path to support MLO
56529041b364 wifi: mt76: mt7996: rework mt7996_mcu_add_obss_spr to support MLO
c788d5748dc8 wifi: mt76: mt7996: rework mt7996_mcu_beacon_inband_discov to support MLO
974e6c2df98b wifi: mt76: mt7996: set vif default link_id adding/removing vif links
70717b761af2 wifi: mt76: mt7996: rework set/get_tsf callabcks to support MLO
d01b9d300eaa wifi: mt76: mt7996: rework mt7996_ampdu_action to support MLO
d5cddf65f7a7 wifi: mt76: mt7996: Update mt7996_tx to MLO support
a1ed21a66913 wifi: mt76: mt792x: re-register CHANCTX_STA_CSA only for the mt7921 series
a826fc287483 wifi: mt76: mt7925: update MLO cleanup flow during disconnection
0994f0af632e wifi: mt76: mt7925: fix the incomplete revert of [tx,rx]_ba for MLO
5169d4e8669b wifi: mt76: mt76x2u: add TP-Link TL-WDN6200 ID to device table
46f3a10a9f0f mt76: mt7925: sync with upstream cleanups
de635e1e3adc wifi: mt76: mt7996: fix locking in mt7996_mac_sta_rc_work()
63a4edf1cb74 wifi: mt76: mt7996: add macros for pci decive id
a2dd2f7896f7 wifi: mt76: connac: add support to load firmware for mt7990
3908cf04aa39 wifi: mt76: mt7996: rework WA mcu command for mt7990
6243414a4e80 wifi: mt76: mt7996: rework DMA configuration for mt7990
a8def214d736 wifi: mt76: mt7996: rework register mapping for mt7990
51db7a2d57f6 wifi: mt76: mt7996: add eeprom support for mt7990
d0799f3303e9 wifi: mt76: mt7996: adjust HW capabilities for mt7990
10c3ea97a86d wifi: mt76: connac: rework TX descriptor and TX free for mt7990
bc588ac3d104 wifi: mt76: mt7996: rework background radar check for mt7990
f8c3dd3677dd wifi: mt76: mt7996: add PCI device id for mt7990
3cec186474c4 wifi: mt76: mt7915: set correct background radar capability
9bacdb2bf2c3 wifi: mt76: mt7915: rework radar HWRDD idx
a19543c7e05e wifi: mt76: mt7996: rework radar HWRDD idx
b0cf33e76a3a wifi: mt76: mt7925: Fix logical vs bitwise typo
0433adc883c9 wifi: mt76: mt7925: add EHT preamble puncturing
be28ef77e330 wifi: mt76: mt7996: Add NULL check in mt7996_thermal_init
55218e636092 Revert "wifi: mt76: mt7996: fill txd by host driver"
fdfe9eca6401 wifi: mt76: disable napi on driver removal
d7a070e11de4 wifi: mt76: mt7925: fix missing hdr_trans_tlv command for broadcast wtbl
29363a669195 wifi: mt76: mt7996: prevent uninit return in mt7996_mac_sta_add_links
e285cb42be03 wifi: mt76: Remove an unneeded local variable in mt76x02_dma_init()
3dee73c357cf wifi: mt76x2: Add support for LiteOn WN4516R,WN4519R
73f9582f92b6 wifi: mt76: mt7925: introduce thermal protection
cf8522c5eea8 wifi: mt76: mt7925: fix host interrupt register initialization
8a24527e6c63 wifi: mt76: mt7921: add 160 MHz AP for mt7922 device
d0ef73122e8b wifi: mt76: mt7996: avoid NULL pointer dereference in mt7996_set_monitor()
7fdbe4cb5c8d wifi: mt76: mt7996: avoid null deref in mt7996_stop_phy()
925d156dab3d wifi: mt76: mt7996: fix uninitialized symbol warning
a403590fd464 Revert "wifi: mt76: Check link_conf pointer in mt76_connac_mcu_sta_basic_tlv()"
ca76c1bcede4 wifi: mt76: mt7996: remove duplicate check in mt7996_mcu_sta_mld_setup_tlv()
b70a4a619538 wifi: mt76: scan: Fix 'mlink' dereferenced before IS_ERR_OR_NULL check
2247afffc734 wifi: mt76: add mt76_connac_mcu_build_rnr_scan_param routine
460aa7da0ef6 wifi: mt76: mt7925: add RNR scan support for 6GHz
a68584ddf98e wifi: mt76: mt7996: Fix null-ptr-deref in mt7996_mmio_wed_init()
025c1d19b55a wifi: mt76: mt7915: Fix null-ptr-deref in mt7915_mmio_wed_init()
c20015bdc88b wifi: mt76: mt7925: prevent multiple scan commands
832387a1f876 wifi: mt76: mt7925: refine the sniffer commnad
7bf6a2914a54 wifi: mt76: mt7925: ensure all MCU commands wait for response
1bd4dbd48281 wifi: mt76: mt7925: extend MCU support for testmode
0ca6ed4e2724 wifi: mt76: mt7925: add test mode support
a2838480f805 wifi: mt76: remove capability of partial bandwidth UL MU-MIMO
1865f5ea80ea wifi: mt76: mt7996: fix beamformee SS field
3bda39f1465e wifi: mt76: mt7996: set EHT max ampdu length capability
7d30840e5b21 wifi: mt76: mt7996: drop fragments with multicast or broadcast RA
bf22595a1d8a wifi: mt76: mt7996: fix invalid NSS setting when TX path differs from NSS
b9f01d7c368c wifi: mt76: mt7996: change max beacon size
8808d7c4eed7 wifi: mt76: mt7996: fix RX buffer size of MCU event
36e0b90e47ff wifi: mt76: fix available_antennas setting
da2c23bec426 wifi: mt76: support power delta calculation for 5 TX paths
3e161d0cf3c7 wifi: mt76: mt7925: add rfkill_poll for hardware rfkill
ee6dac9b6b76 wifi: mt76: mt7915: mcu: increase eeprom command timeout
0534761b76e1 wifi: mt76: mt7915: mcu: lower default timeout
79dd14f2e816 wifi: mt76: mt7915: mcu: re-init MCU before loading FW patch
f2943046881d wifi: mt76: Assume __mt76_connac_mcu_alloc_sta_req runs in atomic context
656eb209ec42 wifi: mt76: Move RCU section in mt7996_mcu_set_fixed_field()
4f47d90943a3 wifi: mt76: Move RCU section in mt7996_mcu_add_rate_ctrl_fixed()
189532e383c1 wifi: mt76: Move RCU section in mt7996_mcu_add_rate_ctrl()
5603bd03d56a wifi: mt76: Remove RCU section in mt7996_mac_sta_rc_work()
ca24f0794e94 wifi: mt76: mt7925: fix the wrong config for tx interrupt
63f18baa5bb6 wifi: mt76: mt7925: fix invalid array index in ssid assignment during hw scan
4bdc4c5f26e0 wifi: mt76: mt7925: fix incorrect scan probe IE handling for hw_scan
321ae47a7439 wifi: mt76: mt7925: fix off by one in mt7925_mcu_hw_scan()
3699df4e85ec wifi: mt76: mt7925: prevent NULL pointer dereference in mt7925_sta_set_decap_offload()
a17fbd3d8598 wifi: mt76: mt7921: prevent decap offload config before STA initialization
6df761e0e6c7 mt76: fix signature of platform_driver remove funtions for newer kernels
5724be1a6b12 wifi: mt76: Replace strlcpy() with strscpy()
c4a114e2b8c9 wifi: mt76: fix queue assignment for deauth packets
243e572d89fc wifi: mt76: add a wrapper for wcid access with validation
e41c7785589f wifi: mac80211: get tx power per link
d70f62b8f1c7 wifi: mt76: fix vif link allocation
7b3cd3274a24 wifi: mt76: mt7996: Fix secondary link lookup in mt7996_mcu_sta_mld_setup_tlv()
cf89b6218043 wifi: mt76: mt7996: Rely on for_each_sta_active_link() in mt7996_mcu_sta_mld_setup_tlv()
d71108eedab1 wifi: mt76: mt7996: Do not set wcid.sta to 1 in mt7996_mac_sta_event()
32f8c5849ed1 wifi: mt76: mt7996: Fix mlink lookup in mt7996_tx_prepare_skb
ffff9f71e29d wifi: mt76: mt7996: Fix possible OOB access in mt7996_tx()
afe63e758196 wifi: mt76: mt7996: Fix valid_links bitmask in mt7996_mac_sta_{add,remove}
68dd28b99dad wifi: mt76: mt7996: Add MLO support to mt7996_tx_check_aggr()
293778652452 wifi: mt76: mt7996: Move num_sta accounting in mt7996_mac_sta_{add,remove}_links
a94166b21e20 wifi: mt76: Get rid of dma_sync_single_for_device() for MMIO devices
87873d854e51 wifi: mt76: mt7925: Fix null-ptr-deref in mt7925_thermal_init()
06ba3d5e91f4 wifi: mt76: mt792x: Limit the concurrent STA and SoftAP to operate on the same channel
b9f4e0df317d wifi: mt76: mt792x: improve monitor interface handling
ec95319fd3fb wifi: mt76: mt7921s: Introduce SDIO WiFi/BT combo module card reset
dd2d862251cb firmware: add missing mt7990 eeprom files
05eaa56bc7a4 firmware: update mt7992 firmware to 20250328
32ca2b6db354 firmware: update mt7996 firmware to 20250328
00275548ba8f wifi: mt76: mt7996: Overwrite unspecified link_id in mt7996_tx()
2601bb91e078 wifi: mt76: mt7996: Fix mt7996_mcu_sta_ba wcid configuration
110ecc331123 wifi: mt76: mt7996: Fix mt7996_mcu_bss_mld_tlv routine
449a1aca9f72 wifi: mt76: mt7996: Initialize hdr before passing to skb_put_data()
1de707e73fc7 wifi: mt76: mt7921: don't disconnect when CSA to DFS chan
fce683dbcfc9 wifi: mt76: mt7925: fix locking in mt7925_change_vif_links()
11f721bce235 wifi: mt76: mt7925: fix the wrong bss cleanup for SAP
b3613d9a317d wifi: mt76: mt7996: Set def_wcid pointer in mt7996_mac_sta_init_link()
d1a2900a390d wifi: mt76: mt7996: Set proper link destination address in mt7996_tx()
56990ce9289a wifi: mt76: mt7925u: Add VID/PID for Netgear A9000
e796542a0585 wifi: mt76: mt7925: add MBSSID support
e35e4f8fcf8a wifi: mt76: fix potential memory leak in mt76_wmac_probe()
aa2f13c3be79 wifi: mt76: mt7996: disable beacons when going offchannel
630e166c958d wifi: mt76: prevent non-offchannel mgmt tx during scan/roc
d3e7c2051aae wifi: mt76: mt7996: use the correct vif link for scanning/roc
903a7e0ace79 wifi: mt76: mt7921: add MBSSID support

Sync with commit 4010984db9

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-08-13 17:33:08 +02:00
Rosen Penev
9d193d9b65 mpc85xx: tl-wdr4900: add back 5ghz LED
In the conversion to dts, qca,led-pin was used for both interfaces.
Unfortunately, it's mutually exclusive with gpio-controller which made
it not do anything.

Fixes: 949e1a0 ("mpc85xx: tl-wdr4900: move platform code to dts")

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19758
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit cc0ff28f23)
2025-08-13 09:58:03 +02:00
Christian Korber
33728aa96c hostapd: fix logging of configuration content
This commit is an adoption of the fix for #14049 to
apply it for openwrt-24.10.

Signed-off-by: Christian Korber <ck@dev.tdt.de>
Link: https://github.com/openwrt/openwrt/pull/17718
Link: https://github.com/openwrt/openwrt/pull/19660
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-08-10 21:53:43 +02:00
Felix Fietkau
b2116dbce4 rpcd: backport ucode fix
ucode: adjust for new ext resource type
ucv_resource_dataptr always returns null for resources with embedded data.

Fixes: https://github.com/openwrt/rpcd/issues/17
Fixes: https://github.com/openwrt/luci/issues/7878
Fixes: https://github.com/openwrt/openwrt/issues/19726
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-08-09 16:01:48 +02:00
jinkela air
155eea44e7 mediatek: Ruijie RG-X60 Pro: Fix LAN port status light
Fix the status indicator light of the LAN port.

Signed-off-by: jinkela air <air_jinkela@163.com>
Link: https://github.com/openwrt/openwrt/pull/19135
(cherry picked from commit 1e00b92597)
Link: https://github.com/openwrt/openwrt/pull/19567
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-07-29 23:18:45 +02:00
Hauke Mehrtens
4941509f57 uhttpd: update to Git HEAD (2025-07-06)
b3e3c05 client: don't send stray EOF chunk on connection timeout
fad0d05 proc: inhibit chunked transfer encoding on existing TEs or known length
3d6f01b file: prevent writes beyond end of uh_buf on enumerating directories
c7294e7 client: reject requests with multiple content-lengths and/or TEs
7e64e8b client: Allow sending content in DONE state

uhttpd commit 3d6f01b fixes: CVE-2025-32108

Link: https://github.com/openwrt/openwrt/pull/19290
(cherry picked from commit efb4200ba5)
Link: https://github.com/openwrt/openwrt/pull/19563
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-07-28 23:23:50 +02:00
Hauke Mehrtens
4c1a6ecb44 kernel: Fix boot of amrsr target in qemu
The bootup of the armsr target sometimes failed like this:
```
[    0.762283] NET: Registered PF_INET6 protocol family
[    0.791987] workqueue: Failed to create a worker thread: -EAGAIN
[    0.801986] workqueue: Failed to create a rescuer kthread for wq "mld": -EAGAIN
[    0.964017] NET: Unregistered PF_INET6 protocol family
```

Increase the maximum number of threads the kernel allows.

Link: https://github.com/openwrt/openwrt/pull/19376
(cherry picked from commit c5330bdf7e)
Link: https://github.com/openwrt/openwrt/pull/19554
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-07-28 23:22:19 +02:00
Tomasz Maciej Nowak
8ee468ff68 tegra: bring back workaround for spurious interrupts
Unfortunately they still apear with prolonged serial console usage.
While it's not common to use serial console past initial setup, alas
when the condition is hit the console is almost unusable.

Signed-off-by: Tomasz Maciej Nowak <tmn505@gmail.com>
Link: https://patchwork.ozlabs.org/project/openwrt/patch/20250618170045.473711-2-tmn505@terefe.re/
(cherry picked from commit b8dea6056d)
Link: https://github.com/openwrt/openwrt/pull/19555
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-07-28 23:20:46 +02:00
Jan Hoffmann
ecb35b36fa ltq-*-app: correctly report downstream band borders
The direction needs to be included in the IOCTL call.

Fixes: b91d7d9d78 ("ltq-*-app: extend ubus metrics/statistics")
Signed-off-by: Jan Hoffmann <jan@3e8.eu>
Link: https://github.com/openwrt/openwrt/pull/19363
(cherry picked from commit b002cdd6a3)
Link: https://github.com/openwrt/openwrt/pull/19556
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-07-28 23:17:57 +02:00
Hauke Mehrtens
05a1a71530 toolchain: glibc: Update glibc 2.38 to recent HEAD
f510d75ff7 nscd: Use time_t for return type of addgetnetgrentX
5aa4bb67b9 resolv: Fix some unaligned accesses in resolver [BZ #30750]
249646f12b Force DT_RPATH for --enable-hardcoded-path-in-tests
697ab62d11 i386: Disable Intel Xeon Phi tests for GCC 15 and above (BZ 31782)
c8cb4d2b86 misc: Add support for Linux uio.h RWF_NOAPPEND flag
712453634c s390x: Fix segfault in wcsncmp [BZ #31934]
7bfc35959d nptl: fix potential merge of __rseq_* relro symbols
d9d019d674 elf: Make dl-rseq-symbols Linux only
bb30bd2162 Linux: Make __rseq_size useful for feature detection (bug 31965)
dc512364e8 resolv: Allow short error responses to match any query (bug 31890)
6cad0f543c resolv: Do not wait for non-existing second DNS response after error (bug 30081)
1bed6acf50 resolv: Track single-request fallback via _res._flags (bug 31476)
0301637b99 linux: Update the mremap C implementation [BZ #31968]
f0e2114535 mremap: Update manual entry
6bb75212e6 Add mremap tests
3ac7ba61d2 Update syscall lists for Linux 6.5
9184c13681 resolv: Fix tst-resolv-short-response for older GCC (bug 32042)
059f82c3b9 Fix name space violation in fortify wrappers (bug 32052)
c005d1bd6f x86: Fix bug in strchrnul-evex512 [BZ #32078]
28f358bc42 support: Add FAIL test failure helper
99ffa84bdc stdio-common: Add test for vfscanf with matches longer than INT_MAX [BZ #27650]
87a1968a72 Make tst-ungetc use libsupport
804d3c8db7 ungetc: Fix uninitialized read when putting into unused streams [BZ #27821]
b9f72bd5de ungetc: Fix backup buffer leak on program exit [BZ #27821]
15ca66303f posix: Use <support/check.h> facilities in tst-truncate and tst-truncate64
f30501ca75 nptl: Use <support/check.h> facilities in tst-setuid3
370be85892 libio: Attempt wide backup free only for non-legacy code
4dd8641461 Add crt1-2.0.o for glibc 2.0 compatibility tests
fa4ad10406 elf: Change ldconfig auxcache magic number (bug 32231)
9423cc5387 nptl: initialize rseq area prior to registration
37ded328c4 nptl: initialize cpu_id_start prior to rseq registration
cf06772360 x86: Avoid integer truncation with large cache sizes (bug 32470)
5c9be512ee x86_64: Sort fpu/multiarch/Makefile
49016f2190 x86_64: Add log2 with FMA
b2a45f1eee x86_64: Add expm1 with FMA
c92946d9b2 x86_64: Add log1p with FMA
58822f954f x86: Check the lower byte of EAX of CPUID leaf 2 [BZ #30643]
7772f9358c elf: Fix slow tls access after dlopen [BZ #19924]
5a64f93365 x86: Only align destination to 1x VEC_SIZE in memset 4x loop
0d14bf0754 sysdeps/x86/Makefile: Split and sort tests
dc1762113d x86_64: Fix missing wcsncat function definition without multiarch (x86-64-v4)
04b8d48432 x86: Improve large memset perf with non-temporal stores [RHEL-29312]
12fec8aae5 x86/string: Fixup alignment of main loop in str{n}cmp-evex [BZ #32212]
48642ef1a5 elf: Avoid some free (NULL) calls in _dl_update_slotinfo
549e7f7c5a elf: Support recursive use of dynamic TLS in interposed malloc
c32fd59314 Fix underallocation of abort_msg_s struct (CVE-2025-0395)
650a0aaaff stdlib: Test using setenv with updated environ [BZ #32588]
f984e2d7e8 assert: Add test for CVE-2025-0395
9ca74b8ad1 AArch64: Improve generic strlen
95aa21432c AArch64: Optimize memset
5fe151d86a AArch64: Remove zva_128 from memset
3de5112326 math: Improve layout of expf data
52c2b1556f AArch64: Add SVE memset
097299ffa9 AArch64: Use prefer_sve_ifuncs for SVE memset
5a08d049dc math: Improve layout of exp/exp10 data
3be3728df2 elf: Ignore LD_LIBRARY_PATH and debug env var for setuid for static
454f24e981 support: Use const char * argument in support_capture_subprogram_self_sgid
4335cd9b58 support: Add support_record_failure_barrier
31fa0f73e2 elf: Test case for bug 32976 (CVE-2025-4802)
ca41fe44a5 x86_64: Fix typo in ifunc-impl-list.c.
ca7e32d024 elf: Fix subprocess status handling for tst-dlopen-sgid (bug 32987)
81f58dd9b7 support: Pick group in support_capture_subprogram_self_sgid if UID == 0
5a6276d97a Fix error reporting (false negatives) in SGID tests
1a0d73a625 pthreads NPTL: lost wakeup fix 2
b5c4727e59 nptl: Update comments and indentation for new condvar implementation
1fa5e51897 nptl: Remove unnecessary catch-all-wake in condvar group switch
44eaf0615d nptl: Remove unnecessary quadruple check in pthread_cond_wait
7625579f11 nptl: Remove g_refs from condition variables
6bac834c5a nptl: Use a single loop in pthread_cond_wait instaed of a nested loop
5765653697 nptl: Fix indentation
8899e89b29 nptl: rename __condvar_quiesce_and_switch_g1
39a80f4035 nptl: Use all of g1_start and g_signals
51210d6496 nptl: PTHREAD_COND_INITIALIZER compatibility with pre-2.41 versions (bug 32786)
879f0ee122 malloc: add indirection for malloc(-like) functions in tests [BZ #32366]
a637f2c42f malloc: obscure calloc use in tst-calloc
21019afe65 malloc: cleanup casts in tst-calloc
6a52d5cab0 posix: Fix double-free after allocation failure in regcomp (bug 33185)

Link: https://github.com/openwrt/openwrt/pull/19551
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-07-27 19:47:26 +02:00
Hauke Mehrtens
7230ddb06b wireless-regdb: Update to version 2025.07.10
6953f19 wireless-regdb: Update regulatory info for Indonesia (ID) for 2025
2e8214e wireless-regdb: Permit 320 MHz bandwidth in 6 GHz band for GB
a94f685 wireless-regdb: Update regulatory info for Egypt (EG) for 2024
7628ce2 wireless-regdb: Update regulatory rules for Brazil (BR) on 6GHz
4411b39 wireless-regdb: Update regulatory info for Vietnam (VN) for 2025
490f136 wireless-regdb: Update regulatory info for Estonia (EE) for 2024
c56c663 wireless-regdb: update regulatory rules for Paraguay (PY) on 6 GHz for 2025
5a8ced5 wireless-regdb: Update regulatory info for CEPT countries for 6GHz listed by WiFi Alliance
5fd8ee3 wireless-regdb: update regulatory rules for Bosnia and Herzegovina (BA) for 6 GHz
e05260a wireless-regdb: update regulatory database based on preceding changes

Link: https://github.com/openwrt/openwrt/pull/19474
(cherry picked from commit 7fe06b7f56)
Link: https://github.com/openwrt/openwrt/pull/19538
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-07-27 19:46:13 +02:00
Petr Štetiar
bfed41cc6a busybox: fix login applet on selinux
Currently the system boots up, but is unusable because pressing enter
does not provide login with error:

  login: can't get SID for root

This is happenning, because login.c passes the Linux username directly
to get_default_context(), while libselinux expects an SELinux user
identity, causing the call to fail for users without a matching SELinux
name (e.g., root) and aborting login on SELinux-enabled systems.

Fixes: #19075
Upstream-Status: Submitted [https://lists.busybox.net/pipermail/busybox/2025-April/091407.html]
Signed-off-by: Petr Štetiar <ynezz@true.cz>
Link: https://github.com/openwrt/openwrt/pull/19080
(cherry picked from commit 5809bfaaac)
Link: https://github.com/openwrt/openwrt/pull/19542
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-07-27 19:42:04 +02:00
Leo Barsky
254f6b2414 kernel: bump 6.6 to 6.6.100
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.6.100
Manually refreshed:
    823-v6.12-0003-nvmem-layouts-add-U-Boot-env-layout.patch
All other patches auto-refreshed.

Signed-off-by: Leo Barsky <leobrsky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/19514
(cherry picked from commit 05d344cb2c)
Co-authored-by: Goetz Goerisch <ggoerisch@gmail.com>
Signed-off-by: Goetz Goerisch <ggoerisch@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19533
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-07-27 19:40:40 +02:00
John Audia
01bee440ad libxml2: update to 2.14.5
Release Notes:
    https://gitlab.gnome.org/GNOME/libxml2/-/releases/v2.13.7
    https://gitlab.gnome.org/GNOME/libxml2/-/releases/v2.13.8
    https://gitlab.gnome.org/GNOME/libxml2/-/releases/v2.14.3
    https://gitlab.gnome.org/GNOME/libxml2/-/releases/v2.14.4
    https://gitlab.gnome.org/GNOME/libxml2/-/releases/v2.14.5

Fixes:
CVE-2025-32415 CVE-2025-32414 CVE-2025-6170 CVE-2025-49794 CVE-2025-49795 CVE-2025-49796

Build system: x86/64
Build-tested: x86/64-glibc
Run-tested: x86/64-glibc

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/19383
(cherry picked from commit c08c2d6eb3)
Link: https://github.com/openwrt/openwrt/pull/19486
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-07-26 23:43:53 +02:00
David Bauer
ac80abb085 wifi-scripts: correctly set basic-rates with wpa_supplicant
Correctly load the list of basic_rates from UCI. basic-rates shall be
stored as a option-list. The current code did not retrieve this list
correctly.

wpa_supplicant uses a different config option to set basic-rates
when operating in mesh-mode.

Use the correct config key and calculation for mesh-interfaces.

Signed-off-by: David Bauer <mail@david-bauer.net>
(cherry picked from commit a854d833ea)
2025-07-24 03:46:38 +02:00
Felix Fietkau
3bdd6d492e ucode: add padding to uc_resource_ext_t
Fixes misaligned allocations for ext resources

Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry picked from commit 6c22e8ef53)
2025-07-23 12:19:14 +02:00
Felix Fietkau
39972c47eb ucode: update to Git HEAD (2025-07-18)
54b00e3b1fa9 ubus: fix double registry clear on disconnect
69521b55855c ubus: fix use-after-free on deferred request reply() method
f499de690c33 Merge pull request #298 from nbd168/ubus-fixes
22e8c16d9deb debug: fix crash when passing tagged string to getinfo()
2c9eea5174d6 ubus: use ucv_resource_create_ex for connections/channels
0a4cf4b7e71a ubus: use ucv_resource_create_ex for for ubus.request resources
99ee75a69cd3 ubus: use ucv_resource_create_ex for ubus.deferred resources
f085a42b977f ubus: use ucv_resource_create_ex for objects
94ad17d13a0d ubus: use ucv_resource_create_ex for ubus.notify resources
a3fa47fdda3e ubus: use ucv_resource_create_ex for ubus.listener resources
9ab5fa869dec ubus: use ucv_resource_create_ex for ubus.subscriber resources
43dd5716db84 Merge pull request #300 from nbd168/ubus-gc
be92ebd70633 CI: debian: install cmake package
fd202fd40bd1 socket: respect port argument in sockinst.connect()
767c209b917b socket: properly handle async `connect(2)` errors in socket.connect()
37ac8f112af6 socket: improve port argument validation in sockinst.connect()
5b3b6b789b9c ubus: fix refcount issue in uc_ubus_object_notify
cdcd50ad0408 Merge pull request #305 from nbd168/ubus-fix
f682ac2f6b82 program: add bytecode version to program header flags
af411d8101b2 vm: implement PVAL opcode
afdfffb61258 vm: support initiating method calls with I_CALL/I_QCALL opcodes
5d680425db40 compiler: stop emitting I_MCALL/I_QMCALL opcodes
a616feed39eb compiler, vm: rework optional chaining and function call semantics
d29ec45ab107 Merge pull request #306 from jow-/optional-chaining-short-circuiting
0946a4fb20b8 vm: adjust JMPNT opcode behavior
6f8291f73757 compiler: improve assignment lhs expression checks
22e1346a7bda Merge pull request #308 from jow-/compiler-lhs-check-fixes
cf846c4a11d4 vm: properly handle modulo by zero
4d81e6c13506 resolv: add documentation and fix clobbering ns strings
20ee2dabd243 debian/changelog: v0.0.20250529
82426d1a02e2 Merge pull request #314 from jow-/resolv-fix313
50d303c8309d ubus: add support for automatically subscribing to objects
fdbf73da4136 Merge pull request #312 from nbd168/ubus-subscribe
5a0d21d59f88 vm: export function for converting exception to ucode value
aaf712eb4fb4 uloop: add guard() function
693af2b61b52 ubus: add guard() function

Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry picked from commit c39a09686e)
2025-07-23 12:19:14 +02:00
Felix Fietkau
628bc50eb1 udebug: update to Git HEAD (2025-07-23)
5d10084ea885 lib-ucode.c: add #define _GNU_SOURCE
a95364b41d52 udebug-cli: fix terminating uloop
c00eb9b685a8 ucode: use FILE handle for pcap output
4265167cb6e8 ucode: add error reporting to pcap_write
4a908ee731a6 udebug-cli: stop event loop on write failure
6e04f4187231 ucode: use ucv_resource_create_ex for remote rings
c297f04e1852 ucode: drop use ucv_resource_create
f207d37a1055 ucode: add support for specifying ring format
98683a94bcdd ucode: support appending array data, similar to socket.send()
a7ecd483ed38 ucode: allow calling udebug.init() multiple times
d4a4c788c416 ucode: fix allocation size of local ring meta
184706abaf50 ucode: add timestamp argument to foreach()
8442c948c193 ucode: add function for getting ring information
f4958a4c591a ucode: add const entries for enum udebug_format
14d4fec36993 udebug-cli: add logstream command
6ed8536142bb ucode: fix entries/size confusion

Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry picked from commit 7b0ce213e9)
2025-07-23 12:06:02 +02:00
Felix Fietkau
a8fb4f6f0c libubox: update to Git HEAD (2025-07-23)
b7acc8e6fd5e remove compatibility code for older json-c versions
a1acd99f2eb7 udebug: remove obsolete debug message
49056d178f42 udebug: fix issue with snapshot of remote ring

Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry picked from commit 19a327dde5)
2025-07-23 12:04:47 +02:00
Felix Fietkau
6489f3ef89 toolchain/gcc: prevent the use of LDRD/STRD on ARMv5TE
These instructions are for 64-bit load/store. On ARMv5TE, the CPU
requires addresses to be aligned to 64-bit. When misaligned, behavior is
undefined (effectively either loads the same word twice on LDRD, or
corrupts surrounding memory on STRD).

On ARMv6 and newer, unaligned access is safe.

Removing these instructions for ARMv5TE is necessary, because GCC
ignores alignment information in pointers and does unsafe optimizations
that have shown up as bugs in various places.

This patch was originally added more than 11 years ago in commit b050f87d13,
but got lost 6 years ago, when gcc 9.1 was added in 88c07c6552.

This primarily affects the kirkwood and ixp4xx targets

Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry picked from commit c1c1112006)
2025-07-22 12:05:09 +02:00
Fil Dunsky
150f181700 mediatek: add Huasifei WH3000 Pro support
**Huasifei WH3000 Pro**
Portable Wi-Fi 6 travel router based on MediaTek MT7981A SoC. MT7981B+MT7976CN+RTL8221B Dual Core 1.3GHZ with 5G modems module and PWM Fan.

**Specifications**
SoC: Filogic 820 MT7981A (1.3GHz)
RAM: DDR4 1GB
Flash: eMMC 8GB
WiFi: 2.4GHz and 5GHz with 3 antennas
Ethernet:
1x WAN (10/100/1000M)
1x LAN (10/100/1000/2500M)
USB: 1x USB 3.0 port
Two buttons: power/reset and mode (BTN_0)
LEDS: blue, red, blue+red=pink
UART: 3.3V, TX, RX, GND / 115200 8N1

**Installation via U-Boot rescue**
1. Set static IP 192.168.1.2 on your computer and default route as 192.168.1.1
2. Connect to the WAN port and hold the reset button while booting the device.
3. Wait for the LED to blink 5 times, and release the reset button.
4. Open U-boot web page on your browser at http://192.168.1.1
5. Select the OpenWRT sysupgrade image, upload it, and start the upgrade.
6. Wait for the router to flash the new firmware.
7. Wait for the router to reboot itself.

**Installation via sysupgrade**
Just flash sysupgrade file via [LuCI upgrade page](http://192.168.1.1/cgi-bin/luci/admin/system/flash) without saving the settings.

**Installation via SSH**
Upload the file to the router `/tmp` directory, `ssh root@192.168.1.1` and issue a command:
```
sysupgrade -n /tmp/openwrt-mediatek-filogic-huasifei_wh3000-pro-squashfs-sysupgrade.bin
```

**Factory MAC**
You can find your Factory MAC which is mentioned on the box at `/dev/mmcblck0p2` partition `factory` starting from `0x4`
```
dd if=/dev/mmcblk0p2 bs=1 skip=4 count=6 | hexdump -C
```

Cherry-picked from 949d0bd77a

Fixed `green` to `blue` LED in dts, added `SUPPORTED_DEVICES += huasifei,fudy-pro` - to make sysupgrade compatible with factory QWRT/Lede fork firmware.

Signed-off-by: Fil Dunsky <filipp.dunsky@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19315
(cherry picked from commit db1de8d21f)
Link: https://github.com/openwrt/openwrt/pull/19391
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-07-22 00:16:25 +02:00
Leo Barsky
f59e340e11 kernel: bump 6.6 to 6.6.99
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.6.99

All patches auto-refreshed.

Signed-off-by: Leo Barsky <leobrsky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/19448
(cherry picked from commit 3148a57758)
Co-authored-by: Goetz Goerisch <ggoerisch@gmail.com>
Signed-off-by: Goetz Goerisch <ggoerisch@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19454
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-07-20 20:13:02 +02:00
Donghyun Ko
25467b09f1 mediatek: add support for ipTIME AX3000SM
Specification
-------------
- SoC       : MediaTek MT7981BA dual-core ARM Cortex-A53 1.3GHz
- RAM       : DDR3 256Mbytes, Nanya Technology NT5CC128M16IP
- Flash     : 128Mbytes NAND Flash, ESMT F50L1G41LB
- WLAN      : MediaTek MT7976CN dual-band Wi-Fi 6
  - 2.4GHz  : b/g/n/ax, MU-MIMO
  - 5GHz    : a/n/ac/ax, MU-MIMO
- Ethernet  : 10/100/1000 Mbps x4, LAN (MediaTek MT7531AE)
              10/100/1000 Mbps x1, WAN (MT7981 internal PHY)
- UART      : 1x4 pin header on PCB
  - [J500] 3.3V, TX, RX, GND (115200, 8N1)
- Buttons   : WPS, Reset
- LEDs      : 1x Power (Amber)
              1x CPU (Amber)
              1x Wi-Fi 5GHz (Amber)
              1x Wi-Fi 2.4GHz (Amber)
              1x WAN activity (Amber)
              4x LAN activity (Amber)
- Power     : 12VDC, 1A (Center positive polarity)

MAC address
-----------
+-----------+-------------------+-----------+
| Interface | MAC               | Algorithm |
+-----------+-------------------+-----------+
| WLAN 2.4G | B0:38:6C:xx:xx:xx | label     |
| WLAN 5G   | B2:38:6C:4x:xx:xx |           |
| WAN       | B0:38:6C:xx:xx:xx | label + 1 |
| LAN       | B0:38:6C:xx:xx:xx | label + 3 |
+-----------+-------------------+-----------+
The WLAN 2.4G MAC address was found in 'Factory' partition, 0x4

Installation
------------
1. Download the *initramfs-kernel.bin file from the OpenWrt website
2. Attach UART to the router, and interrupt the boot process by pressing '0'

   If you successfully interrupt the boot process, a terminal prompt
   name should look like this:

   MT7981>

3. Connect the router(LAN port) to the PC
4. Assign the PC IP address: 192.168.0.100/24
5. Load and run the *initramfs-kernel.bin:

  tftpboot 0x46000000 initramfs-kernel.bin
  bootm

6. Upload the OpenWrt *squashfs-sysupgrade.bin to the router
7. Run 'sysupgrade -n' with the sysupgrade OpenWrt image

Signed-off-by: Donghyun Ko <nyankosoftware@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/18689
(Cherry picked from commit 1c6cb6d5be)
Link: https://github.com/openwrt/openwrt/pull/19410
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-07-19 21:02:07 +02:00
Tim Harvey
791c0ad7c4 uboot-envtools: add support for Gateworks venice
Add uboot-envtools support for Gateworks venice boards based on i.MX8M
SoC's (imx_cortexa53) which boot from and store their U-Boot env on
eMMC boot0 hardware partition.

Signed-off-by: Tim Harvey <tharvey@gateworks.com>
Link: https://github.com/openwrt/openwrt/pull/19347
(cherry picked from commit 29f7c0ef97)
Link: https://github.com/openwrt/openwrt/pull/19437
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-07-19 18:31:14 +02:00
Goetz Goerisch
1034594ded kernel: bump 6.6 to 6.6.98
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.6.98

- x86/CPU/AMD: Properly check the TSA microcode

Signed-off-by: Goetz Goerisch <ggoerisch@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19354
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-07-17 20:49:02 +02:00
Shiji Yang
05d8b931fb kernel: bump 6.6 to 6.6.97
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.6.97

Remove upstream patches:
  generic/backport-6.6/001-powerpc-kernel-Fix-pcc_save_regs-inclusion.patch [1]

Manually rebased patch:
  bcm53xx/patches-6.6/180-usb-xhci-add-support-for-performing-fake-doorbell.patch[2]

New Kconfig symbol:
  x86: enable MITIGATION_TSA [3]

All other patches are automatically refreshed.

[1] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.97&id=8a7ac2737211451b8b98657b919c4c4e0a4c0c2f
[2] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.97&id=7609899eb6b70b536123eb58eeab27c764752b82
[3] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.97&id=90293047df18caf7ed0fe566d89af0720f2dc98a

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Co-authored-by: John Audia <therealgraysky@proton.me>
Tested-by: Konstantin Demin <rockdrilla@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19317
(cherry picked from commit 04d764576b)
Co-authored-by: Goetz Goerisch <ggoerisch@gmail.com>
Signed-off-by: Goetz Goerisch <ggoerisch@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19354
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-07-17 20:49:02 +02:00
Shiji Yang
b2fcc6f9f3 kernel: bump 6.6 to 6.6.96
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.6.96

Remove upstreamed patches:
  generic/pending-6.6/650-Revert-ipv6-save-dontfrag-in-cork.patch [1]

All other patches are automatically refreshed.

[1] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.96&id=c46358d0275953b27c3d86f7a224e229f2d57d05

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Tested-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/19317
(cherry picked from commit 2d8d11a42c)
Signed-off-by: Goetz Goerisch <ggoerisch@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19354
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-07-17 20:49:02 +02:00
Felix Fietkau
787072906d build: ipkg-remove: fix source name / package confusion, optimize
The script always gets passed the package name, not the source name.
Optimize for the default case where the package name matches the
filename prefix.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry picked from commit 471fd0a502)
2025-07-17 10:46:39 +02:00
Felix Fietkau
37233122a7 ubus: update to Git HEAD (2025-07-02)
27839f854a58 ubusd: make txq_len field signed
b35b2bc63e8e ubusd: treat EACCES on write like EAGAIN
713e9d19b2b6 ubusd: retry write on EINTR
8bb523ab20e0 ubusd: fix txq_len accounting
b1b783c74742 ubusd: add another tx attempt on enqueueing the first message for a client
5952b48e251c ubusd: do not call socket callback from ubus_msg_send

Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry picked from commit 90cd8640bd)
(cherry picked from commit d9cd67b542)
2025-07-17 10:45:15 +02:00
Antony Kolitsos
49fdb75c7b mbedtls: update to 3.6.4
This release includes fixes for security issues.

Mbed TLS 3.6 is a long-term support (LTS) branch. It will be supported with bug-fixes and security fixes until at least March 2027.

Security Advisories

For full details, please see the following links:

    Race condition in AESNI support detection [1]
    Heap buffer under-read when parsing PEM-encrypted material [2]
    Unchecked return value in LMS verification allows signature bypass [3]
    Out-of-bounds read in mbedtls_lms_import_public_key() [4]
    Timing side-channel in block cipher decryption with PKCS#7 padding [5]
    NULL pointer dereference after using mbedtls_asn1_store_named_data() [6]
    Misleading memory management in mbedtls_x509_string_to_names() [7]

[1] https://mbed-tls.readthedocs.io/en/latest/security-advisories/mbedtls-security-advisory-2025-06-1/
[2] https://mbed-tls.readthedocs.io/en/latest/security-advisories/mbedtls-security-advisory-2025-06-2/
[3] https://mbed-tls.readthedocs.io/en/latest/security-advisories/mbedtls-security-advisory-2025-06-3/
[4] https://mbed-tls.readthedocs.io/en/latest/security-advisories/mbedtls-security-advisory-2025-06-4/
[5] https://mbed-tls.readthedocs.io/en/latest/security-advisories/mbedtls-security-advisory-2025-06-5/
[6] https://mbed-tls.readthedocs.io/en/latest/security-advisories/mbedtls-security-advisory-2025-06-6/
[7] https://mbed-tls.readthedocs.io/en/latest/security-advisories/mbedtls-security-advisory-2025-06-7/

Signed-off-by: Antony Kolitsos <zeusomighty@hotmail.com>
Link: https://github.com/openwrt/openwrt/pull/19291
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 2c8a433cd2)
Link: https://github.com/openwrt/openwrt/pull/19324
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-07-10 20:49:17 +02:00
Hauke Mehrtens
f68c3e5057 openssl: Update to version 3.0.17
This release incorporates the following bug fixes and mitigations:

    Miscellaneous minor bug fixes.

Link: https://github.com/openwrt/openwrt/pull/19325
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-07-10 20:47:58 +02:00
cheng wang
0ec28e59a8 mediatek: add support for Cudy TR3000 256MB v1 flash version
This device is similar to the Cudy TR3000 v1 128MB version.
The difference is that the flash memory is 128mb and the other is 256mb

Hardware:
 - SoC: MediaTek MT7981B
 - CPU: 2x 1.3 GHz Cortex-A53
 - Flash: 256 MiB SPI NAND
 - RAM: 512 MiB
 - WLAN: 2.4 GHz, 5 GHz (MediaTek MT7976CN, 802.11ax)
 - Ethernet: 1x 10/100/1000/2500 Mbps RTL8221B WAN, 1x10/100/1000 Mbps MT7981 LAN
 - USB 3.0 port
 - Buttons: 1 Reset button, 1 slider button
 - LEDs: 1x Red, 1x White
 - Power: 5 VDC, 3 A

Installation:
Cudy has distributed intermediate firmware to make installation easier
1. Go to [Cudy CN official website](https://www.cudy.com/zh-cn/pages/download-center/tr3000-1-0) and download the intermediate firmware
2. Upgrade the intermediate firmware on the page
3. Visit the intermediate firmware 192.168.1.1 webpage and use the sysupgrade image to update

other:
If you fail to flash the device, you can use TFTP to flash back to the original firmware.
1. Ask Cudy CN official customer service for the original firmware
2. With the router off, press the RESET button. While the router is turning on, the button should continue to be pressed for at least 5 seconds.
3. A u-boot shell will automatically open.
4. Connect to LAN and set your IP to 192.168.1.88/24. Configure a TFTP server and an recovery.bin firmware file.

Signed-off-by: cheng wang <typedelta@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/19167
(cherry picked from commit 594da824a4)
Link: https://github.com/openwrt/openwrt/pull/19348
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-07-10 20:45:19 +02:00
Valeriy Manzhos
32b0c89947 ath79: enable USB by default on hAP ac
Due to a bug, USB is not powered on after boot on hAP ac.
This prevents extroot configurations from working as overlayfs is mounted
before USB device can be powered on. This commit fixes this by enabling USB
in devicetree.

Related discussion links:
- https://forum.openwrt.org/t/usb-power-is-off-on-boot/229007

---

Extroot configuration requires the USB to be powered on before
preinit_main/80_mount_root. Probably the simplest approach is to enable
it in the devicetree. Another approach would be to add a script into
/lib/preinit that will power on USB via /sys/class/gpio/usb-power/value
E.g.
cat /lib/preinit/79_power_on_usb
do_power_on_usb(){
  echo '1' > /sys/class/gpio/usb-power/value
}
boot_hook_add preinit_main do_power_on_usb

Signed-off-by: Valeriy Manzhos <manzhos.va@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19149
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit f7dba4ebbc)
Link: https://github.com/openwrt/openwrt/pull/19334
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-07-08 09:41:44 +02:00
Dim Fish
5096c7624f mediatek: spinand: force update_cache_variants to use reset for Foresee NAND
Force update_cache_variantsvariants to use reset for Foresee NAND with bad blocks.

Tested on Xiaomi AX3000T + F35SQA001G with bad blocks and without bad blocks

Signed-off-by: Dim Fish <dimfish@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/17963
Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
(cherry picked from commit edc7cb9104)
[drop patch for linux kernel 6.12]
Fixes: https://github.com/openwrt/openwrt/issues/17962
Signed-off-by: Mikhail Zhilkin <csharper2005@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19297
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-07-06 17:35:16 +02:00
Tianling Shen
95c9f6e326 mediatek: add ubootmod layout for cudy tr3000 v1
This allows us to use the full size of nand, which increases ubi size
from 64M to 122.25M.

If you are at factory firmware, please refer commit 63b8d98dd0 ("mediatek: add support for Cudy TR3000 v1")
to boot into OpenWrt initramfs (stock layout).

Flash instructions:
1. Login into the device and backup everything, especially 'Factory' part.
1. Unlock mtd partitions:
   opkg update && opkg install kmod-mtd-rw
   insmod mtd-rw i_want_a_brick=1
3. Write new BL2 and FIP
   mtd write openwrt-mediatek-filogic-cudy_tr3000-v1-ubootmod-preloader.bin BL2
   mtd write openwrt-mediatek-filogic-cudy_tr3000-v1-ubootmod-bl31-uboot.fip FIP
4. Set static IP on your PC:
   IP 192.168.1.254/24, GW 192.168.1.1
5. Serve OpenWrt initramfs image using TFTP server.
6. Cut off the power and re-engage, wait for TFTP recovery to complete.
7. After OpenWrt has booted, perform sysupgrade.

Tested-by: Yangyu Chen <cyy@cyyself.name>
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
(cherry picked from commit 6f8c58bfd8)
[sync uboot defconfigs with 24.10 branch, change apk to opkg]
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
Link: https://github.com/openwrt/openwrt/pull/18945
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-07-06 17:17:39 +02:00
Chukun Pan
5889aae07a rockchip: backport PCIe MSI fixes for RK356x SoC
Backport GIC ITS support for RK356x SoC, which fixes long-standing
MSI/MSI-X bug. (Previously MSI-X could only work on one PCIe node)

e.g. [    7.250882] r8125 0002:01:00.0: no MSI/MSI-X. Back to INTx.

Tested on Radxa E25 with kmod-r8125-rss driver.

Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn>
Link: https://github.com/openwrt/openwrt/pull/18800
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 6b99c5d21e)
Link: https://github.com/openwrt/openwrt/pull/19272
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-07-06 17:03:31 +02:00
Chukun Pan
ccc61439a3 rockchip: replace RK356x RNG patch with upstream
Replace RK356x RNG patch with upstream version to
add the tag flag them as upstreamed.

Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn>
Link: https://github.com/openwrt/openwrt/pull/18800
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit cca80986b5)
Link: https://github.com/openwrt/openwrt/pull/19272
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-07-06 17:03:31 +02:00
Chukun Pan
6becf1877e rockchip: armv8: Refresh kernel config
Run 'make kernel_oldconfig' to get an up-to-date config.

Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn>
Link: https://github.com/openwrt/openwrt/pull/18800
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit e66437a1ea)
Link: https://github.com/openwrt/openwrt/pull/19272
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-07-06 17:03:31 +02:00
Thibaut VARÈNE
ad765d3cc4 mt76: fix system recovery routine for MT7915
These patches are part of an mt76 update in main branch.

Link: https://github.com/freifunk-gluon/gluon/pull/3436

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
Link: https://github.com/openwrt/openwrt/pull/19239
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-07-06 16:53:42 +02:00
John Audia
f754de7e30 kernel: bump 6.6 to 6.6.95
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.6.95

Removed upstreamed:
 backport-6.6/201-v6.16-mips-Add-std-flag-specified.patch[1]
 mvebu/patches-6.6/0004-v6.16-pinctrl-armada-37xx-propagate-error-from-armada_37xx.patch[2]
 mvebu/patches-6.6/0005-v6.16-pinctrl-armada-37xx-propagate-error-from-armada_37xx.patch[3]
 mvebu/patches-6.6/0006-v6.16-pinctrl-armada-37xx-propagate-error-from-armada_37xx.patch[4]
 mvebu/patches-6.6/0007-v6.16-pinctrl-armada-37xx-propagate-error-from-armada_37xx.patch[5]
 gemini/patches-6.6/0005-net-ethernet-cortina-Use-TSO-also-on-common-TCP.patch [6]

Manually refreshed:
 bcm27xx/patches-6.6/950-0092-MMC-added-alternative-MMC-driver.patch
 bcm27xx/patches-6.6/950-0678-fbdev-Allow-client-to-request-a-particular-dev-fbN-n.patch [7]

All other patches automatically rebased.

1. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.95&id=231f6a1de15b3f62eb8d6163a8b1bc5935025c69
2. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.95&id=ae48bc0b8be8786fd0ceab4b5a95c09b5aa93816
3. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.95&id=8a15a5438c5816a1003b88ce20f25ccc92909ee7
4. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.95&id=02c966a8869becb29282403540c88ba33e19c347
5. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.95&id=14a26f6692062a529b612420adb6c0b9290b25d3
6. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.95&id=a37888a435b0737128d2d9c6f67b8d608f83df7a
7. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.95&id=0909b2b49c4546a7a08c80f53d93736b63270827

Build system: x86/64
Build-tested: flogic/xiaomi_redmi-router-ax6000-ubootmod, ramips/tplink_archer-a6-v3, x86/64
Run-tested: flogic/xiaomi_redmi-router-ax6000-ubootmod, ramips/tplink_archer-a6-v3, x86/64

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/19248
(cherry picked from commit 1831966406)
Co-authored-by: Goetz Goerisch <ggoerisch@gmail.com>
Co-authored-by: Hauke Mehrtens <hauke@hauke-m.de>
Signed-off-by: Goetz Goerisch <ggoerisch@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19265
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-07-06 14:51:08 +02:00
Kazuhiro Ito
4a18bb1056 x86: 64: Enable PCI MMCONFIG
Some devices can't boot since kernel 6.6 without PCI MMCONFIG.

Fixes: https://github.com/openwrt/openwrt/issues/18228
Fixes: https://forum.openwrt.org/t/openwrt-24-10-x86-64-boot-hangs-after-pci-nvme-initialization/229086
Link: https://github.com/openwrt/openwrt/pull/19256
Signed-off-by: Kazuhiro Ito <kzhr@d1.dion.ne.jp>
Link: https://github.com/openwrt/openwrt/pull/19262
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-06-30 11:58:32 +02:00
Marius Durbaca
e876f7bc62 mediatek: add support for Zbtlink ZBT-Z8102AX v2
Specifications:
SoC: MediaTek MT7981B
RAM: 1024MiB
Flash: SPI-NAND 128 MiB
Switch: 1 WAN, 4 LAN (Gigabit)
USB: two M.2 slots for 5G modems via USB 3.0 hub, external USB 3.0 port
Buttons: Reset, Mesh
Power: DC 12V 1A
WiFi: MT7976CN
UART: 115200n8
UART Layout:
VCC-RX-TX-GND

Installation:
1. Power down the router and hold in the Reset button.
2. While holding in the button power up the router again.
3. Hold the button in for 10 seconds and then release.
4. Use your browser to go to 192.168.1.1
5. If you see a GUI that is for flashing firmware then you have the V2 model.
	If there is no GUI and the router continues to boot up normally
	you have the V1 model.
6. Now use the V2 sysugrade file.

Note: Recovery GUI it can be used to recover from an incorrect firmware flash.

Based on patches adding support for this device by Yannick Chabanois (openmptcprouter)
and Dairyman (ofmodemsandmen)

Signed-off-by: Marius Durbaca <mariusd84@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/18514
(cherry picked from commit c908fc7d95)
Link: https://github.com/openwrt/openwrt/pull/19216
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-06-29 15:24:37 +02:00
Hauke Mehrtens
aaee6bfb06 kernel: Add missing config option
This broke the armsr/armv8 build.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
Link: https://github.com/openwrt/openwrt/pull/19200
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit a944a6d6b1)
2025-06-29 15:21:25 +02:00
John Audia
2f40059708 kernel: bump 6.6 to 6.6.94
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.6.94

Removed upstreamed:
	generic/backport-6.6/421-01-v6.16-spi-bcm63xx-spi-fix-shared-reset.patch[1]
	generic/backport-6.6/421-02-v6.16-spi-bcm63xx-hsspi-fix-shared-reset.patch[2]
	generic/backport-6.6/725-01-v6.16-net-dsa-tag_brcm-legacy-fix-pskb_may_pull-length.patch[3]
	mvebu/patches-6.6/0001-v6.16-pinctrl-armada-37xx-use-correct-OUTPUT_VAL-register-.patch[4]
	mvebu/patches-6.6/0002-v6.16-pinctrl-armada-37xx-set-GPIO-output-value-before-set.patch[5]

Added new back-port:
	generic/backport-6.6/001-powerpc-kernel-Fix-pcc_save_regs-inclusion.patch[6]

Manually refresh:
	bcm27xx/patches-6.6/950-0624-drm-vc4-tests-Drop-drm-parameter-for-vc4_find_crtc_f.patch

All other patches automatically rebased.

1. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.94&id=29abb7fc82443bee273ba4623ce319bf7ba1d43d
2. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.94&id=59d5f3134b5c265df233b7f385bbe718191411be
3. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.94&id=2e02edb66427e3b8752e1f3dd3cfc1bef3f2357b
4. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.94&id=39ed85ae485d991ffb24d25629a679c0b22e2d8f
5. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.94&id=8f0f45a312151a52aae920a091ea4b454ac97caf
6. Addresses a build failure for pcc

Build system: x86/64
Build-tested: flogic/xiaomi_redmi-router-ax6000-ubootmod, ramips/tplink_archer-a6-v3, x86/64
Run-tested: flogic/xiaomi_redmi-router-ax6000-ubootmod, ramips/tplink_archer-a6-v3, x86/64

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/19183
(cherry picked from commit 836a4cc6d3)
Signed-off-by: Goetz Goerisch <ggoerisch@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19209
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-06-29 15:19:56 +02:00
Tim Harvey
009aad8a02 imx: venice: disable PCI AER
As a workaround to an issue causing hang during PCI enumeration on
imx8mp with a specific PCI switch, disable PCI AER.

Signed-off-by: Tim Harvey <tharvey@gateworks.com>
Link: https://github.com/openwrt/openwrt/pull/19218
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-06-25 21:02:35 +02:00
Tim Harvey
fa34d9c511 imx: venice: add dt overlay support
Enable DT overlay support:
 - add dt-overlay to board features
 - add DEVICE_DTS_OVERLAYS
 - update the boot script to resize before applying each overlay

Signed-off-by: Tim Harvey <tharvey@gateworks.com>
Link: https://github.com/openwrt/openwrt/pull/19218
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-06-25 21:02:35 +02:00
Tim Harvey
7bf3b29a56 imx: kernel: backport additional upstream patches
Backport some additional upstream patches to resolves some issues when using
dt overlays on gw72xx-0x and gw73xx-0x:
 - 6.13-arm64-dts-imx8mm-venice-gw73xx-remove-compatible-in-overlay-files.patch
 - 6.12-arm64-dts-imx8mm-venice-gw72xx-remove-compatible-in-overlay-files.patch

Signed-off-by: Tim Harvey <tharvey@gateworks.com>
Link: https://github.com/openwrt/openwrt/pull/19218
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-06-25 21:02:35 +02:00
Hauke Mehrtens
5ff7149a08 OpenWrt v24.10.2: revert to branch defaults
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-06-23 23:32:10 +02:00
Hauke Mehrtens
bb59922007 OpenWrt v24.10.2: adjust config defaults
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-06-23 23:32:07 +02:00
Mario Andrés Pérez
d9340319c6 ramips: mt7621: include uboot-envtools in some missed devices
Add uboot-envtools (removing -uboot-envtools) to devices which were
missed in the commit 79bd017 ("ramips: mt7621: add uboot-envtools to
all devices")

- Mi Router 3G
- Mi Router AC2100

While at here remove two redundant entries from devices which were added
just after the referenced commit 79bd017 and did not account for the
new DEFAULT_PACKAGES member:

- SNR-CPE-ME1
- SNR-CPE-ME2-SFP

Fixes: 79bd017 ("ramips: mt7621: add uboot-envtools to all devices")
Fixes: https://github.com/openwrt/openwrt/issues/18960

Signed-off-by: Mario Andrés Pérez <mapb_@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/19012
(cherry picked from commit 6dffaf9316)
Link: https://github.com/openwrt/openwrt/pull/19213
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-06-23 22:40:36 +02:00
Christian Schmidbauer
63064db765 ipq806x: fix Extreme Networks AP3935 LAN/WAN ports
This commit changes LAN1 to be WAN and LAN2 to be LAN, like all other
dual port Extreme Networks devices.

This partially reverts commit 84a489b7cf

Signed-off-by: Christian Schmidbauer <github@grische.xyz>
(cherry picked from commit 710ec82367)
2025-06-22 13:40:28 +02:00
Christian Schmidbauer
394697b7e4 ipq806x: fix Extreme Networks AP3935 LAN LED order
Fixes LAN LED "1" to show activity of LAN1 and LAN LED "2" to show
activity of LAN2, not vice versa.

Signed-off-by: Christian Schmidbauer <github@grische.xyz>
(cherry picked from commit f02e614f50)
2025-06-22 13:40:28 +02:00
Hauke Mehrtens
05d243637a kernel: Fix IPv6 UDP fragmentation regression
Fixes a IPv6 UDP fragmentation regression introduced in v6.6.93.

Fixes: https://github.com/openwrt/openwrt/issues/19198
Link: https://github.com/openwrt/openwrt/pull/19199
(cherry picked from commit f62c33bc4a)
Link: https://github.com/openwrt/openwrt/pull/19201
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-06-22 13:36:30 +02:00
David Bauer
eee14dd6db wifi-scripts: add missing mesh_nolearn
Add the missing mesh_nolearn option in order to make it work.

Signed-off-by: David Bauer <mail@david-bauer.net>
2025-06-20 23:51:20 +02:00
Felix Fietkau
d848c2790d hostapd: fix generating own neighbor report for dynamically added/changed interfaces
hostapd_neighbor_set_own_report is normally called from interface setup only.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry picked from commit 9850052190)
2025-06-20 14:58:29 +02:00
Felix Fietkau
ba25b41913 hostapd: fix dealing with mac address changes for the primary BSS
Ensure that hapd->own_addr is set properly, since hostapd_setup_bss
only handles it for secondary BSS interfaces

Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry picked from commit 3ebf110711)
2025-06-20 14:58:28 +02:00
Josef Schlehofer
989b12999c perf: disable slang support
libs/slang2 is getting picked up from the packages feed, if the slang2
is compiled first and then if you try to compile perf, it fails
due to unmet dependency.

Fixes:
Package perf is missing dependencies for the following libraries:
libslang.so.2

Signed-off-by: Josef Schlehofer <pepe.schlehofer@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19123
(cherry picked from commit 764576eb5b)
Link: https://github.com/openwrt/openwrt/pull/19166
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-06-17 23:36:56 +02:00
Roland Reinl
f50551dd18 mediatek: filogic: add support for Cudy WR3000E v1
The WR3000E has the same board layout as the WR3000S. Differences:
- Different flash chip
- LEDs with red/blue colour intead of white

Hardware:
- MediaTek MT7981 WiSoC
- 256MB DDR3 RAM
- 128MB SPI-NAND (F50L1G41LB)
- MediaTek MT7981 2x2 DBDC 802.11ax 2T2R (2.4 / 5)

MAC Addresses in OEM firmware:
- There is one on the label, e.g. AA:BB:CC:DD:EE:FF
- WLAN (2.4G) uses the same as on the label
- WLAN (5G) is the one on the label but
  - first byte (e.g. AA) + 2
  - fourth byte (e.g. DD) - 0x40
- WAN is the one on the label + 1
- LAN is the one on the label

MAC Addresses in OpenWrt:
- Same handling as in WR3000s is used

GPIO:
- 2 Buttons (all low active):
  - WPS on GPIO 0
  - Reset on GPIO 1
- 6 LEDs (all low active):
  - Power: Blue on GPIO 8, no red LED
  - WPS: Blue on GPIO 10, Red on GPIO 4
  - Internet: Blue on GPIO 11, no red LED
  - LAN: Blue on GPIO 9, Red on GPIO 5
  - WiFi 2.4G: Blue on GPIO 6, no red LED
  - WiFi 5G: Blue on GPIO 7, no red LED

Disassembly:
- Remove the 4 screws at the bottom of the case
- Cover is clipped to the bottom part of the case with clips in the front and the back

UART:
- UART pins are accessible on the bottom of the board
- The connector with the square shape is TX
- Pins: [ ] TX, ( ) RX, ( ) GND, ( ) VCC
- Settings: 115200 8N1 3.3V

Migration to OpenWrt via OEM firmware:
- There should be a migration image available from Cudy as soon as there is official OpenWrt support
- Download the migration image via OEM web interface
- After flashing, OpenWrt is accessible via 192.168.1.1
- Flash the official OpenWrt image

Migration to OpenWrt using TFTP:
- Connect UART as described above
- Press the reset button while powering on the device
- U-Boot will now try to load a recovery.bin via TFTP, this must be ignored
- After detecting a timeout, the U-Boot console is available via UART
- Set up a TFTP server on IP 192.168.1.88 and connect it to one of the LAN ports
- Provide the initramfs image via TFTP as cudy3000e.bin
- Run the following command in U-Boot: tftpboot 0x46000000 cudy3000e.bin; bootm 0x46000000
- OpenWrt initramfs image is now booting and accessible via 192.168.1.1
- Flash the sysupgrade image

Revert back to OEM:
- Set up a TFTP server on IP 192.168.1.88 and connect it to one of the LAN ports
- Provide the Cudy firmware via TFTP as recovery.bin
- Press the reset button while powering on the device
- Recovery process will start now
- After recovery is done, the OEM firmware is available at 192.168.10.1 again

Signed-off-by: Roland Reinl <reinlroland+github@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/18609
(cherry picked from commit 300335f1ff)
Link: https://github.com/openwrt/openwrt/pull/19063
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-06-17 23:32:18 +02:00
Roland Reinl
0254415769 mediatek: Create common DTSI for WR3000H and WR3000S
This change moves common elements of the WR3000H and the WR3000S to mt7981b-cudy-wr3000-nand.dtsi.
This will simplify adding of new similar devices, for exapmle WR3000E.

Signed-off-by: Roland Reinl <reinlroland+github@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/18619
(cherry picked from commit 54febbc55b)
Link: https://github.com/openwrt/openwrt/pull/19124
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-06-17 23:06:01 +02:00
Juan Pedro Paredes Caballero
72529db50e mediatek: filogic: fix 2.5G phy compatible for WR3000H
Following the initial support of the Cudy WR3000H with PHY C22 for the 2.5G WAN
interface, several improvements fixing issues with RealTek RTL8221B PHYs have
been merged.
Therefore we can now bring the DT in line with other equipment and declare the
2.5G WAN PHY as C45.

Fixes: 9d66b8b ("mediatek: filogic: Add support for cudy wr3000h")
Signed-off-by: Juan Pedro Paredes Caballero <juanpedro.paredes@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/17739
[reword commit description]
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
(cherry picked from commit dcc5587374)
Link: https://github.com/openwrt/openwrt/pull/19124
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-06-17 23:06:01 +02:00
Hauke Mehrtens
197c6ee66c mediatek: filogic: Cudy WR3000H: Fix SUPPORTED_DEVICES
Fix the name used for the transition image from Cudy.
This should make it possible to use the cudy transition image.

Fixes: 9d66b8b312 ("mediatek: filogic: Add support for cudy wr3000h")
Link: https://github.com/openwrt/openwrt/pull/17652
(cherry picked from commit 0f8a5a5fd6)
Link: https://github.com/openwrt/openwrt/pull/19124
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-06-17 23:06:01 +02:00
Juan Pedro Paredes Caballero
fdbbb8415f mediatek: filogic: Add support for cudy wr3000h
The manufacturer Cudy usually releases signed openwrt firmware, to
facilitate the migration from the proprietary version to the official
versions of openwrt. In contact with the manufacturer tells me that only
releases the firmware of the WR3000H if and only if
there is an official version. With this proposal I pretend to have an
initial operative version so that they do their part, and facilitate to
the users the possibility of using openwrt. In the present state, it is
only possible to use this firmware by uploading and installing it with
UART connection.

AX3000 2.5G Dual Band Wi-Fi 6 Mesh Router (WR3000H)

Hardware
--------
MediaTek MT7981 WiSoC
256MB DDR3 RAM
128MB SPI-NAND (XMC XM25QH128C)
MediaTek MT7981 2x2 DBDC 802.11ax 2T2R (2.4 / 5)
4 LAN MediaTek MT7531 PHY
1 WAN RTL8221B-VB-CG 2.5Gbps PHY (C22)
2 Radios MT7976CN
UART: 115200 8N1 3.3V

MAC:
LAN MAC: label mac
WAN MAC: label mac + 1
2.4G MAC: label mac
5G MAC: label mac + 1 with LA bit set

Installation
------------

1. Connect to the serial port as described in the "Hardware" section.

2. Power on the device + press reset pin. Keep pressing reset pin to
   enter the U-Boot shell (The recovery.bin image load process must fail).

3. Download the OpenWrt initramfs image. Place it on an TFTP server
   connected to the Cudy LAN ports. Make sure the server is reachable at
   192.168.1.88. Rename the image to "cudy3000h.bin"

4. Download and boot the OpenWrt initramfs image.

   $ tftpboot 0x46000000 cudy3000h.bin; bootm 0x46000000

5. IMPORTANT: Make backup from original firmware. System -> Backup
   /Flash Firmware -> Save mtdblock contents. All mtdblock one by one,
keep unaltered (BL2, u-boot-env, Factory, bdinfo, FIP, and ubi).

6. Transfer the OpenWrt sysupgrade image to the device using scp.
   Install with sysupgrade.

Warning for BL2 and U-BOOT developers
-------------------------------------
The nand partition layout from vendor is slightly diferent from "standard".
The FIP partition starts at 0x3c0000 be carefull with BL2 to BL31.
The UBI partition start at 0x5c0000 be carefull.
DO NOT OVERWRITE bdinfo partition it contains hardware MAC definition
Layout is start-end (not start size)
  - 0x000000000000-0x000007800000 : "nmbm0"
          - 0x000000000000-0x000000100000 : "bl2"
          - 0x000000100000-0x000000180000 : "u-boot-env"
          - 0x000000180000-0x000000380000 : "factory"
          - 0x000000380000-0x0000003c0000 : "bdinfo"
          - 0x0000003c0000-0x0000005c0000 : "fip"
          - 0x0000005c0000-0x0000045c0000 : "ubi"
ALLWAYS for U-BOOT operations check this
setenv mtdids nmbm0=nmbm0
setenv mtdparts nmbm0:1024k(bl2),512k(u-boot-env),2048k(factory),256k(bdinfo),2048k(fip),65536k(ubi)

Signed-off-by: Juan Pedro Paredes Caballero <juanpedro.paredes@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/17458
(cherry picked from commit 9d66b8b312)
Link: https://github.com/openwrt/openwrt/pull/19124
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-06-17 23:06:01 +02:00
George Sapkin
a52a1387e0 tools/expat: bump to 2.7.1 to fix several CVEs
Addresses CVE-2024-8176 and CVE-2024-50602.

Changelog: https://github.com/libexpat/libexpat/blob/R_2_7_1/expat/Changes
Fixes: https://github.com/openwrt/packages/issues/26255
Fixes: https://github.com/advisories/GHSA-9hcv-xw76-m4h6
Fixes: https://github.com/advisories/GHSA-79wf-qgrg-2p6c
Signed-off-by: George Sapkin <george@sapk.in>
Link: https://github.com/openwrt/openwrt/pull/18421
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 14a88ba520)
Link: https://github.com/openwrt/openwrt/pull/19079
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-06-17 12:03:04 +02:00
Russell Senior
d45e94264f tools/patch: bump version to v2.8
drop upstream patches

  $ git log --no-merges --oneline v2.7.6..v2.8
  48ceda8 Version 2.8
  b3d0c93 Regression in commit abe92e8010ab affecting MariaDB tests
  29fced6 Count traditional diff pattern lines correctly
  b5d2124 patch: fix --no-backup-if-mismatch regression
  86ac7e2 Fix dodgy assert with side-effects in insert_cached_dirfd
  7d87652 Declare an expected test failure on Haiku.
  86baf97 build: update gnulib submodule to latest
  1ba2c1b Fix two test failures on Haiku.
  1da6bf8 Check for newlines only when creating a file name
  30ee610 Gnulib renamed some modules
  6dbc381 maint: update bootstrap from gnulib
  05ac924 build: update gnulib submodule to latest
  95e0092 maint: make update-copyright
  5bac274 Set --no-backup-if-mismatch when in --posix mode
  910fecf Add missing feature tests to the test suite
  be8b3c6 Disable release-prep
  c61485b Fix "make release" to handle alpha releases
  499916f Add announce-gen module for "make release"
  adb1ebc Pacify gcc -fsanitize=address
  6bdae94 Fix memory leak when malformed unidiff patch
  72a146c Port to clang address sanitizer
  e2e6820 Refactor argc+argv processing
  606c091 Omit needless get_some_switches code
  ee3cc40 Revert "Remove obsolete require_gnu_diff function"
  8cae4fc Remove obsolete require_gnu_diff function
  164b529 savebuf can return a null pointer
  91c1e4f Spelling fixes
  a03e1ba Port other reject-format test to non-GNU diff
  9ba5eb0 Don’t be fooled by NUL bytes in diff directives
  79dd5e7 Don’t be fooled by "\000" in file name
  8492a6a Port to quasi-GNU diff
  f6f2c6f In previous patch, make w_q static
  0525681 Pacify -Wunterminated-string-initialization
  301411d Spelling fixes
  4615206 Remove double semicolon
  923e0ef Prefer angle bracket headers
  5d17ca0 Update more old copyright notices
  5f4edd3 Simplify memory allocation of files to delete
  802511c Report patch read errors more immediately
  a93b50d Port fflush usage to OpenBSD 7.5
  55e224b Update old copyright notices
  33a7fd8 Fix gl_gcc_warnings typo in ‘configure’
  2313b37 build: update gnulib submodule to latest
  37fec39 Remove some dependencies no longer needed
  cc87173 Update NEWS as per recent changes
  7887622 Update POSIX citations
  18f4dd6 Use “Gruenbacher” in international contexts
  638675c Adjust libs to match recent Gnulib
  53400a1 Pacify clang -Wbitwise-conditional-parentheses
  e8e1bcb Remove “support” for nested critical sections
  b963510 Simplify critical section code in util fns
  85949fb Shrink critical sections
  448ff9b Defer signals by hand with sigatomic_t
  b95a603 output_file_later avoid a malloc+free pair
  2663228 Defend against closed stdin/stdout/stderr
  fc77964 Stop using Gnulib ‘execute’ module
  470699c Move defer_signals up
  f696e4e Make sigs, NUM_SIGS local
  4d3a4ab Rename block_signals
  b3bb925 Trade a bit of space for time in parse_c_string
  070d859 Allocate first patchbuf statically
  f46a90f Use bigger buffer size by default
  2e64cfd Preinitialize fatal_act.sa_hander
  45de0d9 Prefer EXIT_SUCCESS etc. to literal integers
  82c4940 Fix some signal handling races
  eceea61 Fix --set-utc TZ setting
  9c55d3f Improve logic for when rename removes source
  61c72f0 Fix signal race when renaming file
  705c9bc Simplify traverse_another_path via last_component
  77f21a6 Stop using Gnulib dirname module
  fe8ffd9 Fix implausible overflow when reading symlinks
  5e84bda Access checks should use effective, not real
  8d4ca49 Don’t assume AT_FDCWD != -1
  fe5d4a0 Copy input to output attributes via fd if possible
  ca4c431 Simplify timestamp epoch checking
  0ad4347 Check for ftello failures
  c49a16d Remove format_linenum
  22efdee Fix "with multiple words" line number
  5a70a1b Drop Plan B
  c0d465f Prefer ximemdup0 to xmemdup0
  b91aab2 Refactor ifetch API
  55c8a5c Do not attempt huge I/Os
  e0e121e Use outfd when setting file attributes
  241e57e Don’t assume Linux-like S_IFREG
  0f8c628 Use STDOUT_FILENO etc
  f2c3676 Fix unlikely glitch with ed diffs
  cec6407 Use fds to copy attrs in create_backup_copy
  6b7b01b Be more careful about (time_t) -1
  0433553 X == -1 → X < 0
  0a66dee Let set_file_attributes use fds not names
  36ff2c9 Port to narrow unsigned uid_t
  3951496 Check for output errors more systematically
  6429630 Report input error right away
  03cb187 Simplify EOF testing
  cc7cde7 Prefer other types to ‘int’
  4c6650b Detect unlikely integer overflow in size calcs
  abe92e8 Prefer idx_t, ptrdiff_t to lin
  30449e2 Fix compatibility issue with blanks in patches
  9228a8c pch_swap return type cleanup
  c1c438d Fix unlikely int overflow in hunk counts
  5d3f41f Use char for char in plan_a
  fb056f2 Cache cwd_is_root dev, ino
  84b5f34 Avoid ‘unsigned’ in safe.c
  d2e113e Simplify get_sha1
  f73718b Avoid casts in patch.c
  79eef3e Prefer idx_t in util.c
  11588d0 Prefer idx_t in pch.c
  e16037d Prefer idx_t in patch.c
  388926f Prefer idx_t in list.h
  3582fdb Prefer idx_t in inp.c
  4a47c00 build: update gnulib submodule to latest
  4f8c4b8 Don’t limit strip counts etc. to INT_MAX
  0a810b6 Fix unlikely integer overflows in patch.c
  bac3b6d Fix unlikely integer overflows in pch.c
  8fb784b Fix unlikely integer overflows in inp.c
  e10f3ca Promote minmax.h to common.h
  57e2165 Avoid some memory allocation by not using ‘const’
  eb18b39 Remove unnecessary char * casts in inp.c
  d60cb72 Pacify gcc -Wunused-parameter when !USE_XATTR
  05ef886 Pacify gcc -Wunused-parameter when !USE_XATTR
  1f8d192 maint: stop using alloca
  ba92722 Don’t assume O_RDONLY == 0
  0f98e03 Avoid syscall when nested signal block
  1235ccc Add signal comment
  43ee674 build: update gnulib submodule to latest
  e381947 Update NEWS, README-prereq
  2c2a83b Omit _Noreturn when easy
  a13c2ea Replace __attribute__ with attribute.h
  6eb2d13 Switch from ctype.h to c-ctype.h
  d1a6847 Simplify warning configuration
  d6631b3 Prefer ATTRIBUTE_* to _GL_ATTRIBUTE_*
  bc6899d Pacify gcc -Wno-unused-parameter
  da25985 Improve ‘git diff’ output if desired
  248ef13 Prefer strerror to perror
  6cb321a A bit more long-string fixing
  47bc09d Prefer nullptr to NULL
  7608746 More fixing of printing of very long strings
  323da0d Don’t assume string sizes fit in int when printing
  53d1014 Avoid fprintf INT_MAX overflow when merging
  59681c8 Avoid sprintf INT_MAX overflow
  4278b91 Reject output file names containing '\n'
  34b45bc Update man page a bit.
  d18c05d Update copyright notices
  af828e5 Fix some races involving signals
  b3a6c95 Don’t attempt to remove files we didn’t create
  9abc949 Omit goto in try_safe_open
  90e62d5 Pacify clang re obsolete O_CREAT test
  2b87c1e Allow nested block/unblock of signals
  7aa1c3b Adjust to new Gnulib bootstrap post imports
  99c0c0b maint: remove generated file lib/Makefile.am
  1c087d6 Rely on Gnulib inttypes module
  7214f8d Update main locals more consistently
  6785b2c Use struct outfile * in function args
  72d7ed0 Refactor temp names into struct
  abf6fb1 Simplify by using Gnulib sigaction
  d3816ac Avoid unnecessary freeing in output_files
  346d3ac Clean up cleanup
  ff2317b Port better to GNU/Hurd
  c2d9792 Don’t say empty backups are unreadable
  8c27a03 Spelling fixes
  d46d729 Change manywarnings usage to be more like coreutils
  924698b Pacify clang, which dislikes n + "y"
  8939519 Pacify -Wstrict-overflow in pch.c
  531cc2b Pacify -Wsuggest-attribute=format in util.c
  ff13fea Port to non-VLA C compilers
  3d5c0d1 Rename vars to pacify gcc -Wshadow
  56788ce Stop including stdbool.h
  c10da77 Recommend 64-bit time_t on 32-bit platforms
  1e21767 Remove pch_sha1
  39005cf Move skip_spaces
  755712d Remove pch_timestamp function
  04f0eeb Prefer extern inline to static inline for list.h
  f06c123 maint: pacify gcc 14 -Wcast-align
  aab6e7b maint: pacify -Wanalyzer-null-argument
  d1d32c9 maint: work around GCC bug 109839
  7575694 maint: pacify gcc -Wmissing-variable-declarations
  8f78b09 maint: pacify gcc -Winline
  bb841fd maint: port _FORTIFY_SOURCE to Ubuntu
  4887683 maint: assume STDC_HEADERS
  5b8ecde maint: spruce up our .m4 files a bit
  009a424 maint: omit obsolete macro calls
  299167f maint: simplify .gitignore
  3ec44a4 build: update gnulib submodule to latest
  68cb529 build: update gnulib submodule to latest
  f144b35 build: Enable the 'subdir-objects' Automake option.
  faafc79 build: update gnulib submodule to latest
  c835ecc Pass the correct stat to backup files
  24f81be maint: modernize README-{hacking,prereq}
  7623b2d Fix test for presence of BASH_LINENO[0]
  0993940 gnulib: update to latest
  78ed9de Add missing-section tests to context-format test case
  76e7758 Fix failed assertion 'outstate->after_newline'
  15b158d Avoid invalid memory access in context format diffs
  dce4683 Don't follow symlinks unless --follow-symlinks is given
  61d7788 Don't crash when RLIMIT_NOFILE is set to RLIM_INFINITY
  b7b028a Abort when cleaning up fails
  a5b442c Skip "ed" test when the ed utility is not installed
  2b584ae Improve support for memory leak detection
  9c98635 Fix swapping fake lines in pch_swap
  ff81775 Make the (debug & 2) output more useful
  369dccc Don't leak temporary file on failed multi-file ed-style patch
  1959988 Don't leak temporary file on failed ed-style patch
  f322a7e Request 'alloca' module from gnulib.
  458ac51 Fix 'ed-style' test failure.
  1e9104c Fix check of return value of fwrite().
  ae81be0 maint: avoid warnings from GCC8
  2a32bf0 Minor cleanups in do_ed_script
  ff1d3a6 Use gnulib execute module
  3fcd042 Invoke ed directly instead of using the shell
  123eaff Fix arbitrary command execution in ed-style patches (CVE-2018-1000156)
  b5a91a0 Allow input files to be missing for ed-style patches
  f290f48 Fix segfault with mangled rename patch
  074e239 Test suite: fix Korn shell incompatibility
  f6bc5b1 Test suite compatibility fixes
  3bbebbb Avoid set_file_attributes sign conversion warnings

Signed-off-by: Russell Senior <russell@personaltelco.net>
Link: https://github.com/openwrt/openwrt/pull/18479
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit f45df2167b)
2025-06-17 11:02:42 +02:00
Tony Ambardar
976b09707e strace: Update to version 6.12
Release Notes:
https://github.com/strace/strace/releases/tag/v6.12

Signed-off-by: Tony Ambardar <itugrok@yahoo.com>
Link: https://github.com/openwrt/openwrt/pull/17457
Signed-off-by: Nick Hainke <vincent@systemli.org>
(cherry picked from commit 389dd8dcf6)
Link: https://github.com/openwrt/openwrt/pull/19099
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-06-16 15:48:00 +02:00
Thomas Richard
04a7d672d7 arm-trusted-firmware-stm32: bump to v2.10.17
Changelog: https://trustedfirmware-a.readthedocs.io/en/lts-v2.10.17/change-log.html

Signed-off-by: Thomas Richard <thomas.richard@bootlin.com>
Link: https://github.com/openwrt/openwrt/pull/19076
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-06-16 15:35:49 +02:00
Stijn Tintel
a4f56aca81 include/trusted-firmware-a.mk: support LTS releases
TF-A LTS releases have an lts- prefix in their version tag. Introduce a
PKG_LTS variable to support these.

As the non-LTS tarbals do not contain the version prefix in the
directory, we need different PKG_BUILD_DIR for each variant:

➜ tar --list --file dl/trusted-firmware-a-v2.12.tar.gz  | head -n1
trusted-firmware-a-2.12/
➜ tar --list --file dl/trusted-firmware-a-lts-v2.12.1.tar.gz  | head -n1
trusted-firmware-a-lts-v2.12.1/

Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
cherry picked from commit 06c4e8a262
Signed-off-by: Thomas Richard <thomas.richard@bootlin.com>
Link: https://github.com/openwrt/openwrt/pull/19076
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-06-16 15:35:49 +02:00
Mateusz Jończyk
926314ab12 ramips/mt7621: mark EEE as broken in devicetree
Multiple users have reported a regression [1] in OpenWRT 24.10 with the
ramips/mt7621 target, which has the MT7530 PHYs: the Ethernet link is
periodically going down for a brief period of time:

        mt7530-mdio mdio-bus:1f lan1: Link is Down
        br-lan: port 1(lan1) entered disabled state
        mt7530-mdio mdio-bus:1f lan1: Link is Up - 1Gbps/Full - flow control rx/tx

The symptoms stop after disabling EEE and it was reported by Mediatek in
2021 that EEE is unstable for the MT7530 PHYs [2]:

> EEE of the 10-year-old MT7530 internal gephy has many IOT problems, so
> it is recommended to disable its EEE.

EEE is enabled by default for these devices in OpenWRT 24.10 whereas in the
previous version (OpenWRT 23.05, Linux 5.15) it was not. It was determined
that in Linux 6.6, the PHY driver tries to disable EEE in
mtk_gephy_config_init() in drivers/net/phy/mediatek-ge.c, but this is later
overridden by a subsequent execution of the genphy_c45_write_eee_adv()
function, which enables every EEE mode supported.

The best way forward for now seems to be to mark EEE as broken directly in
the devicetree, which affects the genphy_c45_write_eee_adv() function.

There are some devices, like GnuBee GB-PC2, that define additional PHYs,
for example ethernet-phy@5 or ethernet-phy@7. As reported by Chester A.
Unal, these are not MT7530 PHYs and they are not affected.

This would need to be cherrypicked for the OpenWRT 24.10 branch.

[1] https://github.com/openwrt/openwrt/issues/17351

[2] https://lore.kernel.org/all/0adde34f936a2dafca40b06b408d82afe0852327.camel@mediatek.com/

Tested-by: Darren Tucker
Signed-off-by: Mateusz Jończyk <mat.jonczyk@o2.pl>
Closes: https://github.com/openwrt/openwrt/issues/17351
Link: https://github.com/openwrt/openwrt/pull/18585
(cherry picked from commit b7fa9d92ae)
Signed-off-by: Mateusz Jończyk <mat.jonczyk@o2.pl>
Tested-by: Mateusz Jończyk <mat.jonczyk@o2.pl>
Link: https://github.com/openwrt/openwrt/pull/19150
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-06-16 15:28:15 +02:00
Nick Hainke
26c2ff9e5d libxml2: update to 2.13.6
Release Notes:
https://gitlab.gnome.org/GNOME/libxml2/-/releases/v2.13.5
https://gitlab.gnome.org/GNOME/libxml2/-/releases/v2.13.6

Fixes: CVE-2025-24928 CVE-2024-56171

Link: https://github.com/openwrt/openwrt/pull/18194
Signed-off-by: Nick Hainke <vincent@systemli.org>
(cherry picked from commit fe47089878)
Link: https://github.com/openwrt/openwrt/pull/19122
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-06-15 14:48:49 +02:00
Robert Marko
09915e64a6 netifd: update to Git HEAD (2025-05-23)
61ae5732adea iprule: amend ipproto netlink nla_put_u32 to nla_put_u8
d610d68c71b8 device: add support for configuring vrf
a1b6386a20a6 device: fix bonding primary port selection
e8bbf246ce2e system-linux: fix sysfs name for all_ports_active flag
723c699e84f4 Restore disable_ipv6 sysctl after removing a device from bridge or bond
d476e18e8d43 iprule: resolve ipproto by name
7901e66c5f27 netifd: iprule add sport and dport

Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 15c2ca0a83)
Link: https://github.com/openwrt/openwrt/pull/19125
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-06-15 13:59:05 +02:00
Antonio Flores
963943787d rockchip: fix the SD card detection on NanoPi R6C/R6S
This patch backport a fix for the SD card detection on NanoPi R6c/R6S
from upstream commit 95147bb42b

Signed-off-by: Antonio Flores <antflores627@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/18553
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 5c83301107)
Link: https://github.com/openwrt/openwrt/pull/19138
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-06-15 13:55:20 +02:00
John Audia
4b8881cee9 ipq806x: config-6.6: add new option
6.6.93 introduced new config option[1]

1. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.93&id=fba6e5d44fb8df6bdadb1e90d2ddca715462248f

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/19026
Signed-off-by: Nick Hainke <vincent@systemli.org>
(cherry picked from commit a2eaadeed2)
Link: https://github.com/openwrt/openwrt/pull/19113
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-06-15 13:37:46 +02:00
John Audia
ff393cbe9c ipq40xx: config-6.6: add new option
6.6.93 introduced new config option[1]

1. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.93&id=fba6e5d44fb8df6bdadb1e90d2ddca715462248f

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/19026
Signed-off-by: Nick Hainke <vincent@systemli.org>
(cherry picked from commit 45e53284e6)
Link: https://github.com/openwrt/openwrt/pull/19113
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-06-15 13:37:46 +02:00
John Audia
7d620f83e3 kernel: bump 6.6 to 6.6.93
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.6.93

Removed upstreamed:
	backport-6.6/780-51-v6.15-r8169-don-t-scan-PHY-addresses-0.patch[1]
Additionally removed during backporting to 24.10:
        platform/950-0423-media-i2c-imx219-Correct-the-minimum-vblanking-value.patch [2]
        platform/950-1550-drm-v3d-Add-clock-handling.patch [3]

1. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.93&id=961ee132104b09e054308e53d8ab4a2386a21904
2. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.93&id=0b9d2468c3d88c924f505e950c4de74ace09795c
3. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.93&id=9ef9ecabc6b559a0cf8603696997625087791a53

All other patches automatically rebased.

Build system: x86/64
Build-tested: flogic/xiaomi_redmi-router-ax6000-ubootmod, ramips/tplink_archer-a6-v3, x86/64
Run-tested: flogic/xiaomi_redmi-router-ax6000-ubootmod, ramips/tplink_archer-a6-v3, x86/64

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/19026
Signed-off-by: Nick Hainke <vincent@systemli.org>
(cherry picked from commit a878dd24e7)
Co-authored-by: Goetz Goerisch <ggoerisch@gmail.com>
Signed-off-by: Goetz Goerisch <ggoerisch@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19113
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-06-15 13:37:46 +02:00
Nick Hainke
79f8461b78 ipq-wifi: add missing dependency on TARGET_ath79
A previous commit backported the ipq-wifi update to fix support for the
TP-Link Archer C6 v2 by adding the device to the package. However, it
missed adding the required TARGET_ath79 dependency, causing the
ipq-tplink_archer-c6-v2 build to fail.

The dependency was previously added in commit 4990ce613b ("ipq-wifi:
update to 2024-02-17") when several ath79 devices were introduced.
However, since this backport only fixes support for the Archer C6 v2, it
is not feasible to backport all related changes. Therefore, this commit
adds only the missing dependency to resolve the build issue without
pulling in unrelated updates.

Fixes: 0c43acc349 ("ipq-wifi: update to Git HEAD (2025-05-30)")
Signed-off-by: Nick Hainke <vincent@systemli.org>
Link: https://github.com/openwrt/openwrt/pull/19120
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-06-13 14:48:53 +02:00
Felix Fietkau
c45c2f3c1c ucode: ubus: fix use-after-free on deferred request reply() method
Hold a reference to the defer resource as long as it is still needed

Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry picked from commit 87bfde67f2)
2025-06-12 14:33:54 +02:00
Felix Fietkau
0ea2a93fc7 ucode: update to Git HEAD (2025-05-11)
567207a9bf16 fs: implement fileno() on directory handles
eb1d93235509 fs: support passing directory handle or fd in chdir()
38a2254337f1 build: detect whether toolchain employs default source fortification
6eddfc9dff17 resolv: fix fd leak in send_queries
3d36856b2dc5 uci: fix memory leak on cursor() error
aafde95f1ecf uci: add cursor() flags argument
d8cebc5a6bfd Revert "WIP: lib: support map() over objects"
2599cf80736b zlib: incorporate latest PR changes
830f316a7e49 socker: let sock.peercred() clear error on success
4cbac141406e types: rename u64_to_constant flag to ext_flag
d802fe5da5cd types: add support for resources with embedded data/values
71b4fdc6f60b types: add support for setting resource persistent flag
141f799eba08 uloop: use container_of instead of direct pointer casts
1396f8f2988d uloop: use uc_fn_thisval
9a121fc7440c uloop: drop object_registry
11b804d97086 socket: do not clear last_error in socket.error()
d5b3a9dc1091 socket: add strerror() method

Fixes: https://github.com/jow-/ucode/issues/285
Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry picked from commit 2a9316fbfb)
2025-06-12 14:33:54 +02:00
Felix Fietkau
7dd96329ef ucode: add fix for double registry clear on channel disconnect
Avoid clobbering registry items of unrelated connections.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry picked from commit eaab68be92)
2025-06-12 14:33:54 +02:00
Felix Fietkau
9d7aa9abad ucode: update to Git HEAD (2025-03-24)
2824982da336 ubus: fix broken uc_ubus_defer()

Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry picked from commit 2ced0e59a4)
2025-06-12 14:33:54 +02:00
Felix Fietkau
f3ee7c9e14 ucode: update to Git HEAD (2025-03-17)
9d94d54ed1a3 uci: implement cursor.list_append() and cursor.list_remove()
a5a299075f37 zlib: rework code logic
ee6a6c3ca579 zlib: deduplicate code
d20f7bb87d47 zlib: add stream-oriented deflate operations
0255af462be3 zlib: add stream-oriented inflate operations
9260bd5354bf WIP: lib: support map() over objects
60f05ac60bfe docs: cover switch statement in syntax article
338aa2ebf00e docs: add article with array specific information
df5a79a04b17 uci: link save() and commit() functions in cursor class description
03fb60d0e4b3 docs: add detailed documentation article for dictionaries
8e122f16327c ubus: add support for calling system objects
21a615c84367 socket: add reuseaddr argument for socket.listen()
e04908ef57e7 uci: add support for altering the override config directory
9dbace122d7e socket: add missing documentation for socket.listen() reuseaddr
312b25482b30 ubus: add errval_return() helper macro
1af4a6bbc206 ubus: add channel defer() method
0002684b9772 ubus: support sending multiple reply messages on a request
fb1da7157d13 ubus: remove broken implied await when calling defer() outside of uloop.run()
67a4ad20f172 ubus: fix uninitialized variable warning

Fixes: https://github.com/jow-/ucode/issues/279
Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry picked from commit 960e1c4c24)
2025-06-12 14:33:54 +02:00
Felix Fietkau
0b265f4562 libubox: update to Git HEAD (2024-12-19)
3868f47c8f6c blob: constify attr argument to blob_memdup

Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry picked from commit 6f8f404113)
2025-06-12 14:33:54 +02:00
Felix Fietkau
2f27d0fefa ubus: update to Git HEAD (2025-05-16)
88e6325092bf libubus: flush all pending requests on connection loss

Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry picked from commit 707a89bc26)
2025-06-12 14:33:54 +02:00
Álvaro Fernández Rojas
a3d7a9ec98 bcm27xx: select I2C/SPI packages by default
The I2C and SPI packages required for each RPi generation is different.
Therefore, in order to avoid confusion let's select them by default.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
(cherry picked from commit 9117ff7b39)
2025-06-12 13:51:03 +02:00
Álvaro Fernández Rojas
2e960cc69f bcm27xx: add support for BRCMSTB I2C controller
Add kernel package for Broadcom Settop/DSL I2C controller.
This controller is used on RPi devices.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
(cherry picked from commit 59f8312400)
2025-06-12 13:51:03 +02:00
Álvaro Fernández Rojas
40be479fe3 kernel: add support for DesignWare I2C Platform controller
Add kernel package for DesignWare I2C platform controller.
This controller is used on the RP1 SoC found on RPi 5 devices.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
(cherry picked from commit 84922a1e34)
2025-06-12 13:51:03 +02:00
Albrecht Lohofener
bb478a6dda kernel: add Microchip ENC28J60 SPI Ethernet controller module
The ENC28J60 is a 10 Mbps half-duplex Ethernet controller interfaced via SPI.
It achieves real-world bandwidth up to 5Mbit/s on devices like the RPi Zero due
to SPI limits.
Commonly used with Raspberry Pi Zero boards for wired network connectivity.

Signed-off-by: Albrecht Lohofener <albrechtloh@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/19048
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
(cherry picked from commit 4987239913)
2025-06-12 13:51:03 +02:00
Albrecht Lohofener
d5ab1b48dc kernel: add support for DesignWare SPI MMIO controller
Add kernel packages for DesignWare SPI core and MMIO controllers.
This is needed for the RP1 SoC found on RPi 5 devices.

Tested with a Microchip ENC28J60 Ethernet controller on a RPi 5.

Signed-off-by: Albrecht Lohofener <albrechtloh@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/19049
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
(cherry picked from commit 82d20a0fbd)
2025-06-12 13:51:03 +02:00
Georgi Valkov
f90e7a7397 toolchain: gcc: fix build error with Xcode 16.3
Xcode 16.3 defines TARGET_OS_MAC, it was not defined in prior versions.
zutil.h conditionally defines fdopen as NULL when this macro is defined,
resulting in the following build error:

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_stdio.h:318:7: e>
  318 | FILE    *fdopen(int, const char *) __DARWIN_ALIAS_STARTING(__MAC_10_6, __IPHONE_2_0, __DARWIN_ALIAS(fdopen));
      |          ^
./zutil.h:147:33: note: expanded from macro 'fdopen'
  147 | #        define fdopen(fd,mode) NULL /* No fdopen() */

In Xcode 16.2 and earlier, TARGET_OS_MAC was not defined so this entire
block was ignored, gcc and gdb used to compile and work fine.

This may have been used for compatibility with older versions of macOS,
but is no longer needed. By pure luck, the build worked fine for a long
time, because it did not properly detect macOS.
Fixed by removing the check for TARGET_OS_MAC.

Note that since Xcode 16.3, an entire set of TARGET_OS macros
are now defined, most of which are set to 0:
TARGET_OS_LINUX 0
TARGET_OS_MAC 1
TARGET_OS_OSX 1

Signed-off-by: Georgi Valkov <gvalkov@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/18467
(cherry picked from commit d3bb23946e)
Link: https://github.com/openwrt/openwrt/pull/19096
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-06-12 10:51:01 +02:00
Georgi Valkov
9d3ca6d3e5 toolchain: gdb: fix build error with Xcode 16.3
Xcode 16.3 defines TARGET_OS_MAC, it was not defined in prior versions.
zutil.h conditionally defines fdopen as NULL when this macro is defined,
resulting in the following build error:

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_stdio.h:318:7: error: expected identifier or '('
  318 | FILE    *fdopen(int, const char *) __DARWIN_ALIAS_STARTING(__MAC_10_6, __IPHONE_2_0, __DARWIN_ALIAS(fdopen));
      |          ^
./zutil.h:147:33: note: expanded from macro 'fdopen'
  147 | #        define fdopen(fd,mode) NULL /* No fdopen() */

In Xcode 16.2 and earlier, TARGET_OS_MAC was not defined so this entire
block was ignored, gcc and gdb used to compile and work fine.

This may have been used for compatibility with older versions of macOS,
but is no longer needed. By pure luck, the build worked fine for a long
time, because it did not properly detect macOS.
Fixed by removing the check for TARGET_OS_MAC.

Note that since Xcode 16.3, an entire set of TARGET_OS macros
are now defined, most of which are set to 0:
TARGET_OS_LINUX 0
TARGET_OS_MAC 1
TARGET_OS_OSX 1

Signed-off-by: Georgi Valkov <gvalkov@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/18467
(cherry picked from commit dfb8115d0c)
Link: https://github.com/openwrt/openwrt/pull/19096
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-06-12 10:51:01 +02:00
Eric Fahlgren
c99d356747 package: rework contents of package index.json
Rework the generation of the index.json version of the package
indexes to match the original intent (i.e., for use by the ASU
server and other downstream projects).  The current file contains
package names that have ABI versioning, making them unusable by ASU,
so we now remove the ABI suffixes.

Also adds a 'version' field to the json, so downstream utilities
can detect the new semantics of the package name fields.

Links: 218ce40cd7
Signed-off-by: Eric Fahlgren <ericfahlgren@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19051
(cherry picked from commit 2b0b16f1d1)
Link: https://github.com/openwrt/openwrt/pull/19097
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-06-11 19:12:09 +02:00
Álvaro Fernández Rojas
0db2af95bc kernel: r8125: update to v9.016.00
Changelog: https://github.com/openwrt/rtl8125/compare/9.015.00...9.016.00

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
(cherry picked from commit 60606fa980)
2025-06-09 08:03:25 +02:00
Paul Donald
73ea351f6c lldpd: enable hardware inventory information (TLV) management
lldpd can send several hardware inventory TLV fields. Extend the init
script to provide these when the existing flag 'lldpmed_no_inventory' is
disabled. Five new methods provide default values for some of them,
taken from /etc/os-release and /etc/board.json.

There is no homogeneous method to determine the hardware serial number,
so it can be provided manually, as can asset ID.

Note: properties >= 32 characters are truncated at send time (by lldpd),
and some (Cisco) equipment displays junk after strings >= 32 characters.
So truncate to 31.

Tested on: 24.10.0 (known compatible with 22 and 23 also)

===
Example
===

The following lldpd config lines:

 configure inventory hardware-revision "v0"
 configure inventory software-revision "r28427-6df0e3d02a"
 configure inventory firmware-revision "OpenWrt 24.10.0"
 configure inventory serial-number "ABCDEF-123456"
 configure inventory manufacturer "glinet"
 configure inventory model "GL.iNet GL-MT6000"
 # 32 characters:
 configure inventory asset "abcdefghijklmnopqrstuvwxyz 12345"

Produce the following TLV (decoded by Wireshark):

Telecommunications Industry Association TR-41 Committee - Inventory - Hardware Revision
    1111 111. .... .... = TLV Type: Organization Specific (127)
    .... ...0 0000 0110 = TLV Length: 6
    Organization Unique Code: 00:12:bb (Telecommunications Industry Association TR-41 Committee)
    Media Subtype: Inventory - Hardware Revision (0x05)
    Hardware Revision: v0
Telecommunications Industry Association TR-41 Committee - Inventory - Firmware Revision
    1111 111. .... .... = TLV Type: Organization Specific (127)
    .... ...0 0001 0011 = TLV Length: 19
    Organization Unique Code: 00:12:bb (Telecommunications Industry Association TR-41 Committee)
    Media Subtype: Inventory - Firmware Revision (0x06)
    Firmware Revision: OpenWrt 24.10.0
Telecommunications Industry Association TR-41 Committee - Inventory - Software Revision
    1111 111. .... .... = TLV Type: Organization Specific (127)
    .... ...0 0001 0101 = TLV Length: 21
    Organization Unique Code: 00:12:bb (Telecommunications Industry Association TR-41 Committee)
    Media Subtype: Inventory - Software Revision (0x07)
    Software Revision: r28427-6df0e3d02a
Telecommunications Industry Association TR-41 Committee - Inventory - Serial Number
    1111 111. .... .... = TLV Type: Organization Specific (127)
    .... ...0 0001 0100 = TLV Length: 20
    Organization Unique Code: 00:12:bb (Telecommunications Industry Association TR-41 Committee)
    Media Subtype: Inventory - Serial Number (0x08)
    Serial Number: ABCDEF-123456
Telecommunications Industry Association TR-41 Committee - Inventory - Manufacturer Name
    1111 111. .... .... = TLV Type: Organization Specific (127)
    .... ...0 0000 1010 = TLV Length: 10
    Organization Unique Code: 00:12:bb (Telecommunications Industry Association TR-41 Committee)
    Media Subtype: Inventory - Manufacturer Name (0x09)
    Manufacturer Name: glinet
Telecommunications Industry Association TR-41 Committee - Inventory - Model Name
    1111 111. .... .... = TLV Type: Organization Specific (127)
    .... ...0 0001 0101 = TLV Length: 21
    Organization Unique Code: 00:12:bb (Telecommunications Industry Association TR-41 Committee)
    Media Subtype: Inventory - Model Name (0x0a)
    Model Name: GL.iNet GL-MT6000
Telecommunications Industry Association TR-41 Committee - Inventory - Asset ID
    1111 111. .... .... = TLV Type: Organization Specific (127)
    .... ...0 0010 0011 = TLV Length: 35
    Organization Unique Code: 00:12:bb (Telecommunications Industry Association TR-41 Committee)
    Media Subtype: Inventory - Asset ID (0x0b)
    Asset ID: abcdefghijklmnopqrstuvwxyz 1234

The Cisco DUT displays:

Hardware Revision: 	v0
Firmware Revision: 	OpenWrt 24.10.0
Software Revision: 	r28427-6df0e3d02a
Serial Number:  ABCDEF-123456
Manufacturer Name: 	glinet
Model Name: 	GL.iNet GL-MT6000
Asset ID: 	abcdefghijklmnopqrstuvwxyz 1234

Signed-off-by: Paul Donald <newtwen+github@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/18354
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 412c850f07)
Link: https://github.com/openwrt/openwrt/pull/18469
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-06-08 21:25:07 +02:00
Markus Stockhausen
0f9ebe2da7 realtek: fix mdio parent/child locking issues
Since the early beginning of the Realtek DSA driver there is an uncovered
locking issue between the standard (parent) mdio bus and the DSA (child)
mdio bus. This comes from the fact that the DSA bus simply links to the
parent read and write functions and calls them directly. This leads to
the following lock issue.

- Child bus calls phy_read/write functions and uses its internal lock
- Parent bus calls phy_read/write functions and uses its internal lock

It becomes clear that critical section can be accessed twice without
knowing that a operation from the other bus is currently active. This
can lead to critical malfunctions because the mdio driver needs a lot of
internal magic to get page selection done right. Effects are:

- The original page is lost after a phy_write/read_paged() call
- dmesg like "Realtek RTL8218B (external) rtl838x slave mii-0:00:
  Expected external RTL8218B, found PHY-ID 6b23"

Other DSA drivers simply use the read/write functions from the parent bus
and thus avoid locking issues. Do it the same way.

Fixes: 2b88563ee5 ("realtek: update the tree to the latest refactored version")
Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/18824
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 461fc06f9d)
Link: https://github.com/openwrt/openwrt/pull/18755
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-06-08 21:19:31 +02:00
Markus Stockhausen
072fd4de3c realtek: refactor net rx interrupt handler rtl83xx_net_irq()
Cleanup the code of the RTL83xx packet receive interrupt handler. Not
only for better readability but to avoid inconsistencies and stalls on
the RTL839x targets.

The current implementation seems to come from the GPL source code.
Calling the existing cleanup() function inside the interrupt context
without any locks conflicts with SMP & NAPI polling and makes things
worse instead of giving any benefit. Simply ignore RX buffer overruns
and let the device handle packet dropping itself.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/18855
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 8dde1e4638)
Link: https://github.com/openwrt/openwrt/pull/18755
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-06-08 21:19:31 +02:00
Markus Stockhausen
4c4b698a9c realtek: proper RTL8214FC fibre/copper detection
The RTL8214FC currently uses generic PHY functions. That makes it look like a copper
device. Switching to/from fibre works fortunately but the autonegotiation handling
still works on MII_LPA (PHY register 5) as if a copper link is used. Fix that by

- advertising a superset of TP/FIBRE features
- using clause 37 functions when on fibre

Additionally enhance the code of the driver to assist further development.

- log the speed of the inserted module to detect wrongly inserted 10gbase-r modules
- order phy driver functions alphabetically (keep match/name on top)
- remove genphy_loopback as the kernel uses it if not provided

Remark! The driver internally uses PORT_MII for the TP port. Align with that and
report MII to ethtool instead of TP. Other drivers do the same and it can be
changed in the future if needed.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/18724
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 4cfd1c4501)
Link: https://github.com/openwrt/openwrt/pull/18755
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-06-08 21:19:31 +02:00
Sander van Deijck
7d74ef4b85 ramips: mt7621: add support for Arcadyan WE410443
The Arcadyan WE410443 is a WiFi AC access point distributed by various ISPs
under various names, including KPN SuperWifi and BT Whole Home Wi-Fi. It
features one ethernet port, dual MT7615N radios and four internal antennas.

Hardware:
- SoC: Mediatek MT7621AT
- Flash: 32 MB
- RAM: 128 MB
- Ethernet: 1x 10/100/1000 Mbps, built into the SoC
- WLAN: 2x MediaTek MT7615N
- Buttons: 1 Reset button, 1 WPS button
- LEDs: 1x Green, 1x Blue, 1x Red, all unmarked
- Power: 12 VDC, 1.5A barrel plug

Installation:
The bootloader is locked with a password, so the image needs to be written
directly to the SPI flash chip. To do this, you need to open up the case,
remove the heatsink and connect the flash chip to a Raspberry Pi. Use the
following connections:

Flash chip --> Raspberry Pi

VCC --> 3v3
RESET --> 3v3
/CS --> GPIO 8
DO --> GPIO 9
CLK --> GPIO 11
DI --> GPIO 10
GND --> Ground

You can solder wires to the flash chip, or use a SOIC16 clip. More details on
the Raspberry Pi and SPI chip pinouts are available on the wiki [1]
When you have the Raspberry Pi connected to the flash chip, boot your Pi and
follow the instructions:

1) Make sure your Pi has SPI enabled with sudo raspi-config

2) Install necessary tools: sudo apt install xxd libubootenv-tool mtd-utils

3) Upload overlay and execute:
sudo dtc -@ -I dts -O dtb -o
/boot/overlays/we410443.dtbo we410443-overlay.dts

4) Enable in /boot/firmware/config.txt by adding a new line containing
dtoverlay=we410443

5) Reboot your Pi and verify the mtd partitions with
cat /proc/mtd, you should see:

dev:    size   erasesize  name
mtd0: 02000000 00001000 "all"
mtd1: 00030000 00001000 "u-boot"
mtd2: 00010000 00001000 "u-boot-env"
mtd3: 00010000 00001000 "factory"
mtd4: 01f60000 00001000 "firmware"
mtd5: 00010000 00001000 "glbcfg"
mtd6: 00010000 00001000 "config"
mtd7: 00010000 00001000 "glbcfg2"
mtd8: 00010000 00001000 "config2"

6) Optionally (but recommended), make a backup:
sudo dd if=/dev/mtd0 of=backup.bin
It can be restored with: sudo flashcp backup.bin /dev/mtd0

7) Set the variables for the bootloader:
echo '/dev/mtd2 0x0 0x1000 0x1000' > fw_env.config
sudo fw_setenv -c fw_env.config bootpartition 0

8) Finally, flash the image:
sudo flashcp openwrt-ramips-mt7621-arcadyan_we410443-
squashfs-sysupgrade.bin /dev/mtd4

MAC addresses
The label address is stored in ASCII in the config partition

Use --> Address

Device --> label
Ethernet --> label
WLAN 2g --> + 1
WLAN 5g --> + 2

References:
[1] https://openwrt.org/toh/arcadyan/astoria/we410443

Signed-off-by: Sander van Deijck <sander@vandeijck.com>
Link: https://github.com/openwrt/openwrt/pull/17981
(cherry picked from commit b6a07dd091)
Link: https://github.com/openwrt/openwrt/pull/19068
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-06-08 21:12:52 +02:00
Sergey Shlukov
b39d82195d mediatek: add support for TP-Link Archer AX80v1(US/RU/CA)
This commit adds support for TP-Link Archer AX80v1(US/RU/CA).

Device specification
SoC Type:   MediaTek MT7986AV, Cortex-A53, 64-bit
RAM:        ESMT M15T4G16256 (512MB)
Flash:      ESMT F50L1G41LB (128 MB)
Ethernet:   MediaTek MT7531AE + 2.5GbE MaxLinear GPY211C0VC (SLNW8)
Ethernet:   1x2.5Gbe (WAN/LAN 2.5Gbps), 4xGbE (WAN/LAN 1Gbps, LAN1, LAN2, LAN3)
WLAN 2g:    MediaTek MT7976GN
WLAN 5g:    MediaTek MT7976AN
LEDs:       1 red,1 green,1 blue status LEDs,

Buttons:    4 (Reset,ledswitch,wps,wlan),
USB ports:  1 (USB 3.0)
Power:      12 VDC, 3,3 A
Connector:  Barrel
Bootloader: Main U-Boot - U-Boot 2022.01-rc4. Additionally, both UBI
            slots contain "seconduboot" (also U-Boot 2022.01-rc4)
Serial console (UART)
                            V
+-------+-------+-------+-------+
| +3.3V |  GND  |  TX   |  RX   |
+---+---+-------+-------+-------+
    |
    +--- Don't connect

Installation (UART)
Place OpenWrt initramfs image on tftp server with IP 192.168.1.2

Attach UART, switch on the router and interrupt the boot process by pressing 'Ctrl-C'

Load and run OpenWrt initramfs image:

      tftpboot initramfs-kernel.bin
      bootm

!!Attention!! is very important! After entering OpenWrt, please set / update the environment variables:

fw_setenv bootargs "ubi.mtd=ubi0 console=ttyS0,115200n1 loglevel=8 earlycon=uart8250,mmio32,0x11002000 init=/etc/preinit"
fw_setenv mtdids "spi-nand0=spi-nand0"
fw_setenv mtdparts "spi-nand0:2M(boot),1M(u-boot-env),50M(ubi0),50M(ubi1),8M(userconfig),4M(tp_data),8M(mali_data)"
fw_setenv tp_boot_idx 0

Run 'sysupgrade -n' with the sysupgrade OpenWrt image from console or Luci WebUI.

Recovery

Press Reset button and power on the router
Navigate to U-Boot recovery web server (192.168.1.1) and upload the OEM firmware

Stock layout

0x000000000000-0x000000200000 : "boot"
0x000000200000-0x000000300000 : "u-boot-env"
0x000000300000-0x000003500000 : "ubi0"
0x000003500000-0x000006700000 : "ubi1"
0x000006700000-0x000006f00000 : "userconfig"
0x000006f00000-0x000007300000 : "tp_data"
0x000007300000-0x000007B00000 : "mali_data"

ubi0/ubi1 format
U-Boot at boot checks that all volumes are in place:

+-------------------------------+
| Volume Name: uboot   Vol ID: 0|
| Volume Name: kernel  Vol ID: 1|
| Volume Name: rootfs  Vol ID: 2|
+-------------------------------+
MAC addresses
+---------+-------------------+-----------+
| label   | 00:eb:xx:xx:xx:be | label     |
| LAN     | 00:eb:xx:xx:xx:be | label     |
| WAN     | 00:eb:xx:xx:xx:bf | label+1   |
| WLAN 2g | 00:eb:xx:xx:xx:be | label     |
| WLAN 5g | 00:eb:xx:xx:xx:bd | label-1   |
+---------+-------------------+-----------+
label MAC address was found in UBI partition "tp_data", file "default-mac".
OEM wireless eeprom is also there (file "MT7986_EEPROM.bin").

Signed-off-by: Sergey Shlukov <ichizakurain@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/17753
(cherry picked from commit 8b24289a52)
Link: https://github.com/openwrt/openwrt/pull/19050
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-06-08 21:07:36 +02:00
Sergey Shlukov
6ddc43bc7a kernel: add kmod-leds-lp5523
Add kernel module for LP5523/LP55231 LED driver.
The kmod-leds-lp5523 depends on kmod-leds-lp55xx-common.

Signed-off-by: Sergey Shlukov <ichizakurain@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/17753
(cherry picked from commit 92ad1ea245)
Link: https://github.com/openwrt/openwrt/pull/19050
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-06-08 21:07:36 +02:00
Antti Seppälä
fd85c0df78 qmi: increase SIM power-cycle timeouts
Some modems and SIM cards take a bit longer to initialize after UIM has been
powered off. Waiting too little time can cause the qmi protocol to end up
in a loop repeatedly power-cycling the SIM card.

Avoid that by
 a) increasing the time we unconditionally sleep after --uim-power-on
 b) increasing the time we allow uqmi to wait for response for --uim-get-sim-state

Signed-off-by: Antti Seppälä <a.seppala@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/18772
(cherry picked from commit d63663601d)
Signed-off-by: Felix Baumann <felix.bau@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/18965
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-06-08 21:03:58 +02:00
Leon M. Busch-George
871d7a9d68 qmi: sort config variables a little and fix minor bugs
Group 'local' declarations and 'json_get_vars', sort alphabetically within groups, and split off more generic parameters.

- delegate and sourcefilter were not declared as local variables

Signed-off-by: Leon M. Busch-George <leon@georgemail.eu>
(cherry picked from commit bf768867dc)
Signed-off-by: Felix Baumann <felix.bau@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/18965
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-06-08 21:03:58 +02:00
Tianling Shen
c7c7a1cfc0 rockchip: add missing symbol
Commit 7cace002ba added a generic kernel patch that exposes a new
symbol REALTEK_PHY_HWMON when REALTEK_PHY and HWMON are enabled. The new
symbol was added to kmod-phy-realtek, but the kmod is not used in the
rockchip target.

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
Link: https://github.com/openwrt/openwrt/pull/18921
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-06-08 15:54:37 +02:00
Shiji Yang
79cfac227e tools: zstd: update to 1.5.7
This new version has some performance enhancements.

Changelog:
https://github.com/facebook/zstd/releases/tag/v1.5.7

Upstreamed patch:
001-Provide-variant-pkg-config-file-for-multi-threaded-s.patch[1]

[1] f1f1ae369a

Signed-off-by: Shiji Yang <yangshiji66@qq.com>
Link: https://github.com/openwrt/openwrt/pull/18064
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit ce67f08449)
2025-06-08 12:56:13 +02:00
Álvaro Fernández Rojas
2a348bdbef bcm27xx-gpu-fw: update to v1.20250430
Full changelog: https://github.com/raspberrypi/firmware/compare/1.20250305...1.20250430

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
(cherry picked from commit 79f097faae)
2025-06-06 12:34:56 +02:00
Christian Marangi
0bf0556401 ath79: add calibtation variant for TP-Link Archer C6 v2
Now that we have a board file, add calibration variant for TP-Link
Archer C6 v2 and add ipq-wifi package for it.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
(cherry picked from commit 427c4aa266)
Signed-off-by: Leopoldo Pla <leopoldoplasempere@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19035
Signed-off-by: Nick Hainke <vincent@systemli.org>
2025-06-06 09:43:40 +02:00
Christian Marangi
8979768b97 ipq-wifi: Add entry for TP-Link Archer C6 v2
Add IPQ Wifi entry for Ath79 TP-Link Archer C6 v2.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
(cherry picked from commit c88515dd86)
Signed-off-by: Leopoldo Pla <leopoldoplasempere@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19035
Signed-off-by: Nick Hainke <vincent@systemli.org>
2025-06-06 09:43:40 +02:00
Christian Marangi
0c43acc349 ipq-wifi: update to Git HEAD (2025-05-30)
576ade747259 CI: add action that prints info about submited BDF-s
1d688e8654a5 qca9888 : add BDF for Yuncore WB5G08
ddfd9d2f3a8e ipq60xx: rename BDF for EAP623-Outdoor HD v1
bab36c1d947d ath10k: drop upstramed board files
09e5afab85b2 CI: add QCA9988
fde3d2a7ce59 qca9888: add TP-Link Archer C6 v2 (EU) BDF

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
(cherry picked from commit 8dd0020d1a)
Signed-off-by: Leopoldo Pla <leopoldoplasempere@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19035
Signed-off-by: Nick Hainke <vincent@systemli.org>
2025-06-06 09:43:40 +02:00
David Bauer
0a21ab7312 ipq40xx: enable WiFi LED for Teltonika RUTX50
Enable activity on the WiFi LEDs of the Teltonika RUTX50
like other boards in the ipq40xx target.

Signed-off-by: David Bauer <mail@david-bauer.net>
(cherry picked from commit 54463f1e2e)
2025-06-05 14:12:09 +02:00
David Bauer
cab22784b1 ipq40xx: use correct wired MAC-addresses for RUTX50
The Teltonika RUTX50 mac-addresses on its wired interfaces are currently
random on every boot.

Setting the mac-addresses from device-tree using nvmem does not work, as
the vendor bootloader mangles the mtd partitions, removing the
nvmem-cells property.

To remedy the random mac-addresse, set the correct ones in preinit.

Signed-off-by: David Bauer <mail@david-bauer.net>
(cherry picked from commit 08c93512fe)
2025-06-05 14:11:58 +02:00
David Bauer
796b7681bf ipq40xx: turn on Teltonika RUTX50 modem by default
Turn on the 5G modem of the RUTX50 on by default.

This allows to make the modem detectable on a fresh
installation OOTB without further intervention.

Signed-off-by: David Bauer <mail@david-bauer.net>
(cherry picked from commit ac1ad1a7ad)
2025-06-05 14:11:51 +02:00
Álvaro Fernández Rojas
4e63a06636 generic: backport brcm legacy dsa tag fix
Backport a small fix for brcm legacy dsa tags that has been accepted for
linux v6.16.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
(cherry picked from commit 84eefb493b)
2025-06-01 16:41:26 +02:00
Henry Tung
6706c8a6e3 tools/llvm-bpf: fix compilation with GCC15
Add cstdint include to SmallVector.h.

Backported from
7e44305041.

Signed-off-by: Henry Tung <henryptung@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/18767
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 53054fead5)
2025-05-31 23:10:42 +02:00
Álvaro Fernández Rojas
a2ac2c5ea3 generic: backport bcm63xx SPI reset fix
Fixes SPI and HSSPI coexistance on bmips bcm6362 and bcm63268.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
(cherry picked from commit ba1017bf74)
2025-05-31 18:32:33 +02:00
Nick Hainke
3b2051ce44 tools/b43-tools: update to latest version, fix C23 build
Update b43-tools to the latest upstream version to fix a
compilation error with C23:

  util.h:25:15: error: 'bool' cannot be defined via 'typedef'
     25 | typedef _Bool bool;
        |               ^~~~

Changelog:
c6fc53f replace custom bool typedef with <stdbool.h>
dadf30c fix format warning in compilation
2fe10ea b43-fwdump: Fix forwarding of arguments to disassembler

Link: https://github.com/openwrt/openwrt/pull/18708
Signed-off-by: Nick Hainke <vincent@systemli.org>
(cherry picked from commit f8da45e25d)
2025-05-30 17:10:10 +02:00
Tomasz Maciej Nowak
2f289e3b74 libiconv: fix compilation on hosts GCC=15
Backport upstream commit dropping external definition of mbrtowc. The
said definition conflicts with one provided by GCC 15. Issue found on
24.10 SDK.

Signed-off-by: Tomasz Maciej Nowak <tmn505@gmail.com>
2025-05-30 13:10:11 +02:00
Goetz Goerisch
6d46015d8b x86: add missing configuration
Added settings:
        x86: CONFIG_MITIGATION_ITS=y [1]

[1] https://web.git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-6.6.y&id=f7ef7f6ccf2bc3909ef5e50cbe9edf2bac71e1bd
Co-authored-by: Mieczyslaw Nalewaj <namiltd@yahoo.com>
Signed-off-by: Mieczyslaw Nalewaj <namiltd@yahoo.com>
Signed-off-by: Goetz Goerisch <ggoerisch@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/18924
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-05-28 13:22:00 +02:00
Goetz Goerisch
3a2a2c995f kernel: refresh patches
manually refresh kernel patches

Signed-off-by: Goetz Goerisch <ggoerisch@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/18924
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-05-28 13:22:00 +02:00
John Audia
f37e4dc300 rockchip: armv8: add missing config option
6.6.92 requires the addition of CONFIG_ARM_SCMI_DEBUG_COUNTERS

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/18835
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 763339207b)
Link: https://github.com/openwrt/openwrt/pull/18924
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-05-28 13:22:00 +02:00
John Audia
3246d6c0a1 stm32: add missing config option
6.6.92 requires the addition of CONFIG_ARM_SCMI_DEBUG_COUNTERS

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/18835
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 83ff9600dc)
Link: https://github.com/openwrt/openwrt/pull/18924
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-05-28 13:22:00 +02:00
John Audia
6f56ddc36f kernel: bump 6.6 to 6.6.92
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.6.92

No patches needed a rebase with this release/only archive hash updated.

Build system: x86/64
Build-tested: flogic/xiaomi_redmi-router-ax6000-ubootmod, ramips/tplink_archer-a6-v3
Run-tested: flogic/xiaomi_redmi-router-ax6000-ubootmod, ramips/tplink_archer-a6-v3

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/18835
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 2a7cfbbbef)
Link: https://github.com/openwrt/openwrt/pull/18924
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-05-28 13:22:00 +02:00
John Audia
9019992248 kernel: bump 6.6 to 6.6.91
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.6.91

Removed upstreamed:
	generic/pending-6.6/730-net-ethernet-mtk_eth_soc-reset-all-TX-queues-on-DMA-.patch[1]

All other patches automatically rebased.

1. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.91&id=68f29bb97a0e0519156664cdc23e8b1f129e3254

Build system: x86/64
Build-tested: flogic/xiaomi_redmi-router-ax6000-ubootmod, ramips/tplink_archer-a6-v3
Run-tested: flogic/xiaomi_redmi-router-ax6000-ubootmod, ramips/tplink_archer-a6-v3

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/18835
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit ecac1d8abd)
Link: https://github.com/openwrt/openwrt/pull/18924
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-05-28 13:22:00 +02:00
Shiji Yang
01644cba60 kernel: bump 6.6 to 6.6.90
Remove upstreamed patches:
  bcm27xx/patches-6.6/950-0481-xhci-Use-more-event-ring-segment-table-entries.patch [1]
  pending-6.6/691-net-ipv6-fix-UDPv6-GSO-segmentation-with-NAT.patch [2]

Manually rebased patches:
  generic/hack-6.6/781-usb-net-rndis-support-asr.patch [3]

[1] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.90&id=f377434945f528217e65fc5b18781caeba19ce72
[2] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.90&id=e0272844995aff8cbf2cc88b78c2b35ca51eda43
[3] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.90&id=222b6685efe0d8c1cdb078a67bbe806f56d18f94
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/18775
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 01d5026239)
Link: https://github.com/openwrt/openwrt/pull/18924
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-05-28 13:22:00 +02:00
Benjamin Berg
e709e9bc06 mac80211: add patch to suppress PREP when mesh forwarding is disabled
This fixes a bug where mac80211 would respond to a PREQ frame when a
neighbor table entry exists locally even though it will not forward the
frame and the reported path does not actually work.

Link: https://github.com/openwrt/openwrt/pull/18657
Link: https://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless-next.git/commit/?h=for-next&id=cf1b684a06170d253b47d6a5287821de976435bd
Link: https://patches.linaro.org/project/linux-wireless/patch/20250430191042.3287004-1-benjamin@sipsolutions.net/

Signed-off-by: Benjamin Berg <benjamin@sipsolutions.net>
(cherry picked from commit 26e64260e9)
2025-05-24 16:38:31 +02:00
Robert Marko
8e272a6d83 image: only filter out images when ImageBuilder is used
Currently, we are filtering out images if DEFAULT:=n or BROKEN:=y are set,
so if you are building from scratch and want to build custom images that
are stripped down to fit, you must edit the image recipe or its just
filtered out.

So, to allow this behaviour when building from scratch as we can assume
that person doing that knows what they are attempting to do lets just limit
the filtering to ImageBuilder.

Fixes: f060615a78 ("image: respect DEFAULT and BROKEN when Default profile is selected")
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-05-24 12:25:49 +02:00
Álvaro Fernández Rojas
0ccd68f9ba mac80211: brcm: update RPi brcmfmac patches
- Reorganize brcmfmac patches.
- Drop outdated RPi brcmfmac patches.
- Add RPi 6.12 brcmfmac patches with "rpi-6.12" name tag (excluding SAE).

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
(cherry picked from commit f23ad96e47)
2025-05-23 20:22:08 +02:00
Rosen Penev
01da187749 tools: add cmake dependency to bzip2
It's using cmake.mk so it needs CMake to build.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/18880
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 9deb8fad2f)
2025-05-23 12:36:16 +02:00
Álvaro Fernández Rojas
424788fc46 generic: backport upstream v6.16 Realtek PHY patches
83d962316128 net: phy: realtek: add RTL8127-internal PHY
708686132ba0 net: phy: realtek: Add support for PHY LEDs on RTL8211E
be1cc96ddf82 net: phy: realtek: use __set_bit() in rtl8211f_led_hw_control_get()
8c4d0172657c net: phy: realtek: Group RTL82* macro definitions
12d40df259e3 net: phy: realtek: add RTL8211F register defines
7c6fa3ffd265 net: phy: realtek: Clean up RTL821x ExtPage access
f3b265358b91 net: phy: realtek: remove unsed RTL821x_PHYSR* macros
7840e4d6f48a net: phy: realtek: Add support for WOL magic packet on RTL8211F

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
(cherry picled from commit d8375034b8)
2025-05-22 14:22:02 +02:00
Álvaro Fernández Rojas
8cac8d8723 generic: backport upstream v6.16 r8169 patches
f24f7b2f3af9 r8169: add support for RTL8127A
4f51e7d370a0 r8169: merge chip versions 52 and 53 (RTL8117)
f372ef6ed5a6 r8169: merge chip versions 64 and 65 (RTL8125D)
4dec0702b862 r8169: merge chip versions 70 and 71 (RTL8126A)
b7ed5d5a78fc r8169: use pci_prepare_to_sleep in rtl_shutdown
fe733618b27a r8169: add RTL_GIGA_MAC_VER_LAST to facilitate adding support for new chip versions
2b065c098c37 r8169: refactor chip version detection
0c49baf099ba r8169: add helper rtl8125_phy_param
8c40d99e5f43 r8169: add helper rtl_csi_mod for accessing extended config space

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
(cherry picked from commit 91ce7f606a)
2025-05-22 14:21:56 +02:00
Álvaro Fernández Rojas
e2457aa09f bcm27xx: switch to upstream SDHOST driver
The RPi upstream repo switched to the upstream SDHOST driver some time ago, so
it's time to do the same in our configs.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
(cherry picked from commit cd79b6ede9)
2025-05-21 14:06:20 +02:00
Robert Marko
bc8b407400 mvebu: armada37xx: add pending PXA I2C recovery fix
Import pending PXA I2C recovery fixes so that if I2C recovery is enabled in
the DTS it does not completely break I2C as it currently does since kernel
6.6.

Signed-off-by: Robert Marko <robert.marko@sartura.hr>
(cherry picked from commit dfacae3049)
2025-05-21 10:26:20 +02:00
Robert Marko
6285ce709a mvebu: armada37xx: backport pinctrl fixes
Backport upstream pinctrl fixes, these are required for the follow-up I2C
PXA recovery fixes.

Signed-off-by: Robert Marko <robert.marko@sartura.hr>
(cherry picked from commit 831994e258)
2025-05-21 10:26:12 +02:00
Stijn Tintel
6d41cbf868 realtek: add missing symbol
Commit d7e82c78d7 added a generic kernel patch that exposes a new
symbol REALTEK_PHY_HWMON when REALTEK_PHY and HWMON are enabled. The new
symbol was added to kmod-phy-realtek, but the kmod is not used in the
realtek target.

Fixes: d7e82c78d7 ("generic: backport Realtek PHY patches from upstream")
Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
(cherry picked from commit ab87087672)
2025-05-20 20:49:01 +01:00
Martin Schiller
b394fa6819 generic: net: phy: sfp: backport some FS copper SFP fixes
This fixes the handling of some FS copper SFP modules using the RollBall
protocol and needing some extra treatment.

Signed-off-by: Martin Schiller <ms@dev.tdt.de>
(cherry picked from commit bbe58f9830)
2025-05-20 20:49:01 +01:00
Shiji Yang
a53d175865 generic: crypto: fix jitterentropy initialization failed issue
Sync jitterentropy source code with linux-6.12 to solve the
issue of jitterentropy initialization failed:

[ 9.523489] jitterentropy: Initialization failed with host not compliant with requirements: 9
[ 9.661916] kmodloader: 1 module could not be probed
[ 9.662377] kmodloader: - jitterentropy_rng - 0

In linux upstream commit cf27d9475f37 ("crypto: jitter - use
permanent health test storage"), when FIPS crypto is disabled,
the health test results are always explicitly skipped. That means
it will never return error code 9 (health test failed) again.

Fixes: https://github.com/openwrt/openwrt/issues/16684
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/18399
(cherry picked from commit eec11fbbb6)
Link: https://github.com/openwrt/openwrt/pull/18822
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-05-18 09:59:53 +02:00
Robert Marko
6d4554429a image: respect DEFAULT and BROKEN when Default profile is selected
Currently, when you select the Default profile it does not honor DEFAULT:=n
nor BROKEN:=y in device profiles but rather just tries to build all of them.

This may work when building directly, but when using Image Builder it will
always fail since no kernel or anything else is present for devices that
have DEFAULT:=n or BROKEN:=Y set since those are skipped during build.

So, lets look for DEFAULT being set to "n" or BROKEN being set to "y" and
then remove clear _PROFILE_SET so they dont end up being marked for
installation.

Fixes: #18410
Link: https://github.com/openwrt/openwrt/pull/18814
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit f060615a78)
2025-05-18 09:41:54 +02:00
Henry Tung
d2d9b1eaeb mac80211: ath11k: fix broadcast failures during GTK rekeying
Revert key_cipher change to NONE when clearing key.
Setting to NONE triggers asserts in the firmware and causes broadcast
drops with ath11k firmware 2.9.0.1, so until a future blob
fixes this, revert this as a workaround.

Imported from
https://git.codelinaro.org/clo/qsdk/oss/system/feeds/wlan-open/-/blob/win.wlan_host_opensource.3.0.r24/patches/ath11k/350-ath11k-Revert-clear-the-keys-properly-when-DISABLE_K.patch

Related discussion links:

- https://github.com/openwrt/openwrt/issues/9555
- https://lore.kernel.org/linux-wireless/Z2Q9POuV-6MIdzRf@pilgrim/T/#t

Signed-off-by: Henry Tung <henryptung@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/18705
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 94e04a4513)
Link: https://github.com/openwrt/openwrt/pull/18754
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-05-15 20:27:48 +02:00
Felix Fietkau
ba37852951 kernel: fix warning on retrying page pool release
Fixes the following warning:
[  180.314652] NOHZ tick-stop error: local softirq work is pending, handler #08!!!

Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry picked from commit 610dd871aa)
2025-05-15 15:43:58 +02:00
David Bauer
2bcc3163a6 ramips: pad EX400 kernel partition to retain web recovery
The web-recovery of the Genexis EX400 validates uploaded images to fit
in the rootf_0 partition.

With OpenWrt, only the kernel is stored in this partition, leaving the
partition very small. Currently, the first factory release image won't
be accepted by the recovery interface after the OpenWrt installation.

Pad the image of the ubifs to 10MB. This allows the 24.10 release image
to be uploaded, enabling device recovery.

Signed-off-by: David Bauer <mail@david-bauer.net>
(cherry picked from commit eea4689654)
2025-05-14 19:03:17 +02:00
Álvaro Fernández Rojas
65906202fc bmips: add missing NAND config symbol
bcm6328, bcm6362 and bcm6368 targets are missing a key config symbol which
prevents the NAND from working.

Fixes: f6c02b014d ("bmips: 6.1: refresh config and add missing symbols")
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
(cherry picked from commit 61da745817)
2025-05-14 11:39:20 +02:00
Christoph Krapp
d71e6920fa mediatek: filogic: fix wifi on ASUS RT-AX52
Add missing kmod-7915e package to get both wireless interfaces working.

Link: https://github.com/openwrt/openwrt/issues/18690

Reviewed-by: Steffen Förster <nemesis@chemnitz.freifunk.net>
Signed-off-by: Christoph Krapp <achterin@gmail.com>
(cherry picked from commit 0d6ba33181)
2025-05-13 03:38:41 +02:00
David Bauer
6adcb5d75c ramips: use i2c-gpio driver for EX400
Configure the i2c pins as GPIO outputs and use the i2c-gpio driver to
control the Semtech SX9512 touch controller.

This fixes spurious errors in i2c transactions even at 1kHz with the
native i2c driver.

leds green:wan: Setting an LED's brightness failed (-6)

Signed-off-by: David Bauer <mail@david-bauer.net>
(cherry picked from commit f828be4d10)
2025-05-12 02:20:58 +02:00
David Bauer
79cbeb8dd2 ramips: support Genexis EX400 touch controller
Add the necessary package dependencies as well as device-tree properties
to support the touch-inputs as well as missing LEDs on the Genexis Pulse
EX400 range extender.

Signed-off-by: David Bauer <mail@david-bauer.net>
(cherry picked from commit 49a1781d74)
2025-05-12 02:20:58 +02:00
David Bauer
5216ad9731 ramips: add Semtech SX9512 touch input driver
This driver is required for the touch-inputs as well as some LEDs on the
Genexis Pulse EX400.

The driver was also sent upstream. As the EX400 is currently the only
consumer, the driver is added target-specific for ramips.

Once the driver has been accepted upstream and is provided in a kernel
release used by OpenWrt, the package should be moved to the global input
drivers.

Link: https://www.spinics.net/lists/kernel/msg5669349.html

Signed-off-by: David Bauer <mail@david-bauer.net>
(cherry picked from commit 0842e79338)
2025-05-12 02:20:58 +02:00
David Bauer
ea97c49766 ramips: drop ALT0 name from Pulse EX400 dts model
The alternative model name does not need to be represented in the DTS.

Signed-off-by: David Bauer <mail@david-bauer.net>
(cherry picked from commit ff55daf1eb)
2025-05-11 14:12:18 +02:00
Eric Fahlgren
52d4559fe1 imagebuilder: exclude metadata for profiles that have no kernel
Device profiles that specify 'DEFAULT := n' are being included
in the imagebuilder metadata, specifically in .profiles.mk, even
though there is no kernel built for the device.  This results in
'make info' showing the device as valid, but then 'make image
PROFILE=xxx' failing with 'No rule to make target xxx-kernel.bin ...'

We exclude these profiles from the imagebuilder, avoiding these
errors.

Fixes: https://github.com/openwrt/openwrt/issues/18410
Signed-off-by: Eric Fahlgren <ericfahlgren@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/18748
(cherry picked from commit b88f3ebb33)
Link: https://github.com/openwrt/openwrt/pull/18765
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-05-10 12:12:26 +02:00
Mikhail Zhilkin
5db1b94b63 mediatek: add support for Routerich AX3000 v1
Routerich AX3000 v1 is a wireless WiFi 6 router.

Specification
-------------
- SoC       : MediaTek MT7981BA dual-core ARM Cortex-A53 1.3 GHz
- RAM       : DDR3 512 MiB
- Flash     : SPI-NAND 128 MiB (Winbond)
- WLAN      : MediaTek MT7976CN dual-band WiFi 6
  - 2.4 GHz : b/g/n/ax, MIMO 2x2
  - 5 GHz   : a/n/ac/ax, MIMO 2x2
- Ethernet  : 10/100/1000 Mbps x3, LAN (MediaTek MT7531AE)
              10/100/1000 Mbps x1, WAN (MT7981 internal PHY)
- USB       : 1x 3.0 with power control
- UART      : through-hole on PCB
  - [J500] GND, TX, RX, 3.3V (115200n8)
- Buttons   : Mesh, Reset
- LEDs      : 1x Power (Blue)
              1x WiFi 2.4 GHz (Blue)
              1x WiFi 5 GHz (Red)
              1x Mesh (Blue)
              3x LAN activity (Blue)
              1x WAN activity (Blue)
              1x WAN no-internet (Red)
- Power     : 12 VDC, 1.5 A

Installation
------------
Flash OpenWrt 'sysupgrade.bin' image using stock firmware web-interface
(without keeping settings).

Return to stock
---------------
Install stock firmware image (without keeping settings) using OpenWrt
sysupgrade method.

Recovery
--------
Connect uart, use u-boot menu to flash stock firmware image or boot
OpenWrt initramfs image.

MAC addresses
-------------
+---------+-------------------+-----------+
|         | MAC               | Algorithm |
+---------+-------------------+-----------+
| WAN     | 24:0f:5e:xx:xx:08 | label     |
| LAN     | 24:0f:5e:xx:xx:09 | label+1   |
| WLAN 2g | 24:0f:5e:xx:xx:0a | label+2   |
| WLAN 5g | 24:0f:5e:xx:xx:0b | label+3   |
+---------+-------------------+-----------+
The WLAN 2g MAC was found in 'Factory', 0x4

Signed-off-by: Mikhail Zhilkin <csharper2005@gmail.com>
(cherry picked from commit fdb6962f20)
[fix merging conflict in mediatek_filogic, 01_leds, 02_network]
Signed-off-by: Mikhail Zhilkin <csharper2005@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/18601
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-05-08 20:35:36 +02:00
Olgun Demir
d29ee6c47e ramips: Add support for Xiaomi MiWiFi 3A
The Xiaomi MiWiFi 3A wireless router has a similar system architecture as the Xiaomi Mi 4A router, which is already officially supported by OpenWrt.

Product website: https://www.mi.com/miwifi3a

Device specification
--------------------
SoC:      MT7628AN MIPS_24KEc @ 580 MHz 2.4G-bgn 2x2
WiFi:     MT7612EN 5G-an, ac 80 MHz 2T2R
Flash:    16 MB
DRAM:     64 MB
Switch:   MT7628AN (integrated in SoC)
Ethernet: 1 x 10 /100 Mbps
USB:      None
Antennas: 2 x 2,4 GHz and 2 x 5 GHz (all are external and non-detachable)
LEDs:     blue/red/amber
Buttons:  Reset
Serial:   115200,8n1

MAC addresses as verified by OEM firmware:
------------------------------------------
use address source
LAN *:DD factory 0x28
WAN *:DD factory 0x28
2g *:DE factory 0x4
5g *:DF factory 0x8004

OEM firmware uses VLAN's to create the network interface for WAN and LAN.

Bootloader info:
----------------
The stock bootloader uses a "Dual ROM Partition System".
OS1 is a deep copy of OS2.
The bootloader starts OS2 by default.
To force start OS1 it is needed to set "flag_try_sys2_failed=1".

How to install:
---------------
1- Use OpenWRTInvasion to gain Telnet, SSH and FTP access: https://github.com/acecilia/OpenWRTInvasion
[IP: 192.168.31.1 | Username: root | Password: root | FTP-Port: 21]
2- Connect to router using telnet or ssh.
3- Backup all partitions. Use command "dd if=/dev/mtd0 of=/tmp/mtd0". Copy /tmp/mtd0 to computer using ftp.
4- Copy openwrt-ramips-mt76x8-xiaomi_miwifi-3a-squashfs-sysupgrade.bin to /tmp in router using ftp.
5- Enable UART access and change start image to OS1.

nvram set uart_en=1
nvram set flag_last_success=1
nvram set boot_wait=on
nvram set flag_try_sys2_failed=1
nvram commit

6- Erase OS1 & OS2 and install OpenWrt

mtd erase OS1
mtd erase OS2
mtd -r write /tmp/openwrt-ramips-mt76x8-xiaomi_miwifi-3a-squashfs-sysupgrade.bin OS1

Credits:
--------
This PR is based on the work of Zehao Zhang (Github: @ZZH-Finalize) that he had published in the PR: #15698

Signed-off-by: Olgun Demir <olgun.demir@mail.com.tr>
Link: https://github.com/openwrt/openwrt/pull/18427
(cherry picked from commit c3b8108a2b)
Link: https://github.com/openwrt/openwrt/pull/18550
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-05-07 21:23:54 +02:00
Jonas Jelonek
6854e1e554 kernel: netdevices: add driver for Broadcom NetXtreme-C/E
Package bnxt_en kernel module for Broadcom NetXtreme-C/E based Ethernet
network chips like BCM573xx and BCM574xx.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/17301
(cherry picked from commit a7f4155f54)
Signed-off-by: Josh Bendavid <joshbendavid@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/18483
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-05-07 21:15:45 +02:00
Coia Prant
4a55d894fd kernel: modules: add HiNIC support
Add support for the Huawei Intelligent PCIE Network Interface Card (HiNIC)

Signed-off-by: Coia Prant <coiaprant@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/18534
(cherry picked from commit 5fcc57cca6)
Link: https://github.com/openwrt/openwrt/pull/18571
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-05-07 21:12:31 +02:00
Sebastian Schaper
ca38f13ea2 mediatek: filogic: add support for WAVLINK WL-WN573HX3
The WL-WN573HX3 is an AX3000 outdoor Access Point by WAVLINK,
also sold in Europe as 7Links WLR-1300 (ZX-5612).

Specifications:

- MT7981B + MT7976 AX3000 2x2 DBDC (160 MHz)
- 16 MiB SPI NOR, 256 MiB RAM
- Gigabit ethernet port, 802.3af PoE
- IP67 outdoor case for wall or pole mounting with
    four single band RP-SMA fiberglass antennas (8 dBi)

Installation:

- OEM Web UI is at 192.168.30.1 which will forward to
    http://netlogin.link (using a captive portal)
- login with default password `admin`
- skip setup wizard by navigating directly to
    http://netlogin.link/html/meshUpgrade.html
- upload WN573HX3-sysupgrade.bin
- reset to factory defaults to discard OEM UCI settings

MAC address assignment:

LAN         80:xx:xx:76:xx:25  hw 0x44e
WLAN 2.4G   80:xx:xx:76:xx:27  factory 0x04 (label MAC)
WLAN 5G	    82:xx:xx:46:xx:27
pair key    8a:xx:xx:76:xx:27  also on label, not used by OpenWrt

Signed-off-by: Sebastian Schaper <openwrt@sebastianschaper.net>
Link: https://github.com/openwrt/openwrt/pull/18206
(cherry-picked from commit 907cb88e10)
Link: https://github.com/openwrt/openwrt/pull/18557
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-05-07 21:03:31 +02:00
Mikhail Zhilkin
cf9b806182 mediatek: filogic: fix mistaken executable bit on dts file
This commit fixes mistaken executable bit on
mt7981b-mercusys-mr80x-v3.dts file.

Fixes: 7921e48d43 ("mediatek: add support for Mercusys MR80X v3")
Signed-off-by: Mikhail Zhilkin <csharper2005@gmail.com>
(cherry picked from commit f733442c02)
Link: https://github.com/openwrt/openwrt/pull/18522
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-05-07 20:58:33 +02:00
Schneider Azima
0ecf136f4d mediatek: add support for Mercusys MR80X v3
This commit adds support for Mercusys MR80X(EU) v3 router.

Device specification:
 - SoC: Mediatek MT7981b, Cortex-A53, 64-bit
 - RAM: 512MB
 - Flash: SPI NAND GigaDevice GD5F1GQ5UEYIGY (128 MB)
 - Ethernet: 4x 100/1000 Mbps LAN1,LAN2,LAN3 & WAN
 - Wireless: 2.4GHz (802.11 b/g/n/ax)
 - Wireless: 5GHz (802.11 a/n/ac/ax)
 - LEDs: 1 orange and 1 green status LEDs, 4 green gpio-controlled LEDs
   on ethernet ports
 - Buttons: 1 (Reset)
 - Bootloader: Main U-Boot - U-Boot 2022.01-rc4. Additionally, both UBI
   slots contain "seconduboot" (also U-Boot 2022.01-rc4)

Installation (UART):
 - Place OpenWrt initramfs-kernel image on tftp server with IP 192.168.1.2
 - Attach UART, switch on the router and interrupt the boot process by
   pressing 'Ctrl-C'.
 - Set the uboot environment for startup.
   setenv tp_boot_idx 0; setenv bootcmd bootm 0x46000000; saveenv
   If the bootarg is set to boot from ubi1, also change it to ubi0.
 - Load and run OpenWrt initramfs image.
   setenv serverip 192.168.1.2; setenv ipaddr 192.168.1.1; tftpboot initramfs-kernel.bin; bootm
 - Login as root via SSH (IP 192.168.1.1, port 22)
 - Upload OpenWrt sysupgrade.bin image to the /tmp dir of the router
 - Run sysupgrade:
   sysupgrade -n /tmp/sysupgrade.bin

Recovery:
 - Press Reset button and power on the router.
 - Navigate to U-Boot recovery web server (http://192.168.1.1/) and
   upload the OEM firmware.

Stock layout:
0x000000000000-0x000000200000 : "boot"
0x000000200000-0x000000300000 : "u-boot-env"
0x000000300000-0x000003500000 : "ubi0"
0x000003500000-0x000006700000 : "ubi1"
0x000006700000-0x000006f00000 : "userconfig"
0x000006f00000-0x000007300000 : "tp_data"

ubi0/ubi1 format:
U-Boot at boot checks that all volumes are in place:
+-------------------------------+
| Volume Name: uboot   Vol ID: 0|
| Volume Name: kernel  Vol ID: 1|
| Volume Name: rootfs  Vol ID: 2|
+-------------------------------+

MAC addresses:
+---------+-------------------+-----------+
|         | MAC               | Algorithm |
+---------+-------------------+-----------+
| label   | 94:0C:xx:xx:xx:12 | label     |
| WAN     | 94:0C:xx:xx:xx:13 | label+1   |
| LAN     | 94:0C:xx:xx:xx:12 | label     |
| WLAN 2g | 94:0C:xx:xx:xx:11 | label-1   |
| WLAN 5g | 94:0C:xx:xx:xx:10 | label-2   |
+---------+-------------------+-----------+
label MAC address was found in UBI partition "tp_data", file
"default-mac".

Signed-off-by: Schneider Azima <Schneider-Azima12@protonmail.com>
Link: https://github.com/openwrt/openwrt/pull/18181
(cherry picked from commit 7921e48d43)
Signed-off-by: Schneider Azima <Schneider-Azima12@protonmail.com>
Link: https://github.com/openwrt/openwrt/pull/18522
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-05-07 20:58:33 +02:00
John Audia
e099424aaa kernel: bump 6.6 to 6.6.89
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.6.89

All patches automatically rebased.

Build system: x86/64
Build-tested: flogic/xiaomi_redmi-router-ax6000-ubootmod, ramips/tplink_archer-a6-v3
Run-tested: flogic/xiaomi_redmi-router-ax6000-ubootmod, ramips/tplink_archer-a6-v3

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/18607
(cherry picked from commit fbcd547a44)
Link: https://github.com/openwrt/openwrt/pull/18730
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-05-07 20:53:17 +02:00
Mieczyslaw Nalewaj
9b28f32815 kernel: bump 6.6 to 6.6.88
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.6.88

Manually rebased:
 - bcm27xx/patches-6.6/950-0327-media-i2c-ov7251-Make-the-enable-GPIO-optional.patch[1]
 - bcm27xx/patches-6.6/950-0521-PCI-brcmstb-Add-BCM2712-support.patch[2]
 - generic/hack-6.6/610-net-page_pool-try-to-free-deferred-skbs-while-waitin.patch[3]
 - generic/pending-6.6/734-net-ethernet-mediatek-enlarge-DMA-reserve-buffer.patch[4]

All other patches automatically rebased.

1. https://web.git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.88&id=f249c05416ea0bef24c9dbed0e653d2fad87b127
2. https://web.git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.88&id=1fea7726276e5d6526ecd4e7ccb4c91a6135deb5
3. https://web.git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.88&id=95f17738b86fd198924d874a5639bcdc49c7e5b8
4. https://web.git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.88&id=a2874f0dff63829d1f540003e2d83adb610ee64a

Signed-off-by: Mieczyslaw Nalewaj <namiltd@yahoo.com>
Link: https://github.com/openwrt/openwrt/pull/18607
(cherry picked from commit a72a2fd7e0)
Link: https://github.com/openwrt/openwrt/pull/18730
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-05-07 20:53:16 +02:00
Christian Marangi
cee749b889 generic: drop extra-old-deprecated pending fix patch for sch codel
Patch 620-net_sched-codel-do-not-defer-queue-length-update.patch is
actually an ancient patch that somehow manage to be ported for 7 solid
years.

This comes from [1] where a fix patch was proposed. Nobody notice that
the proposed patch was actually rejected upstream in favor of [2]. And
the upstream fix patch is present in kernel from version 4.18.

This means that we were actually fixing for a non existant bug and maybe
introducing regression down the line.

Drop the patch for good as we already have a fix for it in flace for a
long time.

[1] https://bugzilla.kernel.org/show_bug.cgi?id=109581
[2] 35b42da69e

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
(cherry picked from commit 0f9af6dcd9)
Link: https://github.com/openwrt/openwrt/pull/18730
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-05-07 20:53:16 +02:00
John Audia
517d8a102f kernel: bump 6.6 to 6.6.87
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.6.87

Manually rebased:
	generic-hack/781-usb-net-rndis-support-asr.patch

All other patches automatically rebased.

Build system: x86/64
Build-tested: flogic/xiaomi_redmi-router-ax6000-ubootmod, ramips/tplink_archer-a6-v3, x86/64
Run-tested: flogic/xiaomi_redmi-router-ax6000-ubootmod, ramips/tplink_archer-a6-v3, x86/64

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/18457
(cherry picked from commit 66b5ed7a4e)
Link: https://github.com/openwrt/openwrt/pull/18730
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-05-07 20:53:16 +02:00
Dave Marquard
b546f80a3f bcm27xx: bcm2712: support all devices
- RPi 500
- RPi 5 Compute Module
- RPi 5B (bcm2712 d0 rev)

Signed-off-by: Dave Marquard <dave-atx@users.noreply.github.com>
Link: https://github.com/openwrt/openwrt/pull/18622
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
(cherry picked from commit 169dc6270a)
2025-05-07 08:33:02 +02:00
Dave Marquard
c9de6f06db linux-firmware: add Raspberry Pi 5 CM NVRAM
The RPi 5 Compute Module expects the same NVRAM as the one from RPi 4
on a different file.

Signed-off-by: Dave Marquard <dave-atx@users.noreply.github.com>
Link: https://github.com/openwrt/openwrt/pull/18722
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
(cherry picked from commit 8774dd7761)
2025-05-07 08:33:02 +02:00
Tim Harvey
02422b04d4 imx: coretexa53: add network config for single-port Gateworks Venice boards
Add network config for single-port Gateworks venice boards such that the
ethernet port is the WAN port instead of the default being a LAN port.

Signed-off-by: Tim Harvey <tharvey@gateworks.com>
Link: https://github.com/openwrt/openwrt/pull/18629
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 2d6f0275f8)
2025-05-06 18:32:39 +02:00
Christoph Krapp
99708cc16d mediatek: filogic: add support for ASUS RT-AX52
Hardware
--------
SOC:   MediaTek MT7981b
RAM:   256MB DDR3
FLASH: 128MB SPI-NAND (Winbond W25N01GV)
WIFI:  Mediatek MT7981b DBDC 802.11ax 2.4/5 GHz
ETH:   MediaTek MT7531 Switch
UART:  3V3 115200 8N1 (Pinout silkscreened / Do not connect VCC)

Installation
-----------------------------------------------------------
Vendor-UI Method
-----------------------------------------------------------
1. Download the OpenWrt initramfs.trx image.

2. Connect the PC via LAN to one of the yellow router ports and wait
   until your PC to get a DHCP lease.

3. Browse to http://192.168.50.1

4. If your router is brand new, finish the setup process and log into
   the Web-UI.

5. Navigate to Administration -> Firmware Upgrade and upload the
   downloaded OpenWrt image.

6. Wait for OpenWrt to boot. Transfer the sysupgrade image to the device
   using scp and install using sysupgrade.

   $ sysupgrade -n <path-to-sysupgrade.bin>
-----------------------------------------------------------
TFTP Method
-----------------------------------------------------------
1. Download the OpenWrt initramfs image. Copy the image to a TFTP server
   reachable at 192.168.1.70/24. Rename the image to rtax52.bin.

2. Connect the PC with TFTP server to the RT-AX52.
   Set a static ip on the ethernet interface of your PC.
     (ip address: 192.168.1.70, subnet mask:255.255.255.0)
  Conect to the serial console,
   interrupt the autoboot process by pressing '4' when prompted.

3. Download & Boot the OpenWrt initramfs image.

   $ setenv ipaddr 192.168.1.1
   $ setenv serverip 192.168.1.70
   $ tftpboot 0x46000000 rtax52.bin
   $ bootm 0x46000000

4. Wait for OpenWrt to boot. Transfer the sysupgrade image to the device
   using scp and install using sysupgrade.

   $ sysupgrade -n <path-to-sysupgrade.bin>
---------------------------------------------------------------------------
Revert to stock firmware:
1: Download the rt-ax52 firmware from ASUS official website. Save
   the firmware to tftp server directory and rename to RT-AX52.trx

2: Connect the PC with TFTP server to the RT-AX52.
   Set a static ip on the ethernet interface of your PC.
     (ip address: 192.168.1.70, subnet mask:255.255.255.0)

3: Conect to the serial console,  power on again,  interrupt the
   autoboot process by pressing '4' when prompted.
  $: ubi remove linux
  $: ubi remove jffs2
  $: ubi remove rootfs
  $: ubi remove rootfs_data
  $: ubi create linux 0x45fe000
  $: reset

  Then the dut will reboot,interrupt the autoboot process by
  pressing '2' when prompted.
       2: Load System code then write to Flash via TFTP.
       Warning!! Erase Linux in Flash then burn new one. Are you sure?(Y/N)
       $: enter y
  you will see the follow, type enter directly:
       Input device IP (192.168.1.1) ==:
       Input server IP (192.168.1.70) ==:
       Input Linux Kernel filename (RT-AX52.trx) ==:

4: wait for the device run up

Based on support for ASUS RT-AX52 by liudongdongdong7397
and trx image generation by remittor

Signed-off-by: Christoph Krapp <achterin@gmail.com>
(cherry picked from commit 50d9ca6e5a)
(remove factory image generation)
Signed-off-by: David Bauer <mail@david-bauer.net>
2025-05-04 16:36:49 +02:00
Robert Marko
069f988d9d toolchain: binutils: fix compilation with GCC15
GCC15 has switched the C language default from GNU17 to GNU23[1] and this
causes builds to fail with:
In file included from mips-opc.c:29:
mips-opc.c: In function 'decode_mips_operand':
mips-formats.h:86:7: error: expected identifier or '(' before 'static_assert'
   86 |       static_assert[(1 << (SIZE)) == ARRAY_SIZE (MAP)]; \
      |       ^~~~~~~~~~~~~
mips-opc.c:214:15: note: in expansion of macro 'MAPPED_REG'
  214 |     case 'z': MAPPED_REG (0, 0, GP, reg_0_map);
      |               ^~~~~~~~~~

So, backport upstream fix for this[2] to fix compilation with GCC15.
Patch for 2.40 was manually refreshed as part of the S390 code does not
exist in 2.40 as it was added after it.

[1] https://gcc.gnu.org/gcc-15/porting_to.html#c23
[2] https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=8ebe62f3f0d27806b1bf69f301f5e188b4acd2b4

Fixes: #18678
Link: https://github.com/openwrt/openwrt/pull/18681
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit d3216173ab)
2025-05-03 22:47:07 +02:00
David Bauer
cc1b909a6b ramips: make Genexis EX400 factory image dependent on initramfs
The factory image generation for the Genexis EX400 image currently fails
if CONFIG_TARGET_ROOTFS_INITRAMFS is disabled.

Create the factory image only if said config option is enabled to avoid
failing builds.

Signed-off-by: David Bauer <mail@david-bauer.net>
(cherry picked from commit 4e83d5ec26)
2025-05-01 14:58:54 +02:00
Felix Fietkau
0b392b925f kernel: fix UDPv6 GSO segmentation with NAT
Fixes issues with rx-gro-list and NAT66

Fixes: https://github.com/openwrt/openwrt/issues/18387
Fixes: https://github.com/openwrt/openwrt/issues/18516
Fixes: https://github.com/openwrt/openwrt/issues/18608
Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry picked from commit 5501a502e4)
2025-04-26 20:53:51 +02:00
Robert Marko
78d517a18c toolchain: gdb: set -std=gnu17
Fedora 42 updated to GCC15 which now defaults to GNU23 as the default
instead of GNU17[1], and this breaks gdb compilation.

This looks like a readline issue, that was fixed in GDB 16.2 but to
not update toolchain components we can simply set the C standard back
to GNU17.

[1] https://gcc.gnu.org/gcc-15/porting_to.html#c23

Link: https://github.com/openwrt/openwrt/pull/18581
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-04-25 10:55:04 +02:00
Robert Marko
e0069e7587 jsonfilter: update to Git HEAD (2025-04-18)
8a86fb78235b build: set GNU17 for lemon compilation

Link: https://github.com/openwrt/openwrt/pull/18525
(cherry picked from commit 891c8244f2)
Link: https://github.com/openwrt/openwrt/pull/18581
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-04-25 10:55:04 +02:00
John Audia
5462cba522 tools/e2fsprogs: update to 1.47.2
Release information (not yet published):
https://e2fsprogs.sourceforge.net/e2fsprogs-release.html#1.47.2

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/17499
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 40e2710dfa)
Link: https://github.com/openwrt/openwrt/pull/18581
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-04-25 10:55:04 +02:00
Rosen Penev
a4fec25e24 tools/squashfs3-lzma: fix compilation with GCC15
Function pointers require proper types now.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/18572
(cherry picked from commit d5c6452516)
Link: https://github.com/openwrt/openwrt/pull/18581
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-04-25 10:55:04 +02:00
Robert Marko
d9fccc8e1a tools: gmp: fix compilation with GCC15
Fedora 42 updated to GCC15 which now defaults to GNU23 as the default
instead of GNU17[1], and this breaks GMP compilation by failing to find
a working compiler test.

Its been fixed upstream [2][3], so backport the fix to fix GCC15 compilation.

[1] https://gcc.gnu.org/gcc-15/porting_to.html#c23
[2] https://gmplib.org/repo/gmp/rev/8e7bb4ae7a18
[3] https://gmplib.org/repo/gmp/rev/d66d66d82dbb

Link: https://github.com/openwrt/openwrt/pull/18506
(cherry picked from commit 31800db91d)
Link: https://github.com/openwrt/openwrt/pull/18581
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-04-25 10:55:03 +02:00
Robert Marko
1e51fd037d tools: elfutils: set -std=gnu17
Fedora 42 updated to GCC15 which now defaults to GNU23 as the default
instead of GNU17[1], and this breaks m4 compilation.

This looks like a gnulib issue, so until that is updated/fixed
lets simply set C language version back to GNU17.

[1] https://gcc.gnu.org/gcc-15/porting_to.html#c23

Link: https://github.com/openwrt/openwrt/pull/18506
(cherry picked from commit f165dd2f78)
Link: https://github.com/openwrt/openwrt/pull/18581
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-04-25 10:55:03 +02:00
Robert Marko
5531dc7109 tools: cpio: fix compilation with GCC15
Fedora 42 updated to GCC15 which now defaults to GNU23 as the default
instead of GNU17[1], and this breaks cpio compilation.

Its been reported upstream [2], so import the patch attached to the bug
report that fixes compilation with GCC15.

[1] https://gcc.gnu.org/gcc-15/porting_to.html#c23
[2] https://savannah.gnu.org/bugs/?66297

Link: https://github.com/openwrt/openwrt/pull/18506
(cherry picked from commit c5041094ba)
Link: https://github.com/openwrt/openwrt/pull/18581
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-04-25 10:55:03 +02:00
Robert Marko
9b652e276f tools: m4: set -std=gnu17
Fedora 42 updated to GCC15 which now defaults to GNU23 as the default
instead of GNU17[1], and this breaks m4 compilation.

Its been reported upstream [2], so until its fixed lets simply set C
language version back to GNU17.

[1] https://gcc.gnu.org/gcc-15/porting_to.html#c23
[2] https://savannah.gnu.org/support/?111150

Link: https://github.com/openwrt/openwrt/pull/18505
(cherry picked from commit 8c141e53d7)
Link: https://github.com/openwrt/openwrt/pull/18581
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-04-25 10:55:03 +02:00
Felix Fietkau
274418b028 udebug: add missing dependencies
Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry picked from commit b0710e964d)
2025-04-24 14:24:20 +02:00
Weijie Gao
3a481ae21b toolchain: mold: add PKG_NAME to Makefile
In include/host-build.mk, HOST_BUILD_DIR is set by default value:
HOST_BUILD_DIR ?= $(BUILD_DIR_HOST)/$(PKG_NAME)

However the mold package has no PKG_NAME set at all. This means the
HOST_BUILD_DIR is identical to $(BUILD_DIR_HOST).

In the Host/Prepare stage, by default, the $(HOST_BUILD_DIR) will be
deleted at first unconditionally. Since HOST_BUILD_DIR is identical
to $(BUILD_DIR_HOST), the entire build_dir/toolchain-* directory will
be removed and this will cause build failure.

Adding PKG_NAME:=ld.mold can solve this issue.

Signed-off-by: Weijie Gao <hackpascal@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/18567
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit b9cb07eced)
2025-04-23 12:22:58 +02:00
Álvaro Fernández Rojas
49901245e5 kernel: r8168: add RSS variant
Instead of enabling RSS support, let's introduce a variant and let users
choose between both variants since it can cause network issues.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
(cherry picked from commit cb3fc1aef9)
2025-04-23 10:25:39 +02:00
Álvaro Fernández Rojas
da59bc0a6b kernel: r8127: rss: enable ENABLE_MULTIPLE_TX_QUEUE
We need both ENABLE_RSS_SUPPORT and ENABLE_MULTIPLE_TX_QUEUE in order to
support multiple RX and TX queues.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
(cherry picked from commit 7615de6ef0)
2025-04-23 10:25:24 +02:00
Álvaro Fernández Rojas
c46ee416be kernel: r8126: rss: enable ENABLE_MULTIPLE_TX_QUEUE
We need both ENABLE_RSS_SUPPORT and ENABLE_MULTIPLE_TX_QUEUE in order to
support multiple RX and TX queues.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
(cherry picked from commit a3e51a3956)
2025-04-23 10:25:10 +02:00
Pavel Kubelun
a42c06d674 kernel: r8125: rss: enable ENABLE_MULTIPLE_TX_QUEUE
We need both ENABLE_RSS_SUPPORT and ENABLE_MULTIPLE_TX_QUEUE in order to
support multiple RX and TX queues.

Signed-off-by: Pavel Kubelun <be.dissent@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/18509
[bump release, improve commit description and package changes]
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
(cherry picked from commit d127963a46)
2025-04-23 10:24:50 +02:00
Pavel Kubelun
ec82f459c9 kernel: r8125: disable ASPM
Disable ASPM support for this NIC, fixing strange behavior problems, such as
increased latency, strange uneven throughput, etc.
With this option disabled the NIC achieves stable performance.
Upsteam r8169 driver disables ASPM by default for this NIC.

Signed-off-by: Pavel Kubelun <be.dissent@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/18509
[bump release, fix commit description, split 2nd tx queue part]
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
(cherry picked from commit f99b39fd0c)
2025-04-23 10:24:30 +02:00
Álvaro Fernández Rojas
31292ddc10 kernel: r8127: load module at boot time
This allows the network interface naming to be stable, free from any
possible interaction from external USB network devices that might
claim usb* interface names.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
(cherry picked from commit b5680bd113)
2025-04-23 10:24:10 +02:00
Álvaro Fernández Rojas
111d88e896 kernel: r8126: load module at boot time
This allows the network interface naming to be stable, free from any
possible interaction from external USB network devices that might
claim usb* interface names.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
(cherry picked from commit 9bb151d0c6)
2025-04-23 10:23:50 +02:00
Álvaro Fernández Rojas
50cf9bbf17 kernel: r8125: load module at boot time
This allows the network interface naming to be stable, free from any
possible interaction from external USB network devices that might
claim usb* interface names.

Signed-off-by: Pavel Kubelun <be.dissent@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/18509
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
(cherry picked from commit ce9f539672)
2025-04-23 10:23:30 +02:00
Álvaro Fernández Rojas
7bef5367a7 kernel: r8168: load module at boot time
This allows the network interface naming to be stable, free from any
possible interaction from external USB network devices that might
claim usb* interface names.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
(cherry picked from commit 617961403c)
2025-04-23 10:23:14 +02:00
Álvaro Fernández Rojas
6c15645a12 kernel: r8101: load module at boot time
This allows the network interface naming to be stable, free from any
possible interaction from external USB network devices that might
claim usb* interface names.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
(cherry picked from commit 7aeb837bf4)
2025-04-23 10:22:22 +02:00
Álvaro Fernández Rojas
1eab9b8a9b generic: 6.6: backport upstream v6.15 Realtek PHY patches
bfc17c1658353 net: phy: realtek: disable PHY-mode EEE
fabcfd6d10999 net: phy: realtek: add defines for shadowed c45 standard registers
8af2136e77989 net: phy: realtek: add helper RTL822X_VND2_C22_REG
02d3b306ac2f0 net: phy: realtek: switch from paged to MMD ops in rtl822x functions
da681ed73fb98 net: phy: realtek: improve mmd register access for internal PHY's
0bea93fdbaf86 net: phy: realtek: use string choices helpers
51773846fab24 net: phy: realtek: make HWMON support a user-visible Kconfig symbol

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
(cherry picked from commit 7673a165a9)
2025-04-23 08:38:32 +02:00
Álvaro Fernández Rojas
5663f8e166 generic: 6.6: backport upstream v6.15 r8169 patches
b48688ea3c9ac r8169: disable RTL8126 ZRX-DC timeout
3d9b8ac534126 r8169: enable RTL8168H/RTL8168EP/RTL8168FP ASPM support
473367a5ffe16 r8169: increase max jumbo packet size on RTL8125/RTL8126
853e80369cfce r8169: add PHY c45 ops for MDIO_MMD_VENDOR2 registers
d30460f42675f r8169: add support for Intel Killer E5000
faac69a4ae5ab r8169: don't scan PHY addresses > 0
135c3c86a7cef r8169: make Kconfig option for LED support user-visible

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
(cherry picked from commit 36623119b3)
2025-04-23 08:38:32 +02:00
Álvaro Fernández Rojas
c5abbe71d9 generic: backport pmdomain dummy release patch
Fixes the following warning trace on bcm27xx devices when bcm2835-power is
deferred:
[    0.216800] ------------[ cut here ]------------
[    0.216807] Device 'grafx' does not have a release() function, it is broken and must be fixed. See Documentation/core-api/kobject.rst.
[    0.216863] WARNING: CPU: 0 PID: 1 at drivers/base/core.c:2516 device_release+0x80/0x90
[    0.216887] Modules linked in:
[    0.216896] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 6.6.85 #0
[    0.216905] Hardware name: Raspberry Pi 4 Model B Rev 1.1 (DT)
[    0.216911] pstate: 60400005 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[    0.216919] pc : device_release+0x80/0x90
[    0.216928] lr : device_release+0x80/0x90
[    0.216936] sp : ffffffc080ccb6d0
[    0.216940] x29: ffffffc080ccb6d0 x28: 0000000000000000 x27: ffffff8040d49810
[    0.216953] x26: ffffff8040c904b8 x25: ffffff8040c904a0 x24: ffffffc0808a7f08
[    0.216964] x23: ffffffc080a1a6d8 x22: 0000000000000000 x21: ffffffc080a1afe0
[    0.216976] x20: 0000000000000000 x19: ffffff8040c900b8 x18: 000000000000009f
[    0.216987] x17: 206e656b6f726220 x16: 7369207469202c6e x15: ffffffc080b4ee88
[    0.216998] x14: 00000000000001dd x13: 000000000000009f x12: 00000000ffffffea
[    0.217009] x11: 00000000ffffefff x10: ffffffc080ba6e88 x9 : ffffffc080b4ee30
[    0.217020] x8 : 0000000000017fe8 x7 : c0000000ffffefff x6 : 0000000000057fa8
[    0.217031] x5 : 0000000000000fff x4 : 0000000000000000 x3 : ffffffc080ccb4d0
[    0.217042] x2 : ffffffc080b4edc8 x1 : ffffffc080b4edc8 x0 : 000000000000007a
[    0.217053] Call trace:
[    0.217058]  device_release+0x80/0x90
[    0.217067]  kobject_put+0xac/0x100
[    0.217078]  put_device+0x14/0x24
[    0.217086]  genpd_remove+0x16c/0x244
[    0.217093]  pm_genpd_remove+0x2c/0x50
[    0.217099]  bcm2835_power_probe+0x1f8/0x2b8
[    0.217107]  platform_probe+0x68/0xc4
[    0.217118]  really_probe+0x148/0x2b0
[    0.217125]  __driver_probe_device+0x78/0x128
[    0.217131]  driver_probe_device+0x40/0xdc
[    0.217138]  __device_attach_driver+0xb8/0xf8
[    0.217145]  bus_for_each_drv+0x70/0xb8
[    0.217151]  __device_attach+0xa0/0x184
[    0.217158]  device_initial_probe+0x14/0x20
[    0.217165]  bus_probe_device+0xac/0xb0
[    0.217171]  device_add+0x5a8/0x760
[    0.217177]  platform_device_add+0x184/0x240
[    0.217184]  mfd_add_device+0x3e8/0x4c0
[    0.217195]  devm_mfd_add_devices+0xa0/0x118
[    0.217202]  bcm2835_pm_probe+0x144/0x1d8
[    0.217210]  platform_probe+0x68/0xc4
[    0.217217]  really_probe+0x148/0x2b0
[    0.217224]  __driver_probe_device+0x78/0x128
[    0.217230]  driver_probe_device+0x40/0xdc
[    0.217237]  __driver_attach+0x90/0x160
[    0.217243]  bus_for_each_dev+0x64/0xa4
[    0.217249]  driver_attach+0x24/0x30
[    0.217256]  bus_add_driver+0xe4/0x208
[    0.217262]  driver_register+0x5c/0x124
[    0.217269]  __platform_driver_register+0x28/0x34
[    0.217276]  bcm2835_pm_driver_init+0x1c/0x28
[    0.217286]  do_one_initcall+0x6c/0x1fc
[    0.217294]  kernel_init_freeable+0x208/0x2e4
[    0.217306]  kernel_init+0x28/0x1e4
[    0.217313]  ret_from_fork+0x10/0x20
[    0.217320] ---[ end trace 0000000000000000 ]---

This issue was introduced in v6.6.69 with the following backport:
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=36a6e8aeae4a41767bb59f56b100c8cc9ffae2cb

The upstream patch has been adapted to v6.6:
f64f610ec6

More info: https://github.com/raspberrypi/linux/issues/6777

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
(cherry picked from commit f65c44f67f)
2025-04-23 08:37:03 +02:00
Mieczyslaw Nalewaj
687d713e79 generic: rename backport patch 752-03 to name with correct version
Rename 752-03-v6.6-net-ethernet-mtk_eth_soc-rely-on-mtk_pse_port-defini.patch
to 752-03-v6.7-net-ethernet-mtk_eth_soc-rely-on-mtk_pse_port-defini.patch
because it is used since kernel 6.7 (https://lore.kernel.org/lkml/20231028011741.2400327-1-kuba@kernel.org/).
Link: https://web.git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-6.7.y&id=5c33c09c89789ea45d2aac2471a28c9f90b04c95

Signed-off-by: Mieczyslaw Nalewaj <namiltd@yahoo.com>
Link: https://github.com/openwrt/openwrt/pull/18253
(cherry picked from commit a81099bca2)
Link: https://github.com/openwrt/openwrt/pull/18428
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-04-22 19:16:30 +02:00
Mieczyslaw Nalewaj
4ee8c2dd1b generic: rename backport patches to names containing version
Rename 770-net-introduce-napi_is_scheduled-helper.patch
to 770-v6.7-net-introduce-napi_is_scheduled-helper.patch
because it is used since kernel 6.7 (https://lore.kernel.org/lkml/20231028011741.2400327-1-kuba@kernel.org/).
Link: https://web.git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-6.7.y&id=7f3eb2174512fe6c9c0f062e96eccb0d3cc6d5cd

Rename 751-01-STABLE-net-ethernet-mediatek-split-tx-and-rx-fields-in-mtk_.patch
to 751-01-v6.8-net-ethernet-mediatek-split-tx-and-rx-fields-in-mtk_.patch
because it is used since kernel 6.8.12 (https://lore.kernel.org/lkml/2024053036-matron-confess-13e0@gregkh/).
Link: https://web.git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-6.8.y&id=b411384df5814fe6fd861d4869607577bcec73a1

Rename 751-02-STABLE-net-ethernet-mediatek-use-QDMA-instead-of-ADMAv2-on-.patch
to 751-02-v6.8-net-ethernet-mediatek-use-QDMA-instead-of-ADMAv2-on-.patch
because it is used since kernel 6.8.12 (https://lore.kernel.org/lkml/2024053036-matron-confess-13e0@gregkh/).
Link: https://web.git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-6.8.y&id=0849f56b5146b70f2da328b1d178d0a3c53d6846

Signed-off-by: Mieczyslaw Nalewaj <namiltd@yahoo.com>
Link: https://github.com/openwrt/openwrt/pull/18253
(cherry picked from commit 0991d2f06d)
Link: https://github.com/openwrt/openwrt/pull/18428
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-04-22 19:16:30 +02:00
Daniel Golle
9e9f6875bc generic: fitblk: close block device if mapping image failed
In case a broken fit image is present on flash the fitblk driver would
not map any /dev/fit* devices, but also not always close the block device
the image resides on. In case of ubiblock devices this is fatal as one
then cannot remove the ubiblock device (-EBUSY), and hence cannot replace
the broken image.
Always close the block device in case no sub-image was mapped.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
(cherry picked from commit 2b9c81d1cb)
2025-04-14 18:32:05 +01:00
Daniel Golle
be1b254888 kernel: move accepted patch from pending-6.6 to backport-6.6
742-net-phy-air_en8811h-reset-netdev-rules-when-LED-is-s.patch has been
accepted a while ago as
https://git.kernel.org/torvalds/linux/c/87bfdbbb1992

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
(cherry picked from commit 7a303d861a)
2025-04-14 18:32:05 +01:00
Hauke Mehrtens
6271b14140 OpenWrt v24.10.1: revert to branch defaults
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-04-14 01:07:39 +02:00
741 changed files with 31798 additions and 3923 deletions

View File

@@ -1,4 +1,4 @@
src-git packages https://git.openwrt.org/feed/packages.git^d8cd30f4e281d6853b3de134c4f147a807583e43
src-git luci https://git.openwrt.org/project/luci.git^2ac26e56cc55102cb10e7b0867c2b78e0f6d5fd8
src-git routing https://git.openwrt.org/feed/routing.git^c9b636698881059a3c981032770968f5a98ff201
src-git telephony https://git.openwrt.org/feed/telephony.git^fd605af7143165a2490681ec1752f259873b9147
src-git packages https://git.openwrt.org/feed/packages.git^44cff71992c291ae11b7b37606c70db62dc0674e
src-git luci https://git.openwrt.org/project/luci.git^923f8d991a49dc3d899fd24fc92ae7b1653ee4d0
src-git routing https://git.openwrt.org/feed/routing.git^885ae6f9d0c0f47a1a6321e1cc7e9c7e20cc2681
src-git telephony https://git.openwrt.org/feed/telephony.git^2a4541d46199ac96fac214d02c908402831c4dc6

View File

@@ -569,6 +569,15 @@ endef
define Device/Check/Common
_PROFILE_SET = $$(strip $$(foreach profile,$$(PROFILES) DEVICE_$(1),$$(call DEVICE_CHECK_PROFILE,$$(profile))))
# Check if device is disabled and if so do not mark to be installed when ImageBuilder is used
ifeq ($(IB),1)
ifeq ($$(DEFAULT),n)
_PROFILE_SET :=
endif
ifeq ($$(BROKEN),y)
_PROFILE_SET :=
endif
endif
DEVICE_PACKAGES += $$(call extra_packages,$$(DEVICE_PACKAGES))
ifdef TARGET_PER_DEVICE_ROOTFS
$$(eval $$(call merge_packages,_PACKAGES,$$(DEVICE_PACKAGES) $$(call DEVICE_EXTRA_PACKAGES,$(1))))

View File

@@ -1,2 +1,2 @@
LINUX_VERSION-6.6 = .86
LINUX_KERNEL_HASH-6.6.86 = 49e3ad7423e40735faada0cd39665c071d47efd84ec3548acf119c9704f13e68
LINUX_VERSION-6.6 = .104
LINUX_KERNEL_HASH-6.6.104 = 2a772f9d661afabaaddcdfd1116239acb2d943377aceab9e0baed2b7a915e36a

View File

@@ -1,12 +1,20 @@
PKG_NAME ?= trusted-firmware-a
PKG_CPE_ID ?= cpe:/a:arm:trusted_firmware-a
ifndef PKG_SOURCE_PROTO
PKG_SOURCE = trusted-firmware-a-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/TrustedFirmware-A/trusted-firmware-a/tar.gz/v$(PKG_VERSION)?
PKG_LTS ?=
ifneq ($(PKG_LTS),)
PKG_VERSION_PREFIX:=lts-v
PKG_BUILD_DIR = $(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION_PREFIX)$(PKG_VERSION)
else
PKG_VERSION_PREFIX:=v
PKG_BUILD_DIR = $(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)
endif
PKG_BUILD_DIR = $(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)
ifndef PKG_SOURCE_PROTO
PKG_SOURCE = trusted-firmware-a-$(PKG_VERSION_PREFIX)$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/TrustedFirmware-A/trusted-firmware-a/tar.gz/$(PKG_VERSION_PREFIX)$(PKG_VERSION)?
endif
PKG_TARGETS := bin
PKG_FLAGS:=nonshared
@@ -82,7 +90,7 @@ define Build/Compile/Trusted-Firmware-A
OPENSSL_DIR=$(STAGING_DIR_HOST) \
$(if $(DTC),DTC="$(DTC)") \
PLAT=$(PLAT) \
BUILD_STRING="OpenWrt v$(PKG_VERSION)-$(PKG_RELEASE) ($(VARIANT))" \
BUILD_STRING="OpenWrt $(PKG_VERSION_PREFIX)$(PKG_VERSION)-$(PKG_RELEASE) ($(VARIANT))" \
$(if $(CONFIG_BINUTILS_VERSION_2_37)$(CONFIG_BINUTILS_VERSION_2_38),,LDFLAGS="-no-warn-rwx-segments") \
$(TFA_MAKE_FLAGS)
endef

View File

@@ -23,13 +23,13 @@ PKG_CONFIG_DEPENDS += \
sanitize = $(call tolower,$(subst _,-,$(subst $(space),-,$(1))))
VERSION_NUMBER:=$(call qstrip,$(CONFIG_VERSION_NUMBER))
VERSION_NUMBER:=$(if $(VERSION_NUMBER),$(VERSION_NUMBER),24.10.1)
VERSION_NUMBER:=$(if $(VERSION_NUMBER),$(VERSION_NUMBER),24.10.3)
VERSION_CODE:=$(call qstrip,$(CONFIG_VERSION_CODE))
VERSION_CODE:=$(if $(VERSION_CODE),$(VERSION_CODE),r28597-0425664679)
VERSION_CODE:=$(if $(VERSION_CODE),$(VERSION_CODE),r28872-daca7c049b)
VERSION_REPO:=$(call qstrip,$(CONFIG_VERSION_REPO))
VERSION_REPO:=$(if $(VERSION_REPO),$(VERSION_REPO),https://downloads.openwrt.org/releases/24.10.1)
VERSION_REPO:=$(if $(VERSION_REPO),$(VERSION_REPO),https://downloads.openwrt.org/releases/24.10.3)
VERSION_DIST:=$(call qstrip,$(CONFIG_VERSION_DIST))
VERSION_DIST:=$(if $(VERSION_DIST),$(VERSION_DIST),OpenWrt)

View File

@@ -142,10 +142,7 @@ else
$(call ERROR_MESSAGE,WARNING: Applying padding in $$d/Packages to workaround usign SHA-512 bug!); \
{ echo ""; echo ""; } >> Packages;; \
esac; \
echo -n '{"architecture": "$(ARCH_PACKAGES)", "packages":{' > index.json; \
sed -n -e 's/^Package: \(.*\)$$/"\1":/p' -e 's/^Version: \(.*\)$$/"\1",/p' Packages | tr '\n' ' ' >> index.json; \
echo '}}' >> index.json; \
sed -i 's/, }}/}}/' index.json; \
$(SCRIPT_DIR)/make-index-json.py -f opkg -a "$(ARCH_PACKAGES)" Packages > index.json; \
gzip -9nc Packages > Packages.gz; \
); done
ifdef CONFIG_SIGNED_PACKAGES

View File

@@ -190,7 +190,7 @@ if VERSIONOPT
config VERSION_REPO
string
prompt "Release repository"
default "https://downloads.openwrt.org/releases/24.10.1"
default "https://downloads.openwrt.org/releases/24.10.3"
help
This is the repository address embedded in the image, it defaults
to the trunk snapshot repo; the url may contain the following placeholders:

View File

@@ -35,6 +35,8 @@ define Trusted-Firmware-A/Default
DRAM_USE_COMB:=
RAM_BOOT_UART_DL:=
USE_UBI:=
FIP_OFFSET:=
FIP_SIZE:=
endef
define Trusted-Firmware-A/mt7622-nor-1ddr
@@ -221,6 +223,16 @@ define Trusted-Firmware-A/mt7981-spim-nand-ddr3
DDR_TYPE:=ddr3
endef
define Trusted-Firmware-A/mt7981-cudy-tr3000-v1
NAME:=Cudy TR3000 v1 (SPI-NAND via SPIM, DDR3)
BOOT_DEVICE:=spim-nand
BUILD_SUBTARGET:=filogic
PLAT:=mt7981
DDR_TYPE:=ddr3
FIP_OFFSET:=0x3c0000
FIP_SIZE:=0x200000
endef
define Trusted-Firmware-A/mt7986-ram-ddr4
NAME:=MediaTek MT7986 (RAM, DDR4)
BOOT_DEVICE:=ram
@@ -534,6 +546,7 @@ TFA_TARGETS:= \
mt7981-ram-ddr4 \
mt7981-emmc-ddr4 \
mt7981-spim-nand-ddr4 \
mt7981-cudy-tr3000-v1 \
mt7986-ram-ddr3 \
mt7986-emmc-ddr3 \
mt7986-nor-ddr3 \
@@ -581,6 +594,8 @@ TFA_MAKE_FLAGS += \
$(if $(USE_UBI),UBI=1 $(if $(findstring mt7622,$(PLAT)),OVERRIDE_UBI_START_ADDR=0x80000)) \
$(if $(USE_UBI),UBI=1 $(if $(findstring mt7981,$(PLAT)),OVERRIDE_UBI_START_ADDR=0x100000)) \
$(if $(USE_UBI),UBI=1 $(if $(findstring mt7986,$(PLAT)),OVERRIDE_UBI_START_ADDR=0x200000)) \
$(if $(FIP_OFFSET),OVERRIDE_FIP_BASE=$(FIP_OFFSET)) \
$(if $(FIP_SIZE),OVERRIDE_FIP_SIZE=$(FIP_SIZE)) \
$(if $(RAM_BOOT_UART_DL),bl2,all)
define Package/trusted-firmware-a-ram/install

View File

@@ -7,10 +7,11 @@
include $(TOPDIR)/rules.mk
PKG_VERSION:=2.10
PKG_VERSION:=2.10.17
PKG_RELEASE:=1
PKG_LTS:=1
PKG_HASH:=88215a62291b9ba87da8e50b077741103cdc08fb6c9e1ebd34dfaace746d3201
PKG_HASH:=2558b2579dd1c45db6de89c49e647c109022d45da03eb74e0f6123c294295099
PKG_MAINTAINER:=Thomas Richard <thomas.richard@bootlin.com>
include $(INCLUDE_DIR)/kernel.mk

View File

@@ -0,0 +1,21 @@
[ -e /etc/config/ubootenv ] && exit 0
touch /etc/config/ubootenv
. /lib/uboot-envtools.sh
. /lib/functions.sh
board=$(board_name)
case "$board" in
gw,imx8m*|\
gateworks,imx8m*)
# board boots from emmc boot0 hardware partition
ubootenv_add_uci_config /dev/mmcblk2boot0 0x3f0000 0x8000
ubootenv_add_uci_config /dev/mmcblk2boot0 0x3f8000 0x8000
esac
config_load ubootenv
config_foreach ubootenv_add_app_config ubootenv
exit 0

View File

@@ -35,6 +35,7 @@ ubootenv_add_ubi_default() {
case "$board" in
abt,asr3000|\
cmcc,a10-ubootmod|\
cudy,tr3000-v1-ubootmod|\
h3c,magic-nx30-pro|\
jcg,q30-pro|\
mercusys,mr90x-v1-ubi|\
@@ -108,8 +109,10 @@ gatonetworks,gdsp)
glinet,gl-mt3000)
ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x80000" "0x20000"
;;
mercusys,mr80x-v3|\
mercusys,mr90x-v1|\
routerich,ax3000|\
routerich,ax3000-v1|\
tplink,re6000xd)
local envdev=/dev/mtd$(find_mtd_index "u-boot-env")
ubootenv_add_uci_config "$envdev" "0x0" "0x20000" "0x20000" "1"
@@ -127,6 +130,9 @@ smartrg,sdg-8734)
local envdev=$(find_mmc_part "u-boot-env" "mmcblk0")
ubootenv_add_uci_config "$envdev" "0x0" "0x8000" "0x8000"
;;
tplink,archer-ax80-v1)
ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x20000" "0x20000" "8"
;;
ubnt,unifi-6-plus)
ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x80000" "0x10000"
;;

View File

@@ -29,6 +29,11 @@ edimax,cax1800)
[ -n "$idx" ] && \
ubootenv_add_uci_config "/dev/mtd$idx" "0x0" "0x10000" "0x20000"
;;
linksys,homewrk)
idx="$(find_mtd_index 0:appsblenv)"
[ -n "$idx" ] && \
ubootenv_add_uci_config "/dev/mtd$idx" "0x0" "0x40000" "0x40000"
;;
linksys,mx4200v1|\
linksys,mx4200v2|\
linksys,mx5300|\

View File

@@ -63,6 +63,7 @@ kroks,kndrt31r19|\
mediatek,linkit-smart-7688|\
samknows,whitebox-v8|\
xiaomi,mi-router-4c|\
xiaomi,miwifi-3a|\
xiaomi,miwifi-nano|\
zbtlink,zbt-wg2626|\
zte,mf283plus)

View File

@@ -267,6 +267,17 @@ define U-Boot/mt7981_cmcc_rax3000m-nand
DEPENDS:=+trusted-firmware-a-mt7981-spim-nand-ddr4
endef
define U-Boot/mt7981_cudy_tr3000-v1
NAME:=Cudy TR3000 v1
BUILD_SUBTARGET:=filogic
BUILD_DEVICES:=cudy_tr3000-v1-ubootmod
UBOOT_CONFIG:=mt7981_cudy_tr3000-v1
UBOOT_IMAGE:=u-boot.fip
BL2_BOOTDEV:=cudy-tr3000-v1
BL2_SOC:=mt7981
DEPENDS:=+trusted-firmware-a-mt7981-cudy-tr3000-v1
endef
define U-Boot/mt7981_glinet_gl-x3000
NAME:=GL.iNet GL-X3000
BUILD_SUBTARGET:=filogic
@@ -859,6 +870,7 @@ UBOOT_TARGETS := \
mt7981_cmcc_a10 \
mt7981_cmcc_rax3000m-emmc \
mt7981_cmcc_rax3000m-nand \
mt7981_cudy_tr3000-v1 \
mt7981_gatonetworks_gdsp \
mt7981_glinet_gl-x3000 \
mt7981_glinet_gl-xe3000 \

View File

@@ -0,0 +1,330 @@
--- /dev/null
+++ b/configs/mt7981_cudy_tr3000-v1_defconfig
@@ -0,0 +1,107 @@
+CONFIG_ARM=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_POSITION_INDEPENDENT=y
+CONFIG_ARCH_MEDIATEK=y
+CONFIG_TEXT_BASE=0x41e00000
+CONFIG_SYS_MALLOC_F_LEN=0x4000
+CONFIG_NR_DRAM_BANKS=1
+CONFIG_DEFAULT_DEVICE_TREE="mt7981-cudy-tr3000-v1"
+CONFIG_OF_LIBFDT_OVERLAY=y
+CONFIG_TARGET_MT7981=y
+CONFIG_PRE_CON_BUF_ADDR=0x4007EF00
+CONFIG_DEBUG_UART_BASE=0x11002000
+CONFIG_DEBUG_UART_CLOCK=40000000
+CONFIG_SYS_LOAD_ADDR=0x46000000
+CONFIG_DEBUG_UART=y
+CONFIG_FIT=y
+CONFIG_BOOTDELAY=30
+CONFIG_AUTOBOOT_KEYED=y
+CONFIG_AUTOBOOT_MENU_SHOW=y
+CONFIG_DEFAULT_FDT_FILE="mediatek/mt7981-cudy-tr3000-v1.dtb"
+CONFIG_LOGLEVEL=7
+CONFIG_PRE_CONSOLE_BUFFER=y
+CONFIG_LOG=y
+CONFIG_BOARD_LATE_INIT=y
+CONFIG_HUSH_PARSER=y
+CONFIG_SYS_PROMPT="MT7981> "
+CONFIG_CMD_CPU=y
+CONFIG_CMD_LICENSE=y
+CONFIG_CMD_BOOTMENU=y
+CONFIG_CMD_ASKENV=y
+CONFIG_CMD_ERASEENV=y
+CONFIG_CMD_ENV_FLAGS=y
+CONFIG_CMD_STRINGS=y
+CONFIG_CMD_DM=y
+CONFIG_CMD_GPIO=y
+CONFIG_CMD_GPT=y
+CONFIG_CMD_MTD=y
+CONFIG_CMD_PART=y
+CONFIG_CMD_DHCP=y
+CONFIG_CMD_TFTPSRV=y
+CONFIG_CMD_RARP=y
+CONFIG_CMD_PING=y
+CONFIG_CMD_CDP=y
+CONFIG_CMD_SNTP=y
+CONFIG_CMD_DNS=y
+CONFIG_CMD_LINK_LOCAL=y
+CONFIG_CMD_PXE=y
+CONFIG_CMD_CACHE=y
+CONFIG_CMD_PSTORE=y
+CONFIG_CMD_PSTORE_MEM_ADDR=0x42ff0000
+CONFIG_CMD_UUID=y
+CONFIG_CMD_HASH=y
+CONFIG_CMD_SMC=y
+CONFIG_CMD_UBI=y
+CONFIG_CMD_UBI_RENAME=y
+CONFIG_OF_EMBED=y
+CONFIG_ENV_OVERWRITE=y
+CONFIG_ENV_IS_IN_UBI=y
+CONFIG_SYS_REDUNDAND_ENVIRONMENT=y
+CONFIG_ENV_UBI_PART="ubi"
+CONFIG_ENV_UBI_VOLUME="ubootenv"
+CONFIG_ENV_UBI_VOLUME_REDUND="ubootenv2"
+CONFIG_SYS_RELOC_GD_ENV_ADDR=y
+CONFIG_USE_DEFAULT_ENV_FILE=y
+CONFIG_DEFAULT_ENV_FILE="cudy_tr3000-v1_env"
+CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
+CONFIG_VERSION_VARIABLE=y
+CONFIG_NET_RANDOM_ETHADDR=y
+CONFIG_NETCONSOLE=y
+CONFIG_USE_IPADDR=y
+CONFIG_IPADDR="192.168.1.1"
+CONFIG_USE_SERVERIP=y
+CONFIG_SERVERIP="192.168.1.254"
+CONFIG_REGMAP=y
+CONFIG_SYSCON=y
+CONFIG_BUTTON=y
+CONFIG_BUTTON_GPIO=y
+CONFIG_CLK=y
+CONFIG_GPIO_HOG=y
+CONFIG_LED=y
+CONFIG_LED_BLINK=y
+CONFIG_LED_GPIO=y
+# CONFIG_MMC is not set
+CONFIG_MTD=y
+CONFIG_DM_MTD=y
+CONFIG_MTD_SPI_NAND=y
+CONFIG_MTD_UBI_FASTMAP=y
+CONFIG_PHY_FIXED=y
+CONFIG_MEDIATEK_ETH=y
+CONFIG_PHY=y
+CONFIG_PINCTRL=y
+CONFIG_PINCONF=y
+CONFIG_PINCTRL_MT7981=y
+CONFIG_POWER_DOMAIN=y
+CONFIG_MTK_POWER_DOMAIN=y
+CONFIG_DM_REGULATOR=y
+CONFIG_DM_REGULATOR_FIXED=y
+CONFIG_DM_REGULATOR_GPIO=y
+CONFIG_RAM=y
+CONFIG_DM_SERIAL=y
+CONFIG_MTK_SERIAL=y
+CONFIG_SPI=y
+CONFIG_DM_SPI=y
+CONFIG_MTK_SPIM=y
+CONFIG_ZSTD=y
+CONFIG_HEXDUMP=y
+CONFIG_LMB_MAX_REGIONS=64
--- /dev/null
+++ b/arch/arm/dts/mt7981-cudy-tr3000-v1.dts
@@ -0,0 +1,160 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+/dts-v1/;
+#include "mt7981.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/linux-event-codes.h>
+
+/ {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ model = "Cudy TR3000 v1";
+ compatible = "mediatek,mt7981", "mediatek,mt7981-rfb";
+
+ chosen {
+ stdout-path = &uart0;
+ tick-timer = &timer0;
+ };
+
+ memory@40000000 {
+ device_type = "memory";
+ reg = <0x40000000 0x20000000>;
+ };
+
+ gpio-keys {
+ compatible = "gpio-keys";
+
+ button-reset {
+ label = "reset";
+ linux,code = <KEY_RESTART>;
+ gpios = <&gpio 1 GPIO_ACTIVE_LOW>;
+ };
+
+ button-mode {
+ label = "mode";
+ linux,code = <EV_SW>;
+ linux,input-type = <BTN_0>;
+ gpios = <&gpio 0 GPIO_ACTIVE_HIGH>;
+ debounce-interval = <60>;
+ };
+ };
+
+ gpio-leds {
+ compatible = "gpio-leds";
+
+ led_status: led-0 {
+ label = "red:power";
+ gpios = <&gpio 11 GPIO_ACTIVE_LOW>;
+ default-state = "on";
+ };
+
+ led-1 {
+ label = "white:status";
+ gpios = <&gpio 10 GPIO_ACTIVE_LOW>;
+ default-state = "off";
+ };
+ };
+};
+
+&eth {
+ status = "okay";
+ mediatek,gmac-id = <1>;
+ phy-mode = "gmii";
+ phy-handle = <&phy0>;
+
+ mdio {
+ phy0: ethernet-phy@0 {
+ compatible = "ethernet-phy-id03a2.9461";
+ reg = <0x0>;
+ phy-mode = "gmii";
+ };
+ };
+};
+
+&pinctrl {
+ spi_flash_pins: spi0-pins-func-1 {
+ mux {
+ function = "flash";
+ groups = "spi0", "spi0_wp_hold";
+ };
+
+ conf-pu {
+ pins = "SPI0_CS", "SPI0_HOLD", "SPI0_WP";
+ drive-strength = <MTK_DRIVE_8mA>;
+ bias-pull-up = <MTK_PUPD_SET_R1R0_00>;
+ };
+
+ conf-pd {
+ pins = "SPI0_CLK", "SPI0_MOSI", "SPI0_MISO";
+ drive-strength = <MTK_DRIVE_8mA>;
+ bias-pull-down = <MTK_PUPD_SET_R1R0_00>;
+ };
+ };
+};
+
+&spi0 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&spi_flash_pins>;
+ status = "okay";
+ must_tx;
+ enhance_timing;
+ dma_ext;
+ ipm_design;
+ support_quad;
+ tick_dly = <2>;
+ sample_sel = <0>;
+
+ spi_nand@0 {
+ compatible = "spi-nand";
+ reg = <0>;
+ spi-max-frequency = <52000000>;
+
+ partitions {
+ compatible = "fixed-partitions";
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ partition@0 {
+ label = "bl2";
+ reg = <0x0 0x100000>;
+ };
+
+ partition@100000 {
+ label = "u-boot-env";
+ reg = <0x100000 0x80000>;
+ };
+
+ partition@180000 {
+ label = "factory";
+ reg = <0x180000 0x200000>;
+ };
+
+ partition@380000 {
+ label = "bdinfo";
+ reg = <0x380000 0x40000>;
+ };
+
+ partition@3c0000 {
+ label = "fip";
+ reg = <0x3c0000 0x200000>;
+ };
+
+ partition@5c0000 {
+ label = "ubi";
+ reg = <0x5c0000 0x7a40000>;
+ compatible = "linux,ubi";
+ };
+ };
+ };
+};
+
+&uart0 {
+ mediatek,force-highspeed;
+ status = "okay";
+};
+
+&watchdog {
+ status = "disabled";
+};
--- /dev/null
+++ b/cudy_tr3000-v1_env
@@ -0,0 +1,54 @@
+ipaddr=192.168.1.1
+serverip=192.168.1.254
+loadaddr=0x46000000
+console=earlycon=uart8250,mmio32,0x11002000 console=ttyS0
+bootcmd=if pstore check ; then run boot_recovery ; else run boot_ubi ; fi
+bootconf=config-1
+bootdelay=0
+bootfile=openwrt-mediatek-filogic-cudy_tr3000-v1-ubootmod-initramfs-recovery.itb
+bootfile_bl2=openwrt-mediatek-filogic-cudy_tr3000-v1-ubootmod-preloader.bin
+bootfile_fip=openwrt-mediatek-filogic-cudy_tr3000-v1-ubootmod-bl31-uboot.fip
+bootfile_upg=openwrt-mediatek-filogic-cudy_tr3000-v1-ubootmod-squashfs-sysupgrade.itb
+bootled_pwr=red:power
+bootled_rec=white:status
+bootmenu_confirm_return=askenv - Press ENTER to return to menu ; bootmenu 60
+bootmenu_default=0
+bootmenu_delay=0
+bootmenu_title= ( ( ( OpenWrt ) ) )
+bootmenu_0=Initialize environment.=run _firstboot
+bootmenu_0d=Run default boot command.=run boot_default
+bootmenu_1=Boot system via TFTP.=run boot_tftp ; run bootmenu_confirm_return
+bootmenu_2=Boot production system from NAND.=run boot_production ; run bootmenu_confirm_return
+bootmenu_3=Boot recovery system from NAND.=run boot_recovery ; run bootmenu_confirm_return
+bootmenu_4=Load production system via TFTP then write to NAND.=setenv noboot 1 ; setenv replacevol 1 ; run boot_tftp_production ; setenv noboot ; setenv replacevol ; run bootmenu_confirm_return
+bootmenu_5=Load recovery system via TFTP then write to NAND.=setenv noboot 1 ; setenv replacevol 1 ; run boot_tftp_recovery ; setenv noboot ; setenv replacevol ; run bootmenu_confirm_return
+bootmenu_6=Load BL31+U-Boot FIP via TFTP then write to NAND.=run boot_tftp_write_fip ; run bootmenu_confirm_return
+bootmenu_7=Load BL2 preloader via TFTP then write to NAND.=run boot_tftp_write_bl2 ; run bootmenu_confirm_return
+bootmenu_8=Reboot.=reset
+bootmenu_9=Reset all settings to factory defaults.=run reset_factory ; reset
+boot_first=if button reset ; then led $bootled_rec on ; run boot_tftp_recovery ; setenv flag_recover 1 ; run boot_default ; fi ; bootmenu
+boot_default=if env exists flag_recover ; then else run bootcmd ; fi ; run boot_recovery ; setenv replacevol 1 ; run boot_tftp_forever
+boot_production=led $bootled_pwr on ; run ubi_read_production && bootm $loadaddr#$bootconf ; led $bootled_pwr off
+boot_recovery=led $bootled_rec on ; run ubi_read_recovery && bootm $loadaddr#$bootconf ; led $bootled_rec off
+boot_ubi=run boot_production ; run boot_recovery ; run boot_tftp_forever
+boot_tftp_forever=led $bootled_rec on ; while true ; do run boot_tftp_recovery ; sleep 1 ; done
+boot_tftp_production=tftpboot $loadaddr $bootfile_upg && env exists replacevol && iminfo $loadaddr && run ubi_write_production ; if env exists noboot ; then else bootm $loadaddr#$bootconf ; fi
+boot_tftp_recovery=tftpboot $loadaddr $bootfile && env exists replacevol && iminfo $loadaddr && run ubi_write_recovery ; if env exists noboot ; then else bootm $loadaddr#$bootconf ; fi
+boot_tftp=tftpboot $loadaddr $bootfile && bootm $loadaddr#$bootconf
+boot_tftp_write_fip=tftpboot $loadaddr $bootfile_fip && run mtd_write_fip && run reset_factory
+boot_tftp_write_bl2=tftpboot $loadaddr $bootfile_bl2 && run mtd_write_bl2
+reset_factory=ubi part ubi ; mw $loadaddr 0x0 0x800 ; ubi write $loadaddr ubootenv 0x800 ; ubi write $loadaddr ubootenv2 0x800
+mtd_write_fip=mtd erase fip && mtd write fip $loadaddr
+mtd_write_bl2=mtd erase bl2 && mtd write bl2 $loadaddr
+ubi_create_env=ubi check ubootenv || ubi create ubootenv 0x100000 dynamic || run ubi_format ; ubi check ubootenv2 || ubi create ubootenv2 0x100000 dynamic || run ubi_format
+ubi_format=ubi detach ; mtd erase ubi && ubi part ubi ; reset
+ubi_prepare_rootfs=if ubi check rootfs_data ; then else if env exists rootfs_data_max ; then ubi create rootfs_data $rootfs_data_max dynamic || ubi create rootfs_data - dynamic ; else ubi create rootfs_data - dynamic ; fi ; fi
+ubi_read_production=ubi read $loadaddr fit && iminfo $loadaddr && run ubi_prepare_rootfs
+ubi_read_recovery=ubi check recovery && ubi read $loadaddr recovery
+ubi_remove_rootfs=ubi check rootfs_data && ubi remove rootfs_data
+ubi_write_production=ubi check fit && ubi remove fit ; run ubi_remove_rootfs ; ubi create fit $filesize dynamic && ubi write $loadaddr fit $filesize
+ubi_write_recovery=ubi check recovery && ubi remove recovery ; run ubi_remove_rootfs ; ubi create recovery $filesize dynamic && ubi write $loadaddr recovery $filesize
+_init_env=setenv _init_env ; run ubi_create_env ; saveenv ; saveenv
+_firstboot=setenv _firstboot ; run _switch_to_menu ; run _init_env ; run boot_first
+_switch_to_menu=setenv _switch_to_menu ; setenv bootdelay 3 ; setenv bootmenu_delay 3 ; setenv bootmenu_0 $bootmenu_0d ; setenv bootmenu_0d ; run _bootmenu_update_title
+_bootmenu_update_title=setenv _bootmenu_update_title ; setenv bootmenu_title "$bootmenu_title $ver"

View File

@@ -136,6 +136,20 @@ define U-Boot/nanopi-r4s-rk3399
friendlyarm_nanopi-r4s-enterprise
endef
define U-Boot/rock-4c-plus-rk3399
$(U-Boot/rk3399/Default)
NAME:=ROCK 4C+
BUILD_DEVICES:= \
radxa_rock-4c-plus
endef
define U-Boot/rock-4se-rk3399
$(U-Boot/rk3399/Default)
NAME:=ROCK 4SE
BUILD_DEVICES:= \
radxa_rock-4se
endef
define U-Boot/rock-pi-4-rk3399
$(U-Boot/rk3399/Default)
NAME:=Rock Pi 4
@@ -300,6 +314,8 @@ endef
UBOOT_TARGETS := \
nanopc-t4-rk3399 \
nanopi-r4s-rk3399 \
rock-4c-plus-rk3399 \
rock-4se-rk3399 \
rock-pi-4-rk3399 \
rockpro64-rk3399 \
rock-pi-s-rk3308 \

View File

@@ -10,7 +10,7 @@ include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=perf
PKG_VERSION:=$(LINUX_VERSION)
PKG_RELEASE:=5
PKG_RELEASE:=6
PKG_BUILD_FLAGS:=no-mips16 no-lto
PKG_BUILD_PARALLEL:=1
@@ -50,6 +50,7 @@ MAKE_FLAGS = \
NO_LZMA=1 \
NO_BACKTRACE=1 \
NO_LIBNUMA=1 \
NO_SLANG=1 \
NO_GTK2=1 \
NO_LIBAUDIT=1 \
NO_LIBCRYPTO=1 \

View File

@@ -9,12 +9,12 @@ include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=strace
PKG_VERSION:=6.11
PKG_VERSION:=6.12
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://strace.io/files/$(PKG_VERSION)
PKG_HASH:=83262583a3529f02c3501aa8b8ac772b4cbc03dc934e98bab6e4883626e283a5
PKG_HASH:=c47da93be45b6055f4dc741d7f20efaf50ca10160a5b100c109b294fd9c0bdfe
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
PKG_LICENSE:=LGPL-2.1-or-later

View File

@@ -6,9 +6,9 @@ PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL=$(PROJECT_GIT)/project/firmware/qca-wireless.git
PKG_SOURCE_DATE:=2024-10-08
PKG_SOURCE_VERSION:=dcbab62272bf5cab2ed857bc655d240970e14f2a
PKG_MIRROR_HASH:=e53a3872abf5e35db6baaceb56e6ffa289f8dd9b6226cf8a4d5b87b541179175
PKG_SOURCE_DATE:=2025-08-25
PKG_SOURCE_VERSION:=a510502e7922b0a61e455e43479a62e7d27cf3ba
PKG_MIRROR_HASH:=0b8120ce09fdd9176e77b65f2c0866e14aa580ba7e6dd9440f37011418346be7
PKG_FLAGS:=nonshared
include $(INCLUDE_DIR)/package.mk
@@ -37,6 +37,7 @@ ALLWIFIBOARDS:= \
dynalink_dl-wrx36 \
edgecore_eap102 \
edimax_cax1800 \
linksys_homewrk \
linksys_mx4200 \
linksys_mx5300 \
linksys_mx8500 \
@@ -54,7 +55,9 @@ ALLWIFIBOARDS:= \
skspruce_wia3300-20 \
spectrum_sax1v1k \
tplink_eap660hd-v1 \
tplink_archer-c6-v2 \
wallys_dr40x9 \
xiaomi_aiot-ac2350 \
xiaomi_ax3600 \
xiaomi_ax9000 \
yyets_le1 \
@@ -72,7 +75,7 @@ define Package/ipq-wifi-default
SUBMENU:=ath10k Board-Specific Overrides
SECTION:=firmware
CATEGORY:=Firmware
DEPENDS:=@(TARGET_ipq40xx||TARGET_ipq806x||TARGET_qualcommax)
DEPENDS:=@(TARGET_ath79||TARGET_ipq40xx||TARGET_ipq806x||TARGET_qualcommax)
TITLE:=Custom Board
endef
@@ -95,6 +98,8 @@ define ipq-wifi-install-one
$(call ipq-wifi-install-one-to,$(1),$(2),QCA9887/hw1.0),\
$(if $(filter $(suffix $(1)),.QCA9984 .qca9984),\
$(call ipq-wifi-install-one-to,$(1),$(2),QCA9984/hw1.0),\
$(if $(filter $(suffix $(1)),.QCA9988 .qca9988),\
$(call ipq-wifi-install-one-to,$(1),$(2),QCA9984/hw1.0),\
$(if $(filter $(suffix $(1)),.QCA99X0 .qca99x0),\
$(call ipq-wifi-install-one-to,$(1),$(2),QCA99X0/hw2.0),\
$(if $(filter $(suffix $(1)),.IPQ6018 .ipq6018),\
@@ -104,7 +109,7 @@ define ipq-wifi-install-one
$(if $(filter $(suffix $(1)),.QCN9074 .qcn9074),\
$(call ipq-wifi-install-ath11-one-to,$(1),$(2),QCN9074/hw1.0),\
$(error Unrecognized board-file suffix '$(suffix $(1))' for '$(1)')\
))))))))
)))))))))
endef
# Blank line required at end of above define due to foreach context
@@ -164,6 +169,7 @@ $(eval $(call generate-ipq-wifi-package,compex_wpq873,Compex WPQ-873))
$(eval $(call generate-ipq-wifi-package,dynalink_dl-wrx36,Dynalink DL-WRX36))
$(eval $(call generate-ipq-wifi-package,edgecore_eap102,Edgecore EAP102))
$(eval $(call generate-ipq-wifi-package,edimax_cax1800,Edimax CAX1800))
$(eval $(call generate-ipq-wifi-package,linksys_homewrk,Linksys HomeWRK))
$(eval $(call generate-ipq-wifi-package,linksys_mx4200,Linksys MX4200))
$(eval $(call generate-ipq-wifi-package,linksys_mx5300,Linksys MX5300))
$(eval $(call generate-ipq-wifi-package,linksys_mx8500,Linksys MX8500))
@@ -181,7 +187,9 @@ $(eval $(call generate-ipq-wifi-package,redmi_ax6,Redmi AX6))
$(eval $(call generate-ipq-wifi-package,skspruce_wia3300-20,SKSpruce WIA3300-20))
$(eval $(call generate-ipq-wifi-package,spectrum_sax1v1k,Spectrum SAX1V1K))
$(eval $(call generate-ipq-wifi-package,tplink_eap660hd-v1,TP-Link EAP660 HD v1))
$(eval $(call generate-ipq-wifi-package,tplink_archer-c6-v2,TP-Link Archer C6 V2))
$(eval $(call generate-ipq-wifi-package,wallys_dr40x9,Wallys DR40X9))
$(eval $(call generate-ipq-wifi-package,xiaomi_aiot-ac2350,Xiaomi AIoT AC2350))
$(eval $(call generate-ipq-wifi-package,xiaomi_ax3600,Xiaomi AX3600))
$(eval $(call generate-ipq-wifi-package,xiaomi_ax9000,Xiaomi AX9000))
$(eval $(call generate-ipq-wifi-package,yyets_le1,YYeTs LE1))

View File

@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=linux-firmware
PKG_VERSION:=20241110
PKG_RELEASE:=1
PKG_RELEASE:=2
PKG_SOURCE_URL:=@KERNEL/linux/kernel/firmware
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz

View File

@@ -128,12 +128,18 @@ define Package/brcmfmac-nvram-43455-sdio/install
$(LN) \
brcmfmac43455-sdio.raspberrypi,4-model-b.txt \
$(1)/lib/firmware/brcm/brcmfmac43455-sdio.raspberrypi,5-model-b.txt
$(LN) \
brcmfmac43455-sdio.raspberrypi,4-model-b.txt \
$(1)/lib/firmware/brcm/brcmfmac43455-sdio.raspberrypi,5-compute-module.txt
$(LN) \
brcmfmac43455-sdio.raspberrypi,4-model-b.txt \
$(1)/lib/firmware/brcm/brcmfmac43455-sdio.Raspberry\ Pi\ Foundation-Raspberry\ Pi\ Compute\ Module\ 4.txt
$(LN) \
brcmfmac43455-sdio.raspberrypi,4-model-b.txt \
$(1)/lib/firmware/brcm/brcmfmac43455-sdio.Raspberry\ Pi\ Foundation-Raspberry\ Pi\ 5\ Model\ B.txt
$(LN) \
brcmfmac43455-sdio.raspberrypi,4-model-b.txt \
$(1)/lib/firmware/brcm/brcmfmac43455-sdio.Raspberry\ Pi\ Foundation-Raspberry\ Pi\ Compute\ Module\ 5.txt
$(INSTALL_DATA) \
$(PKG_BUILD_DIR)/brcm/brcmfmac43455-sdio.MINIX-NEO\ Z83-4.txt \
$(1)/lib/firmware/brcm/

View File

@@ -1,14 +1,14 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=wireless-regdb
PKG_VERSION:=2025.02.20
PKG_VERSION:=2025.07.10
PKG_RELEASE:=1
PKG_LICENSE:=ISC
PKG_LICENSE_FILES:=LICENSE
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@KERNEL/software/network/wireless-regdb/
PKG_HASH:=57f8e7721cf5a880c13ae0c202edbb21092a060d45f9e9c59bcd2a8272bfa456
PKG_HASH:=a8340bcdcd1b5db6c79149879d122b170f3bb075381718d4f429ad831a6fa28d
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>

View File

@@ -2,13 +2,13 @@ include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=bcm27xx-gpu-fw
PKG_VERSION:=2025.03.05
PKG_VERSION:=2025.04.30
PKG_VERSION_REAL:=1.$(subst .,,$(PKG_VERSION))
PKG_RELEASE:=1
PKG_SOURCE:=raspi-firmware_$(PKG_VERSION_REAL).orig.tar.xz
PKG_SOURCE_URL:=https://github.com/raspberrypi/firmware/releases/download/$(PKG_VERSION_REAL)
PKG_HASH:=f697079cd15389c0d8650283eb911c53a64b22550138704eb50e1145e8330b03
PKG_HASH:=25bcff5992c6d7057de4a5c6834b7f90b7136fe12aa63fa32793329bf74a95bf
PKG_FLAGS:=nonshared

View File

@@ -1787,6 +1787,7 @@ extern void ifx_usb_enable_afe_oc(void);
*/
static irqreturn_t IFX_MEI_IrqHandle (int int1, void *void0)
{
u32 stat;
u32 scratch;
DSL_DEV_Device_t *pDev = (DSL_DEV_Device_t *) void0;
#if defined(CONFIG_LTQ_MEI_FW_LOOPBACK) && defined(DFE_PING_TEST)
@@ -1820,6 +1821,12 @@ static irqreturn_t IFX_MEI_IrqHandle (int int1, void *void0)
if (dsl_bsp_event_callback[event].function)
(*dsl_bsp_event_callback[event].function)(pDev, event, dsl_bsp_event_callback[event].pData);
} else { // normal message
IFX_MEI_LongWordReadOffset (pDev, (u32) ME_ARC2ME_STAT, &stat);
if (!(stat & ARC_TO_MEI_MSGAV)) {
// status register indicates there is no message
return IRQ_NONE;
}
IFX_MEI_MailboxRead (pDev, DSL_DEV_PRIVATE(pDev)->CMV_RxMsg, MSG_LENGTH);
if (DSL_DEV_PRIVATE(pDev)-> cmv_waiting == 1) {
DSL_DEV_PRIVATE(pDev)-> arcmsgav = 1;

View File

@@ -116,17 +116,35 @@ I2C_DWPCI_MODULES:= \
define KernelPackage/i2c-designware-pci
$(call i2c_defaults,$(I2C_DWPCI_MODULES),59)
TITLE:=Synopsys DesignWare PCI
TITLE:=Synopsys DesignWare I2C PCI
DEPENDS:=@PCI_SUPPORT +kmod-i2c-designware-core +kmod-i2c-ccgs-ucsi
endef
define KernelPackage/i2c-designware-pci/description
Support for Synopsys DesignWare I2C controller. Only master mode is supported.
Support for Synopsys DesignWare I2C PCI controller. Only master mode is
supported.
endef
$(eval $(call KernelPackage,i2c-designware-pci))
I2C_DWPLAT_MODULES:= \
CONFIG_I2C_DESIGNWARE_PLATFORM:drivers/i2c/busses/i2c-designware-platform
define KernelPackage/i2c-designware-platform
$(call i2c_defaults,$(I2C_DWPLAT_MODULES),59)
TITLE:=Synopsys DesignWare I2C Platform
DEPENDS:=+kmod-i2c-designware-core
endef
define KernelPackage/i2c-designware-platform/description
Support for Synopsys DesignWare I2C Platform controller. Only master mode
is supported.
endef
$(eval $(call KernelPackage,i2c-designware-platform))
I2C_GPIO_MODULES:= \
CONFIG_I2C_GPIO:drivers/i2c/busses/i2c-gpio

View File

@@ -299,6 +299,23 @@ endef
$(eval $(call KernelPackage,leds-lp55xx-common))
define KernelPackage/leds-lp5523
SUBMENU:=$(LEDS_MENU)
TITLE:=LED driver for LP5523/LP55231 controllers
DEPENDS:=+kmod-i2c-core +kmod-leds-lp55xx-common
KCONFIG:=CONFIG_LEDS_LP5523
FILES:=$(LINUX_DIR)/drivers/leds/leds-lp5523.ko
AUTOLOAD:=$(call AutoLoad,60,leds-lp5523,1)
endef
define KernelPackage/leds-lp5523/description
This option enables support for Texas Instruments LP5523/LP55231
LED controllers.
endef
$(eval $(call KernelPackage,leds-lp5523))
define KernelPackage/leds-lp5562
SUBMENU:=$(LEDS_MENU)
TITLE:=LED driver for LP5562 controllers

View File

@@ -1539,6 +1539,28 @@ endef
$(eval $(call KernelPackage,bnx2x))
define KernelPackage/bnxt-en
SUBMENU:=$(NETWORK_DEVICES_MENU)
TITLE:=Broadcom NetXtreme-C/E network driver
DEPENDS:=@PCI_SUPPORT +kmod-hwmon-core +kmod-lib-crc32c +kmod-mdio +kmod-ptp
FILES:=$(LINUX_DIR)/drivers/net/ethernet/broadcom/bnxt/bnxt_en.ko
KCONFIG:= \
CONFIG_BNXT \
CONFIG_BNXT_SRIOV=y \
CONFIG_BNXT_FLOWER_OFFLOAD=y \
CONFIG_BNXT_DCB=n \
CONFIG_BNXT_HWMON=y
AUTOLOAD:=$(call AutoProbe,bnxt_en)
endef
define KernelPackage/bnxt-en/description
Supports Broadcom NetXtreme-C/E based Ethernet NICs including:
* BCM573xx
* BCM574xx
endef
$(eval $(call KernelPackage,bnxt-en))
define KernelPackage/be2net
SUBMENU:=$(NETWORK_DEVICES_MENU)
TITLE:=Broadcom Emulex OneConnect 10Gbps NIC
@@ -1821,6 +1843,23 @@ endef
$(eval $(call KernelPackage,igc))
define KernelPackage/hinic
SUBMENU:=$(NETWORK_DEVICES_MENU)
TITLE:=Huawei Intelligent PCIE Network Interface Card support
DEPENDS:=@PCI_SUPPORT @TARGET_x86||TARGET_armsr_armv8
FILES:=$(LINUX_DIR)/drivers/net/ethernet/huawei/hinic/hinic.ko
KCONFIG:=CONFIG_HINIC
AUTOLOAD:=$(call AutoProbe,hinic)
endef
define KernelPackage/hinic/description
Kernel module for HiNIC PCIE Ethernet cards
endef
$(eval $(call KernelPackage,hinic))
define KernelPackage/sfc
SUBMENU:=$(NETWORK_DEVICES_MENU)
TITLE:=Solarflare SFC9000/SFC9100/EF100-family support
@@ -1987,3 +2026,19 @@ define KernelPackage/amazon-ena/description
endef
$(eval $(call KernelPackage,amazon-ena))
define KernelPackage/enc28j60
SUBMENU:=$(NETWORK_DEVICES_MENU)
TITLE:=Microchip ENC28J60 SPI Ethernet driver
KCONFIG:=\
CONFIG_ENC28J60 \
CONFIG_ENC28J60_WRITEVERIFY=n
FILES:=$(LINUX_DIR)/drivers/net/ethernet/microchip/enc28j60.ko
AUTOLOAD:=$(call AutoProbe,enc28j60)
endef
define KernelPackage/enc28j60/description
Kernel module for Microchip ENC28J60 SPI Ethernet controller
endef
$(eval $(call KernelPackage,enc28j60))

View File

@@ -73,3 +73,41 @@ define KernelPackage/spi-dev/description
endef
$(eval $(call KernelPackage,spi-dev))
define KernelPackage/spi-dw
SUBMENU:=$(SPI_MENU)
TITLE:=DesignWare SPI controller driver (core)
KCONFIG:=\
CONFIG_SPI=y \
CONFIG_SPI_DESIGNWARE \
CONFIG_SPI_DYNAMIC=y \
CONFIG_SPI_MASTER=y
FILES:=\
$(LINUX_DIR)/drivers/spi/spi-dw.ko
AUTOLOAD:=$(call AutoProbe,spi-dw)
endef
define KernelPackage/spi-dw/description
This package contains the DesignWare SPI core driver.
endef
$(eval $(call KernelPackage,spi-dw))
define KernelPackage/spi-dw-mmio
SUBMENU:=$(SPI_MENU)
TITLE:=DesignWare SPI controller driver (MMIO)
DEPENDS:=+kmod-spi-dw
KCONFIG:=\
CONFIG_SPI_DW_MMIO
FILES:=\
$(LINUX_DIR)/drivers/spi/spi-dw-mmio.ko
AUTOLOAD:=$(call AutoProbe,spi-dw-mmio)
endef
define KernelPackage/spi-dw-mmio/description
This package contains the DesignWare SPI MMIO driver.
endef
$(eval $(call KernelPackage,spi-dw-mmio))

View File

@@ -10,13 +10,13 @@ include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=mac80211
PKG_VERSION:=6.12.6
PKG_RELEASE:=1
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)

View File

@@ -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)
{

View File

@@ -14,7 +14,7 @@ Signed-off-by: Sven Eckelmann <sven@open-mesh.com>
--- 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);

View File

@@ -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;

View File

@@ -16,7 +16,7 @@ Signed-off-by: Mathias Kresin <dev@kresin.me>
--- 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 <dev@kresin.me>
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

View File

@@ -26,7 +26,7 @@ Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
#include <linux/property.h>
#include <linux/dmi.h>
#include <linux/ctype.h>
@@ -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);

View File

@@ -18,7 +18,7 @@ Signed-off-by: David Bauer <mail@david-bauer.net>
--- 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);

View File

@@ -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 <tharvey@gateworks.com>
Closes: https://lore.kernel.org/all/20241210041133.GA17116@lst.de/
Signed-off-by: P Praneesh <quic_ppranees@quicinc.com>
Tested-by: Tim Harvey <tharvey@gateworks.com>
Link: https://patch.msgid.link/20250119164219.647059-2-quic_ppranees@quicinc.com
Signed-off-by: Jeff Johnson <jeff.johnson@oss.qualcomm.com>
--- 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 <crypto/hash.h>
@@ -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);

View File

@@ -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 <quic_ppranees@quicinc.com>
--- 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 <linux/ieee80211.h>
@@ -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,

View File

@@ -31,7 +31,7 @@ Signed-off-by: Robert Marko <robimarko@gmail.com>
{
.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 <robimarko@gmail.com>
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;

View File

@@ -0,0 +1,48 @@
From 52393e2ae12f18fb1a60578c24c46ebab292ddb6 Mon Sep 17 00:00:00 2001
From: Rameshkumar Sundaram <quic_ramess@quicinc.com>
Date: Mon, 28 Mar 2022 13:21:04 +0530
Subject: [PATCH] ath11k: Revert: clear the keys properly when DISABLE_KEY
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Reverting the Upstream clear key change added as a part of
436a4e886598 ("ath11k: clear the keys properly
when DISABLE_KEY")
This change exposed a race in WLAN Firmware where target asserts
are seen frequently due FW not synchronizing ath11k hosts clear
key commands(CIPHER changes to NONE) with frames in TX queue.
Hence reverting this change untill FW fixes to synchronize
ath11k hosts clear key command are available.
Signed-off-by: Rameshkumar Sundaram <quic_ramess@quicinc.com>
---
drivers/net/wireless/ath/ath11k/mac.c | 4 +++-
drivers/net/wireless/ath/ath11k/wmi.c | 3 +--
2 files changed, 4 insertions(+), 3 deletions(-)
--- a/drivers/net/wireless/ath/ath11k/mac.c
+++ b/drivers/net/wireless/ath/ath11k/mac.c
@@ -4222,7 +4222,9 @@ static int ath11k_install_key(struct ath
return 0;
if (cmd == DISABLE_KEY) {
- arg.key_cipher = WMI_CIPHER_NONE;
+ /* TODO: Check if FW expects value other than NONE for del */
+ /* arg.key_cipher = WMI_CIPHER_NONE; */
+ arg.key_len = 0;
arg.key_data = NULL;
goto install;
}
--- a/drivers/net/wireless/ath/ath11k/wmi.c
+++ b/drivers/net/wireless/ath/ath11k/wmi.c
@@ -1854,8 +1854,7 @@ int ath11k_wmi_vdev_install_key(struct a
tlv = (struct wmi_tlv *)(skb->data + sizeof(*cmd));
tlv->header = FIELD_PREP(WMI_TLV_TAG, WMI_TAG_ARRAY_BYTE) |
FIELD_PREP(WMI_TLV_LEN, key_len_aligned);
- if (arg->key_data)
- memcpy(tlv->value, (u8 *)arg->key_data, key_len_aligned);
+ memcpy(tlv->value, (u8 *)arg->key_data, key_len_aligned);
ret = ath11k_wmi_cmd_send(wmi, skb, WMI_VDEV_INSTALL_KEY_CMDID);
if (ret) {

View File

@@ -121,7 +121,7 @@ Acked-by: Jeff Johnson <quic_jjohnson@quicinc.com>
};
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 <quic_jjohnson@quicinc.com>
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 <quic_jjohnson@quicinc.com>
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 <quic_jjohnson@quicinc.com>
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 <quic_jjohnson@quicinc.com>
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 <quic_jjohnson@quicinc.com>
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 <quic_jjohnson@quicinc.com>
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 <quic_jjohnson@quicinc.com>
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 <quic_jjohnson@quicinc.com>
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 <quic_jjohnson@quicinc.com>
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 <quic_jjohnson@quicinc.com>
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 <quic_jjohnson@quicinc.com>
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 <quic_jjohnson@quicinc.com>
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 <quic_jjohnson@quicinc.com>
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 <quic_jjohnson@quicinc.com>
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 <quic_jjohnson@quicinc.com>
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 <quic_jjohnson@quicinc.com>
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 <quic_jjohnson@quicinc.com>
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 <quic_jjohnson@quicinc.com>
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 <quic_jjohnson@quicinc.com>
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 <quic_jjohnson@quicinc.com>
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 <quic_jjohnson@quicinc.com>
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 <quic_jjohnson@quicinc.com>
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 <quic_jjohnson@quicinc.com>
#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 <quic_jjohnson@quicinc.com>
},
{
.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 <quic_jjohnson@quicinc.com>
},
{
.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,

View File

@@ -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) },

View File

@@ -14,7 +14,7 @@ Signed-off-by: David Bauer <mail@david-bauer.net>
--- 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 <mail@david-bauer.net>
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;
}

View File

@@ -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;

View File

@@ -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;

View File

@@ -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 */

View File

@@ -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);

View File

@@ -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;

View File

@@ -1,27 +0,0 @@
From 66ae1b1750720a33e29792a177b1e696f4f005fb Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.org>
Date: Wed, 9 Mar 2016 17:25:59 +0000
Subject: [PATCH] brcmfmac: Disable power management
Disable wireless power saving in the brcmfmac WLAN driver. This is a
temporary measure until the connectivity loss resulting from power
saving is resolved.
Signed-off-by: Phil Elwell <phil@raspberrypi.org>
---
drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c | 2 ++
1 file changed, 2 insertions(+)
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
@@ -3314,6 +3314,10 @@ brcmf_cfg80211_set_power_mgmt(struct wip
* preference in cfg struct to apply this to
* FW later while initializing the dongle
*/
+#if defined(CONFIG_ARCH_BCM2835)
+ brcmf_dbg(INFO, "power management disabled\n");
+ enabled = false;
+#endif
cfg->pwr_save = enabled;
if (!check_vif_up(ifp->vif)) {

View File

@@ -1,23 +0,0 @@
brcmfmac: do not use internal roaming engine by default
Some evidence of curing disconnects with this disabled, so make it a default.
Can be overridden with module parameter roamoff=0
See: http://projectable.me/optimize-my-pi-wi-fi/
Signed-off-by: Phil Elwell <phil@raspberrypi.org>
---
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
@@ -59,7 +59,11 @@ static int brcmf_fcmode;
module_param_named(fcmode, brcmf_fcmode, int, 0);
MODULE_PARM_DESC(fcmode, "Mode of firmware signalled flow control");
+#if defined(CONFIG_ARCH_BCM2835)
+static int brcmf_roamoff = 1;
+#else
static int brcmf_roamoff;
+#endif
module_param_named(roamoff, brcmf_roamoff, int, 0400);
MODULE_PARM_DESC(roamoff, "Do not use internal roaming engine");

View File

@@ -0,0 +1,29 @@
From 88759af56f126e6e151f07fa9efc7447079fca9d Mon Sep 17 00:00:00 2001
From: Cheong2K <cheong@redbear.cc>
Date: Fri, 26 Feb 2016 18:20:10 +0800
Subject: [PATCH] brcmfmac: adds support for BCM43341 wifi
Signed-off-by: Phil Elwell <phil@raspberrypi.org>
---
drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 3 ++-
3 files changed, 4 insertions(+), 3 deletions(-)
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
@@ -609,6 +609,7 @@ BRCMF_FW_DEF(4329, "brcmfmac4329-sdio");
BRCMF_FW_DEF(4330, "brcmfmac4330-sdio");
BRCMF_FW_DEF(4334, "brcmfmac4334-sdio");
BRCMF_FW_DEF(43340, "brcmfmac43340-sdio");
+BRCMF_FW_DEF(43341, "brcmfmac43341-sdio");
BRCMF_FW_DEF(4335, "brcmfmac4335-sdio");
BRCMF_FW_DEF(43362, "brcmfmac43362-sdio");
BRCMF_FW_DEF(4339, "brcmfmac4339-sdio");
@@ -641,7 +642,7 @@ static const struct brcmf_firmware_mappi
BRCMF_FW_ENTRY(BRCM_CC_4330_CHIP_ID, 0xFFFFFFFF, 4330),
BRCMF_FW_ENTRY(BRCM_CC_4334_CHIP_ID, 0xFFFFFFFF, 4334),
BRCMF_FW_ENTRY(BRCM_CC_43340_CHIP_ID, 0xFFFFFFFF, 43340),
- BRCMF_FW_ENTRY(BRCM_CC_43341_CHIP_ID, 0xFFFFFFFF, 43340),
+ BRCMF_FW_ENTRY(BRCM_CC_43341_CHIP_ID, 0xFFFFFFFF, 43341),
BRCMF_FW_ENTRY(BRCM_CC_4335_CHIP_ID, 0xFFFFFFFF, 4335),
BRCMF_FW_ENTRY(BRCM_CC_43362_CHIP_ID, 0xFFFFFFFE, 43362),
BRCMF_FW_ENTRY(BRCM_CC_4339_CHIP_ID, 0xFFFFFFFF, 4339),

View File

@@ -0,0 +1,130 @@
From 3ac592da09acb47b728ef320e9fecde55c8e0824 Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.com>
Date: Fri, 26 Jun 2020 11:51:05 +0100
Subject: [PATCH] brcmfmac: Prefer a ccode from OTP over nvram file
Allow the nvram file to set a default ccode (regulatory domain) without
overriding one set in OTP.
Signed-off-by: Phil Elwell <phil@raspberrypi.com>
---
.../broadcom/brcm80211/brcmfmac/cfg80211.c | 39 +++++++++++++------
.../broadcom/brcm80211/brcmfmac/firmware.c | 21 +++++++++-
2 files changed, 47 insertions(+), 13 deletions(-)
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
@@ -9,6 +9,7 @@
#include <linux/etherdevice.h>
#include <linux/module.h>
#include <linux/vmalloc.h>
+#include <linux/ctype.h>
#include <net/cfg80211.h>
#include <net/netlink.h>
#include <uapi/linux/if_arp.h>
@@ -8212,31 +8213,45 @@ static void brcmf_cfg80211_reg_notifier(
struct brcmf_if *ifp = brcmf_get_ifp(cfg->pub, 0);
struct brcmf_pub *drvr = cfg->pub;
struct brcmf_fil_country_le ccreq;
+ char *alpha2;
s32 err;
int i;
- /* The country code gets set to "00" by default at boot, ignore */
- if (req->alpha2[0] == '0' && req->alpha2[1] == '0')
+ err = brcmf_fil_iovar_data_get(ifp, "country", &ccreq, sizeof(ccreq));
+ if (err) {
+ bphy_err(drvr, "Country code iovar returned err = %d\n", err);
return;
+ }
+
+ /* The country code gets set to "00" by default at boot - substitute
+ * any saved ccode from the nvram file unless there is a valid code
+ * already set.
+ */
+ alpha2 = req->alpha2;
+ if (alpha2[0] == '0' && alpha2[1] == '0') {
+ extern char saved_ccode[2];
+
+ if ((isupper(ccreq.country_abbrev[0]) &&
+ isupper(ccreq.country_abbrev[1])) ||
+ !saved_ccode[0])
+ return;
+ alpha2 = saved_ccode;
+ pr_debug("brcmfmac: substituting saved ccode %c%c\n",
+ alpha2[0], alpha2[1]);
+ }
/* ignore non-ISO3166 country codes */
for (i = 0; i < 2; i++)
- if (req->alpha2[i] < 'A' || req->alpha2[i] > 'Z') {
+ if (alpha2[i] < 'A' || alpha2[i] > 'Z') {
bphy_err(drvr, "not an ISO3166 code (0x%02x 0x%02x)\n",
- req->alpha2[0], req->alpha2[1]);
+ alpha2[0], alpha2[1]);
return;
}
brcmf_dbg(TRACE, "Enter: initiator=%d, alpha=%c%c\n", req->initiator,
- req->alpha2[0], req->alpha2[1]);
-
- err = brcmf_fil_iovar_data_get(ifp, "country", &ccreq, sizeof(ccreq));
- if (err) {
- bphy_err(drvr, "Country code iovar returned err = %d\n", err);
- return;
- }
+ alpha2[0], alpha2[1]);
- err = brcmf_translate_country_code(ifp->drvr, req->alpha2, &ccreq);
+ err = brcmf_translate_country_code(ifp->drvr, alpha2, &ccreq);
if (err)
return;
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c
@@ -10,6 +10,7 @@
#include <linux/firmware.h>
#include <linux/module.h>
#include <linux/bcm47xx_nvram.h>
+#include <linux/ctype.h>
#include "debug.h"
#include "firmware.h"
@@ -32,6 +33,8 @@ enum nvram_parser_state {
END
};
+char saved_ccode[2] = {};
+
/**
* struct nvram_parser - internal info for parser.
*
@@ -562,11 +565,27 @@ static int brcmf_fw_request_nvram_done(c
goto fail;
}
- if (data)
+ if (data) {
+ char *ccode = strnstr((char *)data, "ccode=", data_len);
+ /* Ensure this is a whole token */
+ if (ccode && ((void *)ccode == (void *)data || isspace(ccode[-1]))) {
+ /* Comment out the line */
+ ccode[0] = '#';
+ ccode += 6;
+ if (isupper(ccode[0]) && isupper(ccode[1]) &&
+ isspace(ccode[2])) {
+ pr_debug("brcmfmac: intercepting ccode=%c%c\n",
+ ccode[0], ccode[1]);
+ saved_ccode[0] = ccode[0];
+ saved_ccode[1] = ccode[1];
+ }
+ };
+
nvram = brcmf_fw_nvram_strip(data, data_len, &nvram_length,
fwctx->req->domain_nr,
fwctx->req->bus_nr,
fwctx->dev);
+ }
if (free_bcm47xx_nvram)
bcm47xx_nvram_release_contents(data);

View File

@@ -0,0 +1,24 @@
From 12722e472a963598a88011dd4b6805ed0a0e318f Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.com>
Date: Mon, 3 Feb 2020 09:32:22 +0000
Subject: [PATCH] brcmfmac: Increase power saving delay to 2s
Increase the delay before entering the lower power state to 2 seconds
(the maximum allowed) in order to reduce the packet latencies,
particularly for inbound packets.
Signed-off-by: Phil Elwell <phil@raspberrypi.com>
---
drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
@@ -3338,6 +3338,7 @@ brcmf_cfg80211_set_power_mgmt(struct wip
bphy_err(drvr, "error (%d)\n", err);
}
+ timeout = 2000; /* 2000ms - the maximum */
err = brcmf_fil_iovar_int_set(ifp, "pm2_sleep_ret",
min_t(u32, timeout, BRCMF_PS_MAX_TIMEOUT_MS));
if (err)

View File

@@ -0,0 +1,721 @@
From e7400640cafcf6bd84049308feb5aeabecf55b46 Mon Sep 17 00:00:00 2001
From: Praveen Babu C <pucn@cypress.com>
Date: Tue, 9 Jan 2018 11:33:10 +0530
Subject: [PATCH] non-upstream: support DS1 exit firmware re-download
In deep sleep mode (DS1) ARM is off and once exit trigger comes than
mailbox Interrupt comes to host and whole reinitiation should be done
in the ARM to start TX/RX.
Also fix below issus for DS1 exit:
1. Sent Tx Control frame only after firmware redownload complete (check
F2 Ready before sending Tx Control frame to Firmware)
2. intermittent High DS1 TX Exit latency time (almost 3sec) ==> This is
fixed by skipping host Mailbox interrupt Multiple times (ulp state
mechanism)
3. RX GlOM save/restore in Firmware
4. Add ULP event enable & event_msgs_ext iovar configuration in FMAC
5. Add ULP_EVENT_RECV state machine for sbwad support
6. Support 2 Byte Shared memory read for DS1 Exit HUDI implementation
Signed-off-by: Praveen Babu C <pucn@cypress.com>
Signed-off-by: Naveen Gupta <nagu@cypress.com>
[Merge from 4.14.77 to 5.4.18; set BRCMF_SDIO_MAX_ACCESS_ERRORS to 20]
Signed-off-by: Chi-hsien Lin <chi-hsien.lin@cypress.com>
JIRA: SWWLAN-135583
JIRA: SWWLAN-136577
---
.../broadcom/brcm80211/brcmfmac/bus.h | 2 +-
.../broadcom/brcm80211/brcmfmac/common.c | 39 +++
.../broadcom/brcm80211/brcmfmac/core.c | 13 +-
.../broadcom/brcm80211/brcmfmac/debug.h | 1 +
.../broadcom/brcm80211/brcmfmac/fweh.h | 31 ++-
.../broadcom/brcm80211/brcmfmac/pcie.c | 2 +-
.../broadcom/brcm80211/brcmfmac/sdio.c | 260 +++++++++++++++++-
.../broadcom/brcm80211/brcmfmac/sdio.h | 110 ++++++++
.../broadcom/brcm80211/brcmfmac/usb.c | 4 +-
.../broadcom/brcm80211/include/chipcommon.h | 2 +
10 files changed, 448 insertions(+), 16 deletions(-)
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h
@@ -298,7 +298,7 @@ void brcmf_rx_event(struct device *dev,
int brcmf_alloc(struct device *dev, struct brcmf_mp_device *settings);
/* Indication from bus module regarding presence/insertion of dongle. */
-int brcmf_attach(struct device *dev);
+int brcmf_attach(struct device *dev, bool start_bus);
/* Indication from bus module regarding removal/absence of dongle */
void brcmf_detach(struct device *dev);
void brcmf_free(struct device *dev);
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
@@ -20,6 +20,8 @@
#include "of.h"
#include "firmware.h"
#include "chip.h"
+#include "fweh.h"
+#include <brcm_hw_ids.h>
MODULE_AUTHOR("Broadcom Corporation");
MODULE_DESCRIPTION("Broadcom 802.11 wireless LAN fullmac driver.");
@@ -274,6 +276,8 @@ int brcmf_c_preinit_dcmds(struct brcmf_i
char *clmver;
char *ptr;
s32 err;
+ struct eventmsgs_ext *eventmask_msg = NULL;
+ u8 msglen;
if (is_valid_ether_addr(ifp->mac_addr)) {
/* set mac address */
@@ -433,6 +437,41 @@ int brcmf_c_preinit_dcmds(struct brcmf_i
goto done;
}
+ /* Enable event_msg_ext specific to 43012 chip */
+ if (bus->chip == CY_CC_43012_CHIP_ID) {
+ /* Program event_msg_ext to support event larger than 128 */
+ msglen = (roundup(BRCMF_E_LAST, NBBY) / NBBY) +
+ EVENTMSGS_EXT_STRUCT_SIZE;
+ /* Allocate buffer for eventmask_msg */
+ eventmask_msg = kzalloc(msglen, GFP_KERNEL);
+ if (!eventmask_msg) {
+ err = -ENOMEM;
+ goto done;
+ }
+
+ /* Read the current programmed event_msgs_ext */
+ eventmask_msg->ver = EVENTMSGS_VER;
+ eventmask_msg->len = roundup(BRCMF_E_LAST, NBBY) / NBBY;
+ err = brcmf_fil_iovar_data_get(ifp, "event_msgs_ext",
+ eventmask_msg,
+ msglen);
+
+ /* Enable ULP event */
+ brcmf_dbg(EVENT, "enable event ULP\n");
+ setbit(eventmask_msg->mask, BRCMF_E_ULP);
+
+ /* Write updated Event mask */
+ eventmask_msg->ver = EVENTMSGS_VER;
+ eventmask_msg->command = EVENTMSGS_SET_MASK;
+ eventmask_msg->len = (roundup(BRCMF_E_LAST, NBBY) / NBBY);
+
+ err = brcmf_fil_iovar_data_set(ifp, "event_msgs_ext",
+ eventmask_msg, msglen);
+ if (err) {
+ brcmf_err("Set event_msgs_ext error (%d)\n", err);
+ goto done;
+ }
+ }
/* Setup default scan channel time */
err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_SET_SCAN_CHANNEL_TIME,
BRCMF_DEFAULT_SCAN_CHANNEL_TIME);
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
@@ -1322,7 +1322,7 @@ int brcmf_alloc(struct device *dev, stru
return 0;
}
-int brcmf_attach(struct device *dev)
+int brcmf_attach(struct device *dev, bool start_bus)
{
struct brcmf_bus *bus_if = dev_get_drvdata(dev);
struct brcmf_pub *drvr = bus_if->drvr;
@@ -1363,10 +1363,13 @@ int brcmf_attach(struct device *dev)
brcmf_fweh_register(drvr, BRCMF_E_PSM_WATCHDOG,
brcmf_psm_watchdog_notify);
- ret = brcmf_bus_started(drvr, drvr->ops);
- if (ret != 0) {
- bphy_err(drvr, "dongle is not responding: err=%d\n", ret);
- goto fail;
+ if (start_bus) {
+ ret = brcmf_bus_started(drvr, drvr->ops);
+ if (ret != 0) {
+ bphy_err(drvr, "dongle is not responding: err=%d\n",
+ ret);
+ goto fail;
+ }
}
return 0;
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/debug.h
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/debug.h
@@ -29,6 +29,7 @@
#define BRCMF_MSGBUF_VAL 0x00040000
#define BRCMF_PCIE_VAL 0x00080000
#define BRCMF_FWCON_VAL 0x00100000
+#define BRCMF_ULP_VAL 0x00200000
/* set default print format */
#undef pr_fmt
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.h
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.h
@@ -94,7 +94,8 @@ struct brcmf_cfg80211_info;
BRCMF_ENUM_DEF(FIFO_CREDIT_MAP, 74) \
BRCMF_ENUM_DEF(ACTION_FRAME_RX, 75) \
BRCMF_ENUM_DEF(TDLS_PEER_EVENT, 92) \
- BRCMF_ENUM_DEF(BCMC_CREDIT_SUPPORT, 127)
+ BRCMF_ENUM_DEF(BCMC_CREDIT_SUPPORT, 127) \
+ BRCMF_ENUM_DEF(ULP, 146)
#define BRCMF_ENUM_DEF(id, val) \
BRCMF_E_##id = (val),
@@ -102,6 +103,12 @@ struct brcmf_cfg80211_info;
/* firmware event codes sent by the dongle */
enum brcmf_fweh_event_code {
BRCMF_FWEH_EVENT_ENUM_DEFLIST
+
+ /* this determines event mask length which must match
+ * minimum length check in device firmware so it is
+ * hard-coded here.
+ */
+ BRCMF_E_LAST
};
#undef BRCMF_ENUM_DEF
@@ -280,6 +287,28 @@ struct brcmf_if_event {
u8 role;
};
+enum event_msgs_ext_command {
+ EVENTMSGS_NONE = 0,
+ EVENTMSGS_SET_BIT = 1,
+ EVENTMSGS_RESET_BIT = 2,
+ EVENTMSGS_SET_MASK = 3
+};
+
+#define EVENTMSGS_VER 1
+#define EVENTMSGS_EXT_STRUCT_SIZE offsetof(struct eventmsgs_ext, mask[0])
+
+/* len- for SET it would be mask size from the application to the firmware */
+/* for GET it would be actual firmware mask size */
+/* maxgetsize - is only used for GET. indicate max mask size that the */
+/* application can read from the firmware */
+struct eventmsgs_ext {
+ u8 ver;
+ u8 command;
+ u8 len;
+ u8 maxgetsize;
+ u8 mask[1];
+};
+
typedef int (*brcmf_fweh_handler_t)(struct brcmf_if *ifp,
const struct brcmf_event_msg *evtmsg,
void *data);
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
@@ -2207,7 +2207,7 @@ static void brcmf_pcie_setup(struct devi
init_waitqueue_head(&devinfo->mbdata_resp_wait);
- ret = brcmf_attach(&devinfo->pdev->dev);
+ ret = brcmf_attach(&devinfo->pdev->dev, true);
if (ret)
goto fail;
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
@@ -35,9 +35,12 @@
#include "core.h"
#include "common.h"
#include "bcdc.h"
+#include "debug.h"
+#include "fwil.h"
#define DCMD_RESP_TIMEOUT msecs_to_jiffies(2500)
#define CTL_DONE_TIMEOUT msecs_to_jiffies(2500)
+#define ULP_HUDI_PROC_DONE_TIME msecs_to_jiffies(2500)
/* watermark expressed in number of words */
#define DEFAULT_F2_WATERMARK 0x8
@@ -325,7 +328,16 @@ struct rte_console {
#define KSO_WAIT_US 50
#define MAX_KSO_ATTEMPTS (PMU_MAX_TRANSITION_DLY/KSO_WAIT_US)
-#define BRCMF_SDIO_MAX_ACCESS_ERRORS 5
+#define BRCMF_SDIO_MAX_ACCESS_ERRORS 20
+
+static void brcmf_sdio_firmware_callback(struct device *dev, int err,
+ struct brcmf_fw_request *fwreq);
+static struct brcmf_fw_request *
+ brcmf_sdio_prepare_fw_request(struct brcmf_sdio *bus);
+static int brcmf_sdio_f2_ready(struct brcmf_sdio *bus);
+static int brcmf_ulp_event_notify(struct brcmf_if *ifp,
+ const struct brcmf_event_msg *evtmsg,
+ void *data);
#ifdef DEBUG
/* Device console log buffer state */
@@ -1105,7 +1117,7 @@ static void brcmf_sdio_get_console_addr(
}
#endif /* DEBUG */
-static u32 brcmf_sdio_hostmail(struct brcmf_sdio *bus)
+static u32 brcmf_sdio_hostmail(struct brcmf_sdio *bus, u32 *hmbd)
{
struct brcmf_sdio_dev *sdiod = bus->sdiodev;
struct brcmf_core *core = bus->sdio_core;
@@ -1194,6 +1206,9 @@ static u32 brcmf_sdio_hostmail(struct br
HMB_DATA_FCDATA_MASK | HMB_DATA_VERSION_MASK))
brcmf_err("Unknown mailbox data content: 0x%02x\n",
hmb_data);
+ /* Populate hmb_data if argument is passed for DS1 check later */
+ if (hmbd)
+ *hmbd = hmb_data;
return intstatus;
}
@@ -2580,6 +2595,182 @@ static int brcmf_sdio_intr_rstatus(struc
return ret;
}
+/* This Function is used to retrieve important
+ * details from dongle related to ULP mode Mostly
+ * values/SHM details that will be vary depending
+ * on the firmware branches
+ */
+static void
+brcmf_sdio_ulp_preinit(struct device *dev)
+{
+ struct brcmf_bus *bus_if = dev_get_drvdata(dev);
+ struct brcmf_sdio_dev *sdiodev = bus_if->bus_priv.sdio;
+ struct brcmf_if *ifp = bus_if->drvr->iflist[0];
+
+ brcmf_dbg(ULP, "Enter\n");
+
+ /* Query ulp_sdioctrl iovar to get the ULP related SHM offsets */
+ brcmf_fil_iovar_data_get(ifp, "ulp_sdioctrl",
+ &sdiodev->fmac_ulp.ulp_shm_offset,
+ sizeof(sdiodev->fmac_ulp.ulp_shm_offset));
+
+ sdiodev->ulp = false;
+
+ brcmf_dbg(ULP, "m_ulp_ctrl_sdio[%x] m_ulp_wakeevt_ind [%x]\n",
+ M_DS1_CTRL_SDIO(sdiodev->fmac_ulp),
+ M_WAKEEVENT_IND(sdiodev->fmac_ulp));
+ brcmf_dbg(ULP, "m_ulp_wakeind [%x]\n",
+ M_ULP_WAKE_IND(sdiodev->fmac_ulp));
+}
+
+/* Reinitialize ARM because In DS1 mode ARM got off */
+static int
+brcmf_sdio_ulp_reinit_fw(struct brcmf_sdio *bus)
+{
+ struct brcmf_sdio_dev *sdiodev = bus->sdiodev;
+ struct brcmf_fw_request *fwreq;
+ int err = 0;
+
+ /* After firmware redownload tx/rx seq are reset accordingly
+ * these values are reset on FMAC side tx_max is initially set to 4,
+ * which later is updated by FW.
+ */
+ bus->tx_seq = 0;
+ bus->rx_seq = 0;
+ bus->tx_max = 4;
+
+ fwreq = brcmf_sdio_prepare_fw_request(bus);
+ if (!fwreq)
+ return -ENOMEM;
+
+ err = brcmf_fw_get_firmwares(sdiodev->dev, fwreq,
+ brcmf_sdio_firmware_callback);
+ if (err != 0) {
+ brcmf_err("async firmware request failed: %d\n", err);
+ kfree(fwreq);
+ }
+
+ return err;
+}
+
+/* Check if device is in DS1 mode and handshake with ULP UCODE */
+static bool
+brcmf_sdio_ulp_pre_redownload_check(struct brcmf_sdio *bus, u32 hmb_data)
+{
+ struct brcmf_sdio_dev *sdiod = bus->sdiodev;
+ int err = 0;
+ u32 value = 0;
+ u32 val32, ulp_wake_ind, wowl_wake_ind;
+ int reg_addr;
+ unsigned long timeout;
+ struct brcmf_ulp *fmac_ulp = &bus->sdiodev->fmac_ulp;
+ int i = 0;
+
+ /* If any host mail box data is present, ignore DS1 exit sequence */
+ if (hmb_data)
+ return false;
+ /* Skip if DS1 Exit is already in progress
+ * This can happen if firmware download is taking more time
+ */
+ if (fmac_ulp->ulp_state == FMAC_ULP_TRIGGERED)
+ return false;
+
+ value = brcmf_sdiod_func0_rb(sdiod, SDIO_CCCR_IOEx, &err);
+
+ if (value == SDIO_FUNC_ENABLE_1) {
+ brcmf_dbg(ULP, "GOT THE INTERRUPT FROM UCODE\n");
+ sdiod->ulp = true;
+ fmac_ulp->ulp_state = FMAC_ULP_TRIGGERED;
+ ulp_wake_ind = D11SHM_RDW(sdiod,
+ M_ULP_WAKE_IND(sdiod->fmac_ulp),
+ &err);
+ wowl_wake_ind = D11SHM_RDW(sdiod,
+ M_WAKEEVENT_IND(sdiod->fmac_ulp),
+ &err);
+
+ brcmf_dbg(ULP, "wowl_wake_ind: 0x%08x, ulp_wake_ind: 0x%08x state %s\n",
+ wowl_wake_ind, ulp_wake_ind, (fmac_ulp->ulp_state) ?
+ "DS1 Exit Triggered" : "IDLE State");
+
+ if (wowl_wake_ind || ulp_wake_ind) {
+ /* RX wake Don't do anything.
+ * Just bail out and re-download firmware.
+ */
+ /* Print out PHY TX error block when bit 9 set */
+ if ((ulp_wake_ind & C_DS1_PHY_TXERR) &&
+ M_DS1_PHYTX_ERR_BLK(sdiod->fmac_ulp)) {
+ brcmf_err("Dump PHY TX Error SHM Locations\n");
+ for (i = 0; i < PHYTX_ERR_BLK_SIZE; i++) {
+ pr_err("0x%x",
+ D11SHM_RDW(sdiod,
+ (M_DS1_PHYTX_ERR_BLK(sdiod->fmac_ulp) +
+ (i * 2)), &err));
+ }
+ brcmf_err("\n");
+ }
+ } else {
+ /* TX wake negotiate with MAC */
+ brcmf_dbg(ULP, "M_DS1_CTRL_SDIO: 0x%08x\n",
+ (u32)D11SHM_RDW(sdiod,
+ M_DS1_CTRL_SDIO(sdiod->fmac_ulp),
+ &err));
+ val32 = D11SHM_RD(sdiod,
+ M_DS1_CTRL_SDIO(sdiod->fmac_ulp),
+ &err);
+ D11SHM_WR(sdiod, M_DS1_CTRL_SDIO(sdiod->fmac_ulp),
+ val32, (C_DS1_CTRL_SDIO_DS1_EXIT |
+ C_DS1_CTRL_REQ_VALID), &err);
+ val32 = D11REG_RD(sdiod, D11_MACCONTROL_REG, &err);
+ val32 = val32 | D11_MACCONTROL_REG_WAKE;
+ D11REG_WR(sdiod, D11_MACCONTROL_REG, val32, &err);
+
+ /* Poll for PROC_DONE to be set by ucode */
+ value = D11SHM_RDW(sdiod,
+ M_DS1_CTRL_SDIO(sdiod->fmac_ulp),
+ &err);
+ /* Wait here (polling) for C_DS1_CTRL_PROC_DONE */
+ timeout = jiffies + ULP_HUDI_PROC_DONE_TIME;
+ while (!(value & C_DS1_CTRL_PROC_DONE)) {
+ value = D11SHM_RDW(sdiod,
+ M_DS1_CTRL_SDIO(sdiod->fmac_ulp),
+ &err);
+ if (time_after(jiffies, timeout))
+ break;
+ usleep_range(1000, 2000);
+ }
+ brcmf_dbg(ULP, "M_DS1_CTRL_SDIO: 0x%08x\n",
+ (u32)D11SHM_RDW(sdiod,
+ M_DS1_CTRL_SDIO(sdiod->fmac_ulp), &err));
+ value = D11SHM_RDW(sdiod,
+ M_DS1_CTRL_SDIO(sdiod->fmac_ulp),
+ &err);
+ if (!(value & C_DS1_CTRL_PROC_DONE)) {
+ brcmf_err("Timeout Failed to enter DS1 Exit state!\n");
+ return false;
+ }
+ }
+
+ ulp_wake_ind = D11SHM_RDW(sdiod,
+ M_ULP_WAKE_IND(sdiod->fmac_ulp),
+ &err);
+ wowl_wake_ind = D11SHM_RDW(sdiod,
+ M_WAKEEVENT_IND(sdiod->fmac_ulp),
+ &err);
+ brcmf_dbg(ULP, "wowl_wake_ind: 0x%08x, ulp_wake_ind: 0x%08x\n",
+ wowl_wake_ind, ulp_wake_ind);
+ reg_addr = CORE_CC_REG(
+ brcmf_chip_get_pmu(bus->ci)->base, min_res_mask);
+ brcmf_sdiod_writel(sdiod, reg_addr,
+ DEFAULT_43012_MIN_RES_MASK, &err);
+ if (err)
+ brcmf_err("min_res_mask failed\n");
+
+ return true;
+ }
+
+ return false;
+}
+
static void brcmf_sdio_dpc(struct brcmf_sdio *bus)
{
struct brcmf_sdio_dev *sdiod = bus->sdiodev;
@@ -2651,8 +2842,11 @@ static void brcmf_sdio_dpc(struct brcmf_
/* Handle host mailbox indication */
if (intstatus & I_HMB_HOST_INT) {
+ u32 hmb_data = 0;
intstatus &= ~I_HMB_HOST_INT;
- intstatus |= brcmf_sdio_hostmail(bus);
+ intstatus |= brcmf_sdio_hostmail(bus, &hmb_data);
+ if (brcmf_sdio_ulp_pre_redownload_check(bus, hmb_data))
+ brcmf_sdio_ulp_reinit_fw(bus);
}
sdio_release_host(bus->sdiodev->func1);
@@ -2697,7 +2891,7 @@ static void brcmf_sdio_dpc(struct brcmf_
brcmf_sdio_clrintr(bus);
if (bus->ctrl_frame_stat && (bus->clkstate == CLK_AVAIL) &&
- txctl_ok(bus)) {
+ txctl_ok(bus) && brcmf_sdio_f2_ready(bus)) {
sdio_claim_host(bus->sdiodev->func1);
if (bus->ctrl_frame_stat) {
err = brcmf_sdio_tx_ctrlframe(bus, bus->ctrl_frame_buf,
@@ -3567,6 +3761,10 @@ static int brcmf_sdio_bus_preinit(struct
if (err < 0)
goto done;
+ /* initialize SHM address from firmware for DS1 */
+ if (!bus->sdiodev->ulp)
+ brcmf_sdio_ulp_preinit(dev);
+
bus->tx_hdrlen = SDPCM_HWHDR_LEN + SDPCM_SWHDR_LEN;
if (sdiodev->sg_support) {
bus->txglom = false;
@@ -4215,7 +4413,7 @@ static void brcmf_sdio_firmware_callback
u8 saveclk, bpreq;
u8 devctl;
- brcmf_dbg(TRACE, "Enter: dev=%s, err=%d\n", dev_name(dev), err);
+ brcmf_dbg(ULP, "Enter: dev=%s, err=%d\n", dev_name(dev), err);
if (err)
goto fail;
@@ -4392,12 +4590,25 @@ static void brcmf_sdio_firmware_callback
}
/* Attach to the common layer, reserve hdr space */
- err = brcmf_attach(sdiod->dev);
+ err = brcmf_attach(sdiod->dev, !bus->sdiodev->ulp);
if (err != 0) {
brcmf_err("brcmf_attach failed\n");
goto free;
}
+ /* Register for ULP events */
+ if (sdiod->func1->device == SDIO_DEVICE_ID_BROADCOM_CYPRESS_43012)
+ brcmf_fweh_register(bus_if->drvr, BRCMF_E_ULP,
+ brcmf_ulp_event_notify);
+
+ if (bus->sdiodev->ulp) {
+ /* For ULP, after firmware redownload complete
+ * set ULP state to IDLE
+ */
+ if (bus->sdiodev->fmac_ulp.ulp_state == FMAC_ULP_TRIGGERED)
+ bus->sdiodev->fmac_ulp.ulp_state = FMAC_ULP_IDLE;
+ }
+
/* ready */
return;
@@ -4640,3 +4851,40 @@ int brcmf_sdio_sleep(struct brcmf_sdio *
return ret;
}
+
+/* Check F2 Ready bit before sending data to Firmware */
+static int
+brcmf_sdio_f2_ready(struct brcmf_sdio *bus)
+{
+ int ret = -1;
+ int iordy_status = 0;
+
+ sdio_claim_host(bus->sdiodev->func1);
+ /* Read the status of IOR2 */
+ iordy_status = brcmf_sdiod_func0_rb(bus->sdiodev, SDIO_CCCR_IORx, NULL);
+
+ sdio_release_host(bus->sdiodev->func1);
+ ret = iordy_status & SDIO_FUNC_ENABLE_2;
+ return ret;
+}
+
+static int brcmf_ulp_event_notify(struct brcmf_if *ifp,
+ const struct brcmf_event_msg *evtmsg,
+ void *data)
+{
+ int err = 0;
+ struct brcmf_bus *bus_if = ifp->drvr->bus_if;
+ struct brcmf_sdio_dev *sdiodev;
+ struct brcmf_sdio *bus;
+ struct brcmf_ulp_event *ulp_event = (struct brcmf_ulp_event *)data;
+
+ sdiodev = bus_if->bus_priv.sdio;
+ bus = sdiodev->bus;
+
+ brcmf_dbg(ULP, "Chip went to DS1 state : action %d\n",
+ ulp_event->ulp_dongle_action);
+ if (ulp_event->ulp_dongle_action == FMAC_ULP_ENTRY)
+ bus->sdiodev->fmac_ulp.ulp_state = FMAC_ULP_ENTRY_RECV;
+
+ return err;
+}
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.h
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.h
@@ -165,6 +165,35 @@ struct brcmf_sdreg {
struct brcmf_sdio;
struct brcmf_sdiod_freezer;
+/* ULP SHM Offsets info */
+struct ulp_shm_info {
+ u32 m_ulp_ctrl_sdio;
+ u32 m_ulp_wakeevt_ind;
+ u32 m_ulp_wakeind;
+ u32 m_ulp_phytxblk;
+};
+
+/* FMAC ULP state machine */
+#define FMAC_ULP_IDLE (0)
+#define FMAC_ULP_ENTRY_RECV (1)
+#define FMAC_ULP_TRIGGERED (2)
+
+/* BRCMF_E_ULP event data */
+#define FMAC_ULP_EVENT_VERSION 1
+#define FMAC_ULP_DISABLE_CONSOLE 1 /* Disable console */
+#define FMAC_ULP_UCODE_DOWNLOAD 2 /* Download ULP ucode file */
+#define FMAC_ULP_ENTRY 3 /* Inform ulp entry to Host */
+
+struct brcmf_ulp {
+ uint ulp_state;
+ struct ulp_shm_info ulp_shm_offset;
+};
+
+struct brcmf_ulp_event {
+ u16 version;
+ u16 ulp_dongle_action;
+};
+
struct brcmf_sdio_dev {
struct sdio_func *func1;
struct sdio_func *func2;
@@ -193,6 +222,8 @@ struct brcmf_sdio_dev {
enum brcmf_sdiod_state state;
struct brcmf_sdiod_freezer *freezer;
const struct firmware *clm_fw;
+ struct brcmf_ulp fmac_ulp;
+ bool ulp;
};
/* sdio core registers */
@@ -367,4 +398,83 @@ void brcmf_sdio_wowl_config(struct devic
int brcmf_sdio_sleep(struct brcmf_sdio *bus, bool sleep);
void brcmf_sdio_trigger_dpc(struct brcmf_sdio *bus);
+/* SHM offsets */
+#define M_DS1_CTRL_SDIO(ptr) ((ptr).ulp_shm_offset.m_ulp_ctrl_sdio)
+#define M_WAKEEVENT_IND(ptr) ((ptr).ulp_shm_offset.m_ulp_wakeevt_ind)
+#define M_ULP_WAKE_IND(ptr) ((ptr).ulp_shm_offset.m_ulp_wakeind)
+#define M_DS1_PHYTX_ERR_BLK(ptr) ((ptr).ulp_shm_offset.m_ulp_phytxblk)
+
+#define D11_BASE_ADDR 0x18001000
+#define D11_AXI_BASE_ADDR 0xE8000000
+#define D11_SHM_BASE_ADDR (D11_AXI_BASE_ADDR + 0x4000)
+
+#define D11REG_ADDR(offset) (D11_BASE_ADDR + (offset))
+#define D11IHR_ADDR(offset) (D11_AXI_BASE_ADDR + 0x400 + (2 * (offset)))
+#define D11SHM_ADDR(offset) (D11_SHM_BASE_ADDR + (offset))
+
+/* MacControl register */
+#define D11_MACCONTROL_REG D11REG_ADDR(0x120)
+#define D11_MACCONTROL_REG_WAKE 0x4000000
+
+/* HUDI Sequence SHM bits */
+#define C_DS1_CTRL_SDIO_DS1_SLEEP 0x1
+#define C_DS1_CTRL_SDIO_MAC_ON 0x2
+#define C_DS1_CTRL_SDIO_RADIO_PHY_ON 0x4
+#define C_DS1_CTRL_SDIO_DS1_EXIT 0x8
+#define C_DS1_CTRL_PROC_DONE 0x100
+#define C_DS1_CTRL_REQ_VALID 0x200
+
+/* M_ULP_WAKEIND bits */
+#define C_WATCHDOG_EXPIRY BIT(0)
+#define C_FCBS_ERROR BIT(1)
+#define C_RETX_FAILURE BIT(2)
+#define C_HOST_WAKEUP BIT(3)
+#define C_INVALID_FCBS_BLOCK BIT(4)
+#define C_HUDI_DS1_EXIT BIT(5)
+#define C_LOB_SLEEP BIT(6)
+#define C_DS1_PHY_TXERR BIT(9)
+#define C_DS1_WAKE_TIMER BIT(10)
+
+#define PHYTX_ERR_BLK_SIZE 18
+#define D11SHM_FIRST2BYTE_MASK 0xFFFF0000
+#define D11SHM_SECOND2BYTE_MASK 0x0000FFFF
+#define D11SHM_2BYTE_SHIFT 16
+
+#define D11SHM_RD(sdh, offset, ret) \
+ brcmf_sdiod_readl(sdh, D11SHM_ADDR(offset), ret)
+
+/* SHM Read is motified based on SHM 4 byte alignment as SHM size is 2 bytes and
+ * 2 byte is currently not working on FMAC
+ * If SHM address is not 4 byte aligned, then right shift by 16
+ * otherwise, mask the first two MSB bytes
+ * Suppose data in address 7260 is 0x440002 and it is 4 byte aligned
+ * Correct SHM value is 0x2 for this SHM offset and next SHM value is 0x44
+ */
+#define D11SHM_RDW(sdh, offset, ret) \
+ ((offset % 4) ? \
+ (brcmf_sdiod_readl(sdh, D11SHM_ADDR(offset), ret) \
+ >> D11SHM_2BYTE_SHIFT) : \
+ (brcmf_sdiod_readl(sdh, D11SHM_ADDR(offset), ret) \
+ & D11SHM_SECOND2BYTE_MASK))
+
+/* SHM is of size 2 bytes, 4 bytes write will overwrite other SHM's
+ * First read 4 bytes and then clear the required two bytes based on
+ * 4 byte alignment, then update the required value and write the
+ * 4 byte value now
+ */
+#define D11SHM_WR(sdh, offset, val, mask, ret) \
+ do { \
+ if ((offset) % 4) \
+ val = (val & D11SHM_SECOND2BYTE_MASK) | \
+ ((mask) << D11SHM_2BYTE_SHIFT); \
+ else \
+ val = (mask) | (val & D11SHM_FIRST2BYTE_MASK); \
+ brcmf_sdiod_writel(sdh, D11SHM_ADDR(offset), val, ret); \
+ } while (0)
+#define D11REG_WR(sdh, addr, val, ret) \
+ brcmf_sdiod_writel(sdh, addr, val, ret)
+
+#define D11REG_RD(sdh, addr, ret) \
+ brcmf_sdiod_readl(sdh, addr, ret)
+
#endif /* BRCMFMAC_SDIO_H */
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
@@ -1202,7 +1202,7 @@ static void brcmf_usb_probe_phase2(struc
goto error;
/* Attach to the common driver interface */
- ret = brcmf_attach(devinfo->dev);
+ ret = brcmf_attach(devinfo->dev, true);
if (ret)
goto error;
@@ -1279,7 +1279,7 @@ static int brcmf_usb_probe_cb(struct brc
ret = brcmf_alloc(devinfo->dev, devinfo->settings);
if (ret)
goto fail;
- ret = brcmf_attach(devinfo->dev);
+ ret = brcmf_attach(devinfo->dev, true);
if (ret)
goto fail;
/* we are done */
--- a/drivers/net/wireless/broadcom/brcm80211/include/chipcommon.h
+++ b/drivers/net/wireless/broadcom/brcm80211/include/chipcommon.h
@@ -308,4 +308,6 @@ struct chipcregs {
*/
#define PMU_MAX_TRANSITION_DLY 15000
+#define DEFAULT_43012_MIN_RES_MASK 0x0f8bfe77
+
#endif /* _SBCHIPC_H */

View File

@@ -0,0 +1,129 @@
From 4c1d4af0ac83705828dd11fded409163a87ea515 Mon Sep 17 00:00:00 2001
From: Kurt Lee <kurt.lee@cypress.com>
Date: Thu, 20 Aug 2020 03:07:02 -0500
Subject: [PATCH] brcmfmac: Fix interoperating DPP and other encryption network
access
1. If firmware supports 4-way handshake offload but not supports DPP
4-way offload, when user first connects encryption network, driver will
set "sup_wpa 1" to firmware, but it will further result in DPP
connection failure since firmware won't send EAPOL frame to host.
2. Fix DPP AP mode handling action frames.
3. For some firmware without fwsup support, the join procedure will be
skipped due to "sup_wpa" iovar returning not-support. Check the fwsup
feature before do such iovar.
Signed-off-by: Kurt Lee <kurt.lee@cypress.com>
Signed-off-by: Double Lo <double.lo@cypress.com>
Signed-off-by: Chi-hsien Lin <chi-hsien.lin@cypress.com>
---
.../broadcom/brcm80211/brcmfmac/cfg80211.c | 67 ++++++++++---------
.../broadcom/brcm80211/brcmfmac/p2p.c | 5 ++
2 files changed, 42 insertions(+), 30 deletions(-)
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
@@ -2491,43 +2491,50 @@ brcmf_cfg80211_connect(struct wiphy *wip
goto done;
}
- if (sme->crypto.psk &&
- profile->use_fwsup != BRCMF_PROFILE_FWSUP_SAE) {
- if (WARN_ON(profile->use_fwsup != BRCMF_PROFILE_FWSUP_NONE)) {
- err = -EINVAL;
- goto done;
+ if (brcmf_feat_is_enabled(ifp, BRCMF_FEAT_FWSUP)) {
+ if (sme->crypto.psk) {
+ if (profile->use_fwsup != BRCMF_PROFILE_FWSUP_SAE) {
+ if (WARN_ON(profile->use_fwsup !=
+ BRCMF_PROFILE_FWSUP_NONE)) {
+ err = -EINVAL;
+ goto done;
+ }
+ brcmf_dbg(INFO, "using PSK offload\n");
+ profile->use_fwsup = BRCMF_PROFILE_FWSUP_PSK;
+ }
+ } else {
+ profile->use_fwsup = BRCMF_PROFILE_FWSUP_NONE;
}
- brcmf_dbg(INFO, "using PSK offload\n");
- profile->use_fwsup = BRCMF_PROFILE_FWSUP_PSK;
- }
- if (profile->use_fwsup != BRCMF_PROFILE_FWSUP_NONE) {
- /* enable firmware supplicant for this interface */
- err = brcmf_fil_iovar_int_set(ifp, "sup_wpa", 1);
- if (err < 0) {
- bphy_err(drvr, "failed to enable fw supplicant\n");
- goto done;
+ if (profile->use_fwsup != BRCMF_PROFILE_FWSUP_NONE) {
+ /* enable firmware supplicant for this interface */
+ err = brcmf_fil_iovar_int_set(ifp, "sup_wpa", 1);
+ if (err < 0) {
+ bphy_err(drvr, "failed to enable fw supplicant\n");
+ goto done;
+ }
+ } else {
+ err = brcmf_fil_iovar_int_set(ifp, "sup_wpa", 0);
}
- }
- if (profile->use_fwsup == BRCMF_PROFILE_FWSUP_PSK)
- err = brcmf_set_pmk(ifp, sme->crypto.psk,
- BRCMF_WSEC_MAX_PSK_LEN);
- else if (profile->use_fwsup == BRCMF_PROFILE_FWSUP_SAE) {
- /* clean up user-space RSNE */
- err = brcmf_fil_iovar_data_set(ifp, "wpaie", NULL, 0);
- if (err) {
- bphy_err(drvr, "failed to clean up user-space RSNE\n");
- goto done;
- }
- err = brcmf_fwvid_set_sae_password(ifp, &sme->crypto);
- if (!err && sme->crypto.psk)
+ if (profile->use_fwsup == BRCMF_PROFILE_FWSUP_PSK) {
err = brcmf_set_pmk(ifp, sme->crypto.psk,
BRCMF_WSEC_MAX_PSK_LEN);
+ } else if (profile->use_fwsup == BRCMF_PROFILE_FWSUP_SAE) {
+ /* clean up user-space RSNE */
+ err = brcmf_fil_iovar_data_set(ifp, "wpaie", NULL, 0);
+ if (err) {
+ bphy_err(drvr, "failed to clean up user-space RSNE\n");
+ goto done;
+ }
+ err = brcmf_fwvid_set_sae_password(ifp, &sme->crypto);
+ if (!err && sme->crypto.psk)
+ err = brcmf_set_pmk(ifp, sme->crypto.psk,
+ BRCMF_WSEC_MAX_PSK_LEN);
+ }
+ if (err)
+ goto done;
}
- if (err)
- goto done;
-
/* Join with specific BSSID and cached SSID
* If SSID is zero join based on BSSID only
*/
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/p2p.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/p2p.c
@@ -1281,6 +1281,10 @@ static s32 brcmf_p2p_abort_action_frame(
brcmf_dbg(TRACE, "Enter\n");
vif = p2p->bss_idx[P2PAPI_BSSCFG_DEVICE].vif;
+
+ if (!vif)
+ vif = p2p->bss_idx[P2PAPI_BSSCFG_PRIMARY].vif;
+
err = brcmf_fil_bsscfg_data_set(vif->ifp, "actframe_abort", &int_val,
sizeof(s32));
if (err)
@@ -1826,6 +1830,7 @@ bool brcmf_p2p_send_action_frame(struct
/* validate channel and p2p ies */
if (config_af_params.search_channel &&
IS_P2P_SOCIAL_CHANNEL(le32_to_cpu(af_params->channel)) &&
+ p2p->bss_idx[P2PAPI_BSSCFG_DEVICE].vif &&
p2p->bss_idx[P2PAPI_BSSCFG_DEVICE].vif->saved_ie.probe_req_ie_len) {
afx_hdl = &p2p->afx_hdl;
afx_hdl->peer_listen_chan = le32_to_cpu(af_params->channel);

View File

@@ -0,0 +1,26 @@
From 0ff7f575b657b3fdfbd6902b68a28548208f4d36 Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.com>
Date: Thu, 8 May 2025 16:55:27 +0100
Subject: [PATCH] wifi: brcmfmac: Include modinfo for 43456 CLM blob
Listing firmware files in the brcmfmac modinfo helps with e.g. initramfs
creation.
See: https://github.com/raspberrypi/linux/issues/6828
Signed-off-by: Phil Elwell <phil@raspberrypi.com>
---
drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
@@ -631,7 +631,7 @@ BRCMF_FW_CLM_DEF(43430A1, "brcmfmac43430
BRCMF_FW_DEF(43430B0, "brcmfmac43430b0-sdio");
BRCMF_FW_CLM_DEF(43439, "brcmfmac43439-sdio");
BRCMF_FW_CLM_DEF(43455, "brcmfmac43455-sdio");
-BRCMF_FW_DEF(43456, "brcmfmac43456-sdio");
+BRCMF_FW_CLM_DEF(43456, "brcmfmac43456-sdio");
BRCMF_FW_CLM_DEF(4354, "brcmfmac4354-sdio");
BRCMF_FW_CLM_DEF(4356, "brcmfmac4356-sdio");
BRCMF_FW_DEF(4359, "brcmfmac4359-sdio");

View File

@@ -9,7 +9,7 @@ Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
@@ -7986,6 +7986,7 @@ static s32 brcmf_translate_country_code(
@@ -7991,6 +7991,7 @@ static s32 brcmf_translate_country_code(
return 0;
}
@@ -17,7 +17,7 @@ Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
static int
brcmf_parse_dump_obss(char *buf, struct brcmf_dump_survey *survey)
{
@@ -8208,6 +8209,7 @@ exit:
@@ -8213,6 +8214,7 @@ exit:
brcmf_set_mpc(ifp, 1);
return err;
}
@@ -25,7 +25,7 @@ Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
static void brcmf_cfg80211_reg_notifier(struct wiphy *wiphy,
struct regulatory_request *req)
@@ -8360,8 +8362,10 @@ struct brcmf_cfg80211_info *brcmf_cfg802
@@ -8379,8 +8381,10 @@ struct brcmf_cfg80211_info *brcmf_cfg802
if (brcmf_feat_is_enabled(ifp, BRCMF_FEAT_WOWL_GTK))
ops->set_rekey_data = brcmf_cfg80211_set_rekey_data;
#endif

View File

@@ -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;

View File

@@ -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 */

View File

@@ -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)
{

View File

@@ -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);

View File

@@ -43,8 +43,8 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
+compat-$(CPTCFG_KERNEL_5_15) += backport-5.15.o backport-genetlink.o
+compat-$(CPTCFG_KERNEL_6_1) += backport-genetlink.o
compat-$(CPTCFG_KERNEL_6_4) += backport-6.4.o
compat-$(CPTCFG_KERNEL_6_11) += backport-6.11.o
compat-$(CPTCFG_BPAUTO_BUILD_CRYPTO_LIB_ARC4) += lib-crypto-arc4.o
--- a/compat/backport-genetlink.c
+++ b/compat/backport-genetlink.c
@@ -17,6 +17,7 @@

View File

@@ -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[] = {

View File

@@ -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;

View File

@@ -0,0 +1,26 @@
Switch rt2800soc from .remove to .remove_new callback
The rt2x00soc_remove() function was converted to the new .remove API.
Kernel 6.6 still uses the old .remove API, switch to .remove_new.
rt2800soc was switched in upstream commit:
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-6.12.y&id=06c566371f8afd582b9080f2d076509a4c78ae60
This fixes the following build problem:
```
/drivers/net/wireless/ralink/rt2x00/rt2800soc.c:276:27: error: initialization of 'int (*)(struct platform_device *)' from incompatible pointer type 'void (*)(struct platform_device *)' [-Werror=incompatible-pointer-types]
276 | .remove = rt2x00soc_remove,
| ^~~~~~~~~~~~~~~~
```
--- a/drivers/net/wireless/ralink/rt2x00/rt2800soc.c
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800soc.c
@@ -273,7 +273,7 @@ static struct platform_driver rt2800soc_
.of_match_table = rt2880_wmac_match,
},
.probe = rt2800soc_probe,
- .remove = rt2x00soc_remove,
+ .remove_new = rt2x00soc_remove,
.suspend = rt2x00soc_suspend,
.resume = rt2x00soc_resume,
};

View File

@@ -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,
};

View File

@@ -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;

View File

@@ -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

View File

@@ -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,

View File

@@ -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,

View File

@@ -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 = {

View File

@@ -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);

View File

@@ -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;

View File

@@ -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,

View File

@@ -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;

View File

@@ -12,7 +12,7 @@ Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
--- 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 <rtl8821cerfe2@gmail.com>
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 <rtl8821cerfe2@gmail.com>
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;
}

View File

@@ -19,7 +19,7 @@ Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
--- 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 <rtl8821cerfe2@gmail.com>
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;

View File

@@ -1,32 +0,0 @@
From 927dcd0ab53f39ee00a2d1f204b5aac77e28fcf9 Mon Sep 17 00:00:00 2001
From: Colin Ian King <colin.i.king@gmail.com>
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 <colin.i.king@gmail.com>
Tested-by: Ping-Ke Shih <pkshih@realtek.com>
Reviewed-by: Su Hui <suhui@nfschina.com>
---
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];
+ }
}
}
}

View File

@@ -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);

View File

@@ -18,7 +18,7 @@ Signed-off-by: David Bauer <mail@david-bauer.net>
--- 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];

View File

@@ -28,7 +28,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
--- 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);

View File

@@ -23,7 +23,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- 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 <nbd@nbd.name>
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 <nbd@nbd.name>
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;

View File

@@ -11,7 +11,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- 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 <nbd@nbd.name>
* @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 <nbd@nbd.name>
--- 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 <nbd@nbd.name>
} 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;

View File

@@ -12,7 +12,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- 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 <nbd@nbd.name>
--- 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 <nbd@nbd.name>
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 <nbd@nbd.name>
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 <nbd@nbd.name>
}
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 <nbd@nbd.name>
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 <nbd@nbd.name>
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 <nbd@nbd.name>
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]);

View File

@@ -23,7 +23,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- 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 <nbd@nbd.name>
*/
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 <nbd@nbd.name>
};
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 <nbd@nbd.name>
__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 <nbd@nbd.name>
};
/* 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 <nbd@nbd.name>
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 <nbd@nbd.name>
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 <nbd@nbd.name>
bool change = false;
memset(&params, 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 <nbd@nbd.name>
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 <nbd@nbd.name>
if (change)
err = cfg80211_change_iface(rdev, dev, ntype, &params);
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 <nbd@nbd.name>
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 <nbd@nbd.name>
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 <nbd@nbd.name>
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 <nbd@nbd.name>
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 <nbd@nbd.name>
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 <nbd@nbd.name>
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 <nbd@nbd.name>
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 <nbd@nbd.name>
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 <nbd@nbd.name>
/* 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 <nbd@nbd.name>
+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;

View File

@@ -10,7 +10,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- 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 <nbd@nbd.name>
/* 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 <nbd@nbd.name>
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 <nbd@nbd.name>
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;

View File

@@ -39,7 +39,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
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;

View File

@@ -49,7 +49,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- 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 <nbd@nbd.name>
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 <nbd@nbd.name>
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 <nbd@nbd.name>
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:

View File

@@ -25,7 +25,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
* @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 <nbd@nbd.name>
}
/* 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 <nbd@nbd.name>
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 <nbd@nbd.name>
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 <nbd@nbd.name>
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 <nbd@nbd.name>
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 <nbd@nbd.name>
}
--- 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 <nbd@nbd.name>
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 <nbd@nbd.name>
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,

View File

@@ -10,7 +10,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- 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 <nbd@nbd.name>
*/
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 <nbd@nbd.name>
/**
--- 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 <nbd@nbd.name>
*
* @__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 <nbd@nbd.name>
__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 },

View File

@@ -11,7 +11,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- 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 <nbd@nbd.name>
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);

View File

@@ -11,7 +11,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- 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 <nbd@nbd.name>
*/
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 <nbd@nbd.name>
#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 <nbd@nbd.name>
*
* @__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 <nbd@nbd.name>
__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;

View File

@@ -52,7 +52,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
}
/* 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
}
}

View File

@@ -0,0 +1,321 @@
From 406c5548c661df0bff6bb6ee79bf9d49faf23e31 Mon Sep 17 00:00:00 2001
From: MeiChia Chiu <MeiChia.Chiu@mediatek.com>
Date: Tue, 12 Nov 2024 16:38:46 +0800
Subject: [PATCH] wifi: mac80211: Support EHT 1024 aggregation size in TX
Support EHT 1024 aggregation size in TX
The 1024 agg size for RX is supported but not for TX.
This patch adds this support and refactors common parsing logics for
addbaext in both process_addba_resp and process_addba_req into a
function.
Reviewed-by: Shayne Chen <shayne.chen@mediatek.com>
Reviewed-by: Money Wang <money.wang@mediatek.com>
Co-developed-by: Peter Chiu <chui-hao.chiu@mediatek.com>
Signed-off-by: Peter Chiu <chui-hao.chiu@mediatek.com>
Signed-off-by: MeiChia Chiu <MeiChia.Chiu@mediatek.com>
Link: https://patch.msgid.link/20241112083846.32063-1-MeiChia.Chiu@mediatek.com
[pass elems/len instead of mgmt/len/is_req]
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
---
include/linux/ieee80211.h | 2 +
net/mac80211/agg-rx.c | 94 +++++++++++++++++++++++---------------
net/mac80211/agg-tx.c | 31 +++++++++----
net/mac80211/ht.c | 2 +-
net/mac80211/ieee80211_i.h | 9 +++-
5 files changed, 90 insertions(+), 48 deletions(-)
diff --git a/include/linux/ieee80211.h b/include/linux/ieee80211.h
index 456bca45ff05..05dedc45505c 100644
--- a/include/linux/ieee80211.h
+++ b/include/linux/ieee80211.h
@@ -1445,6 +1445,8 @@ struct ieee80211_mgmt {
__le16 status;
__le16 capab;
__le16 timeout;
+ /* followed by BA Extension */
+ u8 variable[];
} __packed addba_resp;
struct{
u8 action_code;
diff --git a/net/mac80211/agg-rx.c b/net/mac80211/agg-rx.c
index fe7eab4b681b..f3fbe5a4395e 100644
--- a/net/mac80211/agg-rx.c
+++ b/net/mac80211/agg-rx.c
@@ -170,28 +170,63 @@ static void sta_rx_agg_reorder_timer_expired(struct timer_list *t)
rcu_read_unlock();
}
-static void ieee80211_add_addbaext(struct ieee80211_sub_if_data *sdata,
- struct sk_buff *skb,
- const struct ieee80211_addba_ext_ie *req,
- u16 buf_size)
+void ieee80211_add_addbaext(struct sk_buff *skb,
+ const u8 req_addba_ext_data,
+ u16 buf_size)
{
- struct ieee80211_addba_ext_ie *resp;
+ struct ieee80211_addba_ext_ie *addba_ext;
u8 *pos;
pos = skb_put_zero(skb, 2 + sizeof(struct ieee80211_addba_ext_ie));
*pos++ = WLAN_EID_ADDBA_EXT;
*pos++ = sizeof(struct ieee80211_addba_ext_ie);
- resp = (struct ieee80211_addba_ext_ie *)pos;
- resp->data = req->data & IEEE80211_ADDBA_EXT_NO_FRAG;
+ addba_ext = (struct ieee80211_addba_ext_ie *)pos;
- resp->data |= u8_encode_bits(buf_size >> IEEE80211_ADDBA_EXT_BUF_SIZE_SHIFT,
- IEEE80211_ADDBA_EXT_BUF_SIZE_MASK);
+ addba_ext->data = IEEE80211_ADDBA_EXT_NO_FRAG;
+ if (req_addba_ext_data)
+ addba_ext->data &= req_addba_ext_data;
+
+ addba_ext->data |=
+ u8_encode_bits(buf_size >> IEEE80211_ADDBA_EXT_BUF_SIZE_SHIFT,
+ IEEE80211_ADDBA_EXT_BUF_SIZE_MASK);
+}
+
+u8 ieee80211_retrieve_addba_ext_data(struct sta_info *sta,
+ const void *elem_data, ssize_t elem_len,
+ u16 *buf_size)
+{
+ struct ieee802_11_elems *elems;
+ u8 buf_size_1k, data = 0;
+
+ if (!sta->sta.deflink.he_cap.has_he)
+ return 0;
+
+ if (elem_len <= 0)
+ return 0;
+
+ elems = ieee802_11_parse_elems(elem_data, elem_len, true, NULL);
+
+ if (elems && !elems->parse_error && elems->addba_ext_ie) {
+ data = elems->addba_ext_ie->data;
+
+ if (!sta->sta.deflink.eht_cap.has_eht || !buf_size)
+ goto free;
+
+ buf_size_1k = u8_get_bits(elems->addba_ext_ie->data,
+ IEEE80211_ADDBA_EXT_BUF_SIZE_MASK);
+ *buf_size |= (u16)buf_size_1k <<
+ IEEE80211_ADDBA_EXT_BUF_SIZE_SHIFT;
+ }
+free:
+ kfree(elems);
+
+ return data;
}
static void ieee80211_send_addba_resp(struct sta_info *sta, u8 *da, u16 tid,
u8 dialog_token, u16 status, u16 policy,
u16 buf_size, u16 timeout,
- const struct ieee80211_addba_ext_ie *addbaext)
+ const u8 req_addba_ext_data)
{
struct ieee80211_sub_if_data *sdata = sta->sdata;
struct ieee80211_local *local = sdata->local;
@@ -223,8 +258,8 @@ static void ieee80211_send_addba_resp(struct sta_info *sta, u8 *da, u16 tid,
mgmt->u.action.u.addba_resp.timeout = cpu_to_le16(timeout);
mgmt->u.action.u.addba_resp.status = cpu_to_le16(status);
- if (sta->sta.deflink.he_cap.has_he && addbaext)
- ieee80211_add_addbaext(sdata, skb, addbaext, buf_size);
+ if (sta->sta.deflink.he_cap.has_he)
+ ieee80211_add_addbaext(skb, req_addba_ext_data, buf_size);
ieee80211_tx_skb(sdata, skb);
}
@@ -233,7 +268,7 @@ void __ieee80211_start_rx_ba_session(struct sta_info *sta,
u8 dialog_token, u16 timeout,
u16 start_seq_num, u16 ba_policy, u16 tid,
u16 buf_size, bool tx, bool auto_seq,
- const struct ieee80211_addba_ext_ie *addbaext)
+ const u8 addba_ext_data)
{
struct ieee80211_local *local = sta->sdata->local;
struct tid_ampdu_rx *tid_agg_rx;
@@ -419,7 +454,7 @@ void __ieee80211_start_rx_ba_session(struct sta_info *sta,
if (tx)
ieee80211_send_addba_resp(sta, sta->sta.addr, tid,
dialog_token, status, 1, buf_size,
- timeout, addbaext);
+ timeout, addba_ext_data);
}
void ieee80211_process_addba_request(struct ieee80211_local *local,
@@ -428,9 +463,7 @@ void ieee80211_process_addba_request(struct ieee80211_local *local,
size_t len)
{
u16 capab, tid, timeout, ba_policy, buf_size, start_seq_num;
- struct ieee802_11_elems *elems = NULL;
- u8 dialog_token;
- int ies_len;
+ u8 dialog_token, addba_ext_data;
/* extract session parameters from addba request frame */
dialog_token = mgmt->u.action.u.addba_req.dialog_token;
@@ -443,28 +476,17 @@ void ieee80211_process_addba_request(struct ieee80211_local *local,
tid = (capab & IEEE80211_ADDBA_PARAM_TID_MASK) >> 2;
buf_size = (capab & IEEE80211_ADDBA_PARAM_BUF_SIZE_MASK) >> 6;
- ies_len = len - offsetof(struct ieee80211_mgmt,
- u.action.u.addba_req.variable);
- if (ies_len) {
- elems = ieee802_11_parse_elems(mgmt->u.action.u.addba_req.variable,
- ies_len, true, NULL);
- if (!elems || elems->parse_error)
- goto free;
- }
-
- if (sta->sta.deflink.eht_cap.has_eht && elems && elems->addba_ext_ie) {
- u8 buf_size_1k = u8_get_bits(elems->addba_ext_ie->data,
- IEEE80211_ADDBA_EXT_BUF_SIZE_MASK);
-
- buf_size |= buf_size_1k << IEEE80211_ADDBA_EXT_BUF_SIZE_SHIFT;
- }
+ addba_ext_data =
+ ieee80211_retrieve_addba_ext_data(sta,
+ mgmt->u.action.u.addba_req.variable,
+ len -
+ offsetof(typeof(*mgmt),
+ u.action.u.addba_req.variable),
+ &buf_size);
__ieee80211_start_rx_ba_session(sta, dialog_token, timeout,
start_seq_num, ba_policy, tid,
- buf_size, true, false,
- elems ? elems->addba_ext_ie : NULL);
-free:
- kfree(elems);
+ buf_size, true, false, addba_ext_data);
}
void ieee80211_manage_rx_ba_offl(struct ieee80211_vif *vif,
diff --git a/net/mac80211/agg-tx.c b/net/mac80211/agg-tx.c
index 04cb45cfb310..61f2cac37728 100644
--- a/net/mac80211/agg-tx.c
+++ b/net/mac80211/agg-tx.c
@@ -58,23 +58,24 @@
* complete.
*/
-static void ieee80211_send_addba_request(struct ieee80211_sub_if_data *sdata,
- const u8 *da, u16 tid,
+static void ieee80211_send_addba_request(struct sta_info *sta, u16 tid,
u8 dialog_token, u16 start_seq_num,
u16 agg_size, u16 timeout)
{
+ struct ieee80211_sub_if_data *sdata = sta->sdata;
struct ieee80211_local *local = sdata->local;
struct sk_buff *skb;
struct ieee80211_mgmt *mgmt;
u16 capab;
- skb = dev_alloc_skb(sizeof(*mgmt) + local->hw.extra_tx_headroom);
-
+ skb = dev_alloc_skb(sizeof(*mgmt) +
+ 2 + sizeof(struct ieee80211_addba_ext_ie) +
+ local->hw.extra_tx_headroom);
if (!skb)
return;
skb_reserve(skb, local->hw.extra_tx_headroom);
- mgmt = ieee80211_mgmt_ba(skb, da, sdata);
+ mgmt = ieee80211_mgmt_ba(skb, sta->sta.addr, sdata);
skb_put(skb, 1 + sizeof(mgmt->u.action.u.addba_req));
@@ -93,6 +94,9 @@ static void ieee80211_send_addba_request(struct ieee80211_sub_if_data *sdata,
mgmt->u.action.u.addba_req.start_seq_num =
cpu_to_le16(start_seq_num << 4);
+ if (sta->sta.deflink.he_cap.has_he)
+ ieee80211_add_addbaext(skb, 0, agg_size);
+
ieee80211_tx_skb_tid(sdata, skb, tid, -1);
}
@@ -460,8 +464,11 @@ static void ieee80211_send_addba_with_timeout(struct sta_info *sta,
sta->ampdu_mlme.addba_req_num[tid]++;
spin_unlock_bh(&sta->lock);
- if (sta->sta.deflink.he_cap.has_he) {
+ if (sta->sta.deflink.eht_cap.has_eht) {
buf_size = local->hw.max_tx_aggregation_subframes;
+ } else if (sta->sta.deflink.he_cap.has_he) {
+ buf_size = min_t(u16, local->hw.max_tx_aggregation_subframes,
+ IEEE80211_MAX_AMPDU_BUF_HE);
} else {
/*
* We really should use what the driver told us it will
@@ -473,9 +480,8 @@ static void ieee80211_send_addba_with_timeout(struct sta_info *sta,
}
/* send AddBA request */
- ieee80211_send_addba_request(sdata, sta->sta.addr, tid,
- tid_tx->dialog_token, tid_tx->ssn,
- buf_size, tid_tx->timeout);
+ ieee80211_send_addba_request(sta, tid, tid_tx->dialog_token,
+ tid_tx->ssn, buf_size, tid_tx->timeout);
WARN_ON(test_and_set_bit(HT_AGG_STATE_SENT_ADDBA, &tid_tx->state));
}
@@ -970,6 +976,13 @@ void ieee80211_process_addba_resp(struct ieee80211_local *local,
amsdu = capab & IEEE80211_ADDBA_PARAM_AMSDU_MASK;
tid = u16_get_bits(capab, IEEE80211_ADDBA_PARAM_TID_MASK);
buf_size = u16_get_bits(capab, IEEE80211_ADDBA_PARAM_BUF_SIZE_MASK);
+
+ ieee80211_retrieve_addba_ext_data(sta,
+ mgmt->u.action.u.addba_resp.variable,
+ len - offsetof(typeof(*mgmt),
+ u.action.u.addba_resp.variable),
+ &buf_size);
+
buf_size = min(buf_size, local->hw.max_tx_aggregation_subframes);
txq = sta->sta.txq[tid];
diff --git a/net/mac80211/ht.c b/net/mac80211/ht.c
index 1c2b7dd8976a..32390d8a9d75 100644
--- a/net/mac80211/ht.c
+++ b/net/mac80211/ht.c
@@ -379,7 +379,7 @@ void ieee80211_ba_session_work(struct wiphy *wiphy, struct wiphy_work *work)
sta->ampdu_mlme.tid_rx_manage_offl))
__ieee80211_start_rx_ba_session(sta, 0, 0, 0, 1, tid,
IEEE80211_MAX_AMPDU_BUF_HT,
- false, true, NULL);
+ false, true, 0);
if (test_and_clear_bit(tid + IEEE80211_NUM_TIDS,
sta->ampdu_mlme.tid_rx_manage_offl))
diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h
index 7dcb46120abc..752297bcde76 100644
--- a/net/mac80211/ieee80211_i.h
+++ b/net/mac80211/ieee80211_i.h
@@ -2111,14 +2111,19 @@ int ieee80211_send_smps_action(struct ieee80211_sub_if_data *sdata,
const u8 *bssid, int link_id);
bool ieee80211_smps_is_restrictive(enum ieee80211_smps_mode smps_mode_old,
enum ieee80211_smps_mode smps_mode_new);
-
+void ieee80211_add_addbaext(struct sk_buff *skb,
+ const u8 req_addba_ext_data,
+ u16 buf_size);
+u8 ieee80211_retrieve_addba_ext_data(struct sta_info *sta,
+ const void *elem_data, ssize_t elem_len,
+ u16 *buf_size);
void __ieee80211_stop_rx_ba_session(struct sta_info *sta, u16 tid,
u16 initiator, u16 reason, bool stop);
void __ieee80211_start_rx_ba_session(struct sta_info *sta,
u8 dialog_token, u16 timeout,
u16 start_seq_num, u16 ba_policy, u16 tid,
u16 buf_size, bool tx, bool auto_seq,
- const struct ieee80211_addba_ext_ie *addbaext);
+ const u8 addba_ext_data);
void ieee80211_sta_tear_down_BA_sessions(struct sta_info *sta,
enum ieee80211_agg_stop_reason reason);
void ieee80211_process_delba(struct ieee80211_sub_if_data *sdata,
--
2.39.5

View File

@@ -0,0 +1,47 @@
From 4e1916dec9850cd49dd5792200ab649061cbedc1 Mon Sep 17 00:00:00 2001
From: Maharaja Kennadyrajan <maharaja.kennadyrajan@oss.qualcomm.com>
Date: Fri, 18 Jul 2025 11:38:35 +0530
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
read-side contexts, such as in the RX path.
Introduce a new macro, for_each_link_data_rcu(), that iterates over link of
sdata using rcu_dereference(), making it safe to use in RCU contexts. This
allows callers to access link data without requiring the wiphy lock.
The macro takes into account the vif.valid_links bitmap and ensures only
valid links are accessed safely. Callers are responsible for ensuring that
rcu_read_lock() is held when using this macro.
Signed-off-by: Maharaja Kennadyrajan <maharaja.kennadyrajan@oss.qualcomm.com>
Link: https://patch.msgid.link/20250718060837.59371-3-maharaja.kennadyrajan@oss.qualcomm.com
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
---
net/mac80211/ieee80211_i.h | 13 +++++++++++++
1 file changed, 13 insertions(+)
--- a/net/mac80211/ieee80211_i.h
+++ b/net/mac80211/ieee80211_i.h
@@ -1220,6 +1220,19 @@ struct ieee80211_sub_if_data *vif_to_sda
((__link) = sdata_dereference((__sdata)->link[__link_id], \
(__sdata))))
+/*
+ * for_each_link_data_rcu should be used under RCU read lock.
+ */
+#define for_each_link_data_rcu(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) = rcu_dereference((__sdata)->link[__link_id]))) \
+
static inline int
ieee80211_get_mbssid_beacon_len(struct cfg80211_mbssid_elems *elems,
struct cfg80211_rnr_elems *rnr_elems,

View File

@@ -0,0 +1,77 @@
From: Maharaja Kennadyrajan <maharaja.kennadyrajan@oss.qualcomm.com>
Date: Fri, 18 Jul 2025 11:38:36 +0530
Subject: [PATCH] wifi: mac80211: extend beacon monitoring for MLO
Currently, reset beacon monitor (ieee80211_sta_reset_beacon_monitor())
timer is handled only for non-AP non-MLD STA and do not support non-AP MLD
STA. When the beacon loss occurs in non-AP MLD STA with the current
implementation, it is treated as a single link and the timer will reset
based on the timeout of the deflink, without checking all the links.
Check the CSA flags for all the links in the MLO and decide whether to
schedule the work queue for beacon loss. If any of the links has CSA
active, then beacon loss work is not scheduled.
Also, call the functions ieee80211_sta_reset_beacon_monitor() and
ieee80211_sta_reset_conn_monitor() from ieee80211_csa_switch_work() only
when all the links are CSA active.
Signed-off-by: Maharaja Kennadyrajan <maharaja.kennadyrajan@oss.qualcomm.com>
Link: https://patch.msgid.link/20250718060837.59371-4-maharaja.kennadyrajan@oss.qualcomm.com
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
---
--- a/net/mac80211/mlme.c
+++ b/net/mac80211/mlme.c
@@ -2167,6 +2167,21 @@ static void ieee80211_csa_switch_work(st
}
}
+ /*
+ * It is not necessary to reset these timers if any link does not
+ * have an active CSA and that link still receives the beacons
+ * when other links have active CSA.
+ */
+ for_each_link_data(sdata, link) {
+ if (!link->conf->csa_active)
+ return;
+ }
+
+ /*
+ * Reset the beacon monitor and connection monitor timers when CSA
+ * is active for all links in MLO when channel switch occurs in all
+ * the links.
+ */
ieee80211_sta_reset_beacon_monitor(sdata);
ieee80211_sta_reset_conn_monitor(sdata);
}
@@ -7892,6 +7907,29 @@ void ieee80211_sta_work(struct ieee80211
}
}
+static bool
+ieee80211_is_csa_in_progress(struct ieee80211_sub_if_data *sdata)
+{
+ /*
+ * In MLO, check the CSA flags 'active' and 'waiting_bcn' for all
+ * the links.
+ */
+ struct ieee80211_link_data *link;
+ bool ret = true;
+
+ rcu_read_lock();
+ for_each_link_data_rcu(sdata, link) {
+ if (!(link->conf->csa_active &&
+ !link->u.mgd.csa.waiting_bcn)) {
+ ret = false;
+ break;
+ }
+ }
+ rcu_read_unlock();
+
+ return ret;
+}
+
static void ieee80211_sta_bcn_mon_timer(struct timer_list *t)
{
struct ieee80211_sub_if_data *sdata =

View File

@@ -0,0 +1,141 @@
From: Maharaja Kennadyrajan <maharaja.kennadyrajan@oss.qualcomm.com>
Date: Fri, 18 Jul 2025 11:38:37 +0530
Subject: [PATCH] wifi: mac80211: extend connection monitoring for MLO
Currently, reset connection monitor (ieee80211_sta_reset_conn_monitor())
timer is handled only for non-AP non-MLD STA and do not support non-AP MLD
STA. The current implementation checks for the CSA active and update the
monitor timer with the timeout value of deflink and reset the timer based
on the deflink's timeout value else schedule the connection loss work when
the deflink is timed out and it won't work for the non-AP MLD STA.
Handle the reset connection monitor timer for non-AP MLD STA by updating
the monitor timer with the timeout value which is determined based on the
link that will expire last among all the links in MLO. If at least one link
has not timed out, the timer is updated accordingly with the latest timeout
value else schedule the connection loss work when all links have timed out.
Remove the MLO-related WARN_ON() checks in the beacon and connection
monitoring logic code paths as they support MLO now.
Signed-off-by: Maharaja Kennadyrajan <maharaja.kennadyrajan@oss.qualcomm.com>
Link: https://patch.msgid.link/20250718060837.59371-5-maharaja.kennadyrajan@oss.qualcomm.com
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
---
--- a/net/mac80211/mlme.c
+++ b/net/mac80211/mlme.c
@@ -3841,9 +3841,6 @@ static void ieee80211_mgd_probe_ap_send(
lockdep_assert_wiphy(sdata->local->hw.wiphy);
- if (WARN_ON(ieee80211_vif_is_mld(&sdata->vif)))
- return;
-
/*
* Try sending broadcast probe requests for the last three
* probe requests after the first ones failed since some
@@ -3889,9 +3886,6 @@ static void ieee80211_mgd_probe_ap(struc
lockdep_assert_wiphy(sdata->local->hw.wiphy);
- if (WARN_ON_ONCE(ieee80211_vif_is_mld(&sdata->vif)))
- return;
-
if (!ieee80211_sdata_running(sdata))
return;
@@ -7950,36 +7944,73 @@ static void ieee80211_sta_bcn_mon_timer(
&sdata->u.mgd.beacon_connection_loss_work);
}
+static unsigned long
+ieee80211_latest_active_link_conn_timeout(struct ieee80211_sub_if_data *sdata)
+{
+ unsigned long latest_timeout = 0;
+ unsigned int link_id;
+ struct sta_info *sta;
+
+ rcu_read_lock();
+
+ sta = sta_info_get(sdata, sdata->vif.cfg.ap_addr);
+ if (!sta)
+ goto out;
+
+ for (link_id = 0; link_id < ARRAY_SIZE(sta->link);
+ link_id++) {
+ struct link_sta_info *link_sta;
+ unsigned long timeout;
+
+ link_sta = rcu_dereference(sta->link[link_id]);
+ if (!link_sta)
+ continue;
+
+ timeout = link_sta->status_stats.last_ack;
+ if (time_before(timeout, link_sta->rx_stats.last_rx))
+ timeout = link_sta->rx_stats.last_rx;
+
+ timeout += IEEE80211_CONNECTION_IDLE_TIME;
+
+ /*
+ * latest_timeout holds the timeout of the link
+ * that will expire last among all links in an
+ * non-AP MLD STA. This ensures that the connection
+ * monitor timer is only reset if at least one link
+ * is still active, and it is scheduled to fire at
+ * the latest possible timeout.
+ */
+ if (time_is_after_jiffies(timeout) &&
+ time_after(timeout, latest_timeout))
+ latest_timeout = timeout;
+ }
+
+out:
+ rcu_read_unlock();
+
+ return latest_timeout;
+}
+
static void ieee80211_sta_conn_mon_timer(struct timer_list *t)
{
struct ieee80211_sub_if_data *sdata =
from_timer(sdata, t, u.mgd.conn_mon_timer);
struct ieee80211_if_managed *ifmgd = &sdata->u.mgd;
struct ieee80211_local *local = sdata->local;
- struct sta_info *sta;
- unsigned long timeout;
+ unsigned long latest_timeout;
- if (WARN_ON(ieee80211_vif_is_mld(&sdata->vif)))
+ if (ieee80211_is_csa_in_progress(sdata))
return;
- if (sdata->vif.bss_conf.csa_active &&
- !sdata->deflink.u.mgd.csa.waiting_bcn)
- return;
-
- sta = sta_info_get(sdata, sdata->vif.cfg.ap_addr);
- if (!sta)
- return;
-
- timeout = sta->deflink.status_stats.last_ack;
- if (time_before(sta->deflink.status_stats.last_ack, sta->deflink.rx_stats.last_rx))
- timeout = sta->deflink.rx_stats.last_rx;
- timeout += IEEE80211_CONNECTION_IDLE_TIME;
+ latest_timeout = ieee80211_latest_active_link_conn_timeout(sdata);
- /* If timeout is after now, then update timer to fire at
- * the later date, but do not actually probe at this time.
- */
- if (time_is_after_jiffies(timeout)) {
- mod_timer(&ifmgd->conn_mon_timer, round_jiffies_up(timeout));
+ /*
+ * If latest timeout is after now, then update timer to fire at
+ * the later date, but do not actually probe at this time.
+ */
+ if (latest_timeout) {
+ mod_timer(&ifmgd->conn_mon_timer,
+ round_jiffies_up(latest_timeout));
return;
}

View File

@@ -0,0 +1,25 @@
From: Lorenzo Bianconi <lorenzo@kernel.org>
Date: Tue, 26 Aug 2025 13:54:31 +0200
Subject: [PATCH] wifi: mac80211: Make CONNECTION_MONITOR optional for MLO sta
Since commit '1bc892d76a6f ("wifi: mac80211: extend connection
monitoring for MLO")' mac80211 supports connection monitor for MLO
client interfaces. Remove the CONNECTION_MONITOR requirement in
ieee80211_register_hw routine.
Fixes: 1bc892d76a6f ("wifi: mac80211: extend connection monitoring for MLO")
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
---
--- a/net/mac80211/main.c
+++ b/net/mac80211/main.c
@@ -1174,9 +1174,6 @@ int ieee80211_register_hw(struct ieee802
if (WARN_ON(!ieee80211_hw_check(hw, MFP_CAPABLE)))
return -EINVAL;
- if (WARN_ON(!ieee80211_hw_check(hw, CONNECTION_MONITOR)))
- return -EINVAL;
-
if (WARN_ON(ieee80211_hw_check(hw, NEED_DTIM_BEFORE_ASSOC)))
return -EINVAL;

View File

@@ -8,9 +8,9 @@ PKG_LICENSE_FILES:=
PKG_SOURCE_URL:=https://github.com/openwrt/mt76
PKG_SOURCE_PROTO:=git
PKG_SOURCE_DATE:=2025-02-14
PKG_SOURCE_VERSION:=e5fef138524e63314cb96ff8314048d175294e95
PKG_MIRROR_HASH:=4d6ea8669b3034c97f5b341a5473facf4fe21262a2fde71257b57c4d1c86be5e
PKG_SOURCE_DATE:=2025-09-15
PKG_SOURCE_VERSION:=6467af3bcf1154c2ceb032c903d533f0c718bbc2
PKG_MIRROR_HASH:=98781ea57cdc97bc63ecb2c1d4004964f2a10663987887445f1c71b76610cd96
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
PKG_USE_NINJA:=0

Some files were not shown because too many files have changed in this diff Show More