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 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/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: 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 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/hostapd.uc b/package/network/services/hostapd/files/hostapd.uc index dfddf8185ba8ef..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); } @@ -889,13 +895,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/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); 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 737966201491f1..4288e0f78984bc 100644 --- a/package/network/services/hostapd/patches/601-ucode_support.patch +++ b/package/network/services/hostapd/patches/601-ucode_support.patch @@ -139,7 +139,25 @@ 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; +@@ -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 } @@ -148,7 +166,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; @@ -204,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/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..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 @@ -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 b0e2c57b1387c3..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 -@@ -71,6 +71,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 d5c76994b4f6cc..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 -@@ -815,3 +815,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 -@@ -27,6 +27,10 @@ void hostapd_ucode_add_bss(struct hostap - void hostapd_ucode_free_bss(struct hostapd_data *hapd); - void hostapd_ucode_reload_bss(struct hostapd_data *hapd); - -+#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 c54f071ee0f5ea..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); @@ -770,48 +774,52 @@ 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_put(wpa_ucode_call(3)); ucv_gc(vm); } -void hostapd_ucode_reload_bss(struct hostapd_data *hapd) +void hostapd_ucode_free_bss(struct hostapd_data *hapd) { uc_value_t *val; - if (wpa_ucode_call_prepare("bss_reload")) + val = wpa_ucode_registry_remove(bss_registry, hapd->ucode.idx); + if (!val) return; - val = hostapd_ucode_bss_get_uval(hapd); - uc_value_push(ucv_get(ucv_string_new(hapd->conf->iface))); + hapd->ucode.idx = 0; + if (wpa_ucode_call_prepare("bss_remove")) + return; + + uc_value_push(ucv_string_new(hapd->conf->iface)); uc_value_push(ucv_get(val)); ucv_put(wpa_ucode_call(2)); ucv_gc(vm); } -void hostapd_ucode_free_bss(struct hostapd_data *hapd) +#ifdef CONFIG_APUP +void hostapd_ucode_apup_newpeer(struct hostapd_data *hapd, const char *ifname) { uc_value_t *val; - val = wpa_ucode_registry_remove(bss_registry, hapd->ucode.idx); - if (!val) - return; - - hapd->ucode.idx = 0; - if (wpa_ucode_call_prepare("bss_remove")) + if (wpa_ucode_call_prepare("apup_newpeer")) return; - uc_value_push(ucv_string_new(hapd->conf->iface)); + 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 d00b787169d104..2f7bcd6542a236 100644 --- a/package/network/services/hostapd/src/src/ap/ucode.h +++ b/package/network/services/hostapd/src/src/ap/ucode.h @@ -23,9 +23,12 @@ 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); + +#ifdef CONFIG_APUP +void hostapd_ucode_apup_newpeer(struct hostapd_data *hapd, const char *ifname); +#endif // def CONFIG_APUP #else @@ -39,10 +42,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 +51,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 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 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>; }; }; 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) {