From 64373d2a1280c8515621374303f7c7571e8b6ff4 Mon Sep 17 00:00:00 2001 From: Nick Hainke Date: Thu, 17 Nov 2022 10:51:07 +0100 Subject: [PATCH 01/21] tools/sed: update to 4.9 Release Notes: https://lists.gnu.org/archive/html/info-gnu/2022-11/msg00001.html Signed-off-by: Nick Hainke --- tools/sed/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/sed/Makefile b/tools/sed/Makefile index 4218ac2d59..5cc15a3397 100644 --- a/tools/sed/Makefile +++ b/tools/sed/Makefile @@ -7,11 +7,11 @@ include $(TOPDIR)/rules.mk PKG_NAME:=sed -PKG_VERSION:=4.8 +PKG_VERSION:=4.9 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz PKG_SOURCE_URL:=@GNU/$(PKG_NAME) -PKG_HASH:=f79b0cfea71b37a8eeec8490db6c5f7ae7719c35587f21edb0617f370eeff633 +PKG_HASH:=6e226b732e1cd739464ad6862bd1a1aba42d7982922da7a53519631d24975181 export SED:= HOST_BUILD_PARALLEL:=1 From c17b6343f3d767bd2f3d13c3f94588b690861d69 Mon Sep 17 00:00:00 2001 From: Nick Hainke Date: Fri, 18 Nov 2022 09:00:48 +0100 Subject: [PATCH 02/21] lldpd: update to 1.0.16 Release Notes: https://github.com/lldpd/lldpd/releases/tag/1.0.16 Signed-off-by: Nick Hainke --- package/network/services/lldpd/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package/network/services/lldpd/Makefile b/package/network/services/lldpd/Makefile index b99fc61e5a..b9770909a9 100644 --- a/package/network/services/lldpd/Makefile +++ b/package/network/services/lldpd/Makefile @@ -8,12 +8,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=lldpd -PKG_VERSION:=1.0.15 +PKG_VERSION:=1.0.16 PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://codeload.github.com/lldpd/lldpd/tar.gz/$(PKG_VERSION)? -PKG_HASH:=bdb1f9e29f61c3be99e421e88a431536c53e62f1ab7189a6d5b8e1d2d55d8899 +PKG_HASH:=9bc6154377b97187d96d5e22aa5c4946c6cbc85f1416149853cc0940639a77e5 PKG_MAINTAINER:=Stijn Tintel PKG_LICENSE:=ISC From 8db2db9890e240097caabef56860df3835320f7d Mon Sep 17 00:00:00 2001 From: Nick Hainke Date: Thu, 17 Nov 2022 17:52:40 +0100 Subject: [PATCH 03/21] libtracefs: update to 1.6.1 Update to latest version. Signed-off-by: Nick Hainke --- package/libs/libtracefs/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package/libs/libtracefs/Makefile b/package/libs/libtracefs/Makefile index 55a2ab1d10..aa3fdb44f3 100644 --- a/package/libs/libtracefs/Makefile +++ b/package/libs/libtracefs/Makefile @@ -1,12 +1,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=libtracefs -PKG_VERSION:=1.5.0 +PKG_VERSION:=1.6.1 PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://git.kernel.org/pub/scm/libs/libtrace/libtracefs.git/snapshot/ -PKG_HASH:=b796af4b6a0a6e6cd17ae150ed69adccc0b6401804e009b363fe7d982b04a58e +PKG_HASH:=215a5182ee7d5a813ff84d290bb8988aa4c04cc16bb837780f61b0f5bf7494ab PKG_MAINTAINER:=Nick Hainke From dc7d431b60348a8645242ef2e7e77464b3c88d7e Mon Sep 17 00:00:00 2001 From: Moritz Warning Date: Thu, 17 Nov 2022 17:17:54 +0100 Subject: [PATCH 04/21] treewide: uniform vendor name for devolo The company name is lower case on the website (https://www.devolo.de) and in product names. Signed-off-by: Moritz Warning --- target/linux/ath79/image/generic.mk | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/target/linux/ath79/image/generic.mk b/target/linux/ath79/image/generic.mk index c9bbb412b6..3581f616c6 100644 --- a/target/linux/ath79/image/generic.mk +++ b/target/linux/ath79/image/generic.mk @@ -807,7 +807,7 @@ TARGET_DEVICES += compex_wpj563 define Device/devolo_dlan-pro-1200plus-ac SOC := ar9344 - DEVICE_VENDOR := Devolo + DEVICE_VENDOR := devolo DEVICE_MODEL := dLAN pro 1200+ WiFi ac DEVICE_PACKAGES := kmod-ath10k-ct ath10k-firmware-qca988x-ct IMAGE_SIZE := 15872k @@ -870,7 +870,7 @@ TARGET_DEVICES += devolo_dvl1750x define Device/devolo_magic-2-wifi SOC := ar9344 - DEVICE_VENDOR := Devolo + DEVICE_VENDOR := devolo DEVICE_MODEL := Magic 2 WiFi DEVICE_PACKAGES := kmod-ath10k-ct ath10k-firmware-qca988x-ct IMAGE_SIZE := 15872k From 74a5718223b15fb8b51fe96794747d2e53d3a9ae Mon Sep 17 00:00:00 2001 From: Jonas Albrecht Date: Fri, 28 May 2021 12:28:35 +0200 Subject: [PATCH 05/21] lantiq: ltq-tapi: add customer pulse digit time With this patch you can change the pulse digit time by loading the Lantiq FXS driver kernel module called ltq-tapi. This is relevant for old rotaryphones that uses pulsedialing. The default values are: 30-80ms for the low pulse 30-80ms for the high pulse 300ms for minimum Interdigit time this is OK but on some Phones it can be usefull to customize the values If you want to change the values to high and low pulse to 40-90ms and minimum interdigit time to 400ms than change /etc/modules.d/20-ltq-tapi to (without linebrakes): drv_tapi min_digit_low=40 min_digit_high=90 max_digit_low=40 \ max_digit_high=90 min_interdigit=400 Signed-off-by: Jonas Albrecht --- package/kernel/lantiq/ltq-tapi/Makefile | 2 +- .../patches/410-custom_pulsedigit_time.patch | 52 +++++++++++++++++++ 2 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 package/kernel/lantiq/ltq-tapi/patches/410-custom_pulsedigit_time.patch diff --git a/package/kernel/lantiq/ltq-tapi/Makefile b/package/kernel/lantiq/ltq-tapi/Makefile index 77728644f6..d44eeae565 100644 --- a/package/kernel/lantiq/ltq-tapi/Makefile +++ b/package/kernel/lantiq/ltq-tapi/Makefile @@ -10,7 +10,7 @@ include $(INCLUDE_DIR)/kernel.mk PKG_NAME:=drv_tapi PKG_VERSION:=3.13.0 -PKG_RELEASE:=4 +PKG_RELEASE:=5 PKG_SOURCE:=drv_tapi-$(PKG_VERSION).tar.bz2 PKG_SOURCE_URL:=@OPENWRT diff --git a/package/kernel/lantiq/ltq-tapi/patches/410-custom_pulsedigit_time.patch b/package/kernel/lantiq/ltq-tapi/patches/410-custom_pulsedigit_time.patch new file mode 100644 index 0000000000..965b8be960 --- /dev/null +++ b/package/kernel/lantiq/ltq-tapi/patches/410-custom_pulsedigit_time.patch @@ -0,0 +1,52 @@ +--- a/src/drv_tapi.h ++++ b/src/drv_tapi.h +@@ -25,6 +25,7 @@ + #include + #include "drv_tapi_io.h" + #include "drv_tapi_event.h" ++#include + + + /* ============================= */ +--- a/src/drv_tapi_dial.c ++++ b/src/drv_tapi_dial.c +@@ -20,6 +20,19 @@ + #include "drv_tapi.h" + #include "drv_tapi_errno.h" + ++ ++ ++static unsigned int min_digit_low = TAPI_MIN_DIGIT_LOW; ++static unsigned int max_digit_low = TAPI_MAX_DIGIT_LOW; ++static unsigned int min_digit_high = TAPI_MIN_DIGIT_HIGH; ++static unsigned int max_digit_high = TAPI_MAX_DIGIT_HIGH; ++static unsigned int min_interdigit = TAPI_MIN_INTERDIGIT; ++module_param(min_digit_low, uint, 0); ++module_param(max_digit_low, uint, 0); ++module_param(min_digit_high, uint, 0); ++module_param(max_digit_high, uint, 0); ++module_param(min_interdigit, uint, 0); ++ + /*lint -save -esym(749, TAPI_HOOK_STATE_PULSE_H_FLASH_VAL) */ + /* ============================= */ + /* Local macros and definitions */ +@@ -408,14 +421,14 @@ IFX_int32_t IFX_TAPI_Dial_Initialise(TAP + } + } + /* set default values for the validation timers */ +- pTapiDialData->TapiDigitLowTime.nMinTime = TAPI_MIN_DIGIT_LOW; +- pTapiDialData->TapiDigitLowTime.nMaxTime = TAPI_MAX_DIGIT_LOW; +- pTapiDialData->TapiDigitHighTime.nMinTime = TAPI_MIN_DIGIT_HIGH; +- pTapiDialData->TapiDigitHighTime.nMaxTime = TAPI_MAX_DIGIT_HIGH; ++ pTapiDialData->TapiDigitLowTime.nMinTime = min_digit_low; ++ pTapiDialData->TapiDigitLowTime.nMaxTime = max_digit_low; ++ pTapiDialData->TapiDigitHighTime.nMinTime = min_digit_high; ++ pTapiDialData->TapiDigitHighTime.nMaxTime = max_digit_high; + pTapiDialData->TapiHookFlashTime.nMinTime = TAPI_MIN_FLASH; + pTapiDialData->TapiHookFlashTime.nMaxTime = TAPI_MAX_FLASH; + pTapiDialData->TapiHookFlashMakeTime.nMinTime = TAPI_MIN_FLASH_MAKE; +- pTapiDialData->TapiInterDigitTime.nMinTime = TAPI_MIN_INTERDIGIT; ++ pTapiDialData->TapiInterDigitTime.nMinTime = min_interdigit; + pTapiDialData->TapiHookOffTime.nMinTime = TAPI_MIN_OFF_HOOK; + pTapiDialData->TapiHookOnTime.nMinTime = TAPI_MIN_ON_HOOK; + /* start hook state FSM in onhook state */ From 0e001e4185b29dec4a36c5ca2034e24cca1669c5 Mon Sep 17 00:00:00 2001 From: Aleksander Jan Bajkowski Date: Sat, 22 Oct 2022 17:19:53 +0200 Subject: [PATCH 06/21] mediatek: mt7623: refresh config This was done by executing these command: $ time make kernel_oldconfig CONFIG_TARGET=subtarget Signed-off-by: Aleksander Jan Bajkowski --- target/linux/mediatek/mt7623/config-5.15 | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/target/linux/mediatek/mt7623/config-5.15 b/target/linux/mediatek/mt7623/config-5.15 index d3915f4929..76f2e6b327 100644 --- a/target/linux/mediatek/mt7623/config-5.15 +++ b/target/linux/mediatek/mt7623/config-5.15 @@ -53,8 +53,8 @@ CONFIG_CLKSRC_MMIO=y CONFIG_CLONE_BACKWARDS=y CONFIG_CMDLINE="earlyprintk console=ttyS0,115200 rootfstype=squashfs,jffs2" CONFIG_CMDLINE_FROM_BOOTLOADER=y -CONFIG_CMDLINE_PARTITION=y # CONFIG_CMDLINE_OVERRIDE is not set +CONFIG_CMDLINE_PARTITION=y CONFIG_COMMON_CLK=y CONFIG_COMMON_CLK_MEDIATEK=y CONFIG_COMMON_CLK_MT2701=y @@ -108,7 +108,6 @@ CONFIG_CRC16=y # CONFIG_CRC32_SARWATE is not set CONFIG_CRC32_SLICEBY8=y CONFIG_CROSS_MEMORY_ATTACH=y -CONFIG_CRYPTO_BLAKE2S=y CONFIG_CRYPTO_CRC32=y CONFIG_CRYPTO_CRC32C=y CONFIG_CRYPTO_DEFLATE=y @@ -403,7 +402,8 @@ CONFIG_OLD_SIGACTION=y CONFIG_OLD_SIGSUSPEND3=y CONFIG_PADATA=y CONFIG_PAGE_OFFSET=0xC0000000 -CONFIG_PAHOLE_HAS_SPLIT_BTF=y +CONFIG_PAGE_POOL=y +CONFIG_PAGE_POOL_STATS=y CONFIG_PCI=y CONFIG_PCIEAER=y CONFIG_PCIEPORTBUS=y @@ -426,7 +426,6 @@ CONFIG_PINCTRL=y CONFIG_PINCTRL_MT2701=y CONFIG_PINCTRL_MT6397=y CONFIG_PINCTRL_MT7623=y -# CONFIG_PINCTRL_MT7986 is not set CONFIG_PINCTRL_MTK=y CONFIG_PINCTRL_MTK_MOORE=y CONFIG_PINCTRL_MTK_V2=y From 224babfd6f85fbf8a76fde9f835ba48d3eacb060 Mon Sep 17 00:00:00 2001 From: Aleksander Jan Bajkowski Date: Sat, 22 Oct 2022 17:21:06 +0200 Subject: [PATCH 07/21] mediatek: mt7623: disable swconfig The mt7623 subtarget supports 2 devices: * Bananapi BPi-R2 (added in 1f068588efddf0175e954ffc07ec8478bddd52c7, 7762c07c88980cff85ec20c12f18cd172260e9d9), * UniElec U7623-02 (added in 4def81f30f2e89eeecc6ec06e3091f1dd6b3c3d9). Both devices support DSA from the beginning, thus swconfig can be safely disabled. In the past, the subtarget mt7623 also supported the mt7623 reference board. This board originally supported swconfig, and was later converted to DSA (64175ffb7911f5fcd3907df09fdb9bfab53ee641) and then dropped (1ab81bf02d750c9a2a447dbf4fdb323921f291d7). Signed-off-by: Aleksander Jan Bajkowski --- target/linux/mediatek/mt7623/config-5.15 | 1 - 1 file changed, 1 deletion(-) diff --git a/target/linux/mediatek/mt7623/config-5.15 b/target/linux/mediatek/mt7623/config-5.15 index 76f2e6b327..e787539d6d 100644 --- a/target/linux/mediatek/mt7623/config-5.15 +++ b/target/linux/mediatek/mt7623/config-5.15 @@ -502,7 +502,6 @@ CONFIG_SRCU=y # CONFIG_STRIP_ASM_SYMS is not set CONFIG_SUSPEND=y CONFIG_SUSPEND_FREEZER=y -CONFIG_SWCONFIG=y CONFIG_SWPHY=y CONFIG_SWP_EMULATE=y CONFIG_SYNC_FILE=y From e354b01baf886e7715dd7928472fb858f7c8e4c3 Mon Sep 17 00:00:00 2001 From: Edward Chow Date: Wed, 9 Nov 2022 17:18:17 +0800 Subject: [PATCH 08/21] ath79: calibrate all ar9344 tl-WDRxxxx with nvmem Driver for both soc (2.4GHz Wifi) and pci (5 GHz) now pull the calibration data from the nvmem subsystem. This allows us to move the userspace caldata extraction for the pci-e ath9k supported wifi into the device-tree definition of the device. wmac's nodes are also changed over to use nvmem-cells over OpenWrt's custom mtd-cal-data property. The wifi mac address remains correct after these changes, because When both "mac-address" and "calibration" are defined, the effective mac address comes from the cell corresponding to "mac-address" and mac-address-increment. Test passed on my tplink tl-wdr4310. Signed-off-by: Edward Chow --- .../ath79/dts/ar9344_tplink_tl-wdr3500-v1.dts | 17 ---------- .../ath79/dts/ar9344_tplink_tl-wdr4300.dtsi | 17 ---------- .../ath79/dts/ar9344_tplink_tl-wdrxxxx.dtsi | 31 +++++++++++++++++-- .../etc/hotplug.d/firmware/10-ath9k-eeprom | 5 --- 4 files changed, 28 insertions(+), 42 deletions(-) diff --git a/target/linux/ath79/dts/ar9344_tplink_tl-wdr3500-v1.dts b/target/linux/ath79/dts/ar9344_tplink_tl-wdr3500-v1.dts index 77f6637188..1600e12b64 100644 --- a/target/linux/ath79/dts/ar9344_tplink_tl-wdr3500-v1.dts +++ b/target/linux/ath79/dts/ar9344_tplink_tl-wdr3500-v1.dts @@ -50,16 +50,9 @@ }; &ath9k { - nvmem-cells = <&macaddr_uboot_1fc00>; - nvmem-cell-names = "mac-address"; mac-address-increment = <1>; }; -&wmac { - nvmem-cells = <&macaddr_uboot_1fc00>; - nvmem-cell-names = "mac-address"; -}; - ð1 { status = "okay"; @@ -83,13 +76,3 @@ nvmem-cell-names = "mac-address"; mac-address-increment = <2>; }; - -&uboot { - compatible = "nvmem-cells"; - #address-cells = <1>; - #size-cells = <1>; - - macaddr_uboot_1fc00: macaddr@1fc00 { - reg = <0x1fc00 0x6>; - }; -}; diff --git a/target/linux/ath79/dts/ar9344_tplink_tl-wdr4300.dtsi b/target/linux/ath79/dts/ar9344_tplink_tl-wdr4300.dtsi index 55ddb74184..d2791aee70 100644 --- a/target/linux/ath79/dts/ar9344_tplink_tl-wdr4300.dtsi +++ b/target/linux/ath79/dts/ar9344_tplink_tl-wdr4300.dtsi @@ -75,14 +75,7 @@ status = "okay"; }; -&ath9k { - nvmem-cells = <&macaddr_uboot_1fc00>; - nvmem-cell-names = "mac-address"; -}; - &wmac { - nvmem-cells = <&macaddr_uboot_1fc00>; - nvmem-cell-names = "mac-address"; mac-address-increment = <(-1)>; }; @@ -117,13 +110,3 @@ phy-mode = "rgmii"; phy-handle = <&phy0>; }; - -&uboot { - compatible = "nvmem-cells"; - #address-cells = <1>; - #size-cells = <1>; - - macaddr_uboot_1fc00: macaddr@1fc00 { - reg = <0x1fc00 0x6>; - }; -}; diff --git a/target/linux/ath79/dts/ar9344_tplink_tl-wdrxxxx.dtsi b/target/linux/ath79/dts/ar9344_tplink_tl-wdrxxxx.dtsi index a3f4dc036d..a2649d19e9 100644 --- a/target/linux/ath79/dts/ar9344_tplink_tl-wdrxxxx.dtsi +++ b/target/linux/ath79/dts/ar9344_tplink_tl-wdrxxxx.dtsi @@ -106,14 +106,39 @@ ath9k: wifi@0,0 { compatible = "pci168c,0033"; reg = <0x0000 0 0 0 0>; - qca,no-eeprom; #gpio-cells = <2>; gpio-controller; + nvmem-cells = <&macaddr_uboot_1fc00>, <&cal_art_5000>; + nvmem-cell-names = "mac-address", "calibration"; }; }; &wmac { status = "okay"; - - mtd-cal-data = <&art 0x1000>; + nvmem-cells = <&macaddr_uboot_1fc00>, <&cal_art_1000>; + nvmem-cell-names = "mac-address", "calibration"; +}; + +&uboot { + compatible = "nvmem-cells"; + #address-cells = <1>; + #size-cells = <1>; + + macaddr_uboot_1fc00: macaddr@1fc00 { + reg = <0x1fc00 0x6>; + }; +}; + +&art { + compatible = "nvmem-cells"; + #address-cells = <1>; + #size-cells = <1>; + + cal_art_1000: cal@1000 { + reg = <0x1000 0x440>; + }; + + cal_art_5000: cal@5000 { + reg = <0x5000 0x440>; + }; }; diff --git a/target/linux/ath79/generic/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom b/target/linux/ath79/generic/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom index 924d6407af..bddaf0bdf8 100644 --- a/target/linux/ath79/generic/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom +++ b/target/linux/ath79/generic/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom @@ -89,11 +89,6 @@ case "$FIRMWARE" in engenius,ecb600|\ mercury,mw4530r-v1|\ ocedo,raccoon|\ - tplink,tl-wdr3500-v1|\ - tplink,tl-wdr3600-v1|\ - tplink,tl-wdr4300-v1|\ - tplink,tl-wdr4300-v1-il|\ - tplink,tl-wdr4310-v1|\ ubnt,unifi-ap-pro|\ watchguard,ap100|\ watchguard,ap200|\ From fb0256e88e2f495d08cd4c45eb243365a80696f1 Mon Sep 17 00:00:00 2001 From: Christian Buschau Date: Tue, 29 Mar 2022 14:08:45 +0200 Subject: [PATCH 09/21] lantiq: xway: refresh kernel config Run of 'make kernel_oldconfig CONFIG_TARGET=subtarget' Signed-off-by: Christian Buschau Acked-by: Martin Blumenstingl --- target/linux/lantiq/xway/config-5.10 | 9 ++++++++- target/linux/lantiq/xway/config-5.15 | 16 ++++++++++++++-- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/target/linux/lantiq/xway/config-5.10 b/target/linux/lantiq/xway/config-5.10 index 8ff706fea9..579257e522 100644 --- a/target/linux/lantiq/xway/config-5.10 +++ b/target/linux/lantiq/xway/config-5.10 @@ -4,9 +4,10 @@ CONFIG_AT803X_PHY=y CONFIG_BLK_MQ_PCI=y CONFIG_CPU_HAS_DIEI=y CONFIG_CRC16=y -CONFIG_CRYPTO_ACOMP2=y +CONFIG_CRYPTO_DEFLATE=y CONFIG_CRYPTO_HASH_INFO=y CONFIG_CRYPTO_LZO=y +CONFIG_CRYPTO_ZSTD=y CONFIG_ETHERNET_PACKET_MANGLE=y CONFIG_GENERIC_ALLOCATOR=y CONFIG_HW_RANDOM=y @@ -17,6 +18,7 @@ CONFIG_INPUT_POLLDEV=y CONFIG_LANTIQ_ETOP=y CONFIG_LZO_COMPRESS=y CONFIG_LZO_DECOMPRESS=y +CONFIG_MIPS_EBPF_JIT=y CONFIG_MTD_NAND_CORE=y CONFIG_MTD_NAND_ECC=y CONFIG_MTD_NAND_ECC_SW_HAMMING=y @@ -44,3 +46,8 @@ CONFIG_UBIFS_FS=y CONFIG_USB=y CONFIG_USB_COMMON=y CONFIG_USB_SUPPORT=y +CONFIG_XXHASH=y +CONFIG_ZLIB_DEFLATE=y +CONFIG_ZLIB_INFLATE=y +CONFIG_ZSTD_COMPRESS=y +CONFIG_ZSTD_DECOMPRESS=y diff --git a/target/linux/lantiq/xway/config-5.15 b/target/linux/lantiq/xway/config-5.15 index 8ff706fea9..249af20bf6 100644 --- a/target/linux/lantiq/xway/config-5.15 +++ b/target/linux/lantiq/xway/config-5.15 @@ -1,22 +1,27 @@ CONFIG_ADM6996_PHY=y CONFIG_AR8216_PHY=y +CONFIG_ARCH_KEEP_MEMBLOCK=y CONFIG_AT803X_PHY=y CONFIG_BLK_MQ_PCI=y CONFIG_CPU_HAS_DIEI=y CONFIG_CRC16=y -CONFIG_CRYPTO_ACOMP2=y +CONFIG_CRYPTO_DEFLATE=y CONFIG_CRYPTO_HASH_INFO=y CONFIG_CRYPTO_LZO=y +CONFIG_CRYPTO_ZSTD=y CONFIG_ETHERNET_PACKET_MANGLE=y +CONFIG_FWNODE_MDIO=y CONFIG_GENERIC_ALLOCATOR=y +CONFIG_GENERIC_FIND_FIRST_BIT=y +CONFIG_GPIO_CDEV=y CONFIG_HW_RANDOM=y CONFIG_INPUT=y CONFIG_INPUT_EVDEV=y -CONFIG_INPUT_POLLDEV=y # CONFIG_ISDN is not set CONFIG_LANTIQ_ETOP=y CONFIG_LZO_COMPRESS=y CONFIG_LZO_DECOMPRESS=y +CONFIG_MIPS_EBPF_JIT=y CONFIG_MTD_NAND_CORE=y CONFIG_MTD_NAND_ECC=y CONFIG_MTD_NAND_ECC_SW_HAMMING=y @@ -26,11 +31,13 @@ CONFIG_MTD_UBI=y CONFIG_MTD_UBI_BEB_LIMIT=20 CONFIG_MTD_UBI_BLOCK=y CONFIG_MTD_UBI_WL_THRESHOLD=4096 +CONFIG_NET_SELFTESTS=y CONFIG_NLS=y CONFIG_PCI=y CONFIG_PCI_DOMAINS=y CONFIG_PCI_LANTIQ=y CONFIG_PSB6970_PHY=y +CONFIG_PTP_1588_CLOCK_OPTIONAL=y CONFIG_REGULATOR=y CONFIG_REGULATOR_FIXED_VOLTAGE=y CONFIG_RTL8306_PHY=y @@ -44,3 +51,8 @@ CONFIG_UBIFS_FS=y CONFIG_USB=y CONFIG_USB_COMMON=y CONFIG_USB_SUPPORT=y +CONFIG_XXHASH=y +CONFIG_ZLIB_DEFLATE=y +CONFIG_ZLIB_INFLATE=y +CONFIG_ZSTD_COMPRESS=y +CONFIG_ZSTD_DECOMPRESS=y From d3527bb83be949d2f4bc4431d5750a0fadc6c1f5 Mon Sep 17 00:00:00 2001 From: Christian Buschau Date: Sat, 27 Feb 2021 21:26:21 +0100 Subject: [PATCH 10/21] lantiq: xway: ar9: add ICU1 (2nd core for SMP) Fixes leftover TODO from commit 6bf179b27004eb76df3e466bd080fc5a83ccf0dd Signed-off-by: Christian Buschau Acked-by: Martin Blumenstingl --- target/linux/lantiq/files/arch/mips/boot/dts/lantiq/ar9.dtsi | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/ar9.dtsi b/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/ar9.dtsi index a35bd17a96..b12005ff6b 100644 --- a/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/ar9.dtsi +++ b/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/ar9.dtsi @@ -44,8 +44,8 @@ #interrupt-cells = <1>; interrupt-controller; compatible = "lantiq,icu"; - /* TODO: AR9 should have ICU1 (like VR9) too */ - reg = <0x80200 0xc8>; + reg = <0x80200 0xc8 /* icu0 */ + 0x80300 0xc8>; /* icu1 */ }; watchdog@803f0 { From 084c20f6c54180f2dc6b3efc1c5ba9b62afbaf26 Mon Sep 17 00:00:00 2001 From: Christian Buschau Date: Tue, 29 Mar 2022 14:14:43 +0200 Subject: [PATCH 11/21] lantiq: xway: kernel: enable SMP support Enabled CONFIG_MIPS_MT_SMP and CONFIG_SCHED_SMT. Tested on FRITZ!Box 7330 SL, 7312 and o2 Box 4421. Signed-off-by: Christian Buschau Acked-by: Martin Blumenstingl --- target/linux/lantiq/xway/config-5.10 | 24 ++++++++++++++++++++++++ target/linux/lantiq/xway/config-5.15 | 26 ++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) diff --git a/target/linux/lantiq/xway/config-5.10 b/target/linux/lantiq/xway/config-5.10 index 579257e522..eafa4ef0bb 100644 --- a/target/linux/lantiq/xway/config-5.10 +++ b/target/linux/lantiq/xway/config-5.10 @@ -3,6 +3,9 @@ CONFIG_AR8216_PHY=y CONFIG_AT803X_PHY=y CONFIG_BLK_MQ_PCI=y CONFIG_CPU_HAS_DIEI=y +CONFIG_CPU_MIPSR2_IRQ_EI=y +CONFIG_CPU_MIPSR2_IRQ_VI=y +CONFIG_CPU_RMAP=y CONFIG_CRC16=y CONFIG_CRYPTO_DEFLATE=y CONFIG_CRYPTO_HASH_INFO=y @@ -19,6 +22,11 @@ CONFIG_LANTIQ_ETOP=y CONFIG_LZO_COMPRESS=y CONFIG_LZO_DECOMPRESS=y CONFIG_MIPS_EBPF_JIT=y +CONFIG_MIPS_MT=y +CONFIG_MIPS_MT_FPAFF=y +CONFIG_MIPS_MT_SMP=y +CONFIG_MIPS_NR_CPU_NR_MAP=2 +CONFIG_MIPS_PERF_SHARED_TC_COUNTERS=y CONFIG_MTD_NAND_CORE=y CONFIG_MTD_NAND_ECC=y CONFIG_MTD_NAND_ECC_SW_HAMMING=y @@ -28,24 +36,40 @@ CONFIG_MTD_UBI=y CONFIG_MTD_UBI_BEB_LIMIT=20 CONFIG_MTD_UBI_BLOCK=y CONFIG_MTD_UBI_WL_THRESHOLD=4096 +CONFIG_NET_FLOW_LIMIT=y CONFIG_NLS=y +CONFIG_NR_CPUS=2 +CONFIG_PADATA=y CONFIG_PCI=y CONFIG_PCI_DOMAINS=y CONFIG_PCI_LANTIQ=y CONFIG_PSB6970_PHY=y +CONFIG_QUEUED_RWLOCKS=y +CONFIG_QUEUED_SPINLOCKS=y CONFIG_REGULATOR=y CONFIG_REGULATOR_FIXED_VOLTAGE=y +CONFIG_RFS_ACCEL=y +CONFIG_RPS=y CONFIG_RTL8306_PHY=y CONFIG_RTL8366RB_PHY=y CONFIG_RTL8366_SMI=y +CONFIG_SCHED_SMT=y CONFIG_SGL_ALLOC=y +CONFIG_SMP=y +CONFIG_SMP_UP=y CONFIG_SOC_TYPE_XWAY=y CONFIG_SOC_XWAY=y CONFIG_SWCONFIG=y +CONFIG_SYNC_R4K=y +CONFIG_SYS_SUPPORTS_SCHED_SMT=y +CONFIG_SYS_SUPPORTS_SMP=y +CONFIG_TREE_RCU=y +CONFIG_TREE_SRCU=y CONFIG_UBIFS_FS=y CONFIG_USB=y CONFIG_USB_COMMON=y CONFIG_USB_SUPPORT=y +CONFIG_XPS=y CONFIG_XXHASH=y CONFIG_ZLIB_DEFLATE=y CONFIG_ZLIB_INFLATE=y diff --git a/target/linux/lantiq/xway/config-5.15 b/target/linux/lantiq/xway/config-5.15 index 249af20bf6..5a6f15dafd 100644 --- a/target/linux/lantiq/xway/config-5.15 +++ b/target/linux/lantiq/xway/config-5.15 @@ -4,6 +4,9 @@ CONFIG_ARCH_KEEP_MEMBLOCK=y CONFIG_AT803X_PHY=y CONFIG_BLK_MQ_PCI=y CONFIG_CPU_HAS_DIEI=y +CONFIG_CPU_MIPSR2_IRQ_EI=y +CONFIG_CPU_MIPSR2_IRQ_VI=y +CONFIG_CPU_RMAP=y CONFIG_CRC16=y CONFIG_CRYPTO_DEFLATE=y CONFIG_CRYPTO_HASH_INFO=y @@ -22,6 +25,11 @@ CONFIG_LANTIQ_ETOP=y CONFIG_LZO_COMPRESS=y CONFIG_LZO_DECOMPRESS=y CONFIG_MIPS_EBPF_JIT=y +CONFIG_MIPS_MT=y +CONFIG_MIPS_MT_FPAFF=y +CONFIG_MIPS_MT_SMP=y +CONFIG_MIPS_NR_CPU_NR_MAP=2 +CONFIG_MIPS_PERF_SHARED_TC_COUNTERS=y CONFIG_MTD_NAND_CORE=y CONFIG_MTD_NAND_ECC=y CONFIG_MTD_NAND_ECC_SW_HAMMING=y @@ -31,26 +39,44 @@ CONFIG_MTD_UBI=y CONFIG_MTD_UBI_BEB_LIMIT=20 CONFIG_MTD_UBI_BLOCK=y CONFIG_MTD_UBI_WL_THRESHOLD=4096 +CONFIG_NET_FLOW_LIMIT=y CONFIG_NET_SELFTESTS=y CONFIG_NLS=y +CONFIG_NR_CPUS=2 +CONFIG_PADATA=y CONFIG_PCI=y CONFIG_PCI_DOMAINS=y CONFIG_PCI_LANTIQ=y CONFIG_PSB6970_PHY=y CONFIG_PTP_1588_CLOCK_OPTIONAL=y +CONFIG_QUEUED_RWLOCKS=y +CONFIG_QUEUED_SPINLOCKS=y CONFIG_REGULATOR=y CONFIG_REGULATOR_FIXED_VOLTAGE=y +CONFIG_RFS_ACCEL=y +CONFIG_RPS=y CONFIG_RTL8306_PHY=y CONFIG_RTL8366RB_PHY=y CONFIG_RTL8366_SMI=y +# CONFIG_SCHED_CORE is not set +CONFIG_SCHED_SMT=y CONFIG_SGL_ALLOC=y +CONFIG_SMP=y +CONFIG_SMP_UP=y +CONFIG_SOCK_RX_QUEUE_MAPPING=y CONFIG_SOC_TYPE_XWAY=y CONFIG_SOC_XWAY=y CONFIG_SWCONFIG=y +CONFIG_SYNC_R4K=y +CONFIG_SYS_SUPPORTS_SCHED_SMT=y +CONFIG_SYS_SUPPORTS_SMP=y +CONFIG_TREE_RCU=y +CONFIG_TREE_SRCU=y CONFIG_UBIFS_FS=y CONFIG_USB=y CONFIG_USB_COMMON=y CONFIG_USB_SUPPORT=y +CONFIG_XPS=y CONFIG_XXHASH=y CONFIG_ZLIB_DEFLATE=y CONFIG_ZLIB_INFLATE=y From bca663f20f08713eb998af579945323718d21ce7 Mon Sep 17 00:00:00 2001 From: Aleksander Jan Bajkowski Date: Mon, 7 Mar 2022 22:31:45 +0100 Subject: [PATCH 12/21] kernel: backport tso for asix driver Performance comparison (iperf3, mtu 1500): Before: 53.9 Mbps After: 87.9 Mbps The tests were performed on a BT Home Hub 5A router. The iperf3 server was running on the router, the client on the host. Signed-off-by: Aleksander Jan Bajkowski --- ...net-usb-ax88179_178a-add-TSO-feature.patch | 68 +++++++++++++++++++ ...net-usb-ax88179_178a-add-TSO-feature.patch | 68 +++++++++++++++++++ 2 files changed, 136 insertions(+) create mode 100644 target/linux/generic/backport-5.10/797-v5.17-net-usb-ax88179_178a-add-TSO-feature.patch create mode 100644 target/linux/generic/backport-5.15/797-v5.17-net-usb-ax88179_178a-add-TSO-feature.patch diff --git a/target/linux/generic/backport-5.10/797-v5.17-net-usb-ax88179_178a-add-TSO-feature.patch b/target/linux/generic/backport-5.10/797-v5.17-net-usb-ax88179_178a-add-TSO-feature.patch new file mode 100644 index 0000000000..a2168aaba5 --- /dev/null +++ b/target/linux/generic/backport-5.10/797-v5.17-net-usb-ax88179_178a-add-TSO-feature.patch @@ -0,0 +1,68 @@ +From 16b1c4e01c89ba07367461e0bc4cb84993c2d027 Mon Sep 17 00:00:00 2001 +From: Jacky Chou +Date: Mon, 15 Nov 2021 11:49:41 +0800 +Subject: [PATCH] net: usb: ax88179_178a: add TSO feature + +On low-effciency embedded platforms, transmission performance is poor +due to on Bulk-out with single packet. +Adding TSO feature improves the transmission performance and reduces +the number of interrupt caused by Bulk-out complete. + +Reference to module, net: usb: aqc111. + +Signed-off-by: Jacky Chou +Signed-off-by: David S. Miller +--- + drivers/net/usb/ax88179_178a.c | 17 +++++++++++------ + 1 file changed, 11 insertions(+), 6 deletions(-) + +--- a/drivers/net/usb/ax88179_178a.c ++++ b/drivers/net/usb/ax88179_178a.c +@@ -1377,11 +1377,12 @@ static int ax88179_bind(struct usbnet *d + dev->mii.phy_id = 0x03; + dev->mii.supports_gmii = 1; + +- dev->net->features |= NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM | +- NETIF_F_RXCSUM; ++ dev->net->features |= NETIF_F_SG | NETIF_F_IP_CSUM | ++ NETIF_F_IPV6_CSUM | NETIF_F_RXCSUM | NETIF_F_TSO; + +- dev->net->hw_features |= NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM | +- NETIF_F_RXCSUM; ++ dev->net->hw_features |= dev->net->features; ++ ++ netif_set_gso_max_size(dev->net, 16384); + + /* Enable checksum offload */ + *tmp = AX_RXCOE_IP | AX_RXCOE_TCP | AX_RXCOE_UDP | +@@ -1587,17 +1588,19 @@ ax88179_tx_fixup(struct usbnet *dev, str + { + u32 tx_hdr1, tx_hdr2; + int frame_size = dev->maxpacket; +- int mss = skb_shinfo(skb)->gso_size; + int headroom; + void *ptr; + + tx_hdr1 = skb->len; +- tx_hdr2 = mss; ++ tx_hdr2 = skb_shinfo(skb)->gso_size; /* Set TSO mss */ + if (((skb->len + 8) % frame_size) == 0) + tx_hdr2 |= 0x80008000; /* Enable padding */ + + headroom = skb_headroom(skb) - 8; + ++ if ((dev->net->features & NETIF_F_SG) && skb_linearize(skb)) ++ return NULL; ++ + if ((skb_header_cloned(skb) || headroom < 0) && + pskb_expand_head(skb, headroom < 0 ? 8 : 0, 0, GFP_ATOMIC)) { + dev_kfree_skb_any(skb); +@@ -1608,6 +1611,8 @@ ax88179_tx_fixup(struct usbnet *dev, str + put_unaligned_le32(tx_hdr1, ptr); + put_unaligned_le32(tx_hdr2, ptr + 4); + ++ usbnet_set_skb_tx_stats(skb, (skb_shinfo(skb)->gso_segs ?: 1), 0); ++ + return skb; + } + diff --git a/target/linux/generic/backport-5.15/797-v5.17-net-usb-ax88179_178a-add-TSO-feature.patch b/target/linux/generic/backport-5.15/797-v5.17-net-usb-ax88179_178a-add-TSO-feature.patch new file mode 100644 index 0000000000..a2168aaba5 --- /dev/null +++ b/target/linux/generic/backport-5.15/797-v5.17-net-usb-ax88179_178a-add-TSO-feature.patch @@ -0,0 +1,68 @@ +From 16b1c4e01c89ba07367461e0bc4cb84993c2d027 Mon Sep 17 00:00:00 2001 +From: Jacky Chou +Date: Mon, 15 Nov 2021 11:49:41 +0800 +Subject: [PATCH] net: usb: ax88179_178a: add TSO feature + +On low-effciency embedded platforms, transmission performance is poor +due to on Bulk-out with single packet. +Adding TSO feature improves the transmission performance and reduces +the number of interrupt caused by Bulk-out complete. + +Reference to module, net: usb: aqc111. + +Signed-off-by: Jacky Chou +Signed-off-by: David S. Miller +--- + drivers/net/usb/ax88179_178a.c | 17 +++++++++++------ + 1 file changed, 11 insertions(+), 6 deletions(-) + +--- a/drivers/net/usb/ax88179_178a.c ++++ b/drivers/net/usb/ax88179_178a.c +@@ -1377,11 +1377,12 @@ static int ax88179_bind(struct usbnet *d + dev->mii.phy_id = 0x03; + dev->mii.supports_gmii = 1; + +- dev->net->features |= NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM | +- NETIF_F_RXCSUM; ++ dev->net->features |= NETIF_F_SG | NETIF_F_IP_CSUM | ++ NETIF_F_IPV6_CSUM | NETIF_F_RXCSUM | NETIF_F_TSO; + +- dev->net->hw_features |= NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM | +- NETIF_F_RXCSUM; ++ dev->net->hw_features |= dev->net->features; ++ ++ netif_set_gso_max_size(dev->net, 16384); + + /* Enable checksum offload */ + *tmp = AX_RXCOE_IP | AX_RXCOE_TCP | AX_RXCOE_UDP | +@@ -1587,17 +1588,19 @@ ax88179_tx_fixup(struct usbnet *dev, str + { + u32 tx_hdr1, tx_hdr2; + int frame_size = dev->maxpacket; +- int mss = skb_shinfo(skb)->gso_size; + int headroom; + void *ptr; + + tx_hdr1 = skb->len; +- tx_hdr2 = mss; ++ tx_hdr2 = skb_shinfo(skb)->gso_size; /* Set TSO mss */ + if (((skb->len + 8) % frame_size) == 0) + tx_hdr2 |= 0x80008000; /* Enable padding */ + + headroom = skb_headroom(skb) - 8; + ++ if ((dev->net->features & NETIF_F_SG) && skb_linearize(skb)) ++ return NULL; ++ + if ((skb_header_cloned(skb) || headroom < 0) && + pskb_expand_head(skb, headroom < 0 ? 8 : 0, 0, GFP_ATOMIC)) { + dev_kfree_skb_any(skb); +@@ -1608,6 +1611,8 @@ ax88179_tx_fixup(struct usbnet *dev, str + put_unaligned_le32(tx_hdr1, ptr); + put_unaligned_le32(tx_hdr2, ptr + 4); + ++ usbnet_set_skb_tx_stats(skb, (skb_shinfo(skb)->gso_segs ?: 1), 0); ++ + return skb; + } + From 3d343ca713aaa1e59962cdb4f09df99b3c7ad9a2 Mon Sep 17 00:00:00 2001 From: Edward Chow Date: Sun, 20 Nov 2022 11:22:31 +0800 Subject: [PATCH 13/21] ath79: calibrate nand netgear wndrxxxx with nvmem Driver for both soc (2.4GHz Wifi) and pci (5 GHz) now pull the calibration data from the nvmem subsystem. This allows us to move the userspace caldata extraction for the pci-e ath9k supported wifi into the device-tree definition of the device. wmac's nodes are also changed over to use nvmem-cells over OpenWrt's custom mtd-cal-data property. The wifi mac address remains correct after these changes, because When both "mac-address" and "calibration" are defined, the effective mac address comes from the cell corresponding to "mac-address" and mac-address-increment. Test passed on my wndr3700v4 and wndr4500v3. Signed-off-by: Edward Chow --- .../linux/ath79/dts/ar9344_netgear_wndr.dtsi | 18 ++++++++++----- .../linux/ath79/dts/qca9563_netgear_wndr.dtsi | 18 ++++++++++----- .../etc/hotplug.d/firmware/10-ath9k-eeprom | 23 ------------------- 3 files changed, 24 insertions(+), 35 deletions(-) diff --git a/target/linux/ath79/dts/ar9344_netgear_wndr.dtsi b/target/linux/ath79/dts/ar9344_netgear_wndr.dtsi index 077bbe4bf1..331a4c6fa3 100644 --- a/target/linux/ath79/dts/ar9344_netgear_wndr.dtsi +++ b/target/linux/ath79/dts/ar9344_netgear_wndr.dtsi @@ -243,9 +243,8 @@ &wmac { status = "okay"; - nvmem-cells = <&macaddr_caldata_0>; - nvmem-cell-names = "mac-address"; - qca,no-eeprom; + nvmem-cells = <&macaddr_caldata_0>, <&cal_art_1000>; + nvmem-cell-names = "mac-address", "calibration"; }; &pcie { @@ -254,9 +253,8 @@ ath9k: wifi@0,0 { compatible = "pci168c,0033"; reg = <0x0000 0 0 0 0>; - nvmem-cells = <&macaddr_caldata_c>; - nvmem-cell-names = "mac-address"; - qca,no-eeprom; + nvmem-cells = <&macaddr_caldata_c>, <&cal_art_5000>; + nvmem-cell-names = "mac-address", "calibration"; #gpio-cells = <2>; gpio-controller; }; @@ -274,4 +272,12 @@ macaddr_caldata_c: macaddr@c { reg = <0xc 0x6>; }; + + cal_art_1000: cal@1000 { + reg = <0x1000 0x440>; + }; + + cal_art_5000: cal@5000 { + reg = <0x5000 0x440>; + }; }; diff --git a/target/linux/ath79/dts/qca9563_netgear_wndr.dtsi b/target/linux/ath79/dts/qca9563_netgear_wndr.dtsi index 726eae5b29..a51fb1964b 100644 --- a/target/linux/ath79/dts/qca9563_netgear_wndr.dtsi +++ b/target/linux/ath79/dts/qca9563_netgear_wndr.dtsi @@ -209,9 +209,8 @@ &wmac { status = "okay"; - nvmem-cells = <&macaddr_caldata_0>; - nvmem-cell-names = "mac-address"; - qca,no-eeprom; + nvmem-cells = <&macaddr_caldata_0>, <&cal_art_1000>; + nvmem-cell-names = "mac-address", "calibration"; }; &pcie { @@ -221,9 +220,8 @@ /* chip is AR9580, override bogus PCI ID 168c:abcd */ compatible = "pci168c,0033"; reg = <0x0000 0 0 0 0>; - nvmem-cells = <&macaddr_caldata_c>; - nvmem-cell-names = "mac-address"; - qca,no-eeprom; + nvmem-cells = <&macaddr_caldata_c>, <&cal_art_5000>; + nvmem-cell-names = "mac-address", "calibration"; qca,gpio-mask=<0xf6ff>; /* unmask pin 9 for RFKILL button */ #gpio-cells = <2>; gpio-controller; @@ -250,4 +248,12 @@ macaddr_caldata_c: macaddr@c { reg = <0xc 0x6>; }; + + cal_art_1000: cal@1000 { + reg = <0x1000 0x440>; + }; + + cal_art_5000: cal@5000 { + reg = <0x5000 0x440>; + }; }; diff --git a/target/linux/ath79/nand/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom b/target/linux/ath79/nand/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom index cac955905a..36ab24e2df 100644 --- a/target/linux/ath79/nand/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom +++ b/target/linux/ath79/nand/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom @@ -12,29 +12,6 @@ case "$FIRMWARE" in 8dev,rambutan) caldata_extract "caldata" 0x1000 0x800 ;; - netgear,wndr3700-v4|\ - netgear,wndr4300|\ - netgear,wndr4300sw|\ - netgear,wndr4300tn|\ - netgear,wndr4300-v2|\ - netgear,wndr4500-v3) - caldata_extract "caldata" 0x1000 0x440 - ;; - *) - caldata_die "board $board is not supported yet" - ;; - esac - ;; -"ath9k-eeprom-pci-0000:00:00.0.bin") - case $board in - netgear,wndr3700-v4|\ - netgear,wndr4300|\ - netgear,wndr4300sw|\ - netgear,wndr4300tn|\ - netgear,wndr4300-v2|\ - netgear,wndr4500-v3) - caldata_extract "caldata" 0x5000 0x440 - ;; *) caldata_die "board $board is not supported yet" ;; From 5a1d7d8c1b422827673b13a034473683f5af3d6f Mon Sep 17 00:00:00 2001 From: Roger Pueyo Centelles Date: Fri, 18 Nov 2022 16:39:27 +0100 Subject: [PATCH 14/21] ath79: disable image building for Ubiquiti EdgeSwitch 8XP The downstream OpenWrt driver for the BCM53128 switch ceased to work, rendering the 8 LAN ports of the device unusable. This commit disables image building while the problem is being solved. See issue #10374 for more details. Signed-off-by: Roger Pueyo Centelles --- target/linux/ath79/image/generic-ubnt.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/target/linux/ath79/image/generic-ubnt.mk b/target/linux/ath79/image/generic-ubnt.mk index fe158e584b..bed043c3a7 100644 --- a/target/linux/ath79/image/generic-ubnt.mk +++ b/target/linux/ath79/image/generic-ubnt.mk @@ -43,6 +43,7 @@ define Device/ubnt_edgeswitch-8xp $(Device/ubnt-sw) DEVICE_MODEL := EdgeSwitch 8XP DEVICE_PACKAGES += kmod-switch-bcm53xx-mdio + DEFAULT := n endef TARGET_DEVICES += ubnt_edgeswitch-8xp From 288b0004bfa981e3dbb8678ee3289509c3930217 Mon Sep 17 00:00:00 2001 From: Will Moss Date: Sat, 19 Nov 2022 10:35:33 +0000 Subject: [PATCH 15/21] ath79: fix MAC address assigment for TP-Link TL-WR740N/TL-WR741ND v4 On TP-Link TL-WR740N/TL-WR741ND v4 LAN MAC address (eth1 in DTS) is main device MAC address, so do not increment it. WAN MAC is LAN MAC + 1. Signed-off-by: Will Moss --- target/linux/ath79/dts/ar9331_tplink_tl-wr741nd-v4.dtsi | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/target/linux/ath79/dts/ar9331_tplink_tl-wr741nd-v4.dtsi b/target/linux/ath79/dts/ar9331_tplink_tl-wr741nd-v4.dtsi index b74b8251ce..4d3b1dba1d 100644 --- a/target/linux/ath79/dts/ar9331_tplink_tl-wr741nd-v4.dtsi +++ b/target/linux/ath79/dts/ar9331_tplink_tl-wr741nd-v4.dtsi @@ -118,7 +118,7 @@ }; }; -ð0 { +ð0 { /* WAN interface, initialized last as eth1 */ status = "okay"; nvmem-cells = <&macaddr_uboot_1fc00>; @@ -133,12 +133,11 @@ }; }; -ð1 { +ð1 { /* LAN interface, initialized first as eth0 */ status = "okay"; nvmem-cells = <&macaddr_uboot_1fc00>; nvmem-cell-names = "mac-address"; - mac-address-increment = <(-1)>; }; &wmac { From 34615250a9c38b131a853166184ae094238333e2 Mon Sep 17 00:00:00 2001 From: Xiaopo Zhang Date: Thu, 17 Nov 2022 21:17:36 +0800 Subject: [PATCH 16/21] x86/64: enable Intel PINCTRL in 64bit target Intel PINCTRL is not enable in the 64bit build, while it is enabled in the x86/general target, which disables the ability of controlling GPIO in the 64 bit build. This commit copies the corresponding part of x86/general config, since it is already there, so it should be fine to enable the same settings here. Signed-off-by: Xiaopo Zhang --- target/linux/x86/64/config-5.10 | 15 ++++++++------- target/linux/x86/64/config-5.15 | 15 ++++++++------- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/target/linux/x86/64/config-5.10 b/target/linux/x86/64/config-5.10 index 3f84b00c0f..b95f552b44 100644 --- a/target/linux/x86/64/config-5.10 +++ b/target/linux/x86/64/config-5.10 @@ -350,17 +350,18 @@ CONFIG_PGTABLE_LEVELS=4 CONFIG_PHYSICAL_ALIGN=0x1000000 CONFIG_PHYS_ADDR_T_64BIT=y CONFIG_PINCTRL=y -# CONFIG_PINCTRL_BAYTRAIL is not set -# CONFIG_PINCTRL_BROXTON is not set -# CONFIG_PINCTRL_CANNONLAKE is not set -# CONFIG_PINCTRL_CHERRYVIEW is not set -# CONFIG_PINCTRL_DENVERTON is not set +CONFIG_PINCTRL_BAYTRAIL=y +CONFIG_PINCTRL_BROXTON=y +CONFIG_PINCTRL_CANNONLAKE=y +CONFIG_PINCTRL_CHERRYVIEW=y +CONFIG_PINCTRL_DENVERTON=y # CONFIG_PINCTRL_EMMITSBURG is not set -# CONFIG_PINCTRL_GEMINILAKE is not set +CONFIG_PINCTRL_GEMINILAKE=y +CONFIG_PINCTRL_INTEL=y # CONFIG_PINCTRL_JASPERLAKE is not set # CONFIG_PINCTRL_LEWISBURG is not set # CONFIG_PINCTRL_LYNXPOINT is not set -# CONFIG_PINCTRL_SUNRISEPOINT is not set +CONFIG_PINCTRL_SUNRISEPOINT=y # CONFIG_PINCTRL_TIGERLAKE is not set CONFIG_PM=y # CONFIG_PMIC_OPREGION is not set diff --git a/target/linux/x86/64/config-5.15 b/target/linux/x86/64/config-5.15 index 040dceb961..a25fa4c12a 100644 --- a/target/linux/x86/64/config-5.15 +++ b/target/linux/x86/64/config-5.15 @@ -368,19 +368,20 @@ CONFIG_PHYSICAL_ALIGN=0x1000000 CONFIG_PHYS_ADDR_T_64BIT=y CONFIG_PINCTRL=y # CONFIG_PINCTRL_ALDERLAKE is not set -# CONFIG_PINCTRL_BAYTRAIL is not set -# CONFIG_PINCTRL_BROXTON is not set -# CONFIG_PINCTRL_CANNONLAKE is not set -# CONFIG_PINCTRL_CHERRYVIEW is not set -# CONFIG_PINCTRL_DENVERTON is not set +CONFIG_PINCTRL_BAYTRAIL=y +CONFIG_PINCTRL_BROXTON=y +CONFIG_PINCTRL_CANNONLAKE=y +CONFIG_PINCTRL_CHERRYVIEW=y +CONFIG_PINCTRL_DENVERTON=y # CONFIG_PINCTRL_ELKHARTLAKE is not set # CONFIG_PINCTRL_EMMITSBURG is not set -# CONFIG_PINCTRL_GEMINILAKE is not set +CONFIG_PINCTRL_GEMINILAKE=y +CONFIG_PINCTRL_INTEL=y # CONFIG_PINCTRL_JASPERLAKE is not set # CONFIG_PINCTRL_LAKEFIELD is not set # CONFIG_PINCTRL_LEWISBURG is not set # CONFIG_PINCTRL_LYNXPOINT is not set -# CONFIG_PINCTRL_SUNRISEPOINT is not set +CONFIG_PINCTRL_SUNRISEPOINT=y # CONFIG_PINCTRL_TIGERLAKE is not set CONFIG_PM=y # CONFIG_PMIC_OPREGION is not set From a28297d395d4253c03f362bc1ac1974b0b4f825e Mon Sep 17 00:00:00 2001 From: Xiaopo Zhang Date: Sat, 19 Nov 2022 10:46:28 +0800 Subject: [PATCH 17/21] x86: enable PINCTRL for all Intel platform Enable Intel PINCTRL for all platform on both 32 bit and 64 bit target. Signed-off-by: Xiaopo Zhang --- target/linux/x86/64/config-5.10 | 10 +++++----- target/linux/x86/64/config-5.15 | 16 ++++++++-------- target/linux/x86/generic/config-5.10 | 10 +++++----- target/linux/x86/generic/config-5.15 | 16 ++++++++-------- 4 files changed, 26 insertions(+), 26 deletions(-) diff --git a/target/linux/x86/64/config-5.10 b/target/linux/x86/64/config-5.10 index b95f552b44..1515f90932 100644 --- a/target/linux/x86/64/config-5.10 +++ b/target/linux/x86/64/config-5.10 @@ -355,14 +355,14 @@ CONFIG_PINCTRL_BROXTON=y CONFIG_PINCTRL_CANNONLAKE=y CONFIG_PINCTRL_CHERRYVIEW=y CONFIG_PINCTRL_DENVERTON=y -# CONFIG_PINCTRL_EMMITSBURG is not set +CONFIG_PINCTRL_EMMITSBURG=y CONFIG_PINCTRL_GEMINILAKE=y CONFIG_PINCTRL_INTEL=y -# CONFIG_PINCTRL_JASPERLAKE is not set -# CONFIG_PINCTRL_LEWISBURG is not set -# CONFIG_PINCTRL_LYNXPOINT is not set +CONFIG_PINCTRL_JASPERLAKE=y +CONFIG_PINCTRL_LEWISBURG=y +CONFIG_PINCTRL_LYNXPOINT=y CONFIG_PINCTRL_SUNRISEPOINT=y -# CONFIG_PINCTRL_TIGERLAKE is not set +CONFIG_PINCTRL_TIGERLAKE=y CONFIG_PM=y # CONFIG_PMIC_OPREGION is not set CONFIG_PM_CLK=y diff --git a/target/linux/x86/64/config-5.15 b/target/linux/x86/64/config-5.15 index a25fa4c12a..46c6f55f8d 100644 --- a/target/linux/x86/64/config-5.15 +++ b/target/linux/x86/64/config-5.15 @@ -367,22 +367,22 @@ CONFIG_PGTABLE_LEVELS=4 CONFIG_PHYSICAL_ALIGN=0x1000000 CONFIG_PHYS_ADDR_T_64BIT=y CONFIG_PINCTRL=y -# CONFIG_PINCTRL_ALDERLAKE is not set +CONFIG_PINCTRL_ALDERLAKE=y CONFIG_PINCTRL_BAYTRAIL=y CONFIG_PINCTRL_BROXTON=y CONFIG_PINCTRL_CANNONLAKE=y CONFIG_PINCTRL_CHERRYVIEW=y CONFIG_PINCTRL_DENVERTON=y -# CONFIG_PINCTRL_ELKHARTLAKE is not set -# CONFIG_PINCTRL_EMMITSBURG is not set +CONFIG_PINCTRL_ELKHARTLAKE=y +CONFIG_PINCTRL_EMMITSBURG=y CONFIG_PINCTRL_GEMINILAKE=y CONFIG_PINCTRL_INTEL=y -# CONFIG_PINCTRL_JASPERLAKE is not set -# CONFIG_PINCTRL_LAKEFIELD is not set -# CONFIG_PINCTRL_LEWISBURG is not set -# CONFIG_PINCTRL_LYNXPOINT is not set +CONFIG_PINCTRL_JASPERLAKE=y +CONFIG_PINCTRL_LAKEFIELD=y +CONFIG_PINCTRL_LEWISBURG=y +CONFIG_PINCTRL_LYNXPOINT=y CONFIG_PINCTRL_SUNRISEPOINT=y -# CONFIG_PINCTRL_TIGERLAKE is not set +CONFIG_PINCTRL_TIGERLAKE=y CONFIG_PM=y # CONFIG_PMIC_OPREGION is not set CONFIG_PM_CLK=y diff --git a/target/linux/x86/generic/config-5.10 b/target/linux/x86/generic/config-5.10 index b8580022e0..b683720bf8 100644 --- a/target/linux/x86/generic/config-5.10 +++ b/target/linux/x86/generic/config-5.10 @@ -315,14 +315,14 @@ CONFIG_PINCTRL_BROXTON=y CONFIG_PINCTRL_CANNONLAKE=y CONFIG_PINCTRL_CHERRYVIEW=y CONFIG_PINCTRL_DENVERTON=y -# CONFIG_PINCTRL_EMMITSBURG is not set +CONFIG_PINCTRL_EMMITSBURG=y CONFIG_PINCTRL_GEMINILAKE=y CONFIG_PINCTRL_INTEL=y -# CONFIG_PINCTRL_JASPERLAKE is not set -# CONFIG_PINCTRL_LEWISBURG is not set -# CONFIG_PINCTRL_LYNXPOINT is not set +CONFIG_PINCTRL_JASPERLAKE=y +CONFIG_PINCTRL_LEWISBURG=y +CONFIG_PINCTRL_LYNXPOINT=y CONFIG_PINCTRL_SUNRISEPOINT=y -# CONFIG_PINCTRL_TIGERLAKE is not set +CONFIG_PINCTRL_TIGERLAKE=y CONFIG_PM=y # CONFIG_PMIC_OPREGION is not set CONFIG_PM_CLK=y diff --git a/target/linux/x86/generic/config-5.15 b/target/linux/x86/generic/config-5.15 index 91e6c1b4d8..f573732eb3 100644 --- a/target/linux/x86/generic/config-5.15 +++ b/target/linux/x86/generic/config-5.15 @@ -318,22 +318,22 @@ CONFIG_PCI_XEN=y CONFIG_PGTABLE_LEVELS=3 CONFIG_PHYS_ADDR_T_64BIT=y CONFIG_PINCTRL=y -# CONFIG_PINCTRL_ALDERLAKE is not set +CONFIG_PINCTRL_ALDERLAKE=y CONFIG_PINCTRL_BAYTRAIL=y CONFIG_PINCTRL_BROXTON=y CONFIG_PINCTRL_CANNONLAKE=y CONFIG_PINCTRL_CHERRYVIEW=y CONFIG_PINCTRL_DENVERTON=y -# CONFIG_PINCTRL_ELKHARTLAKE is not set -# CONFIG_PINCTRL_EMMITSBURG is not set +CONFIG_PINCTRL_ELKHARTLAKE=y +CONFIG_PINCTRL_EMMITSBURG=y CONFIG_PINCTRL_GEMINILAKE=y CONFIG_PINCTRL_INTEL=y -# CONFIG_PINCTRL_JASPERLAKE is not set -# CONFIG_PINCTRL_LAKEFIELD is not set -# CONFIG_PINCTRL_LEWISBURG is not set -# CONFIG_PINCTRL_LYNXPOINT is not set +CONFIG_PINCTRL_JASPERLAKE=y +CONFIG_PINCTRL_LAKEFIELD=y +CONFIG_PINCTRL_LEWISBURG=y +CONFIG_PINCTRL_LYNXPOINT=y CONFIG_PINCTRL_SUNRISEPOINT=y -# CONFIG_PINCTRL_TIGERLAKE is not set +CONFIG_PINCTRL_TIGERLAKE=y CONFIG_PM=y # CONFIG_PMIC_OPREGION is not set CONFIG_PM_CLK=y From 21762e46535d154a2e349ae2d646e2ea6926f365 Mon Sep 17 00:00:00 2001 From: Maxim Anisimov Date: Fri, 11 Nov 2022 12:52:38 +0300 Subject: [PATCH 18/21] ramips: add support for Keenetic KN-3010 Keenetic KN-3010 is a 2.4/5 Ghz band 11ac (Wi-Fi 5) router, based on MT7621DAT. Specification: - System-On-Chip: MT7621DAT - CPU/Speed: 880 MHz - Flash-Chip: Winbond w25q256 - Flash size: 32768 KiB - RAM: 128 MiB - 5x 10/100/1000 Mbps Ethernet - 4x external, non-detachable antennas - UART (J1) header on PCB (115200 8n1) - Wireless No1 (2T2R): MT7603E 2.4 GHz 802.11bgn - Wireless No2 (2T2R): MT7613BE 5 GHz 802.11ac - 4x LED, 2x button, 1x mode switch Notes: - The device supports dual boot mode - The firmware partitions were concatinated into one - The FN button led indicator has been reassigned as the 2.4GHz wifi indicator. Flash instruction: The only way to flash OpenWrt image is to use tftp recovery mode in U-Boot: 1. Configure PC with static IP 192.168.1.2/24 and tftp server. 2. Rename "openwrt-ramips-mt7621-keenetic_kn-3010-squashfs-factory.bin" to "KN-3010_recovery.bin" and place it in tftp server directory. 3. Connect PC with one of LAN ports, press the reset button, power up the router and keep button pressed until power led start blinking. 4. Router will download file from server, write it to flash and reboot. Signed-off-by: Maxim Anisimov --- .../ramips/dts/mt7621_keenetic_kn-3010.dts | 258 ++++++++++++++++++ target/linux/ramips/image/mt7621.mk | 14 + .../mt7621/base-files/etc/board.d/01_leds | 3 + 3 files changed, 275 insertions(+) create mode 100644 target/linux/ramips/dts/mt7621_keenetic_kn-3010.dts diff --git a/target/linux/ramips/dts/mt7621_keenetic_kn-3010.dts b/target/linux/ramips/dts/mt7621_keenetic_kn-3010.dts new file mode 100644 index 0000000000..5a771f139c --- /dev/null +++ b/target/linux/ramips/dts/mt7621_keenetic_kn-3010.dts @@ -0,0 +1,258 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +#include "mt7621.dtsi" + +#include +#include + +/ { + compatible = "keenetic,kn-3010", "mediatek,mt7621-soc"; + model = "Keenetic KN-3010"; + + aliases { + led-boot = &led_power; + led-failsafe = &led_power; + led-running = &led_power; + led-upgrade = &led_power; + label-mac-device = &gmac0; + }; + + chosen { + bootargs = "console=ttyS0,115200"; + }; + + leds { + compatible = "gpio-leds"; + + led_power: power { + label = "green:power"; + gpios = <&gpio 45 GPIO_ACTIVE_HIGH>; + }; + + internet { + label = "green:internet"; + gpios = <&gpio 46 GPIO_ACTIVE_LOW>; + }; + + wifi2 { + label = "green:wifi2"; + gpios = <&gpio 47 GPIO_ACTIVE_LOW>; + linux,default-trigger = "phy0tpt"; + }; + + wifi5 { + label = "green:wifi5"; + gpios = <&gpio 48 GPIO_ACTIVE_LOW>; + linux,default-trigger = "phy1tpt"; + }; + }; + + keys { + compatible = "gpio-keys"; + + fn { + label = "fn"; + gpios = <&gpio 7 GPIO_ACTIVE_LOW>; + linux,code = ; + }; + + reset { + label = "reset"; + gpios = <&gpio 8 GPIO_ACTIVE_LOW>; + linux,code = ; + }; + + wps { + label = "wps"; + gpios = <&gpio 41 GPIO_ACTIVE_LOW>; + linux,code = ; + }; + }; + + virtual_flash { + compatible = "mtd-concat"; + devices = <&firmware1 &firmware2>; + + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + partition@0 { + compatible = "denx,uimage"; + label = "firmware"; + reg = <0x0 0x1ec0000>; + }; + }; + }; +}; + +&state_default { + gpio { + groups = "uart3", "sdhci"; + function = "gpio"; + }; +}; + +&xhci { + status = "disabled"; +}; + +&spi0 { + status = "okay"; + + flash@0 { + compatible = "jedec,spi-nor"; + reg = <0>; + spi-max-frequency = <31000000>; + + partitions: partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + partition@0 { + label = "u-boot"; + reg = <0x0 0x30000>; + read-only; + }; + + partition@30000 { + label = "u-config"; + reg = <0x30000 0x10000>; + read-only; + }; + + factory: partition@40000 { + label = "rf-eeprom"; + reg = <0x40000 0x10000>; + read-only; + }; + + firmware1: partition@50000 { + label = "firmware_1"; + reg = <0x50000 0xf60000>; + }; + + partition@fb0000 { + label = "config_1"; + reg = <0xfb0000 0x40000>; + read-only; + }; + + partition@ff0000 { + label = "dump"; + reg = <0xff0000 0x10000>; + read-only; + }; + + partition@1000000 { + label = "u-state"; + reg = <0x1000000 0x30000>; + read-only; + }; + + partition@1030000 { + label = "u-config_res"; + reg = <0x1030000 0x10000>; + read-only; + }; + + partition@1040000 { + label = "rf-eeprom_res"; + reg = <0x1040000 0x10000>; + read-only; + }; + + firmware2: partition@1050000 { + label = "firmware_2"; + reg = <0x1050000 0xf60000>; + }; + + partition@1fb0000 { + label = "config_2"; + reg = <0x1fb0000 0x40000>; + read-only; + }; + }; + }; +}; + +&mdio { + ethphy0: ethernet-phy@0 { + reg = <0>; + }; +}; + +&gmac0 { + nvmem-cells = <&macaddr_factory_4>; + nvmem-cell-names = "mac-address"; +}; + +&gmac1 { + status = "okay"; + label = "wan"; + phy-handle = <ðphy0>; + + nvmem-cells = <&macaddr_factory_28>; + nvmem-cell-names = "mac-address"; +}; + +&switch0 { + ports { + port@1 { + status = "okay"; + label = "lan1"; + }; + + port@2 { + status = "okay"; + label = "lan2"; + }; + + port@3 { + status = "okay"; + label = "lan3"; + }; + + port@4 { + status = "okay"; + label = "lan4"; + }; + }; +}; + +&pcie { + status = "okay"; +}; + +&pcie0 { + wifi@0,0 { + compatible = "mediatek,mt76"; + reg = <0x0000 0 0 0 0>; + mediatek,mtd-eeprom = <&factory 0x0000>; + ieee80211-freq-limit = <2400000 2500000>; + }; +}; + +&pcie1 { + wifi@0,0 { + compatible = "mediatek,mt76"; + reg = <0x0000 0 0 0 0>; + mediatek,mtd-eeprom = <&factory 0x0400>; + ieee80211-freq-limit = <5000000 6000000>; + }; +}; + +&factory { + compatible = "nvmem-cells"; + #address-cells = <1>; + #size-cells = <1>; + + macaddr_factory_4: macaddr@4 { + reg = <0x4 0x6>; + }; + + macaddr_factory_28: macaddr@28 { + reg = <0x28 0x6>; + }; +}; diff --git a/target/linux/ramips/image/mt7621.mk b/target/linux/ramips/image/mt7621.mk index 81ee50e0af..943fc62ecd 100644 --- a/target/linux/ramips/image/mt7621.mk +++ b/target/linux/ramips/image/mt7621.mk @@ -1216,6 +1216,20 @@ define Device/jcg_y2 endef TARGET_DEVICES += jcg_y2 +define Device/keenetic_kn-3010 + $(Device/dsa-migration) + $(Device/uimage-lzma-loader) + BLOCKSIZE := 64k + IMAGE_SIZE := 31488k + DEVICE_VENDOR := Keenetic + DEVICE_MODEL := KN-3010 + DEVICE_PACKAGES := kmod-mt7603 kmod-mt7615e kmod-mt7663-firmware-ap + IMAGES += factory.bin + IMAGE/factory.bin := $$(sysupgrade_bin) | pad-to $$$$(BLOCKSIZE) | \ + check-size | zyimage -d 8400912 -v "KN-3010" +endef +TARGET_DEVICES += keenetic_kn-3010 + define Device/lenovo_newifi-d1 $(Device/dsa-migration) $(Device/uimage-lzma-loader) diff --git a/target/linux/ramips/mt7621/base-files/etc/board.d/01_leds b/target/linux/ramips/mt7621/base-files/etc/board.d/01_leds index 9bac8228a0..42e50451e3 100644 --- a/target/linux/ramips/mt7621/base-files/etc/board.d/01_leds +++ b/target/linux/ramips/mt7621/base-files/etc/board.d/01_leds @@ -75,6 +75,9 @@ dlink,dir-882-r1) gnubee,gb-pc2) ucidef_set_led_netdev "ethyellow" "ethyellow" "orange:ethyellow" "ethyellow" "link tx rx" ;; +keenetic,kn-3010) + ucidef_set_led_netdev "internet" "internet" "green:internet" "wan" + ;; linksys,e5600) ucidef_set_led_netdev "wan" "wan link" "blue:wan" "wan" "link" ;; From 0d375de10dac3160c65c264bb91a5137ef4c0817 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20Wei=C3=9Fschuh?= Date: Wed, 9 Nov 2022 05:17:00 +0100 Subject: [PATCH 19/21] tools/patch: apply patch for EACCES on xattr copy MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When compiling OpenWRT on a compressed btrfs volume the build fails in libtool. The file `libltdl/config/ltmain.m4sh` from `libtool-2.4.2.tar.xz` is missing write permissions, therefore patch falls back to copying the file and patching that. During this patch tries to preserve all file attribute on the new copy. However the attribute `btrfs.compression` is privileged and btrfs return EACCES. While patch ignores multiple other error codes during the copy of xattr copy it is not prepared for EACCES and aborts. EACCES should be ignored the same way as the other errors. Build log: ``` ... Applying ./patches/000-relocatable.patch using plaintext: patching file libltdl/config/general.m4sh patching file libtoolize.in patching file libtoolize.m4sh patching file libltdl/m4/libtool.m4 Applying ./patches/100-libdir-fixes.patch using plaintext: patching file libltdl/config/ltmain.m4sh File libltdl/config/ltmain.sh is read-only; trying to patch anyway patching file libltdl/config/ltmain.sh patch: setting attribute btrfs.compression for btrfs.compression: Permission denied Patch failed! Please fix ./patches/100-libdir-fixes.patch! ``` Link: https://lists.gnu.org/archive/html/bug-patch/2022-11/msg00000.html Signed-off-by: Thomas Weißschuh --- tools/patch/Makefile | 2 +- ...l-hard-on-EACCES-when-copying-xattrs.patch | 33 +++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 tools/patch/patches/070-don-t-fail-hard-on-EACCES-when-copying-xattrs.patch diff --git a/tools/patch/Makefile b/tools/patch/Makefile index bac7d5692c..957fe6e309 100644 --- a/tools/patch/Makefile +++ b/tools/patch/Makefile @@ -8,7 +8,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=patch PKG_VERSION:=2.7.6 -PKG_RELEASE:=6 +PKG_RELEASE:=7 PKG_CPE_ID:=cpe:/a:gnu:patch PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz diff --git a/tools/patch/patches/070-don-t-fail-hard-on-EACCES-when-copying-xattrs.patch b/tools/patch/patches/070-don-t-fail-hard-on-EACCES-when-copying-xattrs.patch new file mode 100644 index 0000000000..e19a9c0845 --- /dev/null +++ b/tools/patch/patches/070-don-t-fail-hard-on-EACCES-when-copying-xattrs.patch @@ -0,0 +1,33 @@ +From f42cbe1a91a3a6f79d1eec594ce7c72aec79179b Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Thomas=20Wei=C3=9Fschuh?= +Date: Wed, 9 Nov 2022 05:08:22 +0100 +Subject: [PATCH] don't fail hard on EACCES when copying xattrs + +On btrfs the xattr "btrfs.compressed" requires privileges to set, +otherwise EACCES is returned. +When patch tries to do copy this attribute it receives the error and +aborts. +--- + src/util.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/src/util.c ++++ b/src/util.c +@@ -182,7 +182,7 @@ copy_attr_error (struct error_context *c + int err = errno; + va_list ap; + +- if (err != ENOSYS && err != ENOTSUP && err != EPERM) ++ if (err != ENOSYS && err != ENOTSUP && err != EPERM && err != EACCES) + { + /* use verror module to print error message */ + va_start (ap, fmt); +@@ -284,7 +284,7 @@ set_file_attributes (char const *to, enu + } + if (attr & FA_XATTRS) + if (copy_attr (from, to) != 0 +- && errno != ENOSYS && errno != ENOTSUP && errno != EPERM) ++ && errno != ENOSYS && errno != ENOTSUP && errno != EPERM && errno != EACCES) + fatal_exit (0); + if (attr & FA_MODE) + { From 9b482ee22f3f509880d2420652392971eef3211d Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Sat, 19 Nov 2022 19:04:08 +0100 Subject: [PATCH 20/21] kernel: add more fixes for mtk_eth_soc Fix corner cases in DSA offload Add refcounting fix for flow offload Fix VLAN untagging issue on MT7986 Signed-off-by: Felix Fietkau --- ...ort-for-DSA-rx-offloading-via-metada.patch | 7 +- ..._eth_soc-fix-VLAN-rx-hardware-accele.patch | 2 +- ..._eth_soc-fix-flow_offload-related-re.patch | 52 +++++ ..._eth_soc-drop-generic-vlan-rx-offloa.patch | 193 ++++++++++++++++++ ..._eth_soc-implement-Clause-45-MDIO-ac.patch | 2 +- 5 files changed, 251 insertions(+), 5 deletions(-) create mode 100644 target/linux/generic/pending-5.15/732-13-net-ethernet-mtk_eth_soc-fix-flow_offload-related-re.patch create mode 100644 target/linux/generic/pending-5.15/732-14-net-ethernet-mtk_eth_soc-drop-generic-vlan-rx-offloa.patch diff --git a/target/linux/generic/pending-5.15/732-08-net-dsa-add-support-for-DSA-rx-offloading-via-metada.patch b/target/linux/generic/pending-5.15/732-08-net-dsa-add-support-for-DSA-rx-offloading-via-metada.patch index f6799f2949..0478cb528e 100644 --- a/target/linux/generic/pending-5.15/732-08-net-dsa-add-support-for-DSA-rx-offloading-via-metada.patch +++ b/target/linux/generic/pending-5.15/732-08-net-dsa-add-support-for-DSA-rx-offloading-via-metada.patch @@ -12,11 +12,12 @@ Signed-off-by: Felix Fietkau --- a/net/core/flow_dissector.c +++ b/net/core/flow_dissector.c -@@ -941,11 +941,13 @@ bool __skb_flow_dissect(const struct net +@@ -940,12 +940,14 @@ bool __skb_flow_dissect(const struct net + #if IS_ENABLED(CONFIG_NET_DSA) if (unlikely(skb->dev && netdev_uses_dsa(skb->dev) && proto == htons(ETH_P_XDSA))) { - const struct dsa_device_ops *ops; + struct metadata_dst *md_dst = skb_metadata_dst(skb); + const struct dsa_device_ops *ops; int offset = 0; ops = skb->dev->dsa_ptr->tag_ops; @@ -53,7 +54,7 @@ Signed-off-by: Felix Fietkau + if (md_dst && md_dst->type == METADATA_HW_PORT_MUX) { + unsigned int port = md_dst->u.port_info.port_id; + -+ skb_dst_set(skb, NULL); ++ skb_dst_drop(skb); + if (!skb_has_extensions(skb)) + skb->slow_gro = 0; + diff --git a/target/linux/generic/pending-5.15/732-09-net-ethernet-mtk_eth_soc-fix-VLAN-rx-hardware-accele.patch b/target/linux/generic/pending-5.15/732-09-net-ethernet-mtk_eth_soc-fix-VLAN-rx-hardware-accele.patch index 8a20202131..c109067802 100644 --- a/target/linux/generic/pending-5.15/732-09-net-ethernet-mtk_eth_soc-fix-VLAN-rx-hardware-accele.patch +++ b/target/linux/generic/pending-5.15/732-09-net-ethernet-mtk_eth_soc-fix-VLAN-rx-hardware-accele.patch @@ -109,7 +109,7 @@ Signed-off-by: Felix Fietkau - int err; + int i, err; + -+ if (mtk_uses_dsa(dev)) { ++ if (mtk_uses_dsa(dev) && !eth->prog) { + for (i = 0; i < ARRAY_SIZE(eth->dsa_meta); i++) { + struct metadata_dst *md_dst = eth->dsa_meta[i]; + diff --git a/target/linux/generic/pending-5.15/732-13-net-ethernet-mtk_eth_soc-fix-flow_offload-related-re.patch b/target/linux/generic/pending-5.15/732-13-net-ethernet-mtk_eth_soc-fix-flow_offload-related-re.patch new file mode 100644 index 0000000000..0664e0106f --- /dev/null +++ b/target/linux/generic/pending-5.15/732-13-net-ethernet-mtk_eth_soc-fix-flow_offload-related-re.patch @@ -0,0 +1,52 @@ +From: Felix Fietkau +Date: Thu, 17 Nov 2022 11:58:21 +0100 +Subject: [PATCH] net: ethernet: mtk_eth_soc: fix flow_offload related refcount + bug + +Since we call flow_block_cb_decref on FLOW_BLOCK_UNBIND, we need to call +flow_block_cb_incref unconditionally, even for a newly allocated cb. +Fixes a use-after-free bug + +Fixes: 502e84e2382d ("net: ethernet: mtk_eth_soc: add flow offloading support") +Signed-off-by: Felix Fietkau +--- + +--- a/drivers/net/ethernet/mediatek/mtk_ppe_offload.c ++++ b/drivers/net/ethernet/mediatek/mtk_ppe_offload.c +@@ -561,6 +561,7 @@ mtk_eth_setup_tc_block(struct net_device + struct mtk_eth *eth = mac->hw; + static LIST_HEAD(block_cb_list); + struct flow_block_cb *block_cb; ++ bool register_block = false; + flow_setup_cb_t *cb; + + if (!eth->soc->offload_version) +@@ -575,16 +576,20 @@ mtk_eth_setup_tc_block(struct net_device + switch (f->command) { + case FLOW_BLOCK_BIND: + block_cb = flow_block_cb_lookup(f->block, cb, dev); +- if (block_cb) { +- flow_block_cb_incref(block_cb); +- return 0; ++ if (!block_cb) { ++ block_cb = flow_block_cb_alloc(cb, dev, dev, NULL); ++ if (IS_ERR(block_cb)) ++ return PTR_ERR(block_cb); ++ ++ register_block = true; + } +- block_cb = flow_block_cb_alloc(cb, dev, dev, NULL); +- if (IS_ERR(block_cb)) +- return PTR_ERR(block_cb); + +- flow_block_cb_add(block_cb, f); +- list_add_tail(&block_cb->driver_list, &block_cb_list); ++ flow_block_cb_incref(block_cb); ++ ++ if (register_block) { ++ flow_block_cb_add(block_cb, f); ++ list_add_tail(&block_cb->driver_list, &block_cb_list); ++ } + return 0; + case FLOW_BLOCK_UNBIND: + block_cb = flow_block_cb_lookup(f->block, cb, dev); diff --git a/target/linux/generic/pending-5.15/732-14-net-ethernet-mtk_eth_soc-drop-generic-vlan-rx-offloa.patch b/target/linux/generic/pending-5.15/732-14-net-ethernet-mtk_eth_soc-drop-generic-vlan-rx-offloa.patch new file mode 100644 index 0000000000..4339321a96 --- /dev/null +++ b/target/linux/generic/pending-5.15/732-14-net-ethernet-mtk_eth_soc-drop-generic-vlan-rx-offloa.patch @@ -0,0 +1,193 @@ +From: Felix Fietkau +Date: Sun, 20 Nov 2022 23:01:00 +0100 +Subject: [PATCH] net: ethernet: mtk_eth_soc: drop generic vlan rx offload, + only use DSA untagging + +Through testing I found out that hardware vlan rx offload support seems to +have some hardware issues. At least when using multiple MACs and when receiving +tagged packets on the secondary MAC, the hardware can sometimes start to emit +wrong tags on the first MAC as well. + +In order to avoid such issues, drop the feature configuration and use the +offload feature only for DSA hardware untagging on MT7621/MT7622 devices which +only use one MAC. + +Signed-off-by: Felix Fietkau +--- + +--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c ++++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c +@@ -1993,29 +1993,16 @@ static int mtk_poll_rx(struct napi_struc + if (reason == MTK_PPE_CPU_REASON_HIT_UNBIND_RATE_REACHED) + mtk_ppe_check_skb(eth->ppe[0], skb, hash); + +- if (netdev->features & NETIF_F_HW_VLAN_CTAG_RX) { +- if (MTK_HAS_CAPS(eth->soc->caps, MTK_NETSYS_V2)) { +- if (trxd.rxd3 & RX_DMA_VTAG_V2) +- __vlan_hwaccel_put_tag(skb, +- htons(RX_DMA_VPID(trxd.rxd4)), +- RX_DMA_VID(trxd.rxd4)); +- } else if (trxd.rxd2 & RX_DMA_VTAG) { +- __vlan_hwaccel_put_tag(skb, htons(RX_DMA_VPID(trxd.rxd3)), +- RX_DMA_VID(trxd.rxd3)); +- } +- } +- + /* When using VLAN untagging in combination with DSA, the + * hardware treats the MTK special tag as a VLAN and untags it. + */ +- if (skb_vlan_tag_present(skb) && netdev_uses_dsa(netdev)) { +- unsigned int port = ntohs(skb->vlan_proto) & GENMASK(2, 0); ++ if (!MTK_HAS_CAPS(eth->soc->caps, MTK_NETSYS_V2) && ++ (trxd.rxd2 & RX_DMA_VTAG) && netdev_uses_dsa(netdev)) { ++ unsigned int port = RX_DMA_VPID(trxd.rxd3) & GENMASK(2, 0); + + if (port < ARRAY_SIZE(eth->dsa_meta) && + eth->dsa_meta[port]) + skb_dst_set_noref(skb, ð->dsa_meta[port]->dst); +- +- __vlan_hwaccel_clear_tag(skb); + } + + skb_record_rx_queue(skb, 0); +@@ -2832,29 +2819,11 @@ static netdev_features_t mtk_fix_feature + + static int mtk_set_features(struct net_device *dev, netdev_features_t features) + { +- struct mtk_mac *mac = netdev_priv(dev); +- struct mtk_eth *eth = mac->hw; + netdev_features_t diff = dev->features ^ features; +- int i; + + if ((diff & NETIF_F_LRO) && !(features & NETIF_F_LRO)) + mtk_hwlro_netdev_disable(dev); + +- /* Set RX VLAN offloading */ +- if (!(diff & NETIF_F_HW_VLAN_CTAG_RX)) +- return 0; +- +- mtk_w32(eth, !!(features & NETIF_F_HW_VLAN_CTAG_RX), +- MTK_CDMP_EG_CTRL); +- +- /* sync features with other MAC */ +- for (i = 0; i < MTK_MAC_COUNT; i++) { +- if (!eth->netdev[i] || eth->netdev[i] == dev) +- continue; +- eth->netdev[i]->features &= ~NETIF_F_HW_VLAN_CTAG_RX; +- eth->netdev[i]->features |= features & NETIF_F_HW_VLAN_CTAG_RX; +- } +- + return 0; + } + +@@ -3153,30 +3122,6 @@ static int mtk_open(struct net_device *d + struct mtk_eth *eth = mac->hw; + int i, err; + +- if (mtk_uses_dsa(dev) && !eth->prog) { +- for (i = 0; i < ARRAY_SIZE(eth->dsa_meta); i++) { +- struct metadata_dst *md_dst = eth->dsa_meta[i]; +- +- if (md_dst) +- continue; +- +- md_dst = metadata_dst_alloc(0, METADATA_HW_PORT_MUX, +- GFP_KERNEL); +- if (!md_dst) +- return -ENOMEM; +- +- md_dst->u.port_info.port_id = i; +- eth->dsa_meta[i] = md_dst; +- } +- } else { +- /* Hardware special tag parsing needs to be disabled if at least +- * one MAC does not use DSA. +- */ +- u32 val = mtk_r32(eth, MTK_CDMP_IG_CTRL); +- val &= ~MTK_CDMP_STAG_EN; +- mtk_w32(eth, val, MTK_CDMP_IG_CTRL); +- } +- + err = phylink_of_phy_connect(mac->phylink, mac->of_node, 0); + if (err) { + netdev_err(dev, "%s: could not attach PHY: %d\n", __func__, +@@ -3215,6 +3160,39 @@ static int mtk_open(struct net_device *d + phylink_start(mac->phylink); + netif_tx_start_all_queues(dev); + ++ if (MTK_HAS_CAPS(eth->soc->caps, MTK_NETSYS_V2)) ++ return 0; ++ ++ if (mtk_uses_dsa(dev) && !eth->prog) { ++ for (i = 0; i < ARRAY_SIZE(eth->dsa_meta); i++) { ++ struct metadata_dst *md_dst = eth->dsa_meta[i]; ++ ++ if (md_dst) ++ continue; ++ ++ md_dst = metadata_dst_alloc(0, METADATA_HW_PORT_MUX, ++ GFP_KERNEL); ++ if (!md_dst) ++ return -ENOMEM; ++ ++ md_dst->u.port_info.port_id = i; ++ eth->dsa_meta[i] = md_dst; ++ } ++ } else { ++ /* Hardware special tag parsing needs to be disabled if at least ++ * one MAC does not use DSA. ++ */ ++ u32 val = mtk_r32(eth, MTK_CDMP_IG_CTRL); ++ val &= ~MTK_CDMP_STAG_EN; ++ mtk_w32(eth, val, MTK_CDMP_IG_CTRL); ++ ++ val = mtk_r32(eth, MTK_CDMQ_IG_CTRL); ++ val &= ~MTK_CDMQ_STAG_EN; ++ mtk_w32(eth, val, MTK_CDMQ_IG_CTRL); ++ ++ mtk_w32(eth, 0, MTK_CDMP_EG_CTRL); ++ } ++ + return 0; + } + +@@ -3503,15 +3481,15 @@ static int mtk_hw_init(struct mtk_eth *e + /* Indicates CDM to parse the MTK special tag from CPU + * which also is working out for untag packets. + */ +- val = mtk_r32(eth, MTK_CDMQ_IG_CTRL); +- mtk_w32(eth, val | MTK_CDMQ_STAG_EN, MTK_CDMQ_IG_CTRL); + if (!MTK_HAS_CAPS(eth->soc->caps, MTK_NETSYS_V2)) { ++ val = mtk_r32(eth, MTK_CDMQ_IG_CTRL); ++ mtk_w32(eth, val | MTK_CDMQ_STAG_EN, MTK_CDMQ_IG_CTRL); ++ + val = mtk_r32(eth, MTK_CDMP_IG_CTRL); + mtk_w32(eth, val | MTK_CDMP_STAG_EN, MTK_CDMP_IG_CTRL); +- } + +- /* Enable RX VLan Offloading */ +- mtk_w32(eth, 1, MTK_CDMP_EG_CTRL); ++ mtk_w32(eth, 1, MTK_CDMP_EG_CTRL); ++ } + + /* set interrupt delays based on current Net DIM sample */ + mtk_dim_rx(ð->rx_dim.work); +@@ -4132,7 +4110,7 @@ static int mtk_add_mac(struct mtk_eth *e + eth->netdev[id]->hw_features |= NETIF_F_LRO; + + eth->netdev[id]->vlan_features = eth->soc->hw_features & +- ~(NETIF_F_HW_VLAN_CTAG_TX | NETIF_F_HW_VLAN_CTAG_RX); ++ ~NETIF_F_HW_VLAN_CTAG_TX; + eth->netdev[id]->features |= eth->soc->hw_features; + eth->netdev[id]->ethtool_ops = &mtk_ethtool_ops; + +--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.h ++++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.h +@@ -48,7 +48,6 @@ + #define MTK_HW_FEATURES (NETIF_F_IP_CSUM | \ + NETIF_F_RXCSUM | \ + NETIF_F_HW_VLAN_CTAG_TX | \ +- NETIF_F_HW_VLAN_CTAG_RX | \ + NETIF_F_SG | NETIF_F_ALL_TSO | \ + NETIF_F_IPV6_CSUM |\ + NETIF_F_HW_TC) diff --git a/target/linux/mediatek/patches-5.15/703-v5.17-net-ethernet-mtk_eth_soc-implement-Clause-45-MDIO-ac.patch b/target/linux/mediatek/patches-5.15/703-v5.17-net-ethernet-mtk_eth_soc-implement-Clause-45-MDIO-ac.patch index 9c8f2746c8..82cd4088c9 100644 --- a/target/linux/mediatek/patches-5.15/703-v5.17-net-ethernet-mtk_eth_soc-implement-Clause-45-MDIO-ac.patch +++ b/target/linux/mediatek/patches-5.15/703-v5.17-net-ethernet-mtk_eth_soc-implement-Clause-45-MDIO-ac.patch @@ -113,7 +113,7 @@ Signed-off-by: David S. Miller --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.h +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.h -@@ -356,9 +356,12 @@ +@@ -355,9 +355,12 @@ #define PHY_IAC_ADDR_MASK GENMASK(24, 20) #define PHY_IAC_ADDR(x) FIELD_PREP(PHY_IAC_ADDR_MASK, (x)) #define PHY_IAC_CMD_MASK GENMASK(19, 18) From e410833bdd6117228a00aad35bbc56de91f7251e Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Mon, 21 Nov 2022 20:43:12 +0100 Subject: [PATCH 21/21] kernel: add a locking fix for netfilter hardware flow offloading Protect the flow block cb list readers against concurrent updates Reported-by: Chad Monroe Signed-off-by: Felix Fietkau --- ...er-nf_flow_table-add-missing-locking.patch | 39 +++++++++++++++++++ ...er-nf_flow_table-add-missing-locking.patch | 39 +++++++++++++++++++ 2 files changed, 78 insertions(+) create mode 100644 target/linux/generic/pending-5.10/706-netfilter-nf_flow_table-add-missing-locking.patch create mode 100644 target/linux/generic/pending-5.15/701-netfilter-nf_flow_table-add-missing-locking.patch diff --git a/target/linux/generic/pending-5.10/706-netfilter-nf_flow_table-add-missing-locking.patch b/target/linux/generic/pending-5.10/706-netfilter-nf_flow_table-add-missing-locking.patch new file mode 100644 index 0000000000..b77d71cc94 --- /dev/null +++ b/target/linux/generic/pending-5.10/706-netfilter-nf_flow_table-add-missing-locking.patch @@ -0,0 +1,39 @@ +From: Felix Fietkau +Date: Sat, 19 Nov 2022 18:48:42 +0100 +Subject: [PATCH] netfilter: nf_flow_table: add missing locking + +nf_flow_table_block_setup and the driver TC_SETUP_FT call can modify the flow +block cb list while they are being traversed elsewhere, causing a crash. +Add a write lock around the calls to protect readers + +Signed-off-by: Felix Fietkau +--- + +--- a/net/netfilter/nf_flow_table_offload.c ++++ b/net/netfilter/nf_flow_table_offload.c +@@ -1015,6 +1015,7 @@ static int nf_flow_table_block_setup(str + struct flow_block_cb *block_cb, *next; + int err = 0; + ++ down_write(&flowtable->flow_block_lock); + switch (cmd) { + case FLOW_BLOCK_BIND: + list_splice(&bo->cb_list, &flowtable->flow_block.cb_list); +@@ -1029,6 +1030,7 @@ static int nf_flow_table_block_setup(str + WARN_ON_ONCE(1); + err = -EOPNOTSUPP; + } ++ up_write(&flowtable->flow_block_lock); + + return err; + } +@@ -1085,7 +1087,9 @@ static int nf_flow_table_offload_cmd(str + + nf_flow_table_block_offload_init(bo, dev_net(dev), cmd, flowtable, + extack); ++ down_write(&flowtable->flow_block_lock); + err = dev->netdev_ops->ndo_setup_tc(dev, TC_SETUP_FT, bo); ++ up_write(&flowtable->flow_block_lock); + if (err < 0) + return err; + diff --git a/target/linux/generic/pending-5.15/701-netfilter-nf_flow_table-add-missing-locking.patch b/target/linux/generic/pending-5.15/701-netfilter-nf_flow_table-add-missing-locking.patch new file mode 100644 index 0000000000..9ff393a8b7 --- /dev/null +++ b/target/linux/generic/pending-5.15/701-netfilter-nf_flow_table-add-missing-locking.patch @@ -0,0 +1,39 @@ +From: Felix Fietkau +Date: Sat, 19 Nov 2022 18:48:42 +0100 +Subject: [PATCH] netfilter: nf_flow_table: add missing locking + +nf_flow_table_block_setup and the driver TC_SETUP_FT call can modify the flow +block cb list while they are being traversed elsewhere, causing a crash. +Add a write lock around the calls to protect readers + +Signed-off-by: Felix Fietkau +--- + +--- a/net/netfilter/nf_flow_table_offload.c ++++ b/net/netfilter/nf_flow_table_offload.c +@@ -1074,6 +1074,7 @@ static int nf_flow_table_block_setup(str + struct flow_block_cb *block_cb, *next; + int err = 0; + ++ down_write(&flowtable->flow_block_lock); + switch (cmd) { + case FLOW_BLOCK_BIND: + list_splice(&bo->cb_list, &flowtable->flow_block.cb_list); +@@ -1088,6 +1089,7 @@ static int nf_flow_table_block_setup(str + WARN_ON_ONCE(1); + err = -EOPNOTSUPP; + } ++ up_write(&flowtable->flow_block_lock); + + return err; + } +@@ -1144,7 +1146,9 @@ static int nf_flow_table_offload_cmd(str + + nf_flow_table_block_offload_init(bo, dev_net(dev), cmd, flowtable, + extack); ++ down_write(&flowtable->flow_block_lock); + err = dev->netdev_ops->ndo_setup_tc(dev, TC_SETUP_FT, bo); ++ up_write(&flowtable->flow_block_lock); + if (err < 0) + return err; +