From df12b9864c364d43d23562296133bfacfff78ae5 Mon Sep 17 00:00:00 2001 From: Hauke Mehrtens Date: Sat, 21 Sep 2024 11:24:40 +0200 Subject: [PATCH 01/11] ath79: Refresh kernel patches Make the patches apply cleanly again. Fixes: 3660ddb8ab6e ("generic: ar8216: remove support for Linux before version 6.1") Signed-off-by: Hauke Mehrtens --- .../patches-6.6/730-ar8216-make-reg-access-atomic.patch | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/target/linux/ath79/patches-6.6/730-ar8216-make-reg-access-atomic.patch b/target/linux/ath79/patches-6.6/730-ar8216-make-reg-access-atomic.patch index 02f763534e43ab..16d90056999ecf 100644 --- a/target/linux/ath79/patches-6.6/730-ar8216-make-reg-access-atomic.patch +++ b/target/linux/ath79/patches-6.6/730-ar8216-make-reg-access-atomic.patch @@ -14,7 +14,7 @@ with interrupts used. --- --- a/drivers/net/phy/ar8216.c +++ b/drivers/net/phy/ar8216.c -@@ -252,6 +252,7 @@ ar8xxx_mii_write32(struct ar8xxx_priv *p +@@ -251,6 +251,7 @@ ar8xxx_mii_write32(struct ar8xxx_priv *p u32 ar8xxx_read(struct ar8xxx_priv *priv, int reg) { @@ -22,7 +22,7 @@ with interrupts used. struct mii_bus *bus = priv->mii_bus; u16 r1, r2, page; u32 val; -@@ -259,11 +260,13 @@ ar8xxx_read(struct ar8xxx_priv *priv, in +@@ -258,11 +259,13 @@ ar8xxx_read(struct ar8xxx_priv *priv, in split_addr((u32) reg, &r1, &r2, &page); mutex_lock(&bus->mdio_lock); @@ -36,7 +36,7 @@ with interrupts used. mutex_unlock(&bus->mdio_lock); return val; -@@ -272,17 +275,20 @@ ar8xxx_read(struct ar8xxx_priv *priv, in +@@ -271,17 +274,20 @@ ar8xxx_read(struct ar8xxx_priv *priv, in void ar8xxx_write(struct ar8xxx_priv *priv, int reg, u32 val) { From e67aa1d5bf881bb4eba56efb06afc4ad514b0462 Mon Sep 17 00:00:00 2001 From: Mieczyslaw Nalewaj Date: Sat, 21 Sep 2024 09:19:11 +0200 Subject: [PATCH 02/11] packages: remove remnants of kernels below 6.6 Remove remnants of kernels below 6.6. Signed-off-by: Mieczyslaw Nalewaj Link: https://github.com/openwrt/openwrt/pull/16432 Signed-off-by: Robert Marko --- include/netfilter.mk | 4 ---- package/kernel/linux/modules/can.mk | 16 ++++--------- package/kernel/linux/modules/crypto.mk | 24 +++++++------------ package/kernel/linux/modules/fs.mk | 10 ++++---- package/kernel/linux/modules/hwmon.mk | 2 +- package/kernel/linux/modules/iio.mk | 2 +- package/kernel/linux/modules/input.mk | 2 +- package/kernel/linux/modules/netdevices.mk | 10 ++++---- package/kernel/linux/modules/netfilter.mk | 27 +-------------------- package/kernel/linux/modules/netsupport.mk | 5 ++-- package/kernel/linux/modules/nls.mk | 1 - package/kernel/linux/modules/other.mk | 2 +- package/kernel/linux/modules/usb.mk | 3 +-- package/kernel/linux/modules/video.mk | 28 ++++++++++------------ package/kernel/linux/modules/virt.mk | 5 ++-- package/network/utils/iptables/Makefile | 17 ------------- target/linux/armsr/modules.mk | 2 +- 17 files changed, 47 insertions(+), 113 deletions(-) diff --git a/include/netfilter.mk b/include/netfilter.mk index 1b7224bc8cfc32..a6d6dd75b871ee 100644 --- a/include/netfilter.mk +++ b/include/netfilter.mk @@ -131,9 +131,6 @@ $(eval $(call nf_add,IPT_IPOPT,CONFIG_NETFILTER_XT_TARGET_HL, $(P_XT)xt_HL)) # iprange $(eval $(call nf_add,IPT_IPRANGE,CONFIG_NETFILTER_XT_MATCH_IPRANGE, $(P_XT)xt_iprange)) -#clusterip -$(eval $(call nf_add,IPT_CLUSTERIP,CONFIG_IP_NF_TARGET_CLUSTERIP, $(P_V4)ipt_CLUSTERIP)) - # ipsec $(eval $(call nf_add,IPT_IPSEC,CONFIG_IP_NF_MATCH_AH, $(P_V4)ipt_ah)) $(eval $(call nf_add,IPT_IPSEC,CONFIG_NETFILTER_XT_MATCH_ESP, $(P_XT)xt_esp)) @@ -371,7 +368,6 @@ IPT_BUILTIN += $(IPT_FLOW-y) $(IPT_FLOW-m) IPT_BUILTIN += $(IPT_IPOPT-y) IPT_BUILTIN += $(IPT_IPRANGE-y) IPT_BUILTIN += $(IPT_CLUSTER-y) -IPT_BUILTIN += $(IPT_CLUSTERIP-y) IPT_BUILTIN += $(IPT_IPSEC-y) IPT_BUILTIN += $(IPT_IPV6-y) $(IPT_IPV6-m) IPT_BUILTIN += $(NF_NAT-y) diff --git a/package/kernel/linux/modules/can.mk b/package/kernel/linux/modules/can.mk index 603976ef5f10ff..c86d02d8deeab0 100644 --- a/package/kernel/linux/modules/can.mk +++ b/package/kernel/linux/modules/can.mk @@ -120,9 +120,7 @@ $(eval $(call KernelPackage,can-c-can-platform)) define KernelPackage/can-flexcan TITLE:=Support for Freescale FLEXCAN based chips KCONFIG:=CONFIG_CAN_FLEXCAN - FILES:= \ - $(LINUX_DIR)/drivers/net/can/flexcan.ko@lt5.17 \ - $(LINUX_DIR)/drivers/net/can/flexcan/flexcan.ko@ge5.17 + FILES:=$(LINUX_DIR)/drivers/net/can/flexcan/flexcan.ko AUTOLOAD:=$(call AutoProbe,flexcan) $(call AddDepends/can,@TARGET_imx) endef @@ -185,9 +183,7 @@ $(eval $(call KernelPackage,can-raw)) define KernelPackage/can-slcan TITLE:=Serial / USB serial CAN Adaptors (slcan) KCONFIG:=CONFIG_CAN_SLCAN - FILES:= \ - $(LINUX_DIR)/drivers/net/can/slcan.ko@lt6.0 \ - $(LINUX_DIR)/drivers/net/can/slcan/slcan.ko@ge6.0 + FILES:=$(LINUX_DIR)/drivers/net/can/slcan/slcan.ko AUTOLOAD:=$(call AutoProbe,slcan) $(call AddDepends/can) endef @@ -235,12 +231,8 @@ $(eval $(call KernelPackage,can-usb-ems)) define KernelPackage/can-usb-esd TITLE:=ESD USB/2 CAN/USB interface - KCONFIG:= \ - CONFIG_CAN_ESD_USB2@lt6.0 \ - CONFIG_CAN_ESD_USB@ge6.0 - FILES:= \ - $(LINUX_DIR)/drivers/net/can/usb/esd_usb2.ko@lt6.0 \ - $(LINUX_DIR)/drivers/net/can/usb/esd_usb.ko@ge6.0 + KCONFIG:=CONFIG_CAN_ESD_USB + FILES:=$(LINUX_DIR)/drivers/net/can/usb/esd_usb.ko AUTOLOAD:=$(call AutoProbe,esd_usb2 esd_usb) $(call AddDepends/can,+kmod-usb-core) endef diff --git a/package/kernel/linux/modules/crypto.mk b/package/kernel/linux/modules/crypto.mk index 43330bf0642e2c..ce221635470302 100644 --- a/package/kernel/linux/modules/crypto.mk +++ b/package/kernel/linux/modules/crypto.mk @@ -39,11 +39,8 @@ define KernelPackage/crypto-aead TITLE:=CryptoAPI AEAD support KCONFIG:= \ CONFIG_CRYPTO_AEAD \ - CONFIG_CRYPTO_AEAD2 \ - CONFIG_CRYPTO_GENIV@lt6.6 - FILES:= \ - $(LINUX_DIR)/crypto/aead.ko \ - $(LINUX_DIR)/crypto/geniv.ko@lt6.6 + CONFIG_CRYPTO_AEAD2 + FILES:=$(LINUX_DIR)/crypto/aead.ko AUTOLOAD:=$(call AutoLoad,09,aead,1) $(call AddDepends/crypto, +kmod-crypto-null) endef @@ -243,7 +240,7 @@ $(eval $(call KernelPackage,crypto-ecdh)) define KernelPackage/crypto-echainiv TITLE:=Encrypted Chain IV Generator - DEPENDS:=+kmod-crypto-aead +LINUX_6_6:kmod-crypto-geniv + DEPENDS:=+kmod-crypto-aead +kmod-crypto-geniv KCONFIG:=CONFIG_CRYPTO_ECHAINIV FILES:=$(LINUX_DIR)/crypto/echainiv.ko AUTOLOAD:=$(call AutoLoad,09,echainiv) @@ -305,9 +302,7 @@ define KernelPackage/crypto-gf128 KCONFIG:= \ CONFIG_CRYPTO_GF128MUL \ CONFIG_CRYPTO_LIB_GF128MUL - FILES:= \ - $(LINUX_DIR)/crypto/gf128mul.ko@lt6.2 \ - $(LINUX_DIR)/lib/crypto/gf128mul.ko@ge6.2 + FILES:=$(LINUX_DIR)/lib/crypto/gf128mul.ko AUTOLOAD:=$(call AutoLoad,09,gf128mul) $(call AddDepends/crypto) endef @@ -863,8 +858,7 @@ define KernelPackage/crypto-rsa KCONFIG:= CONFIG_CRYPTO_RSA HIDDEN:=1 FILES:= \ - $(LINUX_DIR)/lib/mpi/mpi.ko@lt6.5 \ - $(LINUX_DIR)/lib/crypto/mpi/mpi.ko@ge6.5 \ + $(LINUX_DIR)/lib/crypto/mpi/mpi.ko \ $(LINUX_DIR)/crypto/akcipher.ko \ $(LINUX_DIR)/crypto/rsa_generic.ko AUTOLOAD:=$(call AutoLoad,10,rsa_generic) @@ -888,7 +882,7 @@ $(eval $(call KernelPackage,crypto-rmd160)) define KernelPackage/crypto-rng TITLE:=CryptoAPI random number generation - DEPENDS:=+kmod-crypto-hash +kmod-crypto-hmac +kmod-crypto-sha512 +LINUX_6_6:kmod-crypto-sha3 + DEPENDS:=+kmod-crypto-hash +kmod-crypto-hmac +kmod-crypto-sha512 +kmod-crypto-sha3 KCONFIG:= \ CONFIG_CRYPTO_DRBG \ CONFIG_CRYPTO_DRBG_HMAC=y \ @@ -910,7 +904,7 @@ $(eval $(call KernelPackage,crypto-rng)) define KernelPackage/crypto-geniv TITLE:=CryptoAPI Shared IV generator HIDDEN:=1 - DEPENDS:=+kmod-crypto-rng +kmod-crypto-aead @LINUX_6_6 + DEPENDS:=+kmod-crypto-rng +kmod-crypto-aead KCONFIG:=CONFIG_CRYPTO_GENIV FILES:=$(LINUX_DIR)/crypto/geniv.ko AUTOLOAD:=$(call AutoLoad,09,geniv) @@ -922,7 +916,7 @@ $(eval $(call KernelPackage,crypto-geniv)) define KernelPackage/crypto-seqiv TITLE:=CryptoAPI Sequence Number IV Generator - DEPENDS:=+kmod-crypto-aead +kmod-crypto-rng +LINUX_6_6:kmod-crypto-geniv + DEPENDS:=+kmod-crypto-aead +kmod-crypto-rng +kmod-crypto-geniv KCONFIG:=CONFIG_CRYPTO_SEQIV FILES:=$(LINUX_DIR)/crypto/seqiv.ko AUTOLOAD:=$(call AutoLoad,09,seqiv) @@ -1137,7 +1131,7 @@ $(eval $(call KernelPackage,crypto-test)) define KernelPackage/crypto-user TITLE:=CryptoAPI userspace interface - DEPENDS:=+kmod-crypto-hash +kmod-crypto-manager +LINUX_6_6:kmod-crypto-rng + DEPENDS:=+kmod-crypto-hash +kmod-crypto-manager +kmod-crypto-rng KCONFIG:= \ CONFIG_CRYPTO_USER \ CONFIG_CRYPTO_USER_API \ diff --git a/package/kernel/linux/modules/fs.mk b/package/kernel/linux/modules/fs.mk index 7d3180febf2fce..6d96f539158986 100644 --- a/package/kernel/linux/modules/fs.mk +++ b/package/kernel/linux/modules/fs.mk @@ -87,7 +87,7 @@ define KernelPackage/fs-smbfs-common SUBMENU:=$(FS_MENU) TITLE:=SMBFS common dependencies support HIDDEN:=1 - DEPENDS:=+LINUX_6_6:kmod-fs-netfs +LINUX_6_6:kmod-nls-ucs2-utils + DEPENDS:=+kmod-fs-netfs +kmod-nls-ucs2-utils KCONFIG:=\ CONFIG_SMBFS FILES:= \ @@ -272,8 +272,8 @@ define KernelPackage/fs-fscache CONFIG_CACHEFILES \ CONFIG_CACHEFILES_DEBUG=n \ CONFIG_CACHEFILES_HISTOGRAM=n \ - CONFIG_CACHEFILES_ERROR_INJECTION=n@ge5.17 \ - CONFIG_CACHEFILES_ONDEMAND=n@ge5.19 + CONFIG_CACHEFILES_ERROR_INJECTION=n \ + CONFIG_CACHEFILES_ONDEMAND=n FILES:= \ $(LINUX_DIR)/fs/fscache/fscache.ko \ $(LINUX_DIR)/fs/cachefiles/cachefiles.ko @@ -340,7 +340,7 @@ define KernelPackage/fs-jfs KCONFIG:=CONFIG_JFS_FS FILES:=$(LINUX_DIR)/fs/jfs/jfs.ko AUTOLOAD:=$(call AutoLoad,30,jfs,1) - DEPENDS:=+LINUX_6_6:kmod-nls-ucs2-utils + DEPENDS:=+kmod-nls-ucs2-utils $(call AddDepends/nls) endef @@ -708,7 +708,7 @@ define KernelPackage/pstore CONFIG_PSTORE_DEFLATE_COMPRESS_DEFAULT=y FILES:= $(LINUX_DIR)/fs/pstore/pstore.ko AUTOLOAD:=$(call AutoLoad,30,pstore,1) - DEPENDS:=+LINUX_6_6:kmod-lib-zlib-deflate +LINUX_6_6:kmod-lib-zlib-inflate + DEPENDS:=+kmod-lib-zlib-deflate +kmod-lib-zlib-inflate endef define KernelPackage/pstore/description diff --git a/package/kernel/linux/modules/hwmon.mk b/package/kernel/linux/modules/hwmon.mk index dc921f8fca8582..ae9b35114b14ee 100644 --- a/package/kernel/linux/modules/hwmon.mk +++ b/package/kernel/linux/modules/hwmon.mk @@ -34,7 +34,7 @@ define KernelPackage/hwmon-ad7418 KCONFIG:=CONFIG_SENSORS_AD7418 FILES:=$(LINUX_DIR)/drivers/hwmon/ad7418.ko AUTOLOAD:=$(call AutoLoad,60,ad7418 ad7418) - $(call AddDepends/hwmon,+kmod-i2c-core +LINUX_6_6:kmod-regmap-core) + $(call AddDepends/hwmon,+kmod-i2c-core +kmod-regmap-core) endef define KernelPackage/hwmon-ad7418/description diff --git a/package/kernel/linux/modules/iio.mk b/package/kernel/linux/modules/iio.mk index 7cf0952db3058c..e46544b79cc65c 100644 --- a/package/kernel/linux/modules/iio.mk +++ b/package/kernel/linux/modules/iio.mk @@ -383,7 +383,7 @@ $(eval $(call KernelPackage,iio-st_accel-spi)) define KernelPackage/iio-lsm6dsx - DEPENDS:=+kmod-iio-kfifo-buf +kmod-regmap-core +LINUX_6_6:kmod-industrialio-triggered-buffer + DEPENDS:=+kmod-iio-kfifo-buf +kmod-regmap-core +kmod-industrialio-triggered-buffer TITLE:=ST LSM6DSx driver for IMU MEMS sensors KCONFIG:=CONFIG_IIO_ST_LSM6DSX FILES:=$(LINUX_DIR)/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx.ko diff --git a/package/kernel/linux/modules/input.mk b/package/kernel/linux/modules/input.mk index 89fba2900552a4..4eafc7d6b153e2 100644 --- a/package/kernel/linux/modules/input.mk +++ b/package/kernel/linux/modules/input.mk @@ -179,7 +179,7 @@ $(eval $(call KernelPackage,input-touchscreen-ads7846)) define KernelPackage/input-touchscreen-edt-ft5x06 SUBMENU:=$(INPUT_MODULES_MENU) TITLE:=EDT FT5x06 and Focaltech FT6236 based touchscreens - DEPENDS:=+kmod-i2c-core +kmod-input-core +LINUX_6_6:kmod-regmap-i2c + DEPENDS:=+kmod-i2c-core +kmod-input-core +kmod-regmap-i2c KCONFIG:= \ CONFIG_INPUT_TOUCHSCREEN=y \ CONFIG_TOUCHSCREEN_EDT_FT5X06 diff --git a/package/kernel/linux/modules/netdevices.mk b/package/kernel/linux/modules/netdevices.mk index ab5232650c7163..fa837306e6f1bb 100644 --- a/package/kernel/linux/modules/netdevices.mk +++ b/package/kernel/linux/modules/netdevices.mk @@ -363,7 +363,7 @@ define KernelPackage/phy-smsc SUBMENU:=$(NETWORK_DEVICES_MENU) TITLE:=SMSC PHY driver KCONFIG:=CONFIG_SMSC_PHY - DEPENDS:=+kmod-libphy +LINUX_6_6:kmod-lib-crc16 + DEPENDS:=+kmod-libphy +kmod-lib-crc16 FILES:=$(LINUX_DIR)/drivers/net/phy/smsc.ko AUTOLOAD:=$(call AutoProbe,smsc) endef @@ -779,7 +779,7 @@ define KernelPackage/r8169 DEPENDS:=@PCI_SUPPORT +kmod-mii +r8169-firmware +kmod-phy-realtek +kmod-mdio-devres KCONFIG:= \ CONFIG_R8169 \ - CONFIG_R8169_LEDS=y@ge6.6 + CONFIG_R8169_LEDS=y FILES:=$(LINUX_DIR)/drivers/net/ethernet/realtek/r8169.ko AUTOLOAD:=$(call AutoProbe,r8169) endef @@ -1393,7 +1393,7 @@ $(eval $(call KernelPackage,mlx4-core)) define KernelPackage/mlx5-core SUBMENU:=$(NETWORK_DEVICES_MENU) TITLE:=Mellanox ConnectX(R) mlx5 core Network Driver - DEPENDS:=@PCI_SUPPORT +kmod-ptp +kmod-mlxfw +LINUX_6_6:kmod-hwmon-core + DEPENDS:=@PCI_SUPPORT +kmod-ptp +kmod-mlxfw +kmod-hwmon-core FILES:=$(LINUX_DIR)/drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.ko KCONFIG:= CONFIG_MLX5_CORE \ CONFIG_MLX5_CORE_EN=y \ @@ -1674,7 +1674,7 @@ define KernelPackage/wwan TITLE:=WWAN Driver Core KCONFIG:= \ CONFIG_WWAN \ - CONFIG_WWAN_DEBUGFS=y@ge5.17 + CONFIG_WWAN_DEBUGFS=y FILES:=$(LINUX_DIR)/drivers/net/wwan/wwan.ko AUTOLOAD:=$(call AutoProbe,wwan) endef @@ -1769,7 +1769,7 @@ $(eval $(call KernelPackage,atlantic)) define KernelPackage/lan743x SUBMENU:=$(NETWORK_DEVICES_MENU) TITLE:=Microchip LAN743x PCI Express Gigabit Ethernet NIC - DEPENDS:=@PCI_SUPPORT +kmod-ptp +kmod-mdio-devres +!LINUX_6_1:kmod-fixed-phy + DEPENDS:=@PCI_SUPPORT +kmod-ptp +kmod-mdio-devres +kmod-fixed-phy KCONFIG:=CONFIG_LAN743X FILES:=$(LINUX_DIR)/drivers/net/ethernet/microchip/lan743x.ko AUTOLOAD:=$(call AutoProbe,lan743x) diff --git a/package/kernel/linux/modules/netfilter.mk b/package/kernel/linux/modules/netfilter.mk index 42c20a288fe00d..cf66bd8cd8c7ee 100644 --- a/package/kernel/linux/modules/netfilter.mk +++ b/package/kernel/linux/modules/netfilter.mk @@ -818,27 +818,6 @@ endef $(eval $(call KernelPackage,ipt-cluster)) -define KernelPackage/ipt-clusterip - TITLE:=Module for CLUSTERIP - KCONFIG:=$(KCONFIG_IPT_CLUSTERIP) - FILES:=$(foreach mod,$(IPT_CLUSTERIP-m),$(LINUX_DIR)/net/$(mod).ko) - AUTOLOAD:=$(call AutoProbe,$(notdir $(IPT_CLUSTERIP-m))) - $(call AddDepends/ipt,+kmod-nf-conntrack @LINUX_6_1) -endef - -define KernelPackage/ipt-clusterip/description - Netfilter (IPv4-only) module for CLUSTERIP - The CLUSTERIP target allows you to build load-balancing clusters of - network servers without having a dedicated load-balancing - router/server/switch. - - To use it also enable iptables-mod-clusterip - - see `iptables -j CLUSTERIP --help` for more information. -endef - -$(eval $(call KernelPackage,ipt-clusterip)) - define KernelPackage/ipt-extra TITLE:=Extra modules @@ -1197,15 +1176,11 @@ define KernelPackage/nft-offload DEPENDS:=@IPV6 +kmod-nf-flow +kmod-nft-nat KCONFIG:= \ CONFIG_NF_FLOW_TABLE_INET \ - CONFIG_NF_FLOW_TABLE_IPV4@lt5.17 \ - CONFIG_NF_FLOW_TABLE_IPV6@lt5.17 \ CONFIG_NFT_FLOW_OFFLOAD FILES:= \ $(LINUX_DIR)/net/netfilter/nf_flow_table_inet.ko \ - $(LINUX_DIR)/net/ipv4/netfilter/nf_flow_table_ipv4.ko@lt5.17 \ - $(LINUX_DIR)/net/ipv6/netfilter/nf_flow_table_ipv6.ko@lt5.17 \ $(LINUX_DIR)/net/netfilter/nft_flow_offload.ko - AUTOLOAD:=$(call AutoProbe,nf_flow_table_inet nf_flow_table_ipv4@lt5.17 nf_flow_table_ipv6@lt5.17 nft_flow_offload) + AUTOLOAD:=$(call AutoProbe,nf_flow_table_inet nft_flow_offload) endef $(eval $(call KernelPackage,nft-offload)) diff --git a/package/kernel/linux/modules/netsupport.mk b/package/kernel/linux/modules/netsupport.mk index 00dfb98d79f4a0..02d8329720e2e5 100644 --- a/package/kernel/linux/modules/netsupport.mk +++ b/package/kernel/linux/modules/netsupport.mk @@ -910,7 +910,6 @@ $(eval $(call KernelPackage,sched-ipset)) define KernelPackage/sched-mqprio-common SUBMENU:=$(NETWORK_SUPPORT_MENU) TITLE:=mqprio queue common dependencies support - DEPENDS:=@LINUX_6_6 HIDDEN:=1 KCONFIG:=CONFIG_NET_SCH_MQPRIO_LIB FILES:=$(LINUX_DIR)/net/sched/sch_mqprio_lib.ko @@ -926,7 +925,7 @@ $(eval $(call KernelPackage,sched-mqprio-common)) define KernelPackage/sched-mqprio SUBMENU:=$(NETWORK_SUPPORT_MENU) TITLE:=Multi-queue priority scheduler (MQPRIO) - DEPENDS:=+kmod-sched-core +LINUX_6_6:kmod-sched-mqprio-common + DEPENDS:=+kmod-sched-core +kmod-sched-mqprio-common KCONFIG:=CONFIG_NET_SCH_MQPRIO FILES:=$(LINUX_DIR)/net/sched/sch_mqprio.ko AUTOLOAD:=$(call AutoProbe, sch_mqprio) @@ -1361,7 +1360,7 @@ define KernelPackage/9pnet KCONFIG:= \ CONFIG_NET_9P \ CONFIG_NET_9P_DEBUG=n \ - CONFIG_NET_9P_FD=n@ge5.17 + CONFIG_NET_9P_FD=n FILES:= \ $(LINUX_DIR)/net/9p/9pnet.ko AUTOLOAD:=$(call AutoLoad,29,9pnet) diff --git a/package/kernel/linux/modules/nls.mk b/package/kernel/linux/modules/nls.mk index 893ec9c23accf8..e4817af6132cf2 100644 --- a/package/kernel/linux/modules/nls.mk +++ b/package/kernel/linux/modules/nls.mk @@ -344,7 +344,6 @@ $(eval $(call KernelPackage,nls-utf8)) define KernelPackage/nls-ucs2-utils SUBMENU:=Native Language Support TITLE:=UCS-2 common library - DEPENDS+=@LINUX_6_6 HIDDEN:=1 KCONFIG:=CONFIG_NLS_UCS2_UTILS FILES:=$(LINUX_DIR)/fs/nls/nls_ucs2_utils.ko diff --git a/package/kernel/linux/modules/other.mk b/package/kernel/linux/modules/other.mk index 222f8880bd47b1..bbebcf37ec1adb 100644 --- a/package/kernel/linux/modules/other.mk +++ b/package/kernel/linux/modules/other.mk @@ -58,7 +58,7 @@ define KernelPackage/bluetooth $(LINUX_DIR)/drivers/bluetooth/btusb.ko \ $(LINUX_DIR)/drivers/bluetooth/btintel.ko \ $(LINUX_DIR)/drivers/bluetooth/btrtl.ko \ - $(LINUX_DIR)/drivers/bluetooth/btmtk.ko@ge5.17 + $(LINUX_DIR)/drivers/bluetooth/btmtk.ko AUTOLOAD:=$(call AutoProbe,bluetooth rfcomm bnep hidp hci_uart btusb) endef diff --git a/package/kernel/linux/modules/usb.mk b/package/kernel/linux/modules/usb.mk index 9d33bacfc31ff4..7172bdf502375f 100644 --- a/package/kernel/linux/modules/usb.mk +++ b/package/kernel/linux/modules/usb.mk @@ -660,7 +660,6 @@ define KernelPackage/usb-serial-ch348 KCONFIG:=CONFIG_USB_SERIAL_CH348 FILES:=$(LINUX_DIR)/drivers/usb/serial/ch348.ko AUTOLOAD:=$(call AutoProbe,ch348) - DEPENDS:=@LINUX_6_6 $(call AddDepends/usb-serial) endef @@ -1621,7 +1620,7 @@ define KernelPackage/usb-hid-mcp2221 SUBMENU:=$(USB_MENU) TITLE:=Microchip USB 2.0 to I2C/UART Protocol Converter with GPIO KCONFIG:=CONFIG_HID_MCP2221 - DEPENDS:=@GPIO_SUPPORT +kmod-usb-hid +kmod-i2c-core +LINUX_6_6:kmod-iio-core + DEPENDS:=@GPIO_SUPPORT +kmod-usb-hid +kmod-i2c-core +kmod-iio-core FILES:=$(LINUX_DIR)/drivers/hid/hid-mcp2221.ko AUTOLOAD:=$(call AutoProbe,hid-mcp2221) endef diff --git a/package/kernel/linux/modules/video.mk b/package/kernel/linux/modules/video.mk index 8a1c4fdfa36ebf..52fc55bbadd07b 100644 --- a/package/kernel/linux/modules/video.mk +++ b/package/kernel/linux/modules/video.mk @@ -107,7 +107,7 @@ define KernelPackage/fb CONFIG_VT_HW_CONSOLE_BINDING=y FILES:=$(LINUX_DIR)/drivers/video/fbdev/core/fb.ko \ $(LINUX_DIR)/lib/fonts/font.ko \ - $(LINUX_DIR)/drivers/video/fbdev/core/fb_io_fops.ko@ge6.6 + $(LINUX_DIR)/drivers/video/fbdev/core/fb_io_fops.ko AUTOLOAD:=$(call AutoLoad,06,fb font) endef @@ -299,7 +299,7 @@ define KernelPackage/drm-exec SUBMENU:=$(VIDEO_MENU) HIDDEN:=1 TITLE:=Execution context for command submissions - DEPENDS:=@DISPLAY_SUPPORT +kmod-drm @LINUX_6_6 + DEPENDS:=@DISPLAY_SUPPORT +kmod-drm KCONFIG:=CONFIG_DRM_EXEC FILES:=$(LINUX_DIR)/drivers/gpu/drm/drm_exec.ko AUTOLOAD:=$(call AutoProbe,drm_exec) @@ -363,7 +363,7 @@ define KernelPackage/drm-suballoc-helper SUBMENU:=$(VIDEO_MENU) HIDDEN:=1 TITLE:=DRM suballocation helper - DEPENDS:=@DISPLAY_SUPPORT +kmod-drm @LINUX_6_6 + DEPENDS:=@DISPLAY_SUPPORT +kmod-drm KCONFIG:=CONFIG_DRM_SUBALLOC_HELPER FILES:=$(LINUX_DIR)/drivers/gpu/drm/drm_suballoc_helper.ko AUTOLOAD:=$(call AutoProbe,drm_suballoc_helper) @@ -381,7 +381,7 @@ define KernelPackage/drm-amdgpu DEPENDS:=@TARGET_x86||TARGET_loongarch64 @DISPLAY_SUPPORT +kmod-backlight +kmod-drm-ttm \ +kmod-drm-ttm-helper +kmod-drm-kms-helper +kmod-i2c-algo-bit +amdgpu-firmware \ +kmod-drm-display-helper +kmod-drm-buddy +kmod-acpi-video \ - +LINUX_6_6:kmod-drm-exec +LINUX_6_6:kmod-drm-suballoc-helper + +kmod-drm-exec +kmod-drm-suballoc-helper KCONFIG:=CONFIG_DRM_AMDGPU \ CONFIG_DRM_AMDGPU_SI=y \ CONFIG_DRM_AMDGPU_CIK=y \ @@ -389,7 +389,7 @@ define KernelPackage/drm-amdgpu CONFIG_DEBUG_KERNEL_DC=n FILES:=$(LINUX_DIR)/drivers/gpu/drm/amd/amdgpu/amdgpu.ko \ $(LINUX_DIR)/drivers/gpu/drm/scheduler/gpu-sched.ko \ - $(LINUX_DIR)/drivers/gpu/drm/amd/amdxcp/amdxcp.ko@ge6.5 + $(LINUX_DIR)/drivers/gpu/drm/amd/amdxcp/amdxcp.ko AUTOLOAD:=$(call AutoProbe,amdgpu) endef @@ -426,8 +426,7 @@ define KernelPackage/drm-imx CONFIG_DRM_IMX_LDB=n \ CONFIG_DRM_IMX_HDMI=n FILES:= \ - $(LINUX_DIR)/drivers/gpu/drm/imx/imxdrm.ko@lt6.6 \ - $(LINUX_DIR)/drivers/gpu/drm/imx/ipuv3/imxdrm.ko@ge6.6 \ + $(LINUX_DIR)/drivers/gpu/drm/imx/ipuv3/imxdrm.ko \ $(LINUX_DIR)/drivers/gpu/drm/drm_dma_helper.ko \ $(LINUX_DIR)/drivers/gpu/ipu-v3/imx-ipu-v3.ko AUTOLOAD:=$(call AutoLoad,08,imxdrm imx-ipu-v3 imx-ipuv3-crtc) @@ -449,8 +448,7 @@ define KernelPackage/drm-imx-hdmi FILES:= \ $(LINUX_DIR)/drivers/gpu/drm/bridge/synopsys/dw-hdmi.ko \ $(LINUX_DIR)/drivers/gpu/drm/bridge/synopsys/dw-hdmi-ahb-audio.ko \ - $(LINUX_DIR)/drivers/gpu/drm/imx/dw_hdmi-imx.ko@lt6.6 \ - $(LINUX_DIR)/drivers/gpu/drm/imx/ipuv3/dw_hdmi-imx.ko@ge6.6 + $(LINUX_DIR)/drivers/gpu/drm/imx/ipuv3/dw_hdmi-imx.ko AUTOLOAD:=$(call AutoLoad,08,dw-hdmi dw-hdmi-ahb-audio.ko dw_hdmi-imx) endef @@ -474,8 +472,8 @@ define KernelPackage/drm-imx-ldb CONFIG_DRM_PANEL_LVDS=n \ CONFIG_DRM_PANEL_S6E8AA0=n \ CONFIG_DRM_PANEL_SITRONIX_ST7789V=n - FILES:=$(LINUX_DIR)/drivers/gpu/drm/imx/imx-ldb.ko@lt6.6 \ - $(LINUX_DIR)/drivers/gpu/drm/imx/ipuv3/imx-ldb.ko@ge6.6 \ + FILES:= \ + $(LINUX_DIR)/drivers/gpu/drm/imx/ipuv3/imx-ldb.ko \ $(LINUX_DIR)/drivers/gpu/drm/panel/panel-simple.ko AUTOLOAD:=$(call AutoLoad,08,imx-ldb) endef @@ -491,7 +489,7 @@ define KernelPackage/drm-radeon TITLE:=Radeon DRM support DEPENDS:=@TARGET_x86 @DISPLAY_SUPPORT +kmod-backlight +kmod-drm-kms-helper \ +kmod-drm-ttm +kmod-drm-ttm-helper +kmod-i2c-algo-bit +radeon-firmware \ - +kmod-drm-display-helper +kmod-acpi-video +LINUX_6_6:kmod-drm-suballoc-helper + +kmod-drm-display-helper +kmod-acpi-video +kmod-drm-suballoc-helper KCONFIG:=CONFIG_DRM_RADEON FILES:=$(LINUX_DIR)/drivers/gpu/drm/radeon/radeon.ko AUTOLOAD:=$(call AutoProbe,radeon) @@ -606,10 +604,10 @@ $(eval $(call KernelPackage,video-pwc)) define KernelPackage/video-uvc TITLE:=USB Video Class (UVC) support DEPENDS:=@USB_SUPPORT +kmod-usb-core +kmod-video-videobuf2 +kmod-input-core - KCONFIG:= CONFIG_USB_VIDEO_CLASS CONFIG_UVC_COMMON@ge6.3 + KCONFIG:= CONFIG_USB_VIDEO_CLASS CONFIG_UVC_COMMON FILES:=$(LINUX_DIR)/drivers/media/$(V4L2_USB_DIR)/uvc/uvcvideo.ko \ - $(LINUX_DIR)/drivers/media/common/uvc.ko@ge6.3 - AUTOLOAD:=$(call AutoProbe,uvc@ge6.3 uvcvideo) + $(LINUX_DIR)/drivers/media/common/uvc.ko + AUTOLOAD:=$(call AutoProbe,uvc uvcvideo) $(call AddDepends/camera) endef diff --git a/package/kernel/linux/modules/virt.mk b/package/kernel/linux/modules/virt.mk index 4a879f240ebadb..9286ad489cdd21 100644 --- a/package/kernel/linux/modules/virt.mk +++ b/package/kernel/linux/modules/virt.mk @@ -22,7 +22,7 @@ define KernelPackage/kvm-x86 KCONFIG:=\ CONFIG_KVM \ CONFIG_KVM_MMU_AUDIT=n \ - CONFIG_KVM_SMM=y@ge6.6 \ + CONFIG_KVM_SMM=y \ CONFIG_VIRTUALIZATION=y FILES:= $(LINUX_DIR)/arch/$(LINUX_KARCH)/kvm/kvm.ko AUTOLOAD:=$(call AutoProbe,kvm.ko) @@ -85,9 +85,8 @@ define KernelPackage/vfio CONFIG_VFIO_MDEV=n FILES:= \ $(LINUX_DIR)/drivers/vfio/vfio.ko \ - $(LINUX_DIR)/drivers/vfio/vfio_virqfd.ko@lt6.2 \ $(LINUX_DIR)/drivers/vfio/vfio_iommu_type1.ko - AUTOLOAD:=$(call AutoProbe,vfio vfio_iommu_type1 +LINUX_6_1:vfio_virqfd) + AUTOLOAD:=$(call AutoProbe,vfio vfio_iommu_type1) endef define KernelPackage/vfio/description diff --git a/package/network/utils/iptables/Makefile b/package/network/utils/iptables/Makefile index d5511f33c1e4ea..2fc7977038ea5d 100644 --- a/package/network/utils/iptables/Makefile +++ b/package/network/utils/iptables/Makefile @@ -355,22 +355,6 @@ iptables extensions for matching cluster. see `iptables -m cluster --help` for more information. endef -define Package/iptables-mod-clusterip -$(call Package/iptables/Module, +kmod-ipt-clusterip) - TITLE:=Clusterip extension -endef - -define Package/iptables-mod-clusterip/description -iptables extensions for CLUSTERIP. - The CLUSTERIP target allows you to build load-balancing clusters of - network servers without having a dedicated load-balancing - router/server/switch. - - If you select it, it enables kmod-ipt-clusterip. - - see `iptables -j CLUSTERIP --help` for more information. -endef - define Package/iptables-mod-extra $(call Package/iptables/Module, +kmod-ipt-extra) TITLE:=Other extra iptables extensions @@ -762,7 +746,6 @@ $(eval $(call BuildPlugin,iptables-mod-ipsec,$(IPT_IPSEC-m))) $(eval $(call BuildPlugin,iptables-mod-nat-extra,$(IPT_NAT_EXTRA-m))) $(eval $(call BuildPlugin,iptables-mod-iprange,$(IPT_IPRANGE-m))) $(eval $(call BuildPlugin,iptables-mod-cluster,$(IPT_CLUSTER-m))) -$(eval $(call BuildPlugin,iptables-mod-clusterip,$(IPT_CLUSTERIP-m))) $(eval $(call BuildPlugin,iptables-mod-hashlimit,$(IPT_HASHLIMIT-m))) $(eval $(call BuildPlugin,iptables-mod-rpfilter,$(IPT_RPFILTER-m))) $(eval $(call BuildPlugin,iptables-mod-led,$(IPT_LED-m))) diff --git a/target/linux/armsr/modules.mk b/target/linux/armsr/modules.mk index b793f3ff491514..15acfd9e4867be 100644 --- a/target/linux/armsr/modules.mk +++ b/target/linux/armsr/modules.mk @@ -92,7 +92,7 @@ define KernelPackage/fsl-enetc-net CONFIG_FSL_ENETC_QOS=y FILES:= \ $(LINUX_DIR)/drivers/net/ethernet/freescale/enetc/fsl-enetc.ko \ - $(LINUX_DIR)/drivers/net/ethernet/freescale/enetc/fsl-enetc-core.ko@ge6.3 \ + $(LINUX_DIR)/drivers/net/ethernet/freescale/enetc/fsl-enetc-core.ko \ $(LINUX_DIR)/drivers/net/ethernet/freescale/enetc/fsl-enetc-vf.ko \ $(LINUX_DIR)/drivers/net/ethernet/freescale/enetc/fsl-enetc-mdio.ko \ $(LINUX_DIR)/drivers/net/ethernet/freescale/enetc/fsl-enetc-ierb.ko From 5e769878ad45a8ed019a4d0ad0657e50c0fbdeed Mon Sep 17 00:00:00 2001 From: Antonio Flores Date: Wed, 18 Sep 2024 11:06:12 -0400 Subject: [PATCH 03/11] mac80211: CVE-2024-46760: rtw88: schedule rx work after everything is set up link: https://lore.kernel.org/all/2024091842-CVE-2024-46760-1eb3@gregkh Description =========== In the Linux kernel, the following vulnerability has been resolved: wifi: rtw88: usb: schedule rx work after everything is set up Right now it's possible to hit NULL pointer dereference in rtw_rx_fill_rx_status on hw object and/or its fields because initialization routine can start getting USB replies before rtw_dev is fully setup. The stack trace looks like this: rtw_rx_fill_rx_status rtw8821c_query_rx_desc rtw_usb_rx_handler ... queue_work rtw_usb_read_port_complete ... usb_submit_urb rtw_usb_rx_resubmit rtw_usb_init_rx rtw_usb_probe So while we do the async stuff rtw_usb_probe continues and calls rtw_register_hw, which does all kinds of initialization (e.g. via ieee80211_register_hw) that rtw_rx_fill_rx_status relies on. Fix this by moving the first usb_submit_urb after everything is set up. For me, this bug manifested as: [ 8.893177] rtw_8821cu 1-1:1.2: band wrong, packet dropped [ 8.910904] rtw_8821cu 1-1:1.2: hw->conf.chandef.chan NULL in rtw_rx_fill_rx_status because I'm using Larry's backport of rtw88 driver with the NULL checks in rtw_rx_fill_rx_status. The Linux kernel CVE team has assigned CVE-2024-46760 to this issue. Affected and fixed versions =========================== Fixed in 6.6.51 with commit c83d464b82a8 Fixed in 6.10.10 with commit 25eaef533bf3 Fixed in 6.11 with commit adc539784c98 Please see https://www.kernel.org for a full list of currently supported kernel versions by the kernel community. Unaffected versions might change over time as fixes are backported to older supported kernel versions. The official CVE entry at https://cve.org/CVERecord/?id=CVE-2024-46760 will be updated if fixes are backported, please check that for the most up to date information about this issue. Affected files ============== The file(s) affected by this issue are: drivers/net/wireless/realtek/rtw88/usb.c Mitigation ========== The Linux kernel CVE team recommends that you update to the latest stable kernel version for this, and many other bugfixes. Individual changes are never tested alone, but rather are part of a larger kernel release. Cherry-picking individual commits is not recommended or supported by the Linux kernel community at all. If however, updating to the latest release is impossible, the individual changes to resolve this issue can be found at these commits: https://git.kernel.org/stable/c/c83d464b82a8ad62ec9077637f75d73fe955635a https://git.kernel.org/stable/c/25eaef533bf3ccc6fee5067aac16f41f280e343e https://git.kernel.org/stable/c/adc539784c98a7cc602cbf557debfc2e7b9be8b3 Signed-off-by: Antonio Flores Link: https://github.com/openwrt/openwrt/pull/16420 Signed-off-by: Robert Marko --- ...chedule-rx-work-after-everything-is-.patch | 98 +++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 package/kernel/mac80211/patches/rtl/001-v6.10-wifi-rtw88-usb-schedule-rx-work-after-everything-is-.patch diff --git a/package/kernel/mac80211/patches/rtl/001-v6.10-wifi-rtw88-usb-schedule-rx-work-after-everything-is-.patch b/package/kernel/mac80211/patches/rtl/001-v6.10-wifi-rtw88-usb-schedule-rx-work-after-everything-is-.patch new file mode 100644 index 00000000000000..2fa581f288850c --- /dev/null +++ b/package/kernel/mac80211/patches/rtl/001-v6.10-wifi-rtw88-usb-schedule-rx-work-after-everything-is-.patch @@ -0,0 +1,98 @@ +From 25eaef533bf3ccc6fee5067aac16f41f280e343e Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Marcin=20=C5=9Alusarz?= +Date: Tue, 28 May 2024 13:02:46 +0200 +Subject: [PATCH] wifi: rtw88: usb: schedule rx work after everything is set up +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +[ Upstream commit adc539784c98a7cc602cbf557debfc2e7b9be8b3 ] + +Right now it's possible to hit NULL pointer dereference in +rtw_rx_fill_rx_status on hw object and/or its fields because +initialization routine can start getting USB replies before +rtw_dev is fully setup. + +The stack trace looks like this: + +rtw_rx_fill_rx_status +rtw8821c_query_rx_desc +rtw_usb_rx_handler +... +queue_work +rtw_usb_read_port_complete +... +usb_submit_urb +rtw_usb_rx_resubmit +rtw_usb_init_rx +rtw_usb_probe + +So while we do the async stuff rtw_usb_probe continues and calls +rtw_register_hw, which does all kinds of initialization (e.g. +via ieee80211_register_hw) that rtw_rx_fill_rx_status relies on. + +Fix this by moving the first usb_submit_urb after everything +is set up. + +For me, this bug manifested as: +[ 8.893177] rtw_8821cu 1-1:1.2: band wrong, packet dropped +[ 8.910904] rtw_8821cu 1-1:1.2: hw->conf.chandef.chan NULL in rtw_rx_fill_rx_status +because I'm using Larry's backport of rtw88 driver with the NULL +checks in rtw_rx_fill_rx_status. + +Link: https://lore.kernel.org/linux-wireless/CA+shoWQ7P49jhQasofDcTdQhiuarPTjYEDa--NiVVx494WcuQw@mail.gmail.com/ +Signed-off-by: Marcin Ĺšlusarz +Cc: Tim K +Cc: Ping-Ke Shih +Cc: Larry Finger +Cc: Kalle Valo +Cc: linux-wireless@vger.kernel.org +Cc: linux-kernel@vger.kernel.org +Signed-off-by: Ping-Ke Shih +Link: https://patch.msgid.link/20240528110246.477321-1-marcin.slusarz@gmail.com +Signed-off-by: Sasha Levin +--- + drivers/net/wireless/realtek/rtw88/usb.c | 13 ++++++++++--- + 1 file changed, 10 insertions(+), 3 deletions(-) + +--- a/drivers/net/wireless/realtek/rtw88/usb.c ++++ b/drivers/net/wireless/realtek/rtw88/usb.c +@@ -740,7 +740,6 @@ static struct rtw_hci_ops rtw_usb_ops = + static int rtw_usb_init_rx(struct rtw_dev *rtwdev) + { + struct rtw_usb *rtwusb = rtw_get_usb_priv(rtwdev); +- int i; + + rtwusb->rxwq = create_singlethread_workqueue("rtw88_usb: rx wq"); + if (!rtwusb->rxwq) { +@@ -752,13 +751,19 @@ static int rtw_usb_init_rx(struct rtw_de + + INIT_WORK(&rtwusb->rx_work, rtw_usb_rx_handler); + ++ return 0; ++} ++ ++static void rtw_usb_setup_rx(struct rtw_dev *rtwdev) ++{ ++ struct rtw_usb *rtwusb = rtw_get_usb_priv(rtwdev); ++ int i; ++ + for (i = 0; i < RTW_USB_RXCB_NUM; i++) { + struct rx_usb_ctrl_block *rxcb = &rtwusb->rx_cb[i]; + + rtw_usb_rx_resubmit(rtwusb, rxcb); + } +- +- return 0; + } + + static void rtw_usb_deinit_rx(struct rtw_dev *rtwdev) +@@ -895,6 +900,8 @@ int rtw_usb_probe(struct usb_interface * + goto err_destroy_rxwq; + } + ++ rtw_usb_setup_rx(rtwdev); ++ + return 0; + + err_destroy_rxwq: From 0556b3fdcb241b7866f58f076f6390f9b3682659 Mon Sep 17 00:00:00 2001 From: Robert Marko Date: Sat, 21 Sep 2024 13:31:28 +0200 Subject: [PATCH 04/11] config: build: make STRIP_KERNEL_EXPORTS depend on BROKEN STRIP_KERNEL_EXPORTS is currently broken on kernel 6.6 and since this is the only kernel currently supported, we should rather make it depend on BROKEN instead of a kernel version until its fixed. Link: https://github.com/openwrt/openwrt/pull/16440 Signed-off-by: Robert Marko --- config/Config-build.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/Config-build.in b/config/Config-build.in index 02931a87c6b2cd..41c1daccd99564 100644 --- a/config/Config-build.in +++ b/config/Config-build.in @@ -233,7 +233,7 @@ menu "Global build settings" config STRIP_KERNEL_EXPORTS bool "Strip unnecessary exports from the kernel image" - depends on !LINUX_6_6 + depends on BROKEN help Reduces kernel size by stripping unused kernel exports from the kernel image. Note that this might make the kernel incompatible with any kernel From 2e626ae2d2488f2d3708d3aed57eea7a1402f00e Mon Sep 17 00:00:00 2001 From: Ryan Salsbury Date: Mon, 16 Sep 2024 17:49:21 -0700 Subject: [PATCH 05/11] ath79: fix I2C pins on GL-AR750 Change I2C pin flags to GPIO_ACTIVE_HIGH and change SDA to GPIO1. On my late production GL-AR750 (purchased 2024): SCL = GPIO16 SDA = GPIO1 Bug report: I2C bus doesn't work in GL-AR750 https://github.com/openwrt/openwrt/issues/16319 Signed-off-by: Ryan Salsbury Link: https://github.com/openwrt/openwrt/pull/16406 Signed-off-by: Robert Marko --- target/linux/ath79/dts/qca9531_glinet_gl-ar750.dts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/target/linux/ath79/dts/qca9531_glinet_gl-ar750.dts b/target/linux/ath79/dts/qca9531_glinet_gl-ar750.dts index 4d809b922a7c9e..802d90b752fb0b 100644 --- a/target/linux/ath79/dts/qca9531_glinet_gl-ar750.dts +++ b/target/linux/ath79/dts/qca9531_glinet_gl-ar750.dts @@ -63,8 +63,8 @@ i2c { compatible = "i2c-gpio"; - sda-gpios = <&gpio 17 GPIO_ACTIVE_LOW>; - scl-gpios = <&gpio 16 GPIO_ACTIVE_LOW>; + sda-gpios = <&gpio 1 GPIO_ACTIVE_HIGH>; + scl-gpios = <&gpio 16 GPIO_ACTIVE_HIGH>; }; }; From 3727731e6ae972491c6d3c41a1317adc1e4c68bd Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Sat, 21 Sep 2024 18:28:40 +0200 Subject: [PATCH 06/11] netifd: update to Git HEAD (2024-09-21) 24f9a93a9559 interface: fix regression on adding hotplug devices to interfaces Signed-off-by: Felix Fietkau --- package/network/config/netifd/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package/network/config/netifd/Makefile b/package/network/config/netifd/Makefile index 2bfe5b844a6a3f..649b7ccd85bdb4 100644 --- a/package/network/config/netifd/Makefile +++ b/package/network/config/netifd/Makefile @@ -5,9 +5,9 @@ PKG_RELEASE:=1 PKG_SOURCE_PROTO:=git PKG_SOURCE_URL=$(PROJECT_GIT)/project/netifd.git -PKG_SOURCE_DATE:=2024-09-12 -PKG_SOURCE_VERSION:=02aa43d82d587d87523231be5a5e0bf956435725 -PKG_MIRROR_HASH:=a0e997ed9b0191417e65aaf43fbfd3a51b734ce1ea83f87e2d71b904b5a368ca +PKG_SOURCE_DATE:=2024-09-21 +PKG_SOURCE_VERSION:=24f9a93a9559c93cf1e794fdfcd87a38d27a8e0e +PKG_MIRROR_HASH:=a3baa049b86f65cf9709d57bb5a9ea7a5b7405f63c77e2bd641fe9b59865838c PKG_MAINTAINER:=Felix Fietkau PKG_LICENSE:=GPL-2.0 From 127078567bb6e239d925a52e848cdc33f47d3277 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Wed, 17 Jul 2024 18:33:43 +0200 Subject: [PATCH 07/11] hostapd: improve ucode bss notifications Reduce code duplication, add extra callback for bss create Signed-off-by: Felix Fietkau --- .../network/services/hostapd/files/hostapd.uc | 6 ++--- .../hostapd/patches/601-ucode_support.patch | 13 +++++++++-- ...ment-APuP-Access-Point-Micro-Peering.patch | 4 ++-- ...us-notification-when-a-peer-comes-up.patch | 2 +- ...-ucode-hook-for-when-a-peer-comes-up.patch | 6 ++--- .../services/hostapd/src/src/ap/ucode.c | 21 ++++------------- .../services/hostapd/src/src/ap/ucode.h | 23 ++++++++++++++----- 7 files changed, 41 insertions(+), 34 deletions(-) diff --git a/package/network/services/hostapd/files/hostapd.uc b/package/network/services/hostapd/files/hostapd.uc index dfddf8185ba8ef..e30e3e9b02fae4 100644 --- a/package/network/services/hostapd/files/hostapd.uc +++ b/package/network/services/hostapd/files/hostapd.uc @@ -889,13 +889,13 @@ return { hostapd.udebug_set(null); hostapd.ubus.disconnect(); }, - bss_add: function(name, obj) { + bss_add: function(phy, name, obj) { bss_event("add", name); }, - bss_reload: function(name, obj, reconf) { + bss_reload: function(phy, name, obj, reconf) { bss_event("reload", name, { reconf: reconf != 0 }); }, - bss_remove: function(name, obj) { + bss_remove: function(phy, name, obj) { bss_event("remove", name); } }; diff --git a/package/network/services/hostapd/patches/601-ucode_support.patch b/package/network/services/hostapd/patches/601-ucode_support.patch index 737966201491f1..84071182193351 100644 --- a/package/network/services/hostapd/patches/601-ucode_support.patch +++ b/package/network/services/hostapd/patches/601-ucode_support.patch @@ -139,7 +139,16 @@ as adding/removing interfaces. { struct hostapd_bss_config *conf = hapd->conf; u8 ssid[SSID_MAX_LEN + 1]; -@@ -2954,7 +2958,7 @@ hostapd_alloc_bss_data(struct hostapd_if +@@ -1510,6 +1514,8 @@ setup_mld: + } + #endif /* CONFIG_IEEE80211BE */ + ++ hostapd_ucode_create_bss(hapd); ++ + if (conf->wmm_enabled < 0) + conf->wmm_enabled = hapd->iconf->ieee80211n | + hapd->iconf->ieee80211ax; +@@ -2954,7 +2960,7 @@ hostapd_alloc_bss_data(struct hostapd_if } @@ -148,7 +157,7 @@ as adding/removing interfaces. { if (!hapd) return; -@@ -4015,7 +4019,8 @@ int hostapd_remove_iface(struct hapd_int +@@ -4015,7 +4021,8 @@ int hostapd_remove_iface(struct hapd_int hapd_iface = interfaces->iface[i]; if (hapd_iface == NULL) return -1; diff --git a/package/network/services/hostapd/patches/780-Implement-APuP-Access-Point-Micro-Peering.patch b/package/network/services/hostapd/patches/780-Implement-APuP-Access-Point-Micro-Peering.patch index 22bd7ad2634888..e72864efa1c673 100644 --- a/package/network/services/hostapd/patches/780-Implement-APuP-Access-Point-Micro-Peering.patch +++ b/package/network/services/hostapd/patches/780-Implement-APuP-Access-Point-Micro-Peering.patch @@ -53,7 +53,7 @@ Hotfix-by: Sebastian Gottschall https://github.com/mirror/dd-wrt/commit/0c3001a6 --- a/hostapd/config_file.c +++ b/hostapd/config_file.c -@@ -5200,6 +5200,15 @@ static int hostapd_config_fill(struct ho +@@ -5202,6 +5202,15 @@ static int hostapd_config_fill(struct ho bss->mld_indicate_disabled = atoi(pos); #endif /* CONFIG_TESTING_OPTIONS */ #endif /* CONFIG_IEEE80211BE */ @@ -71,7 +71,7 @@ Hotfix-by: Sebastian Gottschall https://github.com/mirror/dd-wrt/commit/0c3001a6 "Line %d: unknown configuration item '%s'", --- a/src/ap/ap_config.h +++ b/src/ap/ap_config.h -@@ -999,6 +999,35 @@ struct hostapd_bss_config { +@@ -1000,6 +1000,35 @@ struct hostapd_bss_config { bool mld_indicate_disabled; #endif /* CONFIG_TESTING_OPTIONS */ #endif /* CONFIG_IEEE80211BE */ diff --git a/package/network/services/hostapd/patches/790-APuP-add-ubus-notification-when-a-peer-comes-up.patch b/package/network/services/hostapd/patches/790-APuP-add-ubus-notification-when-a-peer-comes-up.patch index b0e2c57b1387c3..1efec5f806db01 100644 --- a/package/network/services/hostapd/patches/790-APuP-add-ubus-notification-when-a-peer-comes-up.patch +++ b/package/network/services/hostapd/patches/790-APuP-add-ubus-notification-when-a-peer-comes-up.patch @@ -58,7 +58,7 @@ Signed-off-by: Gioacchino Mazzurco +#endif // def CONFIG_APUP --- a/src/ap/ubus.h +++ b/src/ap/ubus.h -@@ -71,6 +71,11 @@ int hostapd_ubus_notify_bss_transition_q +@@ -69,6 +69,11 @@ int hostapd_ubus_notify_bss_transition_q void hostapd_ubus_notify_authorized(struct hostapd_data *hapd, struct sta_info *sta, const char *auth_alg); diff --git a/package/network/services/hostapd/patches/800-APuP-add-ucode-hook-for-when-a-peer-comes-up.patch b/package/network/services/hostapd/patches/800-APuP-add-ucode-hook-for-when-a-peer-comes-up.patch index d5c76994b4f6cc..a4e2fe827b93d1 100644 --- a/package/network/services/hostapd/patches/800-APuP-add-ucode-hook-for-when-a-peer-comes-up.patch +++ b/package/network/services/hostapd/patches/800-APuP-add-ucode-hook-for-when-a-peer-comes-up.patch @@ -34,7 +34,7 @@ Signed-off-by: Gioacchino Mazzurco } --- a/src/ap/ucode.c +++ b/src/ap/ucode.c -@@ -815,3 +815,20 @@ void hostapd_ucode_free_bss(struct hosta +@@ -802,3 +802,20 @@ void hostapd_ucode_free_bss(struct hosta ucv_put(wpa_ucode_call(2)); ucv_gc(vm); } @@ -57,9 +57,9 @@ Signed-off-by: Gioacchino Mazzurco +#endif // def CONFIG_APUP --- a/src/ap/ucode.h +++ b/src/ap/ucode.h -@@ -27,6 +27,10 @@ void hostapd_ucode_add_bss(struct hostap +@@ -26,6 +26,10 @@ void hostapd_ucode_free_iface(struct hos void hostapd_ucode_free_bss(struct hostapd_data *hapd); - void hostapd_ucode_reload_bss(struct hostapd_data *hapd); + void hostapd_ucode_bss_cb(struct hostapd_data *hapd, const char *type); +#ifdef CONFIG_APUP +void hostapd_ucode_apup_newpeer(struct hostapd_data *hapd, const char *ifname); diff --git a/package/network/services/hostapd/src/src/ap/ucode.c b/package/network/services/hostapd/src/src/ap/ucode.c index c54f071ee0f5ea..751531d5a14ae9 100644 --- a/package/network/services/hostapd/src/src/ap/ucode.c +++ b/package/network/services/hostapd/src/src/ap/ucode.c @@ -770,31 +770,18 @@ void hostapd_ucode_free_iface(struct hostapd_iface *iface) wpa_ucode_registry_remove(iface_registry, iface->ucode.idx); } -void hostapd_ucode_add_bss(struct hostapd_data *hapd) +void hostapd_ucode_bss_cb(struct hostapd_data *hapd, const char *type) { uc_value_t *val; - if (wpa_ucode_call_prepare("bss_add")) + if (wpa_ucode_call_prepare(type)) return; val = hostapd_ucode_bss_get_uval(hapd); + uc_value_push(ucv_get(ucv_string_new(hapd->iface->phy))); uc_value_push(ucv_get(ucv_string_new(hapd->conf->iface))); uc_value_push(ucv_get(val)); - ucv_put(wpa_ucode_call(2)); - ucv_gc(vm); -} - -void hostapd_ucode_reload_bss(struct hostapd_data *hapd) -{ - uc_value_t *val; - - if (wpa_ucode_call_prepare("bss_reload")) - return; - - val = hostapd_ucode_bss_get_uval(hapd); - uc_value_push(ucv_get(ucv_string_new(hapd->conf->iface))); - uc_value_push(ucv_get(val)); - ucv_put(wpa_ucode_call(2)); + ucv_put(wpa_ucode_call(3)); ucv_gc(vm); } diff --git a/package/network/services/hostapd/src/src/ap/ucode.h b/package/network/services/hostapd/src/src/ap/ucode.h index d00b787169d104..53aa1f3e7fd166 100644 --- a/package/network/services/hostapd/src/src/ap/ucode.h +++ b/package/network/services/hostapd/src/src/ap/ucode.h @@ -23,9 +23,8 @@ int hostapd_ucode_init(struct hapd_interfaces *ifaces); void hostapd_ucode_free(void); void hostapd_ucode_free_iface(struct hostapd_iface *iface); -void hostapd_ucode_add_bss(struct hostapd_data *hapd); void hostapd_ucode_free_bss(struct hostapd_data *hapd); -void hostapd_ucode_reload_bss(struct hostapd_data *hapd); +void hostapd_ucode_bss_cb(struct hostapd_data *hapd, const char *type); #else @@ -39,10 +38,7 @@ static inline void hostapd_ucode_free(void) static inline void hostapd_ucode_free_iface(struct hostapd_iface *iface) { } -static inline void hostapd_ucode_reload_bss(struct hostapd_data *hapd) -{ -} -static inline void hostapd_ucode_add_bss(struct hostapd_data *hapd) +static inline void hostapd_ucode_bss_cb(struct hostapd_data *hapd, const char *type) { } static inline void hostapd_ucode_free_bss(struct hostapd_data *hapd) @@ -51,4 +47,19 @@ static inline void hostapd_ucode_free_bss(struct hostapd_data *hapd) #endif +static inline void hostapd_ucode_create_bss(struct hostapd_data *hapd) +{ + hostapd_ucode_bss_cb(hapd, "bss_create"); +} + +static inline void hostapd_ucode_add_bss(struct hostapd_data *hapd) +{ + hostapd_ucode_bss_cb(hapd, "bss_add"); +} + +static inline void hostapd_ucode_reload_bss(struct hostapd_data *hapd) +{ + hostapd_ucode_bss_cb(hapd, "bss_reload"); +} + #endif From 1a288670d99012e2921c2a8906e7a61dc8e89e72 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Wed, 18 Sep 2024 18:10:25 +0200 Subject: [PATCH 08/11] hostapd: fold extra APuP patches into main patch + src/ Simplifies maintenance Signed-off-by: Felix Fietkau --- ...ment-APuP-Access-Point-Micro-Peering.patch | 28 ++++++-- ...us-notification-when-a-peer-comes-up.patch | 72 ------------------- ...-ucode-hook-for-when-a-peer-comes-up.patch | 70 ------------------ .../services/hostapd/src/src/ap/ubus.c | 15 ++++ .../services/hostapd/src/src/ap/ubus.h | 5 ++ .../services/hostapd/src/src/ap/ucode.c | 17 +++++ .../services/hostapd/src/src/ap/ucode.h | 4 ++ 7 files changed, 63 insertions(+), 148 deletions(-) delete mode 100644 package/network/services/hostapd/patches/790-APuP-add-ubus-notification-when-a-peer-comes-up.patch delete mode 100644 package/network/services/hostapd/patches/800-APuP-add-ucode-hook-for-when-a-peer-comes-up.patch diff --git a/package/network/services/hostapd/patches/780-Implement-APuP-Access-Point-Micro-Peering.patch b/package/network/services/hostapd/patches/780-Implement-APuP-Access-Point-Micro-Peering.patch index e72864efa1c673..157b7dbb82302e 100644 --- a/package/network/services/hostapd/patches/780-Implement-APuP-Access-Point-Micro-Peering.patch +++ b/package/network/services/hostapd/patches/780-Implement-APuP-Access-Point-Micro-Peering.patch @@ -53,7 +53,7 @@ Hotfix-by: Sebastian Gottschall https://github.com/mirror/dd-wrt/commit/0c3001a6 --- a/hostapd/config_file.c +++ b/hostapd/config_file.c -@@ -5202,6 +5202,15 @@ static int hostapd_config_fill(struct ho +@@ -5200,6 +5200,15 @@ static int hostapd_config_fill(struct ho bss->mld_indicate_disabled = atoi(pos); #endif /* CONFIG_TESTING_OPTIONS */ #endif /* CONFIG_IEEE80211BE */ @@ -71,7 +71,7 @@ Hotfix-by: Sebastian Gottschall https://github.com/mirror/dd-wrt/commit/0c3001a6 "Line %d: unknown configuration item '%s'", --- a/src/ap/ap_config.h +++ b/src/ap/ap_config.h -@@ -1000,6 +1000,35 @@ struct hostapd_bss_config { +@@ -999,6 +999,35 @@ struct hostapd_bss_config { bool mld_indicate_disabled; #endif /* CONFIG_TESTING_OPTIONS */ #endif /* CONFIG_IEEE80211BE */ @@ -164,7 +164,7 @@ Hotfix-by: Sebastian Gottschall https://github.com/mirror/dd-wrt/commit/0c3001a6 int hostapd_sta_add(struct hostapd_data *hapd, --- /dev/null +++ b/src/ap/apup.c -@@ -0,0 +1,152 @@ +@@ -0,0 +1,168 @@ +/* + * hostapd / APuP Access Point Micro Peering + * @@ -190,6 +190,14 @@ Hotfix-by: Sebastian Gottschall https://github.com/mirror/dd-wrt/commit/0c3001a6 +#include "ap_drv_ops.h" +#include "sta_info.h" + ++#ifdef UBUS_SUPPORT ++# include "ubus.h" ++#endif ++ ++#ifdef UCODE_SUPPORT ++# include "ucode.h" ++#endif ++ +void apup_process_beacon(struct hostapd_data *hapd, + const struct ieee80211_mgmt *mgmt, size_t len, + const struct ieee802_11_elems *elems ) @@ -316,6 +324,14 @@ Hotfix-by: Sebastian Gottschall https://github.com/mirror/dd-wrt/commit/0c3001a6 + "apup_process_beacon(...) Added APuP peer at %s with flags: %d," + " capabilities %d", + mIfname, sta_ret->flags, sta_ret->capability); ++ ++#ifdef UBUS_SUPPORT ++ hostapd_ubus_notify_apup_newpeer(hapd, mgmt->bssid, mIfname); ++#endif ++ ++#ifdef UCODE_SUPPORT ++ hostapd_ucode_apup_newpeer(hapd, mIfname); ++#endif +} --- /dev/null +++ b/src/ap/apup.h @@ -356,7 +372,7 @@ Hotfix-by: Sebastian Gottschall https://github.com/mirror/dd-wrt/commit/0c3001a6 #ifdef CONFIG_FILS static struct wpabuf * -@@ -3588,8 +3591,8 @@ static u16 check_multi_ap(struct hostapd +@@ -3615,8 +3618,8 @@ static u16 check_multi_ap(struct hostapd } @@ -367,7 +383,7 @@ Hotfix-by: Sebastian Gottschall https://github.com/mirror/dd-wrt/commit/0c3001a6 { /* Supported rates not used in IEEE 802.11ad/DMG */ if (hapd->iface->current_mode && -@@ -3976,7 +3979,7 @@ static int __check_assoc_ies(struct host +@@ -4003,7 +4006,7 @@ static int __check_assoc_ies(struct host elems->ext_capab_len); if (resp != WLAN_STATUS_SUCCESS) return resp; @@ -376,7 +392,7 @@ Hotfix-by: Sebastian Gottschall https://github.com/mirror/dd-wrt/commit/0c3001a6 if (resp != WLAN_STATUS_SUCCESS) return resp; -@@ -6031,6 +6034,11 @@ static void handle_beacon(struct hostapd +@@ -6058,6 +6061,11 @@ static void handle_beacon(struct hostapd 0); ap_list_process_beacon(hapd->iface, mgmt, &elems, fi); diff --git a/package/network/services/hostapd/patches/790-APuP-add-ubus-notification-when-a-peer-comes-up.patch b/package/network/services/hostapd/patches/790-APuP-add-ubus-notification-when-a-peer-comes-up.patch deleted file mode 100644 index 1efec5f806db01..00000000000000 --- a/package/network/services/hostapd/patches/790-APuP-add-ubus-notification-when-a-peer-comes-up.patch +++ /dev/null @@ -1,72 +0,0 @@ -From 9a265f70b5e4e048c568564aed5f9ac4a4fd76b0 Mon Sep 17 00:00:00 2001 -From: Gioacchino Mazzurco -Date: Tue, 7 May 2024 10:37:54 +0200 -Subject: [PATCH 2/3] APuP add ubus notification when a peer comes up - -The notification ones get looks like -{ "apup-newpeer": {"address":"02:0a:ab:45:5a:ab","ifname":"wlan0.peer1"} } - -Signed-off-by: Gioacchino Mazzurco ---- - src/ap/apup.c | 8 ++++++++ - src/ap/ubus.c | 15 +++++++++++++++ - src/ap/ubus.h | 5 +++++ - 3 files changed, 28 insertions(+) - ---- a/src/ap/apup.c -+++ b/src/ap/apup.c -@@ -23,6 +23,10 @@ - #include "ap_drv_ops.h" - #include "sta_info.h" - -+#ifdef UBUS_SUPPORT -+# include "ubus.h" -+#endif -+ - void apup_process_beacon(struct hostapd_data *hapd, - const struct ieee80211_mgmt *mgmt, size_t len, - const struct ieee802_11_elems *elems ) -@@ -149,4 +153,8 @@ void apup_process_beacon(struct hostapd_ - "apup_process_beacon(...) Added APuP peer at %s with flags: %d," - " capabilities %d", - mIfname, sta_ret->flags, sta_ret->capability); -+ -+#ifdef UBUS_SUPPORT -+ hostapd_ubus_notify_apup_newpeer(hapd, mgmt->bssid, mIfname); -+#endif - } ---- a/src/ap/ubus.c -+++ b/src/ap/ubus.c -@@ -2004,3 +2004,18 @@ int hostapd_ubus_notify_bss_transition_q - return ureq.resp; - #endif - } -+ -+#ifdef CONFIG_APUP -+void hostapd_ubus_notify_apup_newpeer( -+ struct hostapd_data *hapd, const u8 *addr, const char *ifname) -+{ -+ if (!hapd->ubus.obj.has_subscribers) -+ return; -+ -+ blob_buf_init(&b, 0); -+ blobmsg_add_macaddr(&b, "address", addr); -+ blobmsg_add_string(&b, "ifname", ifname); -+ -+ ubus_notify(ctx, &hapd->ubus.obj, "apup-newpeer", b.head, -1); -+} -+#endif // def CONFIG_APUP ---- a/src/ap/ubus.h -+++ b/src/ap/ubus.h -@@ -69,6 +69,11 @@ int hostapd_ubus_notify_bss_transition_q - void hostapd_ubus_notify_authorized(struct hostapd_data *hapd, struct sta_info *sta, - const char *auth_alg); - -+#ifdef CONFIG_APUP -+void hostapd_ubus_notify_apup_newpeer( -+ struct hostapd_data *hapd, const u8 *addr, const char *ifname); -+#endif // def CONFIG_APUP -+ - #else - - struct hostapd_ubus_bss {}; diff --git a/package/network/services/hostapd/patches/800-APuP-add-ucode-hook-for-when-a-peer-comes-up.patch b/package/network/services/hostapd/patches/800-APuP-add-ucode-hook-for-when-a-peer-comes-up.patch deleted file mode 100644 index a4e2fe827b93d1..00000000000000 --- a/package/network/services/hostapd/patches/800-APuP-add-ucode-hook-for-when-a-peer-comes-up.patch +++ /dev/null @@ -1,70 +0,0 @@ -From aaeb60b39a72774c651187208ec47efd0daeb75b Mon Sep 17 00:00:00 2001 -From: Gioacchino Mazzurco -Date: Tue, 7 May 2024 11:54:23 +0200 -Subject: [PATCH 3/3] APuP add ucode hook for when a peer comes up - -Signed-off-by: Gioacchino Mazzurco ---- - src/ap/apup.c | 8 ++++++++ - src/ap/ucode.c | 17 +++++++++++++++++ - src/ap/ucode.h | 4 ++++ - 3 files changed, 29 insertions(+) - ---- a/src/ap/apup.c -+++ b/src/ap/apup.c -@@ -27,6 +27,10 @@ - # include "ubus.h" - #endif - -+#ifdef UCODE_SUPPORT -+# include "ucode.h" -+#endif -+ - void apup_process_beacon(struct hostapd_data *hapd, - const struct ieee80211_mgmt *mgmt, size_t len, - const struct ieee802_11_elems *elems ) -@@ -157,4 +161,8 @@ void apup_process_beacon(struct hostapd_ - #ifdef UBUS_SUPPORT - hostapd_ubus_notify_apup_newpeer(hapd, mgmt->bssid, mIfname); - #endif -+ -+#ifdef UCODE_SUPPORT -+ hostapd_ucode_apup_newpeer(hapd, mIfname); -+#endif - } ---- a/src/ap/ucode.c -+++ b/src/ap/ucode.c -@@ -802,3 +802,20 @@ void hostapd_ucode_free_bss(struct hosta - ucv_put(wpa_ucode_call(2)); - ucv_gc(vm); - } -+ -+#ifdef CONFIG_APUP -+void hostapd_ucode_apup_newpeer(struct hostapd_data *hapd, const char *ifname) -+{ -+ uc_value_t *val; -+ -+ if (wpa_ucode_call_prepare("apup_newpeer")) -+ return; -+ -+ val = hostapd_ucode_bss_get_uval(hapd); -+ uc_value_push(ucv_get(ucv_string_new(hapd->conf->iface))); // BSS ifname -+ uc_value_push(ucv_get(val)); -+ uc_value_push(ucv_get(ucv_string_new(ifname))); // APuP peer ifname -+ ucv_put(wpa_ucode_call(2)); -+ ucv_gc(vm); -+} -+#endif // def CONFIG_APUP ---- a/src/ap/ucode.h -+++ b/src/ap/ucode.h -@@ -26,6 +26,10 @@ void hostapd_ucode_free_iface(struct hos - void hostapd_ucode_free_bss(struct hostapd_data *hapd); - void hostapd_ucode_bss_cb(struct hostapd_data *hapd, const char *type); - -+#ifdef CONFIG_APUP -+void hostapd_ucode_apup_newpeer(struct hostapd_data *hapd, const char *ifname); -+#endif // def CONFIG_APUP -+ - #else - - static inline int hostapd_ucode_init(struct hapd_interfaces *ifaces) diff --git a/package/network/services/hostapd/src/src/ap/ubus.c b/package/network/services/hostapd/src/src/ap/ubus.c index 8689494bcff3e5..f21516fc3c78ac 100644 --- a/package/network/services/hostapd/src/src/ap/ubus.c +++ b/package/network/services/hostapd/src/src/ap/ubus.c @@ -2004,3 +2004,18 @@ int hostapd_ubus_notify_bss_transition_query( return ureq.resp; #endif } + +#ifdef CONFIG_APUP +void hostapd_ubus_notify_apup_newpeer( + struct hostapd_data *hapd, const u8 *addr, const char *ifname) +{ + if (!hapd->ubus.obj.has_subscribers) + return; + + blob_buf_init(&b, 0); + blobmsg_add_macaddr(&b, "address", addr); + blobmsg_add_string(&b, "ifname", ifname); + + ubus_notify(ctx, &hapd->ubus.obj, "apup-newpeer", b.head, -1); +} +#endif // def CONFIG_APUP diff --git a/package/network/services/hostapd/src/src/ap/ubus.h b/package/network/services/hostapd/src/src/ap/ubus.h index 5b8938cbd32d7d..5c03cb90ad75b8 100644 --- a/package/network/services/hostapd/src/src/ap/ubus.h +++ b/package/network/services/hostapd/src/src/ap/ubus.h @@ -69,6 +69,11 @@ int hostapd_ubus_notify_bss_transition_query( void hostapd_ubus_notify_authorized(struct hostapd_data *hapd, struct sta_info *sta, const char *auth_alg); +#ifdef CONFIG_APUP +void hostapd_ubus_notify_apup_newpeer( + struct hostapd_data *hapd, const u8 *addr, const char *ifname); +#endif // def CONFIG_APUP + #else struct hostapd_ubus_bss {}; diff --git a/package/network/services/hostapd/src/src/ap/ucode.c b/package/network/services/hostapd/src/src/ap/ucode.c index 751531d5a14ae9..2c1e706804df56 100644 --- a/package/network/services/hostapd/src/src/ap/ucode.c +++ b/package/network/services/hostapd/src/src/ap/ucode.c @@ -802,3 +802,20 @@ void hostapd_ucode_free_bss(struct hostapd_data *hapd) ucv_put(wpa_ucode_call(2)); ucv_gc(vm); } + +#ifdef CONFIG_APUP +void hostapd_ucode_apup_newpeer(struct hostapd_data *hapd, const char *ifname) +{ + uc_value_t *val; + + if (wpa_ucode_call_prepare("apup_newpeer")) + return; + + val = hostapd_ucode_bss_get_uval(hapd); + uc_value_push(ucv_get(ucv_string_new(hapd->conf->iface))); // BSS ifname + uc_value_push(ucv_get(val)); + uc_value_push(ucv_get(ucv_string_new(ifname))); // APuP peer ifname + ucv_put(wpa_ucode_call(2)); + ucv_gc(vm); +} +#endif // def CONFIG_APUP diff --git a/package/network/services/hostapd/src/src/ap/ucode.h b/package/network/services/hostapd/src/src/ap/ucode.h index 53aa1f3e7fd166..2f7bcd6542a236 100644 --- a/package/network/services/hostapd/src/src/ap/ucode.h +++ b/package/network/services/hostapd/src/src/ap/ucode.h @@ -26,6 +26,10 @@ void hostapd_ucode_free_iface(struct hostapd_iface *iface); void hostapd_ucode_free_bss(struct hostapd_data *hapd); void hostapd_ucode_bss_cb(struct hostapd_data *hapd, const char *type); +#ifdef CONFIG_APUP +void hostapd_ucode_apup_newpeer(struct hostapd_data *hapd, const char *ifname); +#endif // def CONFIG_APUP + #else static inline int hostapd_ucode_init(struct hapd_interfaces *ifaces) From b4e7682c548e6d2f508f26a48c3e41fe34a4fc76 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Sat, 21 Sep 2024 20:13:51 +0200 Subject: [PATCH 09/11] hostapd: fix num_global_macaddr and mbssid config handling Store the config values in the correct field and apply them on restart too Signed-off-by: Felix Fietkau --- .../network/services/hostapd/files/hostapd.uc | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/package/network/services/hostapd/files/hostapd.uc b/package/network/services/hostapd/files/hostapd.uc index e30e3e9b02fae4..6774fbf3ba8ecf 100644 --- a/package/network/services/hostapd/files/hostapd.uc +++ b/package/network/services/hostapd/files/hostapd.uc @@ -229,6 +229,16 @@ function iface_pending_init(phydev, config) pending.next(); } +function iface_macaddr_init(phydev, config, macaddr_list) +{ + let macaddr_data = { + num_global: config.num_global_macaddr ?? 1, + mbssid: config.mbssid ?? 0, + }; + + return phydev.macaddr_init(macaddr_list, macaddr_data); +} + function iface_restart(phydev, config, old_config) { let phy = phydev.name; @@ -246,7 +256,7 @@ function iface_restart(phydev, config, old_config) return; } - phydev.macaddr_init(iface_config_macaddr_list(config)); + iface_macaddr_init(phydev, config, iface_config_macaddr_list(config)); for (let i = 0; i < length(config.bss); i++) { let bss = config.bss[i]; if (bss.default_macaddr) @@ -500,11 +510,7 @@ function iface_reload_config(phydev, config, old_config) } // Step 6: assign BSSID for newly created interfaces - let macaddr_data = { - num_global: config.num_global_macaddr ?? 1, - mbssid: config.mbssid ?? 0, - }; - macaddr_list = phydev.macaddr_init(macaddr_list, macaddr_data); + macaddr_list = iface_macaddr_init(phydev, config, macaddr_list); for (let i = 0; i < length(config.bss); i++) { if (bss_list[i]) continue; @@ -675,7 +681,7 @@ function iface_load_config(filename) if (val[0] == "#num_global_macaddr" || val[0] == "mbssid") - config[val[0]] = int(val[1]); + config[substr(val[0], 1)] = int(val[1]); push(config.radio.data, line); } From 81a48e7d1a2752ebcc292052381b30250905cf5d Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Sat, 21 Sep 2024 20:30:01 +0200 Subject: [PATCH 10/11] wpa_supplicant: fix num_global_macaddr handling Pass num_global_macaddr via ubus in the top level config_set call Signed-off-by: Felix Fietkau --- .../wifi-scripts/files/lib/netifd/wireless/mac80211.sh | 3 ++- package/network/services/hostapd/files/wpa_supplicant.uc | 9 ++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/package/network/config/wifi-scripts/files/lib/netifd/wireless/mac80211.sh b/package/network/config/wifi-scripts/files/lib/netifd/wireless/mac80211.sh index 0079c498e765b4..11b11c411f4358 100755 --- a/package/network/config/wifi-scripts/files/lib/netifd/wireless/mac80211.sh +++ b/package/network/config/wifi-scripts/files/lib/netifd/wireless/mac80211.sh @@ -896,6 +896,7 @@ wpa_supplicant_set_config() { json_set_namespace wpa_supp prev json_close_array json_add_string phy "$phy" + json_add_int num_global_macaddr "$num_global_macaddr" json_add_boolean defer 1 local data="$(json_dump)" @@ -938,7 +939,7 @@ wpa_supplicant_start() { [ -n "$wpa_supp_init" ] || return 0 - ubus_call wpa_supplicant config_set '{ "phy": "'"$phy"'" }' > /dev/null + ubus_call wpa_supplicant config_set '{ "phy": "'"$phy"'", "num_global_macaddr": '"$num_global_macaddr"' }' > /dev/null } mac80211_setup_supplicant() { diff --git a/package/network/services/hostapd/files/wpa_supplicant.uc b/package/network/services/hostapd/files/wpa_supplicant.uc index 1709bb019e3107..31d45346257e68 100644 --- a/package/network/services/hostapd/files/wpa_supplicant.uc +++ b/package/network/services/hostapd/files/wpa_supplicant.uc @@ -68,7 +68,7 @@ function prepare_config(config) return { config: config }; } -function set_config(phy_name, config_list) +function set_config(phy_name, num_global_macaddr, config_list) { let phy = wpas.data.config[phy_name]; @@ -77,6 +77,8 @@ function set_config(phy_name, config_list) wpas.data.config[phy_name] = phy; } + phy.num_global_macaddr = num_global_macaddr; + let values = []; for (let config in config_list) push(values, [ config.iface, prepare_config(config) ]); @@ -99,7 +101,7 @@ function start_pending(phy_name) } let macaddr_list = wpas.data.macaddr_list[phy_name]; - phydev.macaddr_init(macaddr_list); + phydev.macaddr_init(macaddr_list, { num_global: phy.num_global_macaddr }); for (let ifname in phy.data) iface_start(phydev, phy.data[ifname]); @@ -185,6 +187,7 @@ let main_obj = { config_set: { args: { phy: "", + num_global_macaddr: 0, config: [], defer: true, }, @@ -195,7 +198,7 @@ let main_obj = { wpas.printf(`Set new config for phy ${req.args.phy}`); try { if (req.args.config) - set_config(req.args.phy, req.args.config); + set_config(req.args.phy, req.args.num_global_macaddr, req.args.config); if (!req.args.defer) start_pending(req.args.phy); From df1011e0b7c0c2497d40d57eff0cd604b8aece48 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Wed, 18 Sep 2024 18:26:45 +0200 Subject: [PATCH 11/11] hostapd: fix OWE ssid update on configuration changes Refresh OWE transition IEs on updating BSS interfaces Signed-off-by: Felix Fietkau --- .../patches/180-fix_owe_ssid_update.patch | 26 +++++++++++++++++++ .../hostapd/patches/601-ucode_support.patch | 17 ++++++++++++ .../patches/720-iface_max_num_sta.patch | 4 +-- .../hostapd/patches/730-ft_iface.patch | 2 +- .../services/hostapd/src/src/ap/ucode.c | 4 +++ 5 files changed, 50 insertions(+), 3 deletions(-) create mode 100644 package/network/services/hostapd/patches/180-fix_owe_ssid_update.patch diff --git a/package/network/services/hostapd/patches/180-fix_owe_ssid_update.patch b/package/network/services/hostapd/patches/180-fix_owe_ssid_update.patch new file mode 100644 index 00000000000000..5581922b2778b6 --- /dev/null +++ b/package/network/services/hostapd/patches/180-fix_owe_ssid_update.patch @@ -0,0 +1,26 @@ +--- a/src/ap/hostapd.c ++++ b/src/ap/hostapd.c +@@ -2420,7 +2420,11 @@ static int hostapd_owe_iface_iter(struct + if (!bss->conf->ssid.ssid_set || !bss->conf->ssid.ssid_len || + is_zero_ether_addr(bss->own_addr)) + continue; +- ++ if (!os_memcmp(hapd->conf->owe_transition_bssid, bss->own_addr, ETH_ALEN) && ++ hapd->conf->owe_transition_ssid_len == bss->conf->ssid.ssid_len && ++ !os_memcmp(hapd->conf->owe_transition_ssid, bss->conf->ssid.ssid, ++ bss->conf->ssid.ssid_len)) ++ return 0; + os_memcpy(hapd->conf->owe_transition_bssid, bss->own_addr, + ETH_ALEN); + os_memcpy(hapd->conf->owe_transition_ssid, +@@ -2437,10 +2441,6 @@ static int hostapd_owe_iface_iter(struct + + int hostapd_owe_trans_get_info(struct hostapd_data *hapd) + { +- if (hapd->conf->owe_transition_ssid_len > 0 && +- !is_zero_ether_addr(hapd->conf->owe_transition_bssid)) +- return 0; +- + /* Find transition mode SSID/BSSID information from a BSS operated by + * this hostapd instance. */ + if (!hapd->iface->interfaces || diff --git a/package/network/services/hostapd/patches/601-ucode_support.patch b/package/network/services/hostapd/patches/601-ucode_support.patch index 84071182193351..4288e0f78984bc 100644 --- a/package/network/services/hostapd/patches/601-ucode_support.patch +++ b/package/network/services/hostapd/patches/601-ucode_support.patch @@ -148,6 +148,15 @@ as adding/removing interfaces. if (conf->wmm_enabled < 0) conf->wmm_enabled = hapd->iconf->ieee80211n | hapd->iconf->ieee80211ax; +@@ -2487,7 +2493,7 @@ static int hostapd_owe_iface_iter2(struc + #endif /* CONFIG_OWE */ + + +-static void hostapd_owe_update_trans(struct hostapd_iface *iface) ++void hostapd_owe_update_trans(struct hostapd_iface *iface) + { + #ifdef CONFIG_OWE + /* Check whether the enabled BSS can complete OWE transition mode @@ -2954,7 +2960,7 @@ hostapd_alloc_bss_data(struct hostapd_if } @@ -213,6 +222,14 @@ as adding/removing interfaces. void hostapd_new_assoc_sta(struct hostapd_data *hapd, struct sta_info *sta, int reassoc); void hostapd_interface_deinit_free(struct hostapd_iface *iface); +@@ -815,6 +824,7 @@ hostapd_switch_channel_fallback(struct h + void hostapd_cleanup_cs_params(struct hostapd_data *hapd); + void hostapd_periodic_iface(struct hostapd_iface *iface); + int hostapd_owe_trans_get_info(struct hostapd_data *hapd); ++void hostapd_owe_update_trans(struct hostapd_iface *iface);; + void hostapd_ocv_check_csa_sa_query(void *eloop_ctx, void *timeout_ctx); + + void hostapd_switch_color(struct hostapd_data *hapd, u64 bitmap); --- a/src/drivers/driver.h +++ b/src/drivers/driver.h @@ -3928,6 +3928,25 @@ struct wpa_driver_ops { diff --git a/package/network/services/hostapd/patches/720-iface_max_num_sta.patch b/package/network/services/hostapd/patches/720-iface_max_num_sta.patch index f0e838bf2f3acc..e9d35de6be4d5c 100644 --- a/package/network/services/hostapd/patches/720-iface_max_num_sta.patch +++ b/package/network/services/hostapd/patches/720-iface_max_num_sta.patch @@ -79,9 +79,9 @@ full device, e.g. in order to deal with hardware/driver limitations { --- a/src/ap/hostapd.h +++ b/src/ap/hostapd.h -@@ -825,6 +825,7 @@ void hostapd_cleanup_cs_params(struct ho - void hostapd_periodic_iface(struct hostapd_iface *iface); +@@ -826,6 +826,7 @@ void hostapd_periodic_iface(struct hosta int hostapd_owe_trans_get_info(struct hostapd_data *hapd); + void hostapd_owe_update_trans(struct hostapd_iface *iface);; void hostapd_ocv_check_csa_sa_query(void *eloop_ctx, void *timeout_ctx); +int hostapd_check_max_sta(struct hostapd_data *hapd); diff --git a/package/network/services/hostapd/patches/730-ft_iface.patch b/package/network/services/hostapd/patches/730-ft_iface.patch index 648641e43a7639..ac7d3abd78af7c 100644 --- a/package/network/services/hostapd/patches/730-ft_iface.patch +++ b/package/network/services/hostapd/patches/730-ft_iface.patch @@ -29,7 +29,7 @@ a VLAN interface on top of the bridge, instead of using the bridge directly int bridge_hairpin; /* hairpin_mode on bridge members */ --- a/src/ap/wpa_auth_glue.c +++ b/src/ap/wpa_auth_glue.c -@@ -1815,8 +1815,12 @@ int hostapd_setup_wpa(struct hostapd_dat +@@ -1821,8 +1821,12 @@ int hostapd_setup_wpa(struct hostapd_dat wpa_key_mgmt_ft(hapd->conf->wpa_key_mgmt)) { const char *ft_iface; diff --git a/package/network/services/hostapd/src/src/ap/ucode.c b/package/network/services/hostapd/src/src/ap/ucode.c index 2c1e706804df56..c8a2b13a288d99 100644 --- a/package/network/services/hostapd/src/src/ap/ucode.c +++ b/package/network/services/hostapd/src/src/ap/ucode.c @@ -259,6 +259,7 @@ uc_hostapd_bss_set_config(uc_vm_t *vm, size_t nargs) hostapd_setup_bss(hapd, hapd == iface->bss[0], true); hostapd_ucode_update_interfaces(); + hostapd_owe_update_trans(iface); done: ret = 0; @@ -379,6 +380,7 @@ uc_hostapd_iface_add_bss(uc_vm_t *vm, size_t nargs) conf->bss[idx] = NULL; ret = hostapd_ucode_bss_get_uval(hapd); hostapd_ucode_update_interfaces(); + hostapd_owe_update_trans(iface); goto out; deinit_ctrl: @@ -607,6 +609,7 @@ uc_hostapd_iface_start(uc_vm_t *vm, size_t nargs) ieee802_11_set_beacon(hapd); } + hostapd_owe_update_trans(iface); return ucv_boolean_new(true); } @@ -698,6 +701,7 @@ uc_hostapd_bss_rename(uc_vm_t *vm, size_t nargs) hostapd_ubus_add_bss(hapd); hostapd_ucode_update_interfaces(); + hostapd_owe_update_trans(hapd->iface); out: if (interfaces->ctrl_iface_init) interfaces->ctrl_iface_init(hapd);