4 months agobuild: kernel2minor: work around path length limit
François Chavant [Fri, 7 May 2021 15:58:11 +0000 (17:58 +0200)]
build: kernel2minor: work around path length limit

When building for MikroTik devices the kernel2minor tool will sometimes
fail with:

  Can't get lstat from kernel file!: No such file or directory.

This is because kernel2minor expects paths no longer than 250 chars.
To work around this the include/ has been modified
to copy the kernel to a temporary file (/tmp/tmp.XXXXXXXXXX) before
calling kernel2minor.

Signed-off-by: François Chavant <>
4 months agobusybox: add SRV support to nslookup_lede.c patch
Perry Melange [Tue, 30 Jul 2019 09:05:22 +0000 (11:05 +0200)]
busybox: add SRV support to nslookup_lede.c patch

Add support for querying and parsing SRV DNS records to nslookup_lede.c

This patch is based on

Signed-off-by: Perry Melange <>
[reword subject, bump PKG_RELEASE]
Signed-off-by: Paul Spooren <>
4 months agobase-files: shinit: properly handle dashes in service names
Jo-Philipp Wich [Wed, 12 May 2021 10:44:32 +0000 (12:44 +0200)]
base-files: shinit: properly handle dashes in service names

Fixes: FS#3801
Signed-off-by: Jo-Philipp Wich <>
4 months agobuild: fix opkg install step for large package selection
Alexander Egorenkov [Fri, 9 Apr 2021 23:32:44 +0000 (01:32 +0200)]
build: fix opkg install step for large package selection

When the list of packages to be installed in a built image exceeds a certain
number, then 'opkg install' executed for target '$(curdir)/install' in
package/Makefile fails with: /usr/bin/env: Argument list too long.

On Linux, the length of a command-line parameter is limited by
MAX_ARG_STRLEN to max 128 kB.


To solve the problem, store the package list being passed to 'opkg install'
in a temporary file and use the shell command substitution to pass the
content of the file to 'opkg install'. This guarantees that the length of
the command-line parameters passed to the bash shell is short.

The following bash script demonstrates the problem:


for i in $(seq 1 $count); do
FILES="$FILES $a_file"

env bash -c "echo $FILES >/dev/null"
echo "$FILES" | wc -c

Test run:
$ ./ 916
$ ./ 917
./ line 14: /bin/env: Argument list too long

Signed-off-by: Alexander Egorenkov <>
[reword commit subject]
Signed-off-by: Paul Spooren <>
4 months agokernel: add kmod-leds-uleds
Keith T. Garner [Wed, 5 May 2021 14:04:15 +0000 (09:04 -0500)]
kernel: add kmod-leds-uleds

The allows userspace LEDs to be created and controlled. This can be useful
for testing triggers and can also be used to implement virtual LEDs.

Signed-off-by: Keith T. Garner <>
[squash fixup commit and improve option wording]
Signed-off-by: Paul Spooren <>
4 months agogeneric: platform/mikrotik: release mtd device after use
Thibaut VARÈNE [Tue, 11 May 2021 10:50:21 +0000 (12:50 +0200)]
generic: platform/mikrotik: release mtd device after use

The code uses get_mtd_device_nm() which must be followed by a call to
put_mtd_device() once the handle is no longer used.

This fixes spurious shutdown console messages such as:
[ 2256.334562] Removing MTD device #7 (soft_config) with use count 1

Reported-by: Koen Vandeputte <>
Tested-by: Koen Vandeputte <>
Signed-off-by: Thibaut VARÈNE <>
4 months agokernel: move three accepted patches from pending to backports
Daniel Golle [Mon, 10 May 2021 23:06:02 +0000 (00:06 +0100)]
kernel: move three accepted patches from pending to backports

commit d2e850e96183 in kernel, part of v5.11

commit cb4543054c5c in kernel, part of v5.13

commit 5a4fa44f5e1b in kernel, part of v5.13

Move them to backports folder to make maintainance easier.

Signed-off-by: Daniel Golle <>
4 months agoramips: fix mac addresses of Youku YK1
Shiji Yang [Wed, 5 May 2021 11:48:01 +0000 (19:48 +0800)]
ramips: fix mac addresses of Youku YK1

MAC addresses read from official firmware

        value       location
Wlan    xx 71 de    factory@0x04
Lan     xx 71 dd    factory@0x28
Wan     xx 71 df    factory@0x2e
Label   xx 71 dd    factory@0x28

Signed-off-by: Shiji Yang <>
[fix sorting in 02_network, redact commit message]
Signed-off-by: Adrian Schmutzler <>
4 months agoramips: use standard naming scheme for Zyxel NR7101 LED nodes
Adrian Schmutzler [Sun, 9 May 2021 21:38:38 +0000 (23:38 +0200)]
ramips: use standard naming scheme for Zyxel NR7101 LED nodes

Make naming and DT label consistent with other devices at this

Signed-off-by: Adrian Schmutzler <>
4 months agomt76: update to the latest version
Felix Fietkau [Mon, 10 May 2021 10:36:42 +0000 (12:36 +0200)]
mt76: update to the latest version

186af01047b2 mt76: mt7921: introduce MCU_EVENT_LP_INFO event parsing
93b5c28c97d5 mt76: mt7921: add rcu section in mt7921_mcu_tx_rate_report
a8e89c5a1d1f mt76: testmode: add support to send larger packet
a0cc9a9e3877 mt76: mt7915: rework mt7915_tm_set_tx_len()
c8b96630324e mt76: mt7915: fix rate setting of tx descriptor in testmode
22fd2958c42a mt76: mt7615: fix memleak when mt7615_unregister_device()
7401e0db3143 mt76: mt7915: fix memleak when mt7915_unregister_device()
c3656268b3f6 mt76: mt7915: only free skbs after mt7915_dma_reset() when reset happens
0ce955b04ba8 mt76: mt7615: only free skbs after mt7615_dma_reset() when reset happens
b03d1e62acf7 mt76: mt7615: use ieee80211_free_txskb() in mt7615_tx_token_put()
5ac02e22fb03 mt76: flush tx status queue on DMA reset
c71f609b398a mt76: sync with upstream changes
23ecadd4af77 mt76: mt7615: fix hardware error recovery for mt7663
57a899ee3c3c mt76: mt7615: fix entering driver-own state on mt7663
42a2dddb706b mt76: mt7615: load ROM patch before checking patch semaphore status
cf0e406af84a mt76: mt7915: add support for applying pre-calibration data
459940ccbc58 mt76: mt7921: move hw configuration in mt7921_register_device
0a094b11f3c0 mt76: improve mcu error logging
bf536832e37d mt76: mt7921: run mt7921_mcu_fw_log_2_host holding mt76 mutex
7616f4f78163 mt76: mt7921: add wifisys reset support in debugfs
e620bd881ef5 mt76: mt7921: abort uncompleted scan by wifi reset
e8dacf59ab1c mt76: mt7915: rework the flow of txpower setting
c8c78e577236 mt76: mt7915: directly read per-rate tx power from registers
1622bf4f8705 mt76: mt7921: add mt7921_dma_cleanup in mt7921_unregister_device
ef96fafad8a9 mt76: Convert to DEFINE_SHOW_ATTRIBUTE
90e4bfea2948 mt76: mt7921: do not use 0 as NULL pointer
0a139d7f5966 mt76: connac: move mcu_update_arp_filter in mt76_connac module
de26c73ce3c2 mt76: mt7921: remove leftover function declaration
1c0b6cb4f942 mt76: mt7921: fix a race between mt7921_mcu_drv_pmctrl and mt7921_mcu_fw_pmctrl
2923e3e2b8e4 mt76: mt7663: fix a race between mt7615_mcu_drv_pmctrl and mt7615_mcu_fw_pmctrl
74d0fdaa7a99 mt76: connac: introduce wake counter for fw_pmctrl synchronization
28c87e09a5ea mt76: mt7921: rely on mt76_connac_pm_ref/mt76_connac_pm_unref in tx path
36f664edc7db mt76: mt7663: rely on mt76_connac_pm_ref/mt76_connac_pm_unref in tx path
51b3d1a9a2b7 mt76: dma: add the capability to define a custom rx napi poll routine
4f1339c9fb72 mt76: mt7921: rely on mt76_connac_pm_ref/mt76_connac_pm_unref in tx/rx napi
1bc5e67a60be mt76: mt7663: rely on mt76_connac_pm_ref/mt76_connac_pm_unref in tx/rx napi
325f7b451c03 mt76: connac: unschedule ps_work in mt76_connac_pm_wake
12115052a02f mt76: connac: check wake refcount in mcu_fw_pmctrl
e5d28e3cef66 mt76: connac: remove MT76_STATE_PM in mac_tx_free
475112a3cdcc mt76: mt7921: get rid of useless MT76_STATE_PM in mt7921_mac_work
112998f32d85 mt76: connac: alaways wake the device before scanning
4334f3e2fc43 mt76: mt7615: rely on pm refcounting in mt7615_led_set_config
0562380659ad mt76: connac: do not run mt76_txq_schedule_all directly
acfa78df5708 mt76: connac: use waitqueue for runtime-pm
ca74a4cd0722 mt76: remove MT76_STATE_PM in tx path
0c2d3e74852e mt76: mt7921: add awake and doze time accounting
45e0eefffe9f mt76: mt7921: enable sw interrupts
fd2ff641166f mt76: mt7615: Fix a dereference of pointer sta before it is null checked
7e2521468767 mt76: mt7921: move mt7921_dma_reset in dma.c
c9dd6b1fa171 mt76: mt7921: introduce mt7921_wpdma_reset utility routine
2ac7c7e9c568 mt76: mt7921: introduce mt7921_dma_{enable,disable} utilities
662a89f2b9d1 mt76: mt7921: introduce mt7921_wpdma_reinit_cond utility routine
614efe9e9180 mt76: connac: introduce mt76_connac_mcu_set_deep_sleep utility
0dbb16ef39d8 mt76: mt7921: enable deep sleep when the device suspends
3c19f569cc70 mt76: mt7921: fix possible invalid register access
ade1f5aad4c6 mt76: move token_lock, token and token_count in mt76_dev
8d5c456be1ff mt76: move token utilities in mt76 common module
fb04d9df5e52 mt76: mt7915: do not read rf value from efuse in flash mode
2126b2176336 mt76: mt7921: get rid of mcu_reset function pointer
d325b7eff1b1 mt76: mt7921: improve doze opportunity
2ae25c7e547e mt76: mt7663: add awake and doze time accounting
349bbb9d6f13 mt76: connac: unschedule mac_work before going to sleep
98a235004dea mt76: mt7921: mt7921_stop should put device in fw_own state
63d80b9ab251 mt76: mt7921: introduce mt7921_mcu_sta_add routine
3c5bf837fdbd mt76: mt7615: fix a precision vs width bug in printk
ded14da5eacc mt76: mt7915: fix a precision vs width bug in printk
aaf0d254f9ea mt76: mt7921: fix a precision vs width bug in printk
757af5c67d32 mt76: move mt76_token_init in mt76_alloc_device
ed41ed73a495 mt76: mt7921: reinit wpdma during drv_own if necessary
92fb81e085c6 mt76: mt7921: fix possible AOOB issue in mt7921_mcu_tx_rate_report
53d915a23bc9 mt76: connac: do not schedule wake_work if the runtime-pm is disabled
23fe1bdcf15a mt76: connac: do not schedule mac_work if the device is not running
e5b19336c58e mt76: mt7615: do not set MT76_STATE_PM at bootstrap
0fc2136a61dd mt76_connac_mcu: move mt76_connac_mcu_update_arp_filter outside of CONFIG_PM
e693f3e23e06 mt76: mt7915: add MSI support
5231e7300fa4 mt7915: disable ASPM
554b50dabf54 mt76: connac: fix uninitialized HT A-MPDU setting field in STA_REC_PHY
43b9c0a838bb mt76: mt7921: fix max aggregation subframes setting
5a387a0a3004 mt76: mt7921: enable rx hw de-amsdu
c8cbcb87be07 mt76: connac: add missing configuration in mt76_connac_mcu_wtbl_hdr_trans_tlv
55921e57b380 mt76: mt7921: enable rx header traslation offload
01441f67d8b2 mt76: mt7921: enable rx csum offload
c9ab76dd93a0 mt76: mt7915: move mt7915_queue_rx_skb to mac.c
caedb4c4ee41 mt76: mt7615: fix fixed-rate tx status reporting
c6ae95d43e6d mt76: improve tx status codepath
27d468d094e6 mt76: mt7915: rework tx rate reporting
3b4ca5b09e2c mt76: mt7615: avoid use of ieee80211_tx_info_clear_status
e1f07d7f1cb9 mt76: mt7603: avoid use of ieee80211_tx_info_clear_status
18513ba5fbc2 mt76: mt7915: add support for tx status reporting
35f189cf81b2 mt76: mt7915: fix uninitialized variable in MSI error handling
9e928ac1ea9b mt76: dma: use ieee80211_tx_status_ext to free packets when tx fails
628eee9c386c mt76: fill queue entry wcid for all skbs with a station
a9bc4d94b7a1 mt76: intialize tx queue entry wcid to 0xffff by default
998ca8af7d17 mt76: mt7915: fix tssi indication field of DBDC NICs
7dd24b3cfacf mt76: mt7915: fix a signedness bug in mt7915_mcu_apply_tx_dpd()
535025d65d8d mt76: mt7915: cleanup mt7915_mcu_sta_rate_ctrl_tlv()
ff8bbe22dd87 mt76: mt7915: add .set_bitrate_mask() callback

Signed-off-by: Felix Fietkau <>
4 months agorpcd: set correct PKG_SOURCE_DATE
Daniel Golle [Mon, 10 May 2021 09:55:15 +0000 (10:55 +0100)]
rpcd: set correct PKG_SOURCE_DATE

The previous commit bumped the source commit level without reflecting
that in PKG_SOURCE_DATA. Bump PKG_SOURCE_DATA as well.

Fixes: 97e820c6d6 ("rpcd: update to latest HEAD")
Signed-off-by: Daniel Golle <>
4 months agorpcd: update to latest HEAD
David Bauer [Thu, 6 May 2021 00:03:28 +0000 (02:03 +0200)]
rpcd: update to latest HEAD

7a560a1 iwinfo: add 802.11ax HE support

Signed-off-by: David Bauer <>
4 months agoath79: ag71xx: fix error handling for of_get_phy_mode
David Bauer [Sun, 2 May 2021 22:27:59 +0000 (00:27 +0200)]
ath79: ag71xx: fix error handling for of_get_phy_mode

Errors are not indicated by the phy_mode value but returned separately
from the function.

Signed-off-by: David Bauer <>
4 months agorealtek: Fix VLAN issues introduced by multicast patches
Birger Koblitz [Sun, 9 May 2021 10:04:16 +0000 (12:04 +0200)]
realtek: Fix VLAN issues introduced by multicast patches

This adds the CPU port to the unknown multicast flooding port mask,
which fixes the VLAN issues introduced by the multicast group patches

Tested-by: Russell Senior <> [Netgear GS108Tv3]
Signed-off-by: Birger Koblitz <>
Signed-off-by: Bjørn Mork <> [whitespace fix]
Signed-off-by: Petr Štetiar <> [unknwon typo fix]
4 months agokernel: bump 5.10 to 5.10.35
Kevin Darbyshire-Bryant [Fri, 7 May 2021 18:32:18 +0000 (19:32 +0100)]
kernel: bump 5.10 to 5.10.35

Refresh kernel patches.

Built under MacOS

Run tested: x86_64 (apu2)

Signed-off-by: Kevin Darbyshire-Bryant <>
4 months agokernel: bump 5.10 to 5.10.34
Kevin Darbyshire-Bryant [Mon, 3 May 2021 08:59:55 +0000 (09:59 +0100)]
kernel: bump 5.10 to 5.10.34

Nothing required refreshing, simplest kernel bump you've ever seen.

Signed-off-by: Kevin Darbyshire-Bryant <>
4 months agoramips: mt7621: Add support for ZyXEL NR7101
Bjørn Mork [Mon, 19 Apr 2021 11:00:56 +0000 (13:00 +0200)]
ramips: mt7621: Add support for ZyXEL NR7101

The ZyXEL NR7101 is an 802.3at PoE powered 5G outdoor (IP68) CPE
with integrated directional 5G/LTE antennas.


 - SoC: MediaTek MT7621AT
 - RAM: 256 MB
 - Flash: 128 MB MB NAND (MX30LF1G18AC)
 - WiFi: MediaTek MT7603E
 - Switch: 1 LAN port (Gigabiti)
 - 5G/LTE: Quectel RG502Q-EA connected by USB3 to SoC
 - SIM: 2 micro-SIM slots under transparent cover
 - Buttons: Reset, WLAN under same cover
 - LEDs: Multicolour green/red/yellow under same cover (visible)
 - Power: 802.3at PoE via LAN port

The device is built as an outdoor ethernet to 5G/LTE bridge or
router. The Wifi interface is intended for installation and/or
temporary management purposes only.

UART Serial:

Located on populated 5 pin header J5:

 [o] GND
 [ ] key - no pin
 [o] RX
 [o] TX
 [o] 3.3V Vcc

Remove the SIM/button/LED cover, the WLAN button and 12 screws
holding the back plate and antenna cover together. The GPS antenna
is fixed to the cover, so be careful with the cable.  Remove 4
screws fixing the antenna board to the main board, again being
careful with the cables.

A bluetooth TTL adapter is recommended for permanent console
access, to keep the router water and dustproof. The 3.3V pin is
able to power such an adapter.

MAC addresses:

OpenWrt OEM   Address          Found as
lan     eth2  08:26:97:*:*:BC  Factory 0xe000 (hex), label
wlan0   ra0   08:26:97:*:*:BD  Factory 0x4 (hex)
wwan0   usb0  random


ISP managed firmware might at any time update itself to a version
where all known workarounds have been disabled.  Never boot an ISP
managed firmware with a SIM in any of the slots if you intend to use
the router with OpenWrt. The bootloader lock can only be disabled with
root access to running firmware. The flash chip is physically
inaccessible without soldering.

Installation from OEM web GUI:

- Log in as "supervisor" on
- Upload OpenWrt initramfs-recovery.bin image on the
  Maintenance -> Firmware page
- Wait for OpenWrt to boot and ssh to root@
- (optional) Copy OpenWrt to the recovery partition. See below
- Sysupgrade to the OpenWrt sysupgrade image and reboot

Installation from OEM ssh:

- Log in as "root" on port 22022
- scp OpenWrt initramfs-recovery.bin image to
- Prepare bootloader config by running:
    nvram setro uboot DebugFlag 0x1
    nvram setro uboot CheckBypass 0
    nvram commit
- Run "mtd_write -w write initramfs-recovery.bin Kernel" and reboot
- Wait for OpenWrt to boot and ssh to root@
- (optional) Copy OpenWrt to the recovery partition. See below
- Sysupgrade to the OpenWrt sysupgrade image and reboot

Copying OpenWrt to the recovery partition:

- Verify that you are running a working OpenWrt recovery image
  from flash
- ssh to root@ and run:
    fw_setenv CheckBypass 0
    mtd -r erase Kernel2
- Wait while the bootloader mirrors Image1 to Image2

NOTE: This should only be done after successfully booting the OpenWrt
  recovery image from the primary partition during installation.  Do
  not do this after having sysupgraded OpenWrt!  Reinstalling the
  recovery image on normal upgrades is not required or recommended.

Installation from Z-Loader:

- Halt boot by pressing Escape on console
- Set up a tftp server to serve the OpenWrt initramfs-recovery.bin
  image at
- Type "ATNR 1,initramfs-recovery.bin" at the "ZLB>" prompt
- Wait for OpenWrt to boot and ssh to root@
- Sysupgrade to the OpenWrt sysupgrade image

NOTE: ATNR will write the recovery image to both primary and recovery
  partitions in one go.

Booting from RAM:

- Halt boot by pressing Escape on console
- Type "ATGU" at the "ZLB>" prompt to enter the U-Boot menu
- Press "4" to select "4: Entr boot command line interface."
- Set up a tftp server to serve the OpenWrt initramfs-recovery.bin
  image at
- Load it using "tftpboot 0x88000000 initramfs-recovery.bin"
- Boot with "bootm  0x8800017C" to skip the 380 (0x17C) bytes ZyXEL

This method can also be used to RAM boot OEM firmware. The warning
regarding OEM applies!  Never boot an unknown OEM firmware, or any OEM
firmware with a SIM in any slot.

NOTE: U-Boot configuration is incomplete (on some devices?). You may
  have to configure a working mac address before running tftp using
   "setenv eth0addr <mac>"

Unlocking the bootloader:

If you are unebale to halt boot, then the bootloader is locked.

The OEM firmware locks the bootloader on every boot by setting
DebugFlag to 0.  Setting it to 1 is therefore only temporary
when OEM firmware is installed.

- Run "nvram setro uboot DebugFlag 0x1; nvram commit" in OEM firmware
- Run "fw_setenv DebugFlag 0x1" in OpenWrt

    OpenWrt does this automatically on first boot if necessary

    Setting the flag to 0x1 avoids the reset to 0 in known OEM
    versions, but this might change.

    Writing anything to flash while the bootloader is locked is
    considered extremely risky. Errors might cause a permanent

Enabling management access from LAN:

Temporary workaround to allow installing OpenWrt if OEM firmware
has disabled LAN management:

- Connect to console
- Log in as "root"
- Run "iptables -I INPUT -i br0 -j ACCEPT"

Notes on the OEM/bootloader dual partition scheme

The dual partition scheme on this device uses Image2 as a recovery
image only. The device will always boot from Image1, but the
bootloader might copy Image2 to Image1 under specific conditions. This
scheme prevents repurposing of the space occupied by Image2 in any
useful way.

Validation of primary and recovery images is controlled by the
variables CheckBypass, Image1Stable, and Image1Try.

The bootloader sets CheckBypass to 0 and reboots if Image1 fails

If CheckBypass is 0 and Image1 is invalid then Image2 is copied to

If CheckBypass is 0 and Image2 is invalid, then Image1 is copied to

If CheckBypass is 1 then all tests are skipped and Image1 is booted
unconditionally.  CheckBypass is set to 1 after each successful
validation of Image1.

Image1Try is incremented if Image1Stable is 0, and Image2 is copied to
Image1 if Image1Try is 3 or larger.  But the bootloader only tests
Image1Try if CheckBypass is 0, which is impossible unless the booted
image sets it to 0 before failing.

The system is therefore not resilient against runtime errors like
failure to mount the rootfs, unless the kernel image sets CheckBypass
to 0 before failing. This is not yet implemented in OpenWrt.

Setting Image1Stable to 1 prevents the bootloader from updating
Image1Try on every boot, saving unnecessary writes to the environment

Keeping an OpenWrt initramfs recovery as Image2 is recommended
primarily to avoid unwanted OEM firmware boots on failure. Ref the
warning above. It enables console-less recovery in case of some
failures to boot from Image1.

Signed-off-by: Bjørn Mork <>
4 months agofirmware-utils: zytrx: Add util for ZyXEL specific header
Bjørn Mork [Mon, 19 Apr 2021 11:00:55 +0000 (13:00 +0200)]
firmware-utils: zytrx: Add util for ZyXEL specific header

The ZyXEL NR7101 prepend an additional header to U-Boot images. This
header use the TRX magic 0x30524448 (HDR0), but is incompatible with
TRX images.

This code is reverse-engineered based on matching 32 bit numbers
found in the header with lengths and different checksum
calculations of the vendor images found on the device.  The result
was matched against the validation output produced by the
bootloader to name the associated header fields.

Example bootloader validation output:

 Zyxel TRX Image 1 --> Found!  Header Checksum OK
 ============ZyXEL header information==================
         chipId             : MT7621A
         boardId            : NR7101
         modelId            : 07 01 00 01
         kernel_len         : (14177560)
         kernelChksum       : (0x8DD31F69)
         swVersionInt       : 1.00(ABUV.0)D1
         swVersionExt       : 1.00(ABUV.0)D1

 Zyxel TRX Image 2 --> Found!  Header Checksum OK
 ============ZyXEL header information==================
         chipId             : MT7621A
         boardId            : NR7101
         modelId            : 07 01 00 01
         kernel_len         : (14176660)
         kernelChksum       : (0x951A7637)
         swVersionInt       : 1.00(ABUV.0)D0
         swVersionExt       : 1.00(ABUV.0)D0

 Check image validation:
 Image1 Header Magic Number --> OK
 Image2 Header Magic Number --> OK
 Image1 Header Checksum --> OK
 Image2 Header Checksum --> OK
 Image1 Data Checksum --> OK
 Image2 Data Checksum --> OK
 Image1 Stable Flag --> Stable
 Image1 Try Counter --> 0
 Image1: OK
 Image2: OK

The coverage and algorithm for the kernelChksum field is unknown.
This field is not validated by the bootloader or the OEM firmware
upgrade tool. It is therefore set to a static value for now.

The swVersion fields contain free form string values.  The OEM firmware
use ZyXEL structured version numbers as shown above.  The strings are
not interpreted or validated on boot, so they can be repurposed for
anything we want the bootloader to display to the user.  But the OEM
web GUI fails to flash images with freeform strings.

The purpose of the other strings in the header is not known.  The
values appear to be static.  We assume they are fixed for now, until
we have other examples.  One of these strings is the platform name,
which is taken as an input parameter for support other members of
the device family.

Signed-off-by: Bjørn Mork <>
4 months agotreewide: consolidate named GPIO patch into hack-5.10
Ilya Lipnitskiy [Sat, 24 Apr 2021 00:20:11 +0000 (17:20 -0700)]
treewide: consolidate named GPIO patch into hack-5.10

ath79, lantiq, ipq40xx, ramips all use the OpenWrt-specific gpio-export
functionality. Consolidate the patch that adds it under hack-5.10 since
this logic is obviously not target-specific. For those who want to
disable it, unsetting CONFIG_GPIO_SYSFS symbol will disable this code.

Signed-off-by: Ilya Lipnitskiy <>
4 months agoipq806x: Bring missing patches from 5.4 to 5.10
Mark Mentovai [Sat, 8 May 2021 18:24:53 +0000 (14:24 -0400)]
ipq806x: Bring missing patches from 5.4 to 5.10

Kernel 5.10 support for ipq806x was added at the same time that these
patches were developed for kernel 5.4. This carries the patches forward
to kernel 5.10.

fa731838c524 ipq806x: dwmac: clear forced speed during probe
75ca641f1b84 ipq806x: Add "snps,dwmac" to all gmac compatible=
d62825dd77b3 ipq806x: dwmac: set forced speed when using fixed-link

Signed-off-by: Mark Mentovai <>
Run-tested: ipq806x/ubnt,unifi-ac-hd
Cc: Ansuel Smith <>
4 months agoipq806x: Add mising devices to kernel 5.10
Mark Mentovai [Sat, 8 May 2021 18:24:52 +0000 (14:24 -0400)]
ipq806x: Add mising devices to kernel 5.10

d53be2a2e981 migrated 0069-arm-boot-add-dts-files.patch from patches-5.4
to patches-5.10, but a subsequent patch in that set, 1e25423be8ac,
erroneously removed several devices:

ipq8062/nec,wg2600hp3 from 3bb16185737c
ipq8064/asrock,g10 from 98b86296e67d
ipq8064/ubnt,unifi-ac-hd from 4e46beb31342

Signed-off-by: Mark Mentovai <>
Run-tested: ipq806x/ubnt,unifi-ac-hd
Cc: Ansuel Smith <>
4 months agokernel: bump 5.4 to 5.4.117
John Audia [Fri, 7 May 2021 12:51:44 +0000 (08:51 -0400)]
kernel: bump 5.4 to 5.4.117

All patches automatically rebased.

Build system: x86_64
Build-tested: ipq806x/R7800
Run-tested: ipq806x/R7800

No dmesg regressions, everything functional

Signed-off-by: John Audia <>
4 months agomediatek: reserve memory for ramoops and enable PSTORE
Daniel Golle [Fri, 7 May 2021 15:53:09 +0000 (16:53 +0100)]
mediatek: reserve memory for ramoops and enable PSTORE

Reserve 64KiB of memory for crashlogs and enable PSTORE feature in
kernel config for MT7622.

Signed-off-by: Daniel Golle <>
4 months agouboot-mediaktek: add support for PSTORE and check it on boot
Daniel Golle [Fri, 7 May 2021 15:47:26 +0000 (16:47 +0100)]
uboot-mediaktek: add support for PSTORE and check it on boot

Add support for pstore/ramoops now that DRAM content is preserved
over reboot on MT7622. On each boot, check pstore and boot to recovery
image in case there are records stored in it.

Signed-off-by: Daniel Golle <>
4 months agoarm-trusted-firmware-mediatek: update to git HEAD
Daniel Golle [Sat, 8 May 2021 21:34:16 +0000 (22:34 +0100)]
arm-trusted-firmware-mediatek: update to git HEAD

Most notably this enabled use of pstore/ramoops on MT7622 as DRAM
content is now preserved over reboot.

Signed-off-by: Daniel Golle <>
4 months agoipq806x: ecw5410: case-insensitive qcom-smem partitions
Stefan Lippers-Hollmann [Thu, 6 May 2021 23:09:50 +0000 (01:09 +0200)]
ipq806x: ecw5410: case-insensitive qcom-smem partitions

The out-of-tree qcom-smem patches traditionally displayed mtd partition names
in upper case, starting with the new mainline qcom-smem support in kernel v5.10,
it switches to normalizing the partition names to lower case.

Signed-off-by: Stefan Lippers-Hollmann <>
4 months agoipq806x: g10: case-insensitive qcom-smem partitions
Stefan Lippers-Hollmann [Thu, 6 May 2021 23:00:58 +0000 (01:00 +0200)]
ipq806x: g10: case-insensitive qcom-smem partitions

The out-of-tree qcom-smem patches traditionally displayed mtd partition names
in upper case, starting with the new mainline qcom-smem support in kernel v5.10,
it switches to normalizing the partition names to lower case.

Signed-off-by: Stefan Lippers-Hollmann <>
4 months agoipq806x: nbg6817: case-insensitive qcom-smem partitions
Stefan Lippers-Hollmann [Thu, 6 May 2021 22:44:03 +0000 (00:44 +0200)]
ipq806x: nbg6817: case-insensitive qcom-smem partitions

The out-of-tree qcom-smem patches traditionally displayed mtd partition names
in upper case, starting with the new mainline qcom-smem support in kernel v5.10,
it switches to normalizing the partition names to lower case.

Signed-off-by: Stefan Lippers-Hollmann <>
4 months agoipq806x: dwmac: fix GMACs connected via SGMII fixed-link
Mark Mentovai [Sat, 8 May 2021 15:00:55 +0000 (11:00 -0400)]
ipq806x: dwmac: fix GMACs connected via SGMII fixed-link

fa731838c524 cleared the forced speed in the QSGMII PCS_ALL_CH_CTL
register during probe, but this is only correct for GMACs that are not
configured with fixed-link. This prevented GMACs configured with both
phy-mode = "sgmii" and fixed-link from working properly, as discussed at and
the comments that follow. Notably, this prevented all communication
between gmac2 and the switch on the Netgear R7800.

The correct behavior is to set the QSGMII PCS_ALL_CH_CTL register by
considering the gmac's fixed-link child, setting the speed as directed by
fixed-link if present, and otherwise clearing it as was done previously.

Fixes: fa731838c524 ("ipq806x: dwmac: clear forced speed during probe")
Signed-off-by: Mark Mentovai <>
Tested-by: Hannu Nyman <>
Run-tested: ipq806x/ubnt,unifi-ac-hd, ipq806x/netgear,r7800
Cc: Petr Štetiar <>
Cc: Ansuel Smith <>
Tested-by: Ansuel Smith <>
4 months agoExtend checks on build prerequisites for building OpenWRT core
Bas Mevissen [Mon, 19 Apr 2021 23:08:19 +0000 (01:08 +0200)]
Extend checks on build prerequisites for building OpenWRT core

OpenWRT requires a number of Perl modules to be installed. It wasn't checking on all of them.
This patch adds checks for Perl FindBin, File::Copy, File::Compare and Thread::Queue modules.

Failing to install these, will have the build break at some point. By adding these to the script, they are checked on forehand.

Tested on a Fedora 33 and 34 (beta) that was freshly installed. Fedora appears to
break up Perl modules into small packages that need to be installed for the build to succeed.

Signed-off-by: Bas Mevissen <>
4 months agouqmi: fix network registration loop
Thomas Richard [Tue, 20 Apr 2021 14:49:02 +0000 (16:49 +0200)]
uqmi: fix network registration loop

With some debug in using following patch, some errors are visible
in the registration step
@@ -29,6 +29,7 @@ proto_qmi_init_config() {

 proto_qmi_setup() {
+       set -x
        local interface="$1"
        local dataformat connstat plmn_mode mcc mnc
        local device apn auth username password pincode delay modes pdptype
@@ -224,6 +225,8 @@ proto_qmi_setup() {

+       registration=$(uqmi -s -d "$device" --get-serving-system)
        [ -n "$modes" ] && uqmi -s -d "$device" --set-network-modes "$modes" > /dev/null 2>&1

        echo "Starting network $interface"

During the boot of the system, modem could not start automatically its
network registration.
netifd: wan (9235): + echo 'Waiting for network registration'
netifd: wan (9235): Waiting for network registration
netifd: wan (9235): + local 'registration_timeout=0'
netifd: wan (9235): + uqmi -s -d /dev/cdc-wdm1 --get-serving-system
netifd: wan (9235): + grep '"searching"'
netifd: wan (9235): + uqmi -s -d /dev/cdc-wdm1 --get-serving-system
netifd: wan (9235): + registration='{"registration":"not_registered","plmn_mcc":208,"plmn_mnc":20,"plmn_description":"","roaming":true}'
netifd: wan (9235): + '[' -n  ]
netifd: wan (9235): + echo 'Starting network wan'

As the while loop checks only "searching" pattern, script quits
searching loop and continues whereas the modem is not registered

Other issue, after X seconds modem stops searching.
netifd: wan (9213): + uqmi -s -d /dev/cdc-wdm0 --get-serving-system
netifd: wan (9213): + grep '"searching"'
netifd: wan (9213): + '[' -e /dev/cdc-wdm0 ]
netifd: wan (9213): + '[' 3 -lt 0 -o 0 '=' 0 ]
netifd: wan (9213): + let registration_timeout++
netifd: wan (9213): + sleep 1
netifd: wan (9213): + uqmi -s -d /dev/cdc-wdm0 --get-serving-system
netifd: wan (9213): + grep '"searching"'
netifd: wan (9213): + uqmi -s -d /dev/cdc-wdm0 --get-serving-system
netifd: wan (9213): + registration='{"registration":"not_registered"}'
netifd: wan (9213): + '[' -n  ]
netifd: wan (9213): + echo 'Starting network wan'
netifd: wan (9213): Starting network wan

If registration_timeout is not expired, registration can be restarted

Signed-off-by: Thomas Richard <>
Tested-by: Florian Eckert <>
4 months agoipq40xx: fix hard_config partition size on MikroTik hAP-ac2
Baptiste Jonglez [Mon, 3 May 2021 10:39:47 +0000 (12:39 +0200)]
ipq40xx: fix hard_config partition size on MikroTik hAP-ac2

The routerbootparts driver dynamically discovers the location of MikroTik
partitions, but it cannot determine their size (except by extending them
up to the start of the next discovered partition).

The hard_config partition has a default size of 0x1000 in the driver,
while it actually takes 0x2000 on the hAP-ac2.  Set the correct size in
the hAP-ac2 DTS.

On most devices, this isn't a problem as the actual data fits in 0x1000
bytes.  However, some devices have larger data that doesn't fit in 0x1000
bytes.  In any case, all devices seen so far have enough space for a
0x2000 hard_config partition before the start of the dtb_config partition.
With the current 0x1000 size:

0x00000000e000-0x00000000f000 : "hard_config"
0x000000010000-0x000000017bbc : "dtb_config"

With this patch extending the size to 0x2000:

0x00000000e000-0x000000010000 : "hard_config"
0x000000010000-0x000000017bbc : "dtb_config"

Other ipq40xx boards may need the same fix but it needs testing.

Acked-by: Thibaut VARÈNE <>
Signed-off-by: Baptiste Jonglez <>
4 months agosdk: unset BINARY_FOLDER and DOWNLOAD_FOLDER in final archives
Sven Roederer [Fri, 7 May 2021 19:35:21 +0000 (21:35 +0200)]
sdk: unset BINARY_FOLDER and DOWNLOAD_FOLDER in final archives

Using these config-options to customize the folders used at build-time makes these
folder settings appear in generated archive. This causes the SDK to be not
portable, as it's going to use the build-time folders on the new systems.
The errors vary from passing the build, disk out-of-space to permission denied.

The build-time settings of these folders are passed into the archive via
The expected behavior is that the SDK acts after unpacking like these settings have
their defaults, using intree folders. So just filter these folders out when running to create

This addresses the same issue that's fixed in the previous commit for the imagebuilder.

Signed-off-by: Sven Roederer <>
4 months agoimagebuilder: unset BINARY_FOLDER and DOWNLOAD_FOLDER in final archive
Sven Roederer [Fri, 7 May 2021 19:35:20 +0000 (21:35 +0200)]
imagebuilder: unset BINARY_FOLDER and DOWNLOAD_FOLDER in final archive

Using these config-options to customize the folders used at build-time
makes these folder settings appear in generated archive. This causes the
imagebuilder to be not portable, as it's going to use the build-time folders
on the new systems. Errors look like:

  mkdir: cannot create directory '/mnt/build': Permission denied
  Makefile:116: recipe for target '_call_image' failed
  make[2]: *** [_call_image] Error 1
  Makefile:241: recipe for target 'image' failed
  make[1]: *** [image] Error 2

The build-time settings of these folders are passed into the archives via
.config file.
The expected behavior is that after unpacking the imagebuilder acts like
these settings have their defaults, using intree folders. So unset the
build-time settings.

Signed-off-by: Sven Roederer <>
4 months agouboot-envtools: change size for unifi-6-lr
Daniel Golle [Thu, 29 Apr 2021 22:48:28 +0000 (23:48 +0100)]
uboot-envtools: change size for unifi-6-lr

The previous commit increased the U-Boot environment size of the
UniFi 6 LR to 0x4000. Also change it uboot-envtools accordingly.

Signed-off-by: Daniel Golle <>
4 months agouboot-mediatek: unifi-6-lr: fix erase of production parition
Daniel Golle [Thu, 29 Apr 2021 01:06:09 +0000 (02:06 +0100)]
uboot-mediatek: unifi-6-lr: fix erase of production parition

mtd erase needs to be aligned with erase blocks. Use padded image size
for erasing the production volume.
As the environment grew above the current size of 0x1000 bytes by
introducing the new padding function, increase the env size to 0x4000.
While at it, clean up reset button function to work to more reliable on
that board.

Signed-off-by: Daniel Golle <>
4 months agorealtek: Add support for Layer 2 Multicast
Birger Koblitz [Sat, 1 May 2021 18:39:59 +0000 (20:39 +0200)]
realtek: Add support for Layer 2 Multicast

Adds support for Layer 2 multicast by implementing the DSA port_mdb_*
callbacks. The Kernel bridge listens to IGMP/MLD messages trapped to
the CPU-port, and calls the Multicast Forwarding Database updates.
The updates manage the L2 forwarding entries and the multicast

Signed-off-by: Birger Koblitz <>
4 months agorealtek: Setup all VLANs with default configurations
Birger Koblitz [Sat, 1 May 2021 14:36:32 +0000 (16:36 +0200)]
realtek: Setup all VLANs with default configurations

This sets up all VLANs with a default configuration on reset:
 - forward based on VLAN-ID and not the FID/MSTI
 - forward based on the inner VLAN-ID (not outer)

Signed-off-by: Birger Koblitz <>
4 months agorealtek: Add SoC-specific VLAN setup routine
Birger Koblitz [Sat, 1 May 2021 09:22:05 +0000 (11:22 +0200)]
realtek: Add SoC-specific VLAN setup routine

This adds SoC specific VLAN configuration routines, which
alsoe sets up the portmask table entries that are referred to
in the vlan profiles registers for unknown multicast flooding.

Signed-off-by: Birger Koblitz <>
4 months agorealtek: Add support for clause45 PHYs
Birger Koblitz [Sat, 1 May 2021 07:18:48 +0000 (09:18 +0200)]
realtek: Add support for clause45 PHYs

This adds support for the MMD access registers the RTL-SoCs use to access clause 45
PHYs via mdio.
This new interface is used to add EEE-support for the RTL8226

Signed-off-by: Birger Koblitz <>
4 months agorealtek: improve EEE support for RTL8380/8390/9300
Birger Koblitz [Sat, 1 May 2021 06:22:36 +0000 (08:22 +0200)]
realtek: improve EEE support for RTL8380/8390/9300

Clean up and fix bugs in the EEE support for RTL8380/90
Adds EEE support for RTL9300

Signed-off-by: Birger Koblitz <>
4 months agorealtek: Add L2 hash bucket size
Birger Koblitz [Sat, 1 May 2021 04:48:29 +0000 (06:48 +0200)]
realtek: Add L2 hash bucket size

Adds a hash-bucket size attribute for the different SoCs, in order to
accomodate the buckets with 8 entries of the L2-forwarding tables
on RTL93XX in contrast to only 4 on RTL83XX.

Signed-off-by: Birger Koblitz <>
4 months agorealtek: remove unused FDB print routing
Birger Koblitz [Sat, 1 May 2021 04:31:30 +0000 (06:31 +0200)]
realtek: remove unused FDB print routing

remove fdb_dump debugging function

Signed-off-by: Birger Koblitz <>
4 months agorealtek: add IGMP/MLD snooping support
Birger Koblitz [Thu, 29 Apr 2021 20:59:55 +0000 (22:59 +0200)]
realtek: add IGMP/MLD snooping support

This adds snooping support for IGMP and MLD on RTL8380/90/9300
by trapping IGMP and MLD packets to the CPU.

Signed-off-by: Birger Koblitz <>
4 months agorealtek: enable CRC offloading
Birger Koblitz [Thu, 29 Apr 2021 20:53:59 +0000 (22:53 +0200)]
realtek: enable CRC offloading

Enables CRC calculation offloading on RTL8380/8390/9300.

Tested on Zyxel XGS1210-10 (RTL9302)/GS1900-48 (RTL8390)/GS1900-10HP (RTL8382)
On the Zyxel GS1900-10HP, an increase of 5% in iperf3 send throughput
and 11% in receive throughput is seen.

Signed-off-by: Birger Koblitz <>
4 months agoipq806x: add missing wakeup-source for gpio keys
Ansuel Smith [Thu, 8 Apr 2021 13:09:32 +0000 (15:09 +0200)]
ipq806x: add missing wakeup-source for gpio keys

wakeup-source is required for gpio keys to fix error
genirq: irq_chip msmgpio did not update eff. affinity mask

Signed-off-by: Ansuel Smith <>
4 months agoipq806x: apply correct voltage tolerance
Ansuel Smith [Tue, 23 Mar 2021 16:41:11 +0000 (17:41 +0100)]
ipq806x: apply correct voltage tolerance

Voltage tolerance was 5%, not 5000. Update min and max voltage of the target opp.

Signed-off-by: Ansuel Smith <>
4 months agoipq806x: fix missing tx/rx fifo depth gmac configuration
Ansuel Smith [Thu, 8 Apr 2021 14:47:33 +0000 (16:47 +0200)]
ipq806x: fix missing tx/rx fifo depth gmac configuration

tx/rx-fifo-depth is required to set mtu to the gmac. Backport upstream patch.

Signed-off-by: Ansuel Smith <>
4 months agoipq806x: refresh 5.10 patches
Ansuel Smith [Wed, 3 Mar 2021 22:01:37 +0000 (23:01 +0100)]
ipq806x: refresh 5.10 patches

make target/linux/kernel refresh

Signed-off-by: Ansuel Smith <>
4 months agoipq806x: simplify ecw5410 dts
Ansuel Smith [Wed, 3 Mar 2021 10:46:52 +0000 (11:46 +0100)]
ipq806x: simplify ecw5410 dts

Simplify ecw5410 dts instead of redefine nodes.

Signed-off-by: Ansuel Smith <>
4 months agoipq806x: set boot layout for nandc compatible
Ansuel Smith [Wed, 3 Mar 2021 23:52:45 +0000 (00:52 +0100)]
ipq806x: set boot layout for nandc compatible

Set boot layout size to fix io error on block scan.

Signed-off-by: Ansuel Smith <>
4 months agoipq806x: add kernel 5.10 as testing kernel
Ansuel Smith [Mon, 1 Mar 2021 00:22:54 +0000 (01:22 +0100)]
ipq806x: add kernel 5.10 as testing kernel

Add kernel 5.10 as testing kernel

Signed-off-by: Ansuel Smith <>
4 months agoipq806x: refresh config 5.10
Ansuel Smith [Mon, 1 Mar 2021 01:04:11 +0000 (02:04 +0100)]
ipq806x: refresh config 5.10

Refresh config for kernel 5.10.
- Added new symbol.
- Refreshed with make kernel_oldconfig

Signed-off-by: Ansuel Smith <>
4 months agoipq806x: refresh dtsi patches
Ansuel Smith [Sun, 28 Mar 2021 12:17:36 +0000 (14:17 +0200)]
ipq806x: refresh dtsi patches

- Add new tsens node
- Add new cpufreq required nodes
- Drop arm cpuidle compatible
- Fix duplicate node set upstream
- Add voltage tolerance value for cpu opp

Signed-off-by: Ansuel Smith <>
4 months agoipq806x: introduce nandc boot layout mode
Ansuel Smith [Mon, 1 Mar 2021 00:21:08 +0000 (01:21 +0100)]
ipq806x: introduce nandc boot layout mode

ipq806x have different ecc configuration for boot partition and rootfs partition. Add support for this to fix IO error on mtd block scan.

Signed-off-by: Ansuel Smith <>
4 months agoipq806x: fix broken pci2 and pci3
Ansuel Smith [Mon, 1 Mar 2021 00:13:27 +0000 (01:13 +0100)]
ipq806x: fix broken pci2 and pci3

pci2 and pci3 has a too big io address space. Enlarge the IO_SPACE_LIMIT define for the arm arch.

Signed-off-by: Ansuel Smith <>
4 months agoipq806x: backport cpufreq changes to 5.4
Ansuel Smith [Thu, 8 Apr 2021 14:20:36 +0000 (16:20 +0200)]
ipq806x: backport cpufreq changes to 5.4

The new cpufreq driver requires different dts bindings.
Backport the new driver to kernel 5.4

Signed-off-by: Ansuel Smith <>
4 months agoipq806x: introduce dedicated krait cpufreq
Ansuel Smith [Mon, 1 Mar 2021 00:11:16 +0000 (01:11 +0100)]
ipq806x: introduce dedicated krait cpufreq

- Drop cpufreq patchs that tweak the cpufreq-dt driver
- Add dedicated krait cpufreq driver

Signed-off-by: Ansuel Smith <>
4 months agoipq806x: drop upstream patch
Ansuel Smith [Mon, 1 Mar 2021 00:10:03 +0000 (01:10 +0100)]
ipq806x: drop upstream patch

Drop upstream patch already included in the kernel 5.10

Signed-off-by: Ansuel Smith <>
4 months agoipq806x: drop cpuidle generic support from QCOM
Ansuel Smith [Mon, 1 Mar 2021 00:08:56 +0000 (01:08 +0100)]
ipq806x: drop cpuidle generic support from QCOM

The spm driver now has dedicated support for krait cpu idle state. We don't need to add generic arm cpuidle support for qcom.

Signed-off-by: Ansuel Smith <>
4 months agoipq806x: backport mtd adm and smem driver
Ansuel Smith [Mon, 1 Mar 2021 00:06:22 +0000 (01:06 +0100)]
ipq806x: backport mtd adm and smem driver

- Backport mtd adm driver from kernel 5.12
- Backport mtd parser smem from kernel 5.11
- Fix mtd rootfs patch
- Update qcom,smem compatible to qcom,smem-parts

Signed-off-by: Ansuel Smith <>
4 months agoipq806x: fix missing clk and reset
Ansuel Smith [Mon, 1 Mar 2021 00:03:55 +0000 (01:03 +0100)]
ipq806x: fix missing clk and reset

Patch 0030 wrongly disables gsbi1 instead of gsbi4.
Fix the wrong patch and also include other fix from the original qsdk source.

Signed-off-by: Ansuel Smith <>
4 months agoipq806x: use newer tsens patch
Ansuel Smith [Mon, 1 Mar 2021 00:02:09 +0000 (01:02 +0100)]
ipq806x: use newer tsens patch

Use improved tsens patch proposed upstream.

Signed-off-by: Ansuel Smith <>
4 months agoipq806x: copy kernel 5.4 patches to 5.10
Ansuel Smith [Sun, 28 Feb 2021 23:58:57 +0000 (00:58 +0100)]
ipq806x: copy kernel 5.4 patches to 5.10

Copy kernel 5.4 patches and config to 5.10

Signed-off-by: Ansuel Smith <>
4 months agoipq806x: improve system latency
Ansuel Smith [Sun, 28 Mar 2021 01:29:59 +0000 (03:29 +0200)]
ipq806x: improve system latency

Various report and data show that the freq 384000 is too low and cause some
extra latency to the entire system. OEM qsdk code also set the min frequency
for this target to 800 mhz.
Also some user notice some instability with this idle frequency, solved by
setting the min frequency to 600mhz. Fix all these kind of problem by
introducing a boot init.d script that set the min frequency to 600mhz and set
the ondemand governor to be more aggressive. The script set these value only if
the ondemand governor is detected. 384 mhz freq is still available and user can
decide to restore the old behavior by disabling this script.

Signed-off-by: Ansuel Smith <>
4 months agorealtek: add support for INABA Abaniact AML2-17GP
INAGAKI Hiroshi [Wed, 16 Sep 2020 05:11:05 +0000 (14:11 +0900)]
realtek: add support for INABA Abaniact AML2-17GP

INABA Abaniact AML2-17GP is a 17 port gigabit switch, based on RTL8382.


- SoC : Realtek RTL8382
- RAM : DDR3 128 MiB (SK hynix H5TQ1G63EFR)
- Flash : SPI-NOR 32 MiB (Macronix MX25L25635FZ2I-10G)
- Ethernet : 10/100/1000 Mbps x17
  - port 1-8 : RTL8218B (SoC)
  - port 8-16 : RTL8218D
  - port wan : RTL8214FC
- LEDs/Keys : 1x, 1x
- UART : pin header on PCB (Molex 530470410 compatible)
  - J14: 3.3V, GND, RX, TX from rear side
  - 115200n8
- Power : 100-240 VAC, 50/60 Hz, 0.21 A
  - Plug : IEC 60320-C13

Flash instruction using initramfs image:

1.  Boot AML2-17GP normally
2.  Set the IP address of computer to the range of, other
    than and connect computer to "WAN/CONSOLE" port of
3.  Access to "" and open firmware setting page

    -- UI Language: 日本語 --
    "メンテナンス" -> "デュアルイメージ"

    -- UI Language: ENGLISH --
    "Maintenance" -> "Dual Image"

4.  Check "イメージ情報 (en: "Images Information")" and set the first
    image to active by choosing "アクティブイメージ" (en: "Active
    Image") in the partition "0"
5.  open firmware upgrade page

    -- UI Language: 日本語 --
    "メンテナンス" -> "アップグレードマネージャー"

    -- UI Language: ENGLISH --
    "Maintenance" -> "Upgrade Manager"

6.  Set the properties as follows

    -- UI Language: 日本語 --
    "アップグレード方式" : "HTTP"
    "アップグレードタイプ" : "イメージ"
    "イメージ" : "アクティブ"
    "ブラウズファイル" : (select the OpenWrt initramfs image)

    -- UI Language: ENGLISH --
    "Upgrade Method" : "HTTP"
    "Upgrade Type" : "Image"
    "Image" : "(Active)"
    "Browse file" : (select the OpenWrt initramfs image)

7.  Press "アップグレード" (en: "Upgrade") button and perform upgrade
8.  Wait ~150 seconds to complete flashing
9.  After the flashing, the following message is showed and press "OK"
    button to reboot

    -- UI Language: 日本語 --
    "成功!! 今すぐリブートしますか?"

    -- UI Language: ENGLISH --
    "Success!! Do you want to reboot now?"

10. After the rebooting, reconnect the cable to other port (1-16) and
    open the SSH connection, download the sysupgrade image to the device
    and perform sysupgrade with it
11. Wait ~120 seconds to complete sysupgrade


- The uploaded image via WebUI will only be written with the length
  embedded in the uImage header. If the sysupgrade image is specified,
  only the kernel is flashed and lacks the rootfs, this causes a kernel
  panic while booting and bootloops.
  To avoid this issue, initramfs image is required for flashing on WebUI
  of stock firmware.

- This device has 1x LED named as "POWER", but it's not connected to the
  GPIO of SoC and cannot be controlled.

- port 17 is named as "WAN/CONSOLE". This port is for the upstream
  connection and console access (telnet/WebUI) on stock firmware.

Back to stock firmware:

1. Set "bootpartition" variable in u-boot-env2 partition to "1" by

   fw_setsys bootpartition 1

2. Reboot AML2-17GP

Signed-off-by: INAGAKI Hiroshi <>
4 months agorealtek: Add support for Netgear S350 series switches GS308T and GS310TP
Raylynn Knight [Wed, 5 May 2021 16:11:44 +0000 (12:11 -0400)]
realtek: Add support for Netgear S350 series switches GS308T and GS310TP

The Netgear GS308T v1 is an 8 port gigabit switch.  The GS310TP v1 is an 8
port POE+ gigabit switch with 2 SFP Ports (currently untested).

The GS308T v1 and GS310TP v1 are quite similar to the Netgear GS1xx
devices already supported.  Theses two devices use the same Netgear
firmware and are very similar to there corresponding GS1xx devices. For
this reason they share a large portion of the device tree with the GS108T
and GS110TP with exception of the uimage magic and model and compatible

All of the above feature a dual firmware layout, referred to as Image0
and Image1 in the Netgear firmware.

In order to manipulate the PoE+ on the GS310TP v1 , one needs the
rtl83xx-poe package

Specifications (GS308T)

 * RTL8380M SoC, 1 MIPS 4KEc core @ 500MHz
 * 128MB DDR3-1600 DRAM (Winbond W631GG8MB-12)
 * 32MB 3v NOR SPI Flash (Winbond W25Q256JVFQ)
 * RTL8231 GPIO extender to control the LEDs and the reset button
 * 8 x 10/100/1000BASE-T ports, internal PHY (RTL8218B)
 * UART (115200 8N1) via unpopulated standard 0.1" pin header marked J1
 * Power is supplied via a 12V 1A barrel connector

Specifications (GS310TP)

 * RTL8380M SoC, 1 MIPS 4KEc core @ 500MHz
 * Nuvoton M0516LDN for controlling PoE
 * 128MB DDR3-1600 DRAM (Winbond W631GG8MB-12)
 * 32MB 3v NOR SPI Flash (Winbond W25Q256JVFQ)
 * RTL8231 GPIO extender to control the LEDs and the reset button
 * 8 x 10/100/1000BASE-T PoE+ ports, 2 x Gigabit SFP ports,
 internal PHY (RTL8218B)
 * UART (115200 8N1) via unpopulated standard 0.1" pin header marked J1
 * Power is supplied via a 54V 1.25A barrel connector

Both devices have UART pinout

J1 | [o]ooo
      ^ ||`------ GND
      | |`------- RX         [TX out of the serial adapter]
      | `-------- TX         [RX into the serial adapter]
      `---------- Vcc (3V3)  [the square pin]

The through holes are filled with PB-free solder which melts at 375C.
They can also be drilled using a 0.9mm bit.

Instructions are identical to those for the similar Negear devices
and apply both to the GS308T v1 and GS310TP v1 as well.
Boot initramfs image from U-Boot

 1. Press the Escape key at the `Hit Esc key to stop autoboot` prompt
 2. Init network with `rtk network on` command
 3. Load image with `tftpboot 0x8f000000
openwrt-realtek-generic-netgear_gs308t-v1-initramfs-kernel.bin` command
 4. Boot the image with `bootm` command

The switch defaults to IP and tries to fetch the image via
TFTP from

Updating the installed firmware

The OpenWRT ramdisk image can be flashed directly from the Netgear UI.
The Image0 slot should be used in order to enable sysupgrade.

As with similar switches, changing the active boot partition can be
accomplished in U-Boot as follows:

 1. Press the Escape key at the `Hit Esc key to stop autoboot` prompt
 2. Run `setsys bootpartition {0|1}` to select the boot partition
 3. Run `savesys` followed by `boota` to proceed with the boot process

Signed-off-by: Raylynn Knight <>
4 months agokernel: bump 5.4 to 5.4.116
John Audia [Sun, 2 May 2021 11:28:04 +0000 (07:28 -0400)]
kernel: bump 5.4 to 5.4.116

All patches automatically rebased.

Build system: x86_64
Build-tested: ipq806x/R7800
Run-tested: ipq806x/R7800

No dmesg regressions, everything functional

Signed-off-by: John Audia <>
4 months agoipq806x: Add "snps,dwmac" to all gmac compatible=
Mark Mentovai [Mon, 12 Apr 2021 15:59:50 +0000 (11:59 -0400)]
ipq806x: Add "snps,dwmac" to all gmac compatible=

This was introduced to gmac2 and gmac3 in 57ea767a53c1 without fanfare.
There's no indication of why it was added to those devices, but not to
gmac0 or gmac1. It was probably an unintentional omission. It should be
present on all four gmac devices.

This property is considered by

Signed-off-by: Mark Mentovai <>
Build-tested: ipq806x/ubnt,unifi-ac-hd
Run-tested: ipq806x/ubnt,unifi-ac-hd

4 months agoipq806x: ubnt,unifi-ac-hd: reorder eth0 and eth1
Mark Mentovai [Mon, 12 Apr 2021 15:59:20 +0000 (11:59 -0400)]
ipq806x: ubnt,unifi-ac-hd: reorder eth0 and eth1

The Ubiquiti UniFi AC HD (UAP-AC-HD, UAP301) has two Ethernet ports,
labeled MAIN and SECONDARY, connected to gmac2 and gmac1, respectively.
The standard probe order results in gmac1/SECONDARY being eth0 and
gmac2/MAIN being eth1. This does not match the stock firmware, is
contrary to user expectation, causes the wrong (high) MAC address to be
used in a bridged configuration (the default for this device), and makes
the gmac2/MAIN port unusable in the preinit environment (such as for
failsafe). Until a recent patch, gmac1/SECONDARY (eth0) was not even

This reorders the ports so that gmac2/MAIN is eth0, and the now-working
gmac1/SECONDARY is eth1. eth0 has the low MAC address and eth1 has the
high; when bridged, the bridge takes on the correct low MAC address.
This matches the stock firmware. The MAIN port is usable for failsafe
during preinit.

This device does not have a switch on board, so there's no possibility
to remap ports via switch configuration. "ip link set $interface name"
is used instead, during preinit before networking is configured.

Signed-off-by: Mark Mentovai <>
Build-tested: ipq806x/ubnt,unifi-ac-hd
Run-tested: ipq806x/ubnt,unifi-ac-hd

4 months agoipq806x: ubnt,unifi-ac-hd: use on-board PHYs
Mark Mentovai [Mon, 12 Apr 2021 15:59:19 +0000 (11:59 -0400)]
ipq806x: ubnt,unifi-ac-hd: use on-board PHYs

Unlike many ipq806x devices, Ubiquiti UniFi AC HD (UAP-AC-HD, UAP301)
has no switch on board. Its two Ethernet ports are connected to Atheros
AR8033 PHYs. It is not appropriate to use fixed-link in this
configuration. Instead, configure the correct PHYs in the device tree
configuration to allow the at803x driver to load.

Signed-off-by: Mark Mentovai <>
Build-tested: ipq806x/ubnt,unifi-ac-hd
Run-tested: ipq806x/ubnt,unifi-ac-hd

4 months agoipq806x: dwmac: clear forced speed during probe
Mark Mentovai [Mon, 12 Apr 2021 15:59:18 +0000 (11:59 -0400)]
ipq806x: dwmac: clear forced speed during probe

On a Ubiquiti UniFi AC HD (ubnt,unifi-ac-hd, UAP-AC-HD, UAP301), a
forced speed on gmac1 is set in the QSGMII PCS_ALL_CH_CTL register,
presumably by the bootloader (4.3.28), preventing the interface from
being usable. The QSDK NSS GMAC driver takes care to clear the forced
speed in nss_gmac_qsgmii_dev_init
at d5bb14925861).

gmac1 is connected to the port on the device labeled SECONDARY, and is
currently eth0 but will be switched to eth1 by a subsequent patch. By
clearing the QSGMII PCS forced speed during dwmac initialization when
SGMII is in use, this port becomes usable.

This patch is upstreamable, and will be sent upstream after successful
testing in OpenWrt.

Signed-off-by: Mark Mentovai <>
Build-tested: ipq806x/ubnt,unifi-ac-hd
Run-tested: ipq806x/ubnt,unifi-ac-hd

4 months agokernel: fix parsing fixed subpartitions
Rafał Miłecki [Thu, 6 May 2021 11:10:17 +0000 (13:10 +0200)]
kernel: fix parsing fixed subpartitions

Signed-off-by: Rafał Miłecki <>
4 months agotplink-safeloader: fix product_name of TP-Link AD7200
Alex Henrie [Tue, 4 May 2021 03:07:17 +0000 (21:07 -0600)]
tplink-safeloader: fix product_name of TP-Link AD7200

The stock firmware does not accept firmware with "Talon" in the name.

Tested on firmware version 1.0.10 Build 20160902 rel. 57400 which came
preinstalled, as well as latest firmware version 2.0.1 Build 20170103
rel.71053 flashed from

Fixes: 1a775a4fd033 ("ipq806x: add support for TP-Link Talon AD7200")
Signed-off-by: Alex Henrie <>
[added details about vendor firmware]
Signed-off-by: Petr Štetiar <>
4 months agoprocd: update to git HEAD
Daniel Golle [Wed, 5 May 2021 12:17:30 +0000 (13:17 +0100)]
procd: update to git HEAD

 021ece8 procd: Use /dev/console for serial console if exists

Signed-off-by: Daniel Golle <>
4 months agobase-files: upgrade: take down loop and LVM before upgrade
Daniel Golle [Sat, 1 May 2021 19:21:54 +0000 (20:21 +0100)]
base-files: upgrade: take down loop and LVM before upgrade

Users of devices with large block storage may choose to have an LVM
partition on the same device which is used for booting OpenWrt.
The presents a problem during sysupgrade as the root device is then
still busy and changing partitions will not work as desired,
leading to data corruption in case the newly flashed image is larger
than the currently installed one.
Having loop devices setup causes similar havoc.
Make sure all volume groups are offline and all loop devices have been
released before sysupgrade.

Signed-off-by: Daniel Golle <>
4 months agodnsmasq: Update to version 2.85
Alan Swanson [Tue, 27 Apr 2021 15:24:05 +0000 (16:24 +0100)]
dnsmasq: Update to version 2.85

Fixes issue with merged DNS requests in 2.83/2.84 not being
retried on the firsts failed request causing lookup failures.

Also fixes the following security problem in dnsmasq:
* CVE-2021-3448:
  If specifiying the source address or interface to be used
  when contacting upstream name servers such as:
  server=, server= and
  server= then all would use the same socket
  bound to the explicitly configured port. Now only
  server= will use the explicitly
  configured port and the others random source ports.

Remove upstreamed patches and update remaining patch.

Signed-off-by: Alan Swanson <>
[refreshed old runtime support patch]
Signed-off-by: Kevin Darbyshire-Bryant <>
4 months agoltq-dsl-base: Make package nonshared to fix image builder
Hauke Mehrtens [Sun, 2 May 2021 20:59:36 +0000 (22:59 +0200)]
ltq-dsl-base: Make package nonshared to fix image builder

This package depends on the lantiq target and is only build for that
target. A normal package would be build by the SDK builder probably
under a different target and then this package will not be selected.
Mark it as nonshared to build it when the lantiq target gets build.

Fixes: FS#3773, FS#3774
Signed-off-by: Hauke Mehrtens <>
4 months agomac80211: Update to version 5.10.34-1
Hauke Mehrtens [Sun, 2 May 2021 16:45:40 +0000 (18:45 +0200)]
mac80211: Update to version 5.10.34-1

The removed patches were applied upstream and are not needed anymore.

Signed-off-by: Hauke Mehrtens <>
4 months agobusybox: backport fix for CVE-2021-28831
Hauke Mehrtens [Sun, 2 May 2021 15:42:19 +0000 (17:42 +0200)]
busybox: backport fix for CVE-2021-28831

This backports a fix for the low priority CVE-2021-28831:
  decompress_gunzip.c in BusyBox through 1.32.1 mishandles the error bit
  on the huft_build result pointer, with a resultant invalid free or
  segmentation fault, via malformed gzip data.

Signed-off-by: Hauke Mehrtens <>
4 months agoath79: Deactivate ZyXEL NBG6716 by default
Hauke Mehrtens [Sun, 2 May 2021 13:00:40 +0000 (15:00 +0200)]
ath79: Deactivate ZyXEL NBG6716 by default

The kernel image is too big now and the build fails.

WARNING: Image file zyxel_nbg6716-kernel.bin is too big: 4205404 > 4194304

Signed-off-by: Hauke Mehrtens <>
4 months agoiwinfo: update to latest Git HEAD
David Bauer [Sat, 1 May 2021 22:22:56 +0000 (00:22 +0200)]
iwinfo: update to latest Git HEAD

c45f0b5 iwinfo: add 802.11ax HE rate information

Signed-off-by: David Bauer <>
4 months agouboot-mediatek: bpi-r64: add TFTP update options to eMMC bootmenu
Daniel Golle [Sat, 1 May 2021 21:32:54 +0000 (22:32 +0100)]
uboot-mediatek: bpi-r64: add TFTP update options to eMMC bootmenu

Just like on SPI-NAND, also allow updating the bootloader comfortably
on eMMC installations.

Signed-off-by: Daniel Golle <>
4 months agomediatek: bpi-r64: add eMMC bootloader artifacts
Daniel Golle [Sat, 1 May 2021 21:31:28 +0000 (22:31 +0100)]
mediatek: bpi-r64: add eMMC bootloader artifacts

In order to allow easily updating the bootloader on eMMC also provide
artifacts for that. Support for updating bootloader via TFTP will be
added to the loader CLI menu in a follow-up commit.

Signed-off-by: Daniel Golle <>
4 months agokernel: add missing kernel config option
Hauke Mehrtens [Sat, 1 May 2021 19:11:22 +0000 (21:11 +0200)]
kernel: add missing kernel config option

Signed-off-by: Hauke Mehrtens <>
4 months agomediatek: Add missing config options
Hauke Mehrtens [Sat, 1 May 2021 20:00:15 +0000 (22:00 +0200)]
mediatek: Add missing config options

It is possible to select CONFIG_MTD_PARSER_TRX on the mediatek now. Add
this option to the kernel configuration file.

Fixes: 58c5e2566482 ("mediatek: support non standard trx magic values")
Signed-off-by: Hauke Mehrtens <>
4 months agokernel: Reorder kernel configuration options
Hauke Mehrtens [Sat, 1 May 2021 19:58:26 +0000 (21:58 +0200)]
kernel: Reorder kernel configuration options

Reorder the options and remove double entries.
This was generated by running this:
$ ./scripts/ '+' target/linux/generic/config-5.10 /dev/null > target/linux/generic/
$ mv target/linux/generic/ target/linux/generic/config-5.10
$ ./scripts/ '+' target/linux/generic/config-5.4 /dev/null > target/linux/generic/
$ mv target/linux/generic/ target/linux/generic/config-5.4

Signed-off-by: Hauke Mehrtens <>
4 months agokernel: partly revert: update mt7530 EEE patch from upstream
Hauke Mehrtens [Sat, 1 May 2021 19:49:23 +0000 (21:49 +0200)]
kernel: partly revert: update mt7530 EEE patch from upstream

This partly reverts commit 20a924d2ae378fe35b74f81be3b7f58366472e80.

This commit broke the build of the Mediatek target with kernel 5.4, for
kernel 5.10 it is fine.

Signed-off-by: Hauke Mehrtens <>
4 months agokernel: qlcnic: fix typo in module description
Chukun Pan [Sat, 1 May 2021 11:08:01 +0000 (19:08 +0800)]
kernel: qlcnic: fix typo in module description

Fixes: f88c64d28ccf ("kernel: netdev: add qlcnic")
Signed-off-by: Chukun Pan <>
4 months agoglibc: update to latest 2.33 HEAD (bug 27744)
Hans Dedecker [Wed, 28 Apr 2021 18:48:01 +0000 (20:48 +0200)]
glibc: update to latest 2.33 HEAD (bug 27744)

3f5080aedd nptl: Do not build nptl/tst-pthread-gdb-attach as PIE
36783141cf nptl: Check for compatible GDB in nptl/tst-pthread-gdb-attach
ea299b62e8 nptl_db: Support different libpthread/ load orders (bug 27744)
162df872f0 x86: tst-cpu-features-supports.c: Update AMX check

Signed-off-by: Hans Dedecker <>
4 months agomediatek: correct address of ethernet PHY
David Bauer [Tue, 20 Apr 2021 01:14:10 +0000 (03:14 +0200)]
mediatek: correct address of ethernet PHY

We still have no driver for the PHY, however we can fix it's

Signed-off-by: David Bauer <>
4 months agoath79: drop cs-gpios property
David Bauer [Wed, 3 Mar 2021 09:23:00 +0000 (10:23 +0100)]
ath79: drop cs-gpios property

The spi-ath79 driver performs the chipselect by writing to dedicated
register in the SPI register block. So the GPIO numbers were not used.

Tested-on: Enterasys WS-AP3705i

Signed-off-by: David Bauer <>
4 months agoath79: set number of chipselect lines
David Bauer [Thu, 29 Apr 2021 12:07:40 +0000 (14:07 +0200)]
ath79: set number of chipselect lines

All chipsets from AR7100 up to QCA9563 have three dedicated chipselect
lines for the integrated SPI controller. Remove the number of
chipselects from the platform data, as there is no need to manually set
this to a different value.

Signed-off-by: David Bauer <>
4 months agoath79: add SPI_MASTER_GPIO_SS flag
David Bauer [Thu, 29 Apr 2021 12:07:01 +0000 (14:07 +0200)]
ath79: add SPI_MASTER_GPIO_SS flag

Add the SPI_MASTER_GPIO_SS flag for the spi-ath79 driver. Otherwise,
the custom chipselect function is never called. This breaks hardware,
where the three dedicated chipselect lines are used instead of generic
GPIO pins.

Signed-off-by: David Bauer <>
4 months agoapm821xx: MBL: correct phy-mode delay settings
Christian Lamparter [Sat, 1 May 2021 09:36:10 +0000 (11:36 +0200)]
apm821xx: MBL: correct phy-mode delay settings

This came up in an upstream commit: "
b1dd9bf688b0 "net: phy: broadcom: Fix RGMII delays for BCM50160 and BCM50610M"

The PHY driver entry for BCM50160 and BCM50610M calls
bcm54xx_config_init() but does not call bcm54xx_config_clock_delay() in
order to configuration appropriate clock delays on the PHY, fix that."

So the "rgmii" phy-mode has always been wrong, but went unnoticed since
the broadcom phy driver didn't push the delay settings to the chip.

Signed-off-by: Christian Lamparter <>
4 months agokernel: qlcnic: add dependency to kmod-hwmon-core
Hauke Mehrtens [Sat, 1 May 2021 09:58:47 +0000 (11:58 +0200)]
kernel: qlcnic: add dependency to kmod-hwmon-core

QLCNIC_HWMON was activated when hwmon was set, but the dependency was
missing. This broke the build bot builds. Fix this by explicitly
activating HWMON support and adding a dependency.

Fixes: f88c64d28ccf ("kernel: netdev: add qlcnic")
Signed-off-by: Hauke Mehrtens <>
4 months agomac80211/rtl: backport a rtl8192cu AP mode fix
Rui Salvaterra [Wed, 21 Apr 2021 11:09:17 +0000 (12:09 +0100)]
mac80211/rtl: backport a rtl8192cu AP mode fix

Running USB devices in AP mode is never a good idea. That said, fix the TIM
issue in rtl8192cu [1], allowing these devices to "work" in AP mode.


Signed-off-by: Rui Salvaterra <>
4 months agotoolchain/binutils: add binutils 2.36.1
DENG Qingfang [Mon, 26 Apr 2021 04:13:51 +0000 (12:13 +0800)]
toolchain/binutils: add binutils 2.36.1

Add binutils version 2.36.1

Signed-off-by: DENG Qingfang <>
4 months agotoolchain/binutils: update to 2.35.2
DENG Qingfang [Mon, 26 Apr 2021 04:13:50 +0000 (12:13 +0800)]
toolchain/binutils: update to 2.35.2

Update binutils 2.35 to 2.35.2

Signed-off-by: DENG Qingfang <>
4 months agomvebu: LS421DE: improve pin configuration
Daniel González Cabanelas [Tue, 27 Apr 2021 08:58:15 +0000 (10:58 +0200)]
mvebu: LS421DE: improve pin configuration

The CLK125 output pin at the ethernet PHY is connected via capacitor to
GND and nowhere else. Disable it. Also tune the LED masks.

The MPP56 and MPP60 pins at the SoC are conected to the μPD720202 USB3.0
  - MPP56: wired to PCIe CLKREQ# (out)
  - MPP60: wired to PCIe RESET# (in)
Configure the pcie pinmux for these pins.

Signed-off-by: Daniel González Cabanelas <>