From 099726eff639be8e252db4756d086f7e2e6d920f Mon Sep 17 00:00:00 2001 From: ruanyaoyu Date: Wed, 10 Dec 2025 17:49:26 +0800 Subject: [PATCH 01/12] ipq60xx: Fix issue where ipq60xx chip would not compile ftm Fixes: WIFI-15271 Signed-off-by: ruanyaoyu --- feeds/ipq807x_v5.4/ftm/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/feeds/ipq807x_v5.4/ftm/Makefile b/feeds/ipq807x_v5.4/ftm/Makefile index 0e3339c9c..66c37f46f 100755 --- a/feeds/ipq807x_v5.4/ftm/Makefile +++ b/feeds/ipq807x_v5.4/ftm/Makefile @@ -15,7 +15,7 @@ define Package/$(PKG_NAME) URL:=http://www.qca.qualcomm.com MAINTAINER:=Qualcomm Atheros TITLE:= QCA ftm utils - DEPENDS:= @TARGET_ipq_ipq807x||TARGET_ipq_ipq807x_64||TARGET_ipq_ipq60xx||TARGET_ipq_ipq60xx_64||TARGET_ipq_ipq50xx||TARGET_ipq_ipq50xx_64||TARGET_ipq807x||TARGET_ipq50xx +libnl +libtcmd +qca-diag +librt +kmod-diag-char + DEPENDS:= @TARGET_ipq_ipq807x||TARGET_ipq_ipq807x_64||TARGET_ipq_ipq60xx||TARGET_ipq_ipq60xx_64||TARGET_ipq_ipq50xx||TARGET_ipq_ipq50xx_64||TARGET_ipq807x||TARGET_ipq60xx||TARGET_ipq50xx +libnl +libtcmd +qca-diag +librt +kmod-diag-char endef define Package/$(PKG_NAME)/description/Default From 7665eefe1d6c5d72c9496df4d845ad686a251b1c Mon Sep 17 00:00:00 2001 From: Yang-Yongzhi Date: Fri, 5 Dec 2025 13:50:46 +0800 Subject: [PATCH 02/12] qca-wifi-7: Add Asterfusion AP7330 model (WIFI-15267) Enable the CONFIG_GPIO_WATCHDOG of kernel config Add the 'wdt' watchdog service in /etc/init.d/ Signed-off-by: Yang-Yongzhi --- .github/workflows/build-dev.yml | 2 +- feeds/qca-wifi-7/ath12k-wifi/Makefile | 13 + .../ath12k-wifi/board-2-ap7330-IPQ5332.json | 20 + .../ath12k-wifi/board-2-ap7330-QCN92XX.json | 20 + .../ath12k-wifi/board-2.bin.ap7330.IPQ5332 | Bin 0 -> 89292 bytes .../ath12k-wifi/board-2.bin.ap7330.QCN92XX | Bin 0 -> 187596 bytes feeds/qca-wifi-7/ath12k-wifi/generate.sh | 3 + .../ipq53xx/base-files/etc/board.d/02_network | 18 + .../etc/hotplug.d/firmware/10-ath12k-caldata | 2 + .../etc/hotplug.d/firmware/ath12k-pdev-stats | 1 + .../base-files/lib/upgrade/platform.sh | 1 + feeds/qca-wifi-7/ipq53xx/config-6.1 | 2 + .../dts/ipq5332-asterfusion-ap7330.dts | 711 ++++++++++++++++++ feeds/qca-wifi-7/ipq53xx/image/ipq53xx.mk | 13 + profiles/asterfusion_ap7330.yml | 16 + 15 files changed, 821 insertions(+), 1 deletion(-) create mode 100644 feeds/qca-wifi-7/ath12k-wifi/board-2-ap7330-IPQ5332.json create mode 100644 feeds/qca-wifi-7/ath12k-wifi/board-2-ap7330-QCN92XX.json create mode 100644 feeds/qca-wifi-7/ath12k-wifi/board-2.bin.ap7330.IPQ5332 create mode 100644 feeds/qca-wifi-7/ath12k-wifi/board-2.bin.ap7330.QCN92XX create mode 100644 feeds/qca-wifi-7/ipq53xx/dts/ipq5332-asterfusion-ap7330.dts create mode 100644 profiles/asterfusion_ap7330.yml diff --git a/.github/workflows/build-dev.yml b/.github/workflows/build-dev.yml index 68bcd25a2..78c06861a 100755 --- a/.github/workflows/build-dev.yml +++ b/.github/workflows/build-dev.yml @@ -21,7 +21,7 @@ jobs: strategy: fail-fast: false matrix: - target: [ 'cig_wf189h', 'cig_wf189w', 'cig_wf660a', 'cig_wf672', 'cig_wf186h', 'cig_wf186w', 'cig_wf188n', 'cig_wf189', 'cig_wf196', 'cig_wf196', 'cybertan_eww631-a1', 'cybertan_eww631-b1', 'sonicfi_rap630w-312g', 'sonicfi_rap63xc-211g', 'sonicfi_rap630c-311g', 'sonicfi_rap630w-311g', 'sonicfi_rap630w-211g', 'sonicfi_rap650c', 'sonicfi_rap7110c-341x', 'sonicfi_rap750e-h', 'sonicfi_rap750e-s', 'sonicfi_rap750w-311a', 'edgecore_eap101', 'edgecore_eap102', 'edgecore_eap104', 'edgecore_eap105', 'edgecore_eap111', 'edgecore_eap112', 'edgecore_oap101', 'edgecore_oap101-6e', 'edgecore_oap101e', 'edgecore_oap101e-6e', 'edgecore_oap103', 'hfcl_ion4xe', 'hfcl_ion4xi', 'hfcl_ion4x', 'hfcl_ion4x_2', 'hfcl_ion4x_3', 'hfcl_ion4xi_w', 'hfcl_ion4x_w', 'indio_um-305ax', 'senao_iap4300m', 'senao_iap2300m', 'senao_jeap6500', 'udaya_a6-id2', 'udaya_a6-od2', 'yuncore_ax820', 'yuncore_ax840', 'yuncore_fap640', 'yuncore_fap650', 'yuncore_fap655', 'emplus_wap588m', 'zyxel_nwa130be', 'sercomm_ap72tip-v4' ] + target: [ 'cig_wf189h', 'cig_wf189w', 'cig_wf660a', 'cig_wf672', 'cig_wf186h', 'cig_wf186w', 'cig_wf188n', 'cig_wf189', 'cig_wf196', 'cig_wf196', 'cybertan_eww631-a1', 'cybertan_eww631-b1', 'sonicfi_rap630w-312g', 'sonicfi_rap63xc-211g', 'sonicfi_rap630c-311g', 'sonicfi_rap630w-311g', 'sonicfi_rap630w-211g', 'sonicfi_rap650c', 'sonicfi_rap7110c-341x', 'sonicfi_rap750e-h', 'sonicfi_rap750e-s', 'sonicfi_rap750w-311a', 'edgecore_eap101', 'edgecore_eap102', 'edgecore_eap104', 'edgecore_eap105', 'edgecore_eap111', 'edgecore_eap112', 'edgecore_oap101', 'edgecore_oap101-6e', 'edgecore_oap101e', 'edgecore_oap101e-6e', 'edgecore_oap103', 'hfcl_ion4xe', 'hfcl_ion4xi', 'hfcl_ion4x', 'hfcl_ion4x_2', 'hfcl_ion4x_3', 'hfcl_ion4xi_w', 'hfcl_ion4x_w', 'indio_um-305ax', 'senao_iap4300m', 'senao_iap2300m', 'senao_jeap6500', 'udaya_a6-id2', 'udaya_a6-od2', 'yuncore_ax820', 'yuncore_ax840', 'yuncore_fap640', 'yuncore_fap650', 'yuncore_fap655', 'emplus_wap588m', 'zyxel_nwa130be', 'sercomm_ap72tip-v4', 'asterfusion_ap7330'] steps: - uses: actions/checkout@v3 diff --git a/feeds/qca-wifi-7/ath12k-wifi/Makefile b/feeds/qca-wifi-7/ath12k-wifi/Makefile index 968f576f0..cdbcb5af6 100755 --- a/feeds/qca-wifi-7/ath12k-wifi/Makefile +++ b/feeds/qca-wifi-7/ath12k-wifi/Makefile @@ -108,6 +108,11 @@ $(call Package/ath12k-wifi-default) TITLE:=board-2.bin for WF672 endef +define Package/ath12k-wifi-asterfusion-ap7330 +$(call Package/ath12k-wifi-default) + TITLE:=board.bin for Asterfusion AP7330 +endef + define Package/ath12k-wifi-cig-wf189/install $(INSTALL_DIR) $(1)/lib/firmware/ath12k/QCN92XX/hw1.0/ $(INSTALL_DIR) $(1)/lib/firmware/ath12k/IPQ5332/hw1.0/ @@ -223,6 +228,13 @@ define Package/ath12k-wifi-cig-wf672/install $(INSTALL_DATA) ./board-2.bin.wf672-us.IPQ5332 $(1)/lib/firmware/ath12k/IPQ5332/hw1.0/board-2.bin.US endef +define Package/ath12k-wifi-asterfusion-ap7330/install + $(INSTALL_DIR) $(1)/lib/firmware/ath12k/QCN92XX/hw1.0/ + $(INSTALL_DIR) $(1)/lib/firmware/ath12k/IPQ5332/hw1.0/ + $(INSTALL_DATA) ./board-2.bin.ap7330.QCN92XX $(1)/lib/firmware/ath12k/QCN92XX/hw1.0/board-2.bin + $(INSTALL_DATA) ./board-2.bin.ap7330.IPQ5332 $(1)/lib/firmware/ath12k/IPQ5332/hw1.0/board-2.bin +endef + $(eval $(call BuildPackage,ath12k-wifi-cig-wf189)) $(eval $(call BuildPackage,ath12k-wifi-edgecore-eap105)) $(eval $(call BuildPackage,ath12k-wifi-emplus-wap7635)) @@ -238,3 +250,4 @@ $(eval $(call BuildPackage,ath12k-wifi-zyxel-nwa130be)) $(eval $(call BuildPackage,ath12k-wifi-zyxel-nwa50be)) $(eval $(call BuildPackage,ath12k-wifi-zyxel-nwa210be)) $(eval $(call BuildPackage,ath12k-wifi-cig-wf672)) +$(eval $(call BuildPackage,ath12k-wifi-asterfusion-ap7330)) diff --git a/feeds/qca-wifi-7/ath12k-wifi/board-2-ap7330-IPQ5332.json b/feeds/qca-wifi-7/ath12k-wifi/board-2-ap7330-IPQ5332.json new file mode 100644 index 000000000..913ce36c2 --- /dev/null +++ b/feeds/qca-wifi-7/ath12k-wifi/board-2-ap7330-IPQ5332.json @@ -0,0 +1,20 @@ +[ + { + "board": [ + { + "names": [ + "bus=ahb,qmi-chip-id=0,qmi-board-id=255" + ], + "data": "board-asterfusion-ap7330.bin.ipq53xx" + } + ], + "regdb": [ + { + "names": [ + "bus=ahb,qmi-chip-id=0,qmi-board-id=255" + ], + "data": "regdb-asterfusion-ipq5332-qcn92xx.bin" + } + ] + } +] diff --git a/feeds/qca-wifi-7/ath12k-wifi/board-2-ap7330-QCN92XX.json b/feeds/qca-wifi-7/ath12k-wifi/board-2-ap7330-QCN92XX.json new file mode 100644 index 000000000..16411d237 --- /dev/null +++ b/feeds/qca-wifi-7/ath12k-wifi/board-2-ap7330-QCN92XX.json @@ -0,0 +1,20 @@ +[ + { + "board": [ + { + "names": [ + "bus=pci,qmi-chip-id=0,qmi-board-id=255" + ], + "data": "board-asterfusion-ap7330.bin.qcn9224" + } + ], + "regdb": [ + { + "names": [ + "bus=pci,qmi-chip-id=0,qmi-board-id=255" + ], + "data": "regdb-asterfusion-ipq5332-qcn92xx.bin" + } + ] + } +] diff --git a/feeds/qca-wifi-7/ath12k-wifi/board-2.bin.ap7330.IPQ5332 b/feeds/qca-wifi-7/ath12k-wifi/board-2.bin.ap7330.IPQ5332 new file mode 100644 index 0000000000000000000000000000000000000000..923fb2cebb53a0c17430091eab9f47038bdbc61a GIT binary patch literal 89292 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 literal 0 HcmV?d00001 diff --git a/feeds/qca-wifi-7/ath12k-wifi/board-2.bin.ap7330.QCN92XX b/feeds/qca-wifi-7/ath12k-wifi/board-2.bin.ap7330.QCN92XX new file mode 100644 index 0000000000000000000000000000000000000000..c1bf50d170b2ed32d22e005c67b18059e611b926 GIT binary patch literal 187596 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 Ryms`ZZ|{Hn&AcmL`~Nt=(>eeE literal 0 HcmV?d00001 diff --git a/feeds/qca-wifi-7/ath12k-wifi/generate.sh b/feeds/qca-wifi-7/ath12k-wifi/generate.sh index a48f350b2..37181fa04 100755 --- a/feeds/qca-wifi-7/ath12k-wifi/generate.sh +++ b/feeds/qca-wifi-7/ath12k-wifi/generate.sh @@ -24,3 +24,6 @@ $encoder -c board-2-nwa50be-QCN6432.json -o board-2.bin.nwa50be.QCN6432 $encoder -c board-2-nwa210be-IPQ5332.json -o board-2.bin.nwa210be.IPQ5332 $encoder -c board-2-nwa210be-QCN92XX.json -o board-2.bin.nwa210be.QCN92XX + +$encoder -c board-2-ap7330-IPQ5332.json -o board-2.bin.ap7330.IPQ5332 +$encoder -c board-2-ap7330-QCN92XX.json -o board-2.bin.ap7330.QCN92XX diff --git a/feeds/qca-wifi-7/ipq53xx/base-files/etc/board.d/02_network b/feeds/qca-wifi-7/ipq53xx/base-files/etc/board.d/02_network index b40790c08..c4e72f2f5 100755 --- a/feeds/qca-wifi-7/ipq53xx/base-files/etc/board.d/02_network +++ b/feeds/qca-wifi-7/ipq53xx/base-files/etc/board.d/02_network @@ -46,6 +46,11 @@ ipq53xx_setup_interfaces() zyxel,nwa130be) ucidef_set_interfaces_lan_wan "eth1" "eth0" ;; + asterfusion,AP7330) + ucidef_set_interface_wan "eth0" + ucidef_add_switch "switch1" \ + "0u@eth1" "3:lan" "4:lan" + ;; esac } @@ -154,6 +159,19 @@ qcom_setup_macs() ucidef_set_wireless_macaddr_base 2g $(macaddr_add "$wan_mac" 1) ucidef_set_wireless_macaddr_base 5g $(macaddr_add "$wan_mac" 2) ;; + asterfusion,AP7330) + mtd=$(find_mtd_chardev "0:ART") + [ -z "$mtd" ] && return; + wan_mac=$(mtd_get_mac_binary 0:ART 0x0) + [ -z "$wan_mac" ] && return; + wan_mac=$(macaddr_canonicalize $wan_mac) + lan_mac=$(macaddr_add "$wan_mac" 1) + ucidef_set_network_device_mac eth0 $wan_mac + ucidef_set_network_device_mac eth1 $lan_mac + ucidef_set_wireless_macaddr_base 2g $(macaddr_add "$wan_mac" 2) + ucidef_set_wireless_macaddr_base 5g $(macaddr_add "$wan_mac" 3) + ucidef_set_wireless_macaddr_base 6g $(macaddr_add "$wan_mac" 4) + ;; *) wan_mac=$(cat /sys/class/net/eth1/address) lan_mac=$(macaddr_add "$wan_mac" 1) diff --git a/feeds/qca-wifi-7/ipq53xx/base-files/etc/hotplug.d/firmware/10-ath12k-caldata b/feeds/qca-wifi-7/ipq53xx/base-files/etc/hotplug.d/firmware/10-ath12k-caldata index d0ca914ea..efbb343f7 100755 --- a/feeds/qca-wifi-7/ipq53xx/base-files/etc/hotplug.d/firmware/10-ath12k-caldata +++ b/feeds/qca-wifi-7/ipq53xx/base-files/etc/hotplug.d/firmware/10-ath12k-caldata @@ -67,6 +67,7 @@ ath12k/IPQ5332/hw1.0/caldata.bin) emplus,wap7635|\ sercomm,ap72tip-v4|\ sercomm,ap72tip|\ + asterfusion,AP7330|\ zyxel,nwa130be|\ zyxel,nwa210be|\ zyxel,nwa50be) @@ -92,6 +93,7 @@ ath12k/QCN92XX/hw1.0/cal-pci-0001:01:00.0.bin) emplus,wap7635|\ sercomm,ap72tip-v4|\ sercomm,ap72tip|\ + asterfusion,AP7330|\ zyxel,nwa210be|\ zyxel,nwa130be) caldata_extract "0:ART" 0x58800 0x2d000 diff --git a/feeds/qca-wifi-7/ipq53xx/base-files/etc/hotplug.d/firmware/ath12k-pdev-stats b/feeds/qca-wifi-7/ipq53xx/base-files/etc/hotplug.d/firmware/ath12k-pdev-stats index 25f94ca32..aeabe9d6d 100755 --- a/feeds/qca-wifi-7/ipq53xx/base-files/etc/hotplug.d/firmware/ath12k-pdev-stats +++ b/feeds/qca-wifi-7/ipq53xx/base-files/etc/hotplug.d/firmware/ath12k-pdev-stats @@ -5,6 +5,7 @@ board=$(board_name) case "$board" in + "asterfusion,AP7330"|\ "edgecore,eap105") ln -s /sys/kernel/debug/ath12k/ipq5332\ hw1.0_c000000.wifi/mac0/fw_stats/pdev_stats /tmp/pdev_stats_phy2g ln -s /sys/kernel/debug/ath12k/qcn9274\ hw2.0_0001:01:00.0/mac0/fw_stats/pdev_stats /tmp/pdev_stats_phy5g diff --git a/feeds/qca-wifi-7/ipq53xx/base-files/lib/upgrade/platform.sh b/feeds/qca-wifi-7/ipq53xx/base-files/lib/upgrade/platform.sh index f2ab73218..0a5d32a70 100755 --- a/feeds/qca-wifi-7/ipq53xx/base-files/lib/upgrade/platform.sh +++ b/feeds/qca-wifi-7/ipq53xx/base-files/lib/upgrade/platform.sh @@ -174,6 +174,7 @@ platform_do_upgrade() { sonicfi_dualimage_check nand_upgrade_tar "$1" ;; + asterfusion,AP7330|\ zyxel,nwa130be|\ zyxel,nwa210be|\ zyxel,nwa50be) diff --git a/feeds/qca-wifi-7/ipq53xx/config-6.1 b/feeds/qca-wifi-7/ipq53xx/config-6.1 index ef0246699..269457f62 100755 --- a/feeds/qca-wifi-7/ipq53xx/config-6.1 +++ b/feeds/qca-wifi-7/ipq53xx/config-6.1 @@ -1226,3 +1226,5 @@ CONFIG_PSTORE_RAM=y # CONFIG_RTL8221D_PHY is not set # CONFIG_INPUT_LSM303AGR is not set # CONFIG_USB_SERIAL_XR is not set +CONFIG_GPIO_WATCHDOG=y +CONFIG_GPIO_WATCHDOG_ARCH_INITCALL=y diff --git a/feeds/qca-wifi-7/ipq53xx/dts/ipq5332-asterfusion-ap7330.dts b/feeds/qca-wifi-7/ipq53xx/dts/ipq5332-asterfusion-ap7330.dts new file mode 100644 index 000000000..71ddd165d --- /dev/null +++ b/feeds/qca-wifi-7/ipq53xx/dts/ipq5332-asterfusion-ap7330.dts @@ -0,0 +1,711 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) +/* + * IPQ5332 RDP468 board device tree source + * + * Copyright (c) 2020-2021 The Linux Foundation. All rights reserved. + * Copyright (c) 2022-2024 Qualcomm Innovation Center, Inc. All rights reserved. + */ + +/dts-v1/; + +#include +#include +#include +#include "ipq5332.dtsi" +#include "ipq5332-default-memory.dtsi" + + + + + + + +/* + * This file is copied from ipq5332-rdp468.dts but has been modified. + * For modification, please compare the original QSDK's ipq5332-mi01.6.dts + * with the modified version. + */ + + + + + + +/ { + model = "ASTERFUSION"; + compatible = "asterfusion,AP7330", "qcom,ipq5332-ap-mi01.6", "qcom,ipq5332-rdp468", "qcom,ipq5332"; + + reserved-memory { + #address-cells = <2>; + #size-cells = <2>; + ranges; + + ramoops@49c00000 { + compatible = "ramoops"; + no-map; + reg = <0x0 0x49c00000 0x0 0x50000>; + record-size = <0x20000>; + console-size = <0x8000>; + pmsg-size = <0x8000>; + }; + }; + + aliases { + serial0 = &blsp1_uart0; + serial1 = &blsp1_uart1; + ethernet0 = "/soc/dp1"; + ethernet1 = "/soc/dp2"; + led-boot = &led_green; + led-failsafe = &led_red; + led-running = &led_green; + led-upgrade = &led_green; + }; + + chosen { + stdout-path = "serial0"; + }; + + soc@0 { + mdio:mdio@90000 { + pinctrl-0 = <&mdio1_pins &mdio0_pins>; + pinctrl-names = "default"; + /*gpio51 for manhattan reset*/ + phy-reset-gpio = <&tlmm 51 GPIO_ACTIVE_LOW>; + phyaddr_fixup = <0xC90F018>; + uniphyaddr_fixup = <0xC90F014>; + mdio_clk_fixup; /* MDIO clock sequence fix up flag */ + status = "okay"; + + phy0: ethernet-phy@0 { + reg = <1>; + fixup; + }; + phy1: ethernet-phy@1 { + reg = <2>; + fixup; + }; + phy2: ethernet-phy@2 { + reg = <3>; + fixup; + }; + phy3: ethernet-phy@3 { + reg = <4>; + fixup; + }; + + switch0@10 { + compatible = "qca,qca8386"; + #address-cells = <1>; + #size-cells = <0>; + reg = <0x10>; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + reg = <0>; + label = "cpu"; + ethernet = <&gmac2>; + phy-mode = "sgmii"; + }; + + port@1 { + reg = <1>; + label = "lan1"; + phy-handle = <&phy0>; + }; + + port@2 { + reg = <2>; + label = "lan2"; + phy-handle = <&phy1>; + }; + + port@3 { + reg = <3>; + label = "lan3"; + phy-handle = <&phy2>; + }; + port@4 { + reg = <4>; + label = "lan4"; + phy-handle = <&phy3>; + }; + }; + }; + }; + + ess-instance { + num_devices = <0x2>; + + ess-switch@3a000000 { + pinctrl-names = "default"; + switch_cpu_bmp = <0x1>; /* cpu port bitmap */ + switch_lan_bmp = <0x2>; /* lan port bitmap */ + switch_wan_bmp = <0x4>; /* wan port bitmap */ + switch_mac_mode = <0xc>; /* mac mode for uniphy instance0*/ + switch_mac_mode1 = <0xe>; /* mac mode for uniphy instance1*/ + switch_mac_mode2 = <0xff>; /* mac mode for uniphy instance2*/ + + qcom,port_phyinfo { + port@0 { + port_id = <1>; + forced-speed = <2500>; + forced-duplex = <1>; + }; + port@1 { + port_id = <2>; + phy_address = <30>; + media-type = "sfp"; /* fiber mode */ + }; + }; + }; + + ess-switch1@1 { + compatible = "qcom,ess-switch-qca8386"; + device_id = <1>; + switch_access_mode = "mdio"; + mdio-bus = <&mdio>; + switch_mac_mode = <0xc>; /* mac mode for uniphy instance0 */ + switch_mac_mode1 = <0xff>; /* mac mode1 for uniphy instance1 */ + switch_cpu_bmp = <0x1>; /* cpu port bitmap */ + switch_lan_bmp = <0x1e>; /* lan port bitmap */ + switch_wan_bmp = <0x0>; /* wan port bitmap */ + link-polling-required = <0>; + fdb_sync = "interrupt"; + link-intr-gpio = <&tlmm 23 GPIO_ACTIVE_HIGH>; + + qcom,port_phyinfo { + port@0 { + port_id = <0>; + forced-speed = <2500>; + forced-duplex = <1>; + }; + port@1 { + port_id = <1>; + phy_address = <1>; + }; + port@2 { + port_id = <2>; + phy_address = <2>; + }; + port@3 { + port_id = <3>; + phy_address = <3>; + }; + port@4 { + port_id = <4>; + phy_address = <4>; + }; + }; + + led_source@2 { + source = <2>; + mode = "normal"; + speed = "all"; + blink_en = "enable"; + active = "high"; + }; + led_source@5 { + source = <5>; + mode = "normal"; + speed = "all"; + blink_en = "enable"; + active = "high"; + }; + led_source@8 { + source = <8>; + mode = "normal"; + speed = "all"; + blink_en = "enable"; + active = "high"; + }; + led_source@11 { + source = <11>; + mode = "normal"; + speed = "all"; + blink_en = "enable"; + active = "high"; + }; + }; + }; + + dp1 { + device_type = "network"; + compatible = "qcom,nss-dp"; + qcom,id = <2>; + reg = <0x3a504000 0x4000>; + qcom,mactype = <1>; + local-mac-address = [000000000000]; + mdio-bus = <&mdio>; + qcom,phy-mdio-addr = <30>; + qcom,link-poll = <1>; + phy-mode = "sgmii"; + }; + + gmac2:dp2 { + device_type = "network"; + compatible = "qcom,nss-dp"; + qcom,id = <1>; + reg = <0x3a500000 0x4000>; + qcom,mactype = <1>; + local-mac-address = [000000000000]; + phy-mode = "sgmii"; + qcom,mht-dev = <1>; + qcom,is_switch_connected = <1>; + qcom,ppe-offload-disabled = <1>; + }; + + /* EDMA host driver configuration for the board */ + edma@3ab00000 { + qcom,txdesc-ring-start = <4>; /* Tx desc ring start ID */ + qcom,txdesc-rings = <12>; /* Total number of Tx desc rings to be provisioned */ + qcom,mht-txdesc-rings = <8>; /* Extra Tx desc rings to be provisioned for MHT SW ports */ + qcom,txcmpl-ring-start = <4>; /* Tx complete ring start ID */ + qcom,txcmpl-rings = <12>; /* Total number of Tx complete rings to be provisioned */ + qcom,mht-txcmpl-rings = <8>; /* Extra Tx complete rings to be provisioned for mht sw ports. */ + qcom,rxfill-ring-start = <4>; /* Rx fill ring start ID */ + qcom,rxfill-rings = <4>; /* Total number of Rx fill rings to be provisioned */ + qcom,rxdesc-ring-start = <12>; /* Rx desc ring start ID */ + qcom,rxdesc-rings = <4>; /* Total number of Rx desc rings to be provisioned */ + qcom,rx-page-mode = <0>; /* Rx fill ring page mode */ + qcom,tx-map-priority-level = <1>; /* Tx priority level per port */ + qcom,rx-map-priority-level = <1>; /* Rx priority level per core */ + qcom,ppeds-num = <2>; /* Number of PPEDS nodes */ + /* PPE-DS node format: */ + qcom,ppeds-map = <1 1 1 1 32 8>, /* PPEDS Node#0 ring and queue map */ + <2 2 2 2 40 8>; /* PPEDS Node#1 ring and queue map */ + qcom,txdesc-map = <8 9 10 11>, /* Port0 per-core Tx ring map */ + <12 13 14 15>, /* MHT-Port1 per-core Tx ring map */ + <4 5 6 7>, /* MHT-Port2 per-core Tx ring map/packets from vp*/ + <16 17 18 19>, /* MHT-Port3 per-core Tx ring map */ + <20 21 22 23>; /* MHT-Port4 per-core Tx ring map */ + qcom,txdesc-fc-grp-map = <1 2 3 4 5>; /* Per GMAC flow control group map */ + qcom,rxfill-map = <4 5 6 7>; /* Per-core Rx fill ring map */ + qcom,rxdesc-map = <12 13 14 15>; /* Per-core Rx desc ring map */ + qcom,rx-queue-start = <0>; /* Rx queue start */ + qcom,rx-ring-queue-map = <0 8 16 24>, /* Priority 0 queues per-core Rx ring map */ + <1 9 17 25>, /* Priority 1 queues per-core Rx ring map */ + <2 10 18 26>, /* Priority 2 queues per-core Rx ring map */ + <3 11 19 27>, /* Priority 3 queues per-core Rx ring map */ + <4 12 20 28>, /* Priority 4 queues per-core Rx ring map */ + <5 13 21 29>, /* Priority 5 queues per-core Rx ring map */ + <6 14 22 30>, /* Priority 6 queues per-core Rx ring map */ + <7 15 23 31>; /* Priority 7 queues per-core Rx ring map */ + interrupts = <0 163 4>, /* Tx complete ring id #4 IRQ info */ + <0 164 4>, /* Tx complete ring id #5 IRQ info */ + <0 165 4>, /* Tx complete ring id #6 IRQ info */ + <0 166 4>, /* Tx complete ring id #7 IRQ info */ + <0 167 4>, /* Tx complete ring id #8 IRQ info */ + <0 168 4>, /* Tx complete ring id #9 IRQ info */ + <0 169 4>, /* Tx complete ring id #10 IRQ info */ + <0 170 4>, /* Tx complete ring id #11 IRQ info */ + <0 171 4>, /* Tx complete ring id #12 IRQ info */ + <0 172 4>, /* Tx complete ring id #13 IRQ info */ + <0 173 4>, /* Tx complete ring id #14 IRQ info */ + <0 174 4>, /* Tx complete ring id #15 IRQ info */ + <0 139 4>, /* Rx desc ring id #12 IRQ info */ + <0 140 4>, /* Rx desc ring id #13 IRQ info */ + <0 141 4>, /* Rx desc ring id #14 IRQ info */ + <0 142 4>, /* Rx desc ring id #15 IRQ info */ + <0 191 4>, /* Misc error IRQ info */ + <0 160 4>, /* PPEDS Node #1(TxComp ring id #1) TxComplete IRQ info */ + <0 128 4>, /* PPEDS Node #1(Rx Desc ring id #1) Rx Desc IRQ info */ + <0 152 4>, /* PPEDS Node #1(RxFill Desc ring id #1) Rx Fill IRQ info */ + <0 161 4>, /* PPEDS Node #2(TxComp ring id #2) TxComplete IRQ info */ + <0 129 4>, /* PPEDS Node #2(Rx Desc ring id #2) Rx Desc IRQ info */ + <0 153 4>, /* PPEDS Node #2(RxFill Desc ring id #2) Rx Fill IRQ info */ + <0 175 4>, /* MHT port Tx complete ring id #16 IRQ info */ + <0 176 4>, /* MHT port Tx complete ring id #17 IRQ info */ + <0 177 4>, /* MHT port Tx complete ring id #18 IRQ info */ + <0 178 4>, /* MHT port Tx complete ring id #19 IRQ info */ + <0 179 4>, /* MHT port Tx complete ring id #20 IRQ info */ + <0 180 4>, /* MHT port Tx complete ring id #21 IRQ info */ + <0 181 4>, /* MHT port Tx complete ring id #22 IRQ info */ + <0 182 4>; /* MHT port Tx complete ring id #23 IRQ info */ + }; + + leds { + compatible = "gpio-leds"; + pinctrl-0 = <&gpio_leds_default>; + pinctrl-names = "default"; + + led_wifi: led@36 { + label = "led_wifi"; + gpios = <&tlmm 36 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "none"; + default-state = "off"; + }; + led_red: led@37 { + label = "led_red"; + gpios = <&tlmm 37 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "timer"; + default-state = "on"; + }; + led_green: led@38 { + label = "led_green"; + gpios = <&tlmm 38 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "none"; + default-state = "off"; + }; + }; + gpio-watchdog { + compatible = "linux,wdt-gpio"; + gpios = <&tlmm 39 GPIO_ACTIVE_LOW>; + hw_algo = "toggle"; + hw_margin_ms = <5000>; + always-running; + }; + + gpio_keys { + compatible = "gpio-keys"; + pinctrl-0 = <&button_pins>; + pinctrl-names = "default"; + status = "okay"; + + button@1 { + label = "wps"; + linux,code = ; + gpios = <&tlmm 35 GPIO_ACTIVE_LOW>; + linux,input-type = <1>; + debounce-interval = <60>; + }; + }; + + wsi: wsi { + id = <0>; + num_chip = <2>; + status = "okay"; + chip_info = <0 1 1>, + <1 1 0>; + }; + }; +}; + +&wifi0 { + // led-gpio = <&tlmm 36 GPIO_ACTIVE_HIGH>; + qcom,rproc = <&q6_wcss_pd1>; + qcom,rproc_rpd = <&q6v5_wcss>; + qcom,multipd_arch; + qcom,userpd-subsys-name = "q6v5_wcss_userpd1"; + memory-region = <&q6_region>; + qcom,wsi = <&wsi>; + qcom,wsi_index = <0>; + qcom,board_id = <0x12>; + status = "okay"; +}; + +&qcn9224_pcie1 { + status = "okay"; +}; + +&blsp1_uart0 { + pinctrl-0 = <&serial_0_pins>; + pinctrl-names = "default"; + status = "okay"; +}; + +&blsp1_uart1 { + pinctrl-0 = <&serial_1_pins>; + pinctrl-names = "default"; + status = "disabled"; +}; + +&blsp1_i2c1 { + clock-frequency = <400000>; + pinctrl-0 = <&i2c_1_pins>; + pinctrl-names = "default"; + status = "ok"; +}; + +&blsp1_spi0 { + pinctrl-0 = <&spi_0_data_clk_pins &spi_0_cs_pins>; + pinctrl-names = "default"; + status = "okay"; + + flash@0 { + compatible = "n25q128a11", "micron,n25q128a11", "jedec,spi-nor"; + reg = <0>; + #address-cells = <1>; + #size-cells = <1>; + spi-max-frequency = <50000000>; + }; +}; + +&blsp1_spi2 { + pinctrl-0 = <&spi_2_pins>; + pinctrl-names = "default"; + cs-select = <0>; + status = "disabled"; +}; + +&pcm { + pinctrl-0 = <&audio_pins_pri>; + pinctrl-names = "primary"; + status = "disabled"; +}; + +&sdhc { + bus-width = <4>; + max-frequency = <192000000>; + mmc-ddr-1_8v; + mmc-hs200-1_8v; + non-removable; + pinctrl-0 = <&sdc_default_state>; + pinctrl-names = "default"; + status = "disabled"; +}; + +&sleep_clk { + clock-frequency = <32000>; +}; + +&xo { + clock-frequency = <24000000>; +}; + +&qpic_bam { + status = "okay"; +}; + +&qpic_nand { + pinctrl-0 = <&qspi_default_state>; + pinctrl-names = "default"; + status = "okay"; + + nandcs@0 { + reg = <0>; + #address-cells = <1>; + #size-cells = <1>; + + nand-ecc-strength = <8>; + nand-ecc-step-size = <512>; + nand-bus-width = <8>; + }; +}; + +&pcie1_phy_x2 { + status = "okay"; +}; + +&pcie1 { + pinctrl-0 = <&pcie1_default_state>; + pinctrl-names = "default"; + perst-gpios = <&tlmm 47 GPIO_ACTIVE_LOW>; + status = "okay"; + + pcie1_rp { + reg = <0 0 0 0 0>; + + qcom,mhi@1 { + reg = <0 0 0 0 0>; + boot-args = <0x2 0x4 0x34 0x3 0x0 0x0 /* MX Rail, GPIO52, Drive strength 0x3 */ + 0x4 0x4 0x18 0x3 0x0 0x0 /* RFA1p2 Rail, GPIO24, Drive strength 0x3 */ + 0x0 0x4 0x0 0x0 0x0 0x0>; /* End of arguments */ + memory-region = <&qcn9224_pcie1>; + qcom,wsi = <&wsi>; + qcom,wsi_index = <1>; + qcom,board_id = <0x1006>; + }; + }; +}; + +/* PINCTRL */ + +&tlmm { + + audio_pins_pri: audio_pinmux_pri { + mux_1 { + pins = "gpio29"; + function = "audio_pri"; + drive-strength = <8>; + bias-pull-down; + }; + + mux_2 { + pins = "gpio30"; + function = "audio_pri"; + drive-strength = <8>; + bias-pull-down; + }; + + mux_3 { + pins = "gpio31"; + function = "audio_pri"; + drive-strength = <4>; + bias-pull-down; + }; + + mux_4 { + pins = "gpio32"; + function = "audio_pri"; + drive-strength = <4>; + bias-pull-down; + }; + }; + + i2c_1_pins: i2c-1-state { + pins = "gpio29", "gpio30"; + function = "blsp1_i2c0"; + drive-strength = <8>; + bias-pull-up; + }; + + spi_2_pins: spi-2-pins { + pins = "gpio33", "gpio34", "gpio35"; + function = "blsp2_spi0"; + drive-strength = <8>; + bias-pull-down; + }; + + sdc_default_state: sdc-default-state { + clk-pins { + pins = "gpio13"; + function = "sdc_clk"; + drive-strength = <8>; + bias-disable; + }; + + cmd-pins { + pins = "gpio12"; + function = "sdc_cmd"; + drive-strength = <8>; + bias-pull-up; + }; + + data-pins { + pins = "gpio8", "gpio9", "gpio10", "gpio11"; + function = "sdc_data"; + drive-strength = <8>; + bias-pull-up; + }; + }; + + spi_0_data_clk_pins: spi-0-data-clk-state { + pins = "gpio14", "gpio15", "gpio16"; + function = "blsp0_spi"; + drive-strength = <2>; + bias-pull-down; + }; + + spi_0_cs_pins: spi-0-cs-state { + pins = "gpio17"; + function = "blsp0_spi"; + drive-strength = <2>; + bias-pull-up; + }; + + qspi_default_state: qspi-default-state { + qspi_clock { + pins = "gpio13"; + function = "qspi_clk"; + drive-strength = <8>; + bias-pull-down; + }; + + qspi_cs { + pins = "gpio12"; + function = "qspi_cs"; + drive-strength = <8>; + bias-pull-up; + }; + + qspi_data { + pins = "gpio8", "gpio9", "gpio10", "gpio11"; + function = "qspi_data"; + drive-strength = <8>; + bias-pull-down; + }; + }; + + serial_1_pins: serial1-pinmux { + pins = "gpio33", "gpio34", "gpio35", "gpio36"; + function = "blsp1_uart2"; + drive-strength = <8>; + bias-pull-up; + }; + + gpio_leds_default: gpio-leds-default-state { + led_wifi { + pins = "gpio36"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + led_blue { + pins = "gpio49"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + led_red { + pins = "gpio37"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + led_green { + pins = "gpio38"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + led_all_enable { + pins = "gpio24"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + }; + hwwatchdog { + pins = "gpio39"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + + button_pins: button-state { + pins = "gpio35"; + function = "gpio"; + drive-strength = <8>; + bias-pull-up; + }; + + pwm_pins: pwm-state { + pins = "gpio46"; + function = "pwm0"; + drive-strength = <8>; + }; + + pcie1_default_state: pcie1-default-state { + pins = "gpio47"; + function = "gpio"; + drive-strength = <8>; + bias-pull-up; + output-low; + }; +}; + +&license_manager { + status = "okay"; +}; + +&usb3 { + qcom,multiplexed-phy; + status = "okay"; +}; + +&pwm { + pinctrl-0 = <&pwm_pins>; + pinctrl-names = "default"; + status = "okay"; +}; + +&hs_m31phy_0 { + status = "okay"; +}; + +&ssuniphy_0 { + status = "okay"; +}; diff --git a/feeds/qca-wifi-7/ipq53xx/image/ipq53xx.mk b/feeds/qca-wifi-7/ipq53xx/image/ipq53xx.mk index 6fd0cef51..b69e13776 100755 --- a/feeds/qca-wifi-7/ipq53xx/image/ipq53xx.mk +++ b/feeds/qca-wifi-7/ipq53xx/image/ipq53xx.mk @@ -204,3 +204,16 @@ define Device/cig_wf672 DEVICE_PACKAGES := ath12k-wifi-cig-wf672 ath12k-firmware-ipq5332 ath12k-firmware-qcn92xx endef TARGET_DEVICES += cig_wf672 + +define Device/asterfusion_ap7330 + DEVICE_TITLE := Asterfusion AP7330 + DEVICE_DTS := ipq5332-asterfusion-ap7330 + DEVICE_DTS_CONFIG := config@mi01.6 + DEVICE_DTS_DIR := ../dts + SUPPORTED_DEVICES := asterfusion,AP7330 AP7330 + IMAGE/sysupgrade.tar := sysupgrade-tar | append-metadata + IMAGE/nand-factory.bin := append-ubi | qsdk-ipq-factory-nand + IMAGE/nand-factory.ubi := append-ubi + DEVICE_PACKAGES := ath12k-wifi-asterfusion-ap7330 ath12k-firmware-qcn92xx ath12k-firmware-ipq5332 +endef +TARGET_DEVICES += asterfusion_ap7330 diff --git a/profiles/asterfusion_ap7330.yml b/profiles/asterfusion_ap7330.yml new file mode 100644 index 000000000..42dd3843b --- /dev/null +++ b/profiles/asterfusion_ap7330.yml @@ -0,0 +1,16 @@ +--- +profile: asterfusion_ap7330 +target: ipq53xx +subtarget: generic +description: Build image for the asterfusion ap7330 +image: bin/targets/ipq53xx/generic/openwrt-ipq53xx-asterfusion_ap7330-squashfs-sysupgrade.tar +feeds: + - name: qca + path: ../../feeds/qca-wifi-7 +include: + - ucentral-ap +packages: + - ipq53xx + - qca-ssdk-shell +diffconfig: | + CONFIG_KERNEL_IPQ_MEM_PROFILE=0 From 09a7f53fb401e4884da019251c95b08f048ee82f Mon Sep 17 00:00:00 2001 From: John Crispin Date: Thu, 11 Dec 2025 06:22:52 +0100 Subject: [PATCH 03/12] ucentral-schema: update to latest HEAD a6fdd32 cmd_upgrade: enable curl to follow redirects 1c3e51f fix: Updated schema to fix issue with fingerprinting raw mode Signed-off-by: John Crispin --- feeds/ucentral/ucentral-schema/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/feeds/ucentral/ucentral-schema/Makefile b/feeds/ucentral/ucentral-schema/Makefile index dd540bfdb..91a9588c7 100644 --- a/feeds/ucentral/ucentral-schema/Makefile +++ b/feeds/ucentral/ucentral-schema/Makefile @@ -4,10 +4,10 @@ PKG_NAME:=ucentral-schema PKG_RELEASE:=1 PKG_SOURCE_URL=https://github.com/Telecominfraproject/wlan-ucentral-schema.git -PKG_MIRROR_HASH:=7eac2e19363e3810b0980afd0ae9ce63e11b7da0f5ccff5ff6b3c8c0e2c07a3e +PKG_MIRROR_HASH:=1fecb42750ea51d3da6a9ee7f8818424ecbc40eea524963cb9a6c465cea82944 PKG_SOURCE_PROTO:=git -PKG_SOURCE_DATE:=2025-12-05 -PKG_SOURCE_VERSION:=384eba5c0ecfe9ec0b09864752c3516937aec9db +PKG_SOURCE_DATE:=2025-12-11 +PKG_SOURCE_VERSION:=a6fdd32e408e7354c7ef6e63817e85f9a1ae8f1c PKG_MAINTAINER:=John Crispin PKG_LICENSE:=BSD-3-Clause From aa1d2b1c73d2c81deb016fe6046a2b9a8a820551 Mon Sep 17 00:00:00 2001 From: John Crispin Date: Thu, 11 Dec 2025 06:24:25 +0100 Subject: [PATCH 04/12] feeds/morse: update mirror hashes Signed-off-by: John Crispin --- feeds/morse/kernel/mm61xx/Makefile | 1 + feeds/morse/utils/hostapd_s1g/Makefile | 1 + feeds/morse/utils/morsecli/Makefile | 1 + feeds/morse/utils/wpa_supplicant_s1g/Makefile | 1 + 4 files changed, 4 insertions(+) diff --git a/feeds/morse/kernel/mm61xx/Makefile b/feeds/morse/kernel/mm61xx/Makefile index 02c240577..e987e7b6b 100644 --- a/feeds/morse/kernel/mm61xx/Makefile +++ b/feeds/morse/kernel/mm61xx/Makefile @@ -16,6 +16,7 @@ PKG_LICENSE_FILES:=LICENSE PKG_SOURCE_VERSION:=$(PKG_VERSION) PKG_SOURCE_URL:=https://github.com/MorseMicro/morse_driver.git +PKG_MIRROR_HASH:=3ba6acd2760a1939fcd8e6f9b4dadbaed4562ce9879a21ff2a821ab445fa22b5 PKG_HASH:=159d018a92e0cf742795ed49bd94fb6ed324163012bb91c2a2e4e0f6037bbf23 PKG_SOURCE_PROTO:=git PKG_SOURCE_VERSION:=b2ab42a5f22527422adf6afab73f2d019c16f162 diff --git a/feeds/morse/utils/hostapd_s1g/Makefile b/feeds/morse/utils/hostapd_s1g/Makefile index 89224ef66..dd3f376e0 100644 --- a/feeds/morse/utils/hostapd_s1g/Makefile +++ b/feeds/morse/utils/hostapd_s1g/Makefile @@ -16,6 +16,7 @@ PKG_LICENSE:=BSD-3-Clause PKG_SOURCE_VERSION:=$(PKG_VERSION) PKG_SOURCE_URL:=https://github.com/MorseMicro/hostap.git +PKG_MIRROR_HASH:=a2f17ce3d2fe25d45cc2d6869e9ea644bcac441ec9b541972034768d4fc63608 PKG_HASH:=a2f17ce3d2fe25d45cc2d6869e9ea644bcac441ec9b541972034768d4fc63608 PKG_SOURCE_PROTO:=git diff --git a/feeds/morse/utils/morsecli/Makefile b/feeds/morse/utils/morsecli/Makefile index 7a8059185..ee1298a32 100644 --- a/feeds/morse/utils/morsecli/Makefile +++ b/feeds/morse/utils/morsecli/Makefile @@ -17,6 +17,7 @@ PKG_LICENSE_FILES:= PKG_SOURCE_VERSION:=$(PKG_VERSION) PKG_SOURCE_URL:=https://github.com/MorseMicro/morse_cli.git +PKG_MIRROR_HASH:=04c88a3aea99082a29eb1f84a9b62dcbb85980fa040e0e34901c1826f33ae74c PKG_HASH:=04c88a3aea99082a29eb1f84a9b62dcbb85980fa040e0e34901c1826f33ae74c PKG_SOURCE_PROTO:=git diff --git a/feeds/morse/utils/wpa_supplicant_s1g/Makefile b/feeds/morse/utils/wpa_supplicant_s1g/Makefile index d43e2ecc1..a3c34f744 100644 --- a/feeds/morse/utils/wpa_supplicant_s1g/Makefile +++ b/feeds/morse/utils/wpa_supplicant_s1g/Makefile @@ -16,6 +16,7 @@ PKG_LICENSE:=BSD-3-Clause PKG_SOURCE_VERSION:=$(PKG_VERSION) PKG_SOURCE_URL:=https://github.com/MorseMicro/hostap.git +PKG_MIRROR_HASH:=c342d1489d03363b79b5b4e185ccbceca53aab9e634daefb81180ad1012b77b7 PKG_HASH:=c342d1489d03363b79b5b4e185ccbceca53aab9e634daefb81180ad1012b77b7 PKG_SOURCE_PROTO:=git From 20f5fa0284f9bf83c2a1ae0b75af75c4c1d60c37 Mon Sep 17 00:00:00 2001 From: John Crispin Date: Thu, 11 Dec 2025 08:06:34 +0100 Subject: [PATCH 05/12] profiles/edgecore_eap111.yml: use the sdk kernel for v4.2 Signed-off-by: John Crispin --- profiles/edgecore_eap111.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/profiles/edgecore_eap111.yml b/profiles/edgecore_eap111.yml index 42d16447c..b4c36639e 100644 --- a/profiles/edgecore_eap111.yml +++ b/profiles/edgecore_eap111.yml @@ -1,12 +1,12 @@ --- profile: edgecore_eap111 target: mediatek -subtarget: filogic +subtarget: mt7981 description: Build image for the EdgeCore EAP111 -image: bin/targets/mediatek/filogic/openwrt-mediatek-filogic-edgecore_eap111-squashfs-sysupgrade.bin +image: bin/targets/mediatek/mt7981/openwrt-mediatek-mt7981-edgecore_eap111-squashfs-sysupgrade.bin feeds: - name: mediatek - path: ../../feeds/mediatek + path: ../../feeds/mediatek-sdk packages: - mediatek include: From 352e94a1339b957900ea3ba70d4d352bef021844 Mon Sep 17 00:00:00 2001 From: Venkat Chimata Date: Mon, 8 Dec 2025 16:10:10 +0530 Subject: [PATCH 06/12] ratelimit: generate shorter IFB names for phy-based interfaces MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Interfaces like phy6g-ap0 can produce overly long IFB device names (e.g., i-phy6g-ap0), which may exceed kernel name-length limits, specifically in case of VLANs. This patch normalizes such interface names by replacing the phy prefix with p and shortening ap → a, producing more compact IFB device names (e.g., i-p2g-a0). Other interfaces continue using their original names. Signed-off-by: Venkat Chimata --- feeds/ucentral/ratelimit/files/usr/bin/ratelimit | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/feeds/ucentral/ratelimit/files/usr/bin/ratelimit b/feeds/ucentral/ratelimit/files/usr/bin/ratelimit index abd18736c..c22ed6563 100755 --- a/feeds/ucentral/ratelimit/files/usr/bin/ratelimit +++ b/feeds/ucentral/ratelimit/files/usr/bin/ratelimit @@ -37,7 +37,19 @@ function qdisc_del(iface) { } function ifb_dev(iface) { - return "i-" + iface; + let ifbname; + + if ((index(iface, 'phy') != -1) && (index(iface, 'ap') != -1)) { + // For interfaces like phy6g-ap0, phy5g-ap0, phy2g-ap0 + // we replace 'phy' with "p" to confine the ifb name length + // and replace 'ap' with 'a' to further shorten it. + ifbname = replace(iface, 'phy', 'p'); + ifbname = replace(ifbname, 'ap', 'a'); + } else { + ifbname = iface; + } + ifbname = "i-" + ifbname; + return ifbname; } function ifb_add(iface, ifbdev) { From 501c11be529dc7f89778b69a51a8ef7c87110d75 Mon Sep 17 00:00:00 2001 From: Venkat Chimata Date: Thu, 11 Dec 2025 10:54:19 +0530 Subject: [PATCH 07/12] bandwidth: Correct handling of RADIUS-assigned bandwidth limits Description: Hostapd successfully parsed the uplink and downlink bandwidth attributes from the RADIUS server, but the values were not being propagated correctly into sta_info. As a result, the bandwidth information was missing in the UBUS events sent to ucentral-event. Fix: Ensure the parsed bandwidth values are correctly passed to sta_info so they are included in subsequent UBUS notifications. Tests Performed: Configured per-client bandwidth limits on the RADIUS server and verified that: - The AP enforces the configured uplink/downlink limits, and - The correct bandwidth values appear in the UBUS events. Signed-off-by: Venkat Chimata --- ...t-handling-of-RADIUS-assigned-bandwi.patch | 69 +++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 feeds/qca-wifi-7/hostapd/patches/zzz-t00-013-bandwidth-Correct-handling-of-RADIUS-assigned-bandwi.patch diff --git a/feeds/qca-wifi-7/hostapd/patches/zzz-t00-013-bandwidth-Correct-handling-of-RADIUS-assigned-bandwi.patch b/feeds/qca-wifi-7/hostapd/patches/zzz-t00-013-bandwidth-Correct-handling-of-RADIUS-assigned-bandwi.patch new file mode 100644 index 000000000..2926183fd --- /dev/null +++ b/feeds/qca-wifi-7/hostapd/patches/zzz-t00-013-bandwidth-Correct-handling-of-RADIUS-assigned-bandwi.patch @@ -0,0 +1,69 @@ +From c2e1dbd799ae5ed166e9c84a3c3d3a07a8f8cc9b Mon Sep 17 00:00:00 2001 +From: Venkat Chimata +Date: Thu, 11 Dec 2025 10:38:07 +0530 +Subject: [PATCH] bandwidth: Correct handling of RADIUS-assigned bandwidth + limits + +Description: +Hostapd successfully parsed the uplink and downlink bandwidth attributes from +the RADIUS server, but the values were not being propagated correctly into +sta_info. As a result, the bandwidth information was missing in the UBUS +events sent to ucentral-event. + +Fix: +Ensure the parsed bandwidth values are correctly passed to sta_info so they + are included in subsequent UBUS notifications. + +Tests Performed: +Configured per-client bandwidth limits on the RADIUS server and verified that: + + - The AP enforces the configured uplink/downlink limits, and + - The correct bandwidth values appear in the UBUS events. + +Signed-off-by: Venkat Chimata +--- + src/ap/ieee802_11.c | 2 ++ + src/ap/ieee802_11_auth.c | 1 + + src/ap/ieee802_11_auth.h | 1 + + 3 files changed, 4 insertions(+) + +diff --git a/src/ap/ieee802_11.c b/src/ap/ieee802_11.c +index ef1ad21..615fb32 100644 +--- a/src/ap/ieee802_11.c ++++ b/src/ap/ieee802_11.c +@@ -2485,6 +2485,8 @@ int ieee802_11_set_radius_info(struct hostapd_data *hapd, struct sta_info *sta, + ap_sta_no_session_timeout(hapd, sta); + } + ++ os_memcpy(sta->bandwidth, info->bandwidth, sizeof(sta->bandwidth)); ++ + return 0; + } + +diff --git a/src/ap/ieee802_11_auth.c b/src/ap/ieee802_11_auth.c +index e673296..9d0d734 100644 +--- a/src/ap/ieee802_11_auth.c ++++ b/src/ap/ieee802_11_auth.c +@@ -581,6 +581,7 @@ hostapd_acl_recv_radius(struct radius_msg *msg, struct radius_msg *req, + os_memcpy(info->radius_cui, buf, len); + } + ++ radius_msg_get_wispr(msg, info->bandwidth); + if (hapd->conf->wpa_psk_radius == PSK_RADIUS_REQUIRED && + !info->psk) + cache->accepted = HOSTAPD_ACL_REJECT; +diff --git a/src/ap/ieee802_11_auth.h b/src/ap/ieee802_11_auth.h +index 22ae1a9..b0005bd 100644 +--- a/src/ap/ieee802_11_auth.h ++++ b/src/ap/ieee802_11_auth.h +@@ -23,6 +23,7 @@ struct radius_sta { + struct hostapd_sta_wpa_psk_short *psk; + char *identity; + char *radius_cui; ++ u32 bandwidth[2]; + }; + + int hostapd_check_acl(struct hostapd_data *hapd, const u8 *addr, +-- +2.34.1 + From 5c5eb7891cff1cb6167c8c25df1075139c59d606 Mon Sep 17 00:00:00 2001 From: Tanya Singh Date: Wed, 10 Dec 2025 14:13:46 +0800 Subject: [PATCH 08/12] rrmd: Add DFS channel exclusion support to the RCS (Random Channel Selection) algo when DFS is disabled Fixes: WIFI-15270 Signed-off-by: Tanya Singh --- .../files/usr/share/rrmd/policy_chanutil.uc | 43 ++++++++++++++----- 1 file changed, 33 insertions(+), 10 deletions(-) diff --git a/feeds/ucentral/rrmd/files/usr/share/rrmd/policy_chanutil.uc b/feeds/ucentral/rrmd/files/usr/share/rrmd/policy_chanutil.uc index 115f5cdeb..5a382caaf 100644 --- a/feeds/ucentral/rrmd/files/usr/share/rrmd/policy_chanutil.uc +++ b/feeds/ucentral/rrmd/files/usr/share/rrmd/policy_chanutil.uc @@ -364,9 +364,9 @@ function switch_status_check(iface, dfs_enabled_5g_flag) { let cac_time = trim(_cac_time.read('all')); _cac_time.close(); - // if cac_time is a valid number, set timer to cac_time + 5 seconds + // if cac_time is a valid number, set timer to cac_time + 10 seconds if (cac_time > 0 && match(cac_time, /^[0-9]+$/)) { - timer = int(cac_time) + 5; + timer = int(cac_time) + 10; } while (p < timer) { @@ -537,7 +537,7 @@ function get_chan_util(radio_band, sleep_time) { return chan_util; } -function random_channel_selection(iface, band, htmode, chan_list_valid) { +function random_channel_selection(iface, band, htmode, chan_list_valid, exclude_dfs) { let math = require('math'); let bw = replace(htmode, /[^0-9]/g, ''); let iface_num = replace(iface, /[^0-9]/g, ''); @@ -547,7 +547,9 @@ function random_channel_selection(iface, band, htmode, chan_list_valid) { } // channel list from the driver based on the country code - let chan_list_cc = global.phy.phys[phy_id].channels; + let chan_list_cc = uniq(sort(global.phy.phys[phy_id].channels, (a, b) => a - b)); + // DFS channel list from the driver + let dfs_chan_list = global.phy.phys[phy_id].dfs_channels || []; // complete channel list let chan_list_default = {}; // allowed channel list to select random channel from @@ -555,6 +557,7 @@ function random_channel_selection(iface, band, htmode, chan_list_valid) { let chan_list_init = []; let chan_list_legal = []; + let _chan_list_legal = []; ulog_info(`[%s] Channel list from the driver = %s \n`, iface, chan_list_cc); ulog_info(`[%s] Selected channel list from config (default channel list shall be used in case channels haven't been selected) = %s \n`, iface, (chan_list_valid || '[]')); @@ -663,9 +666,29 @@ function random_channel_selection(iface, band, htmode, chan_list_valid) { if (band == '5g' && (bw == "80" || bw == "40")) { // exclude last channels from the channel list when bw is 80MHz or 40MHz to avoid selecting a channel with a secondary channel that cannot be supported - chan_list_legal = slice(chan_list_init, 0, length(chan_list_init)-1) ; + _chan_list_legal = slice(chan_list_init, 0, length(chan_list_init)-1) ; } else { - chan_list_legal = chan_list_init; + _chan_list_legal = chan_list_init; + } + + // check if dfs is enabled or disabled for 5G radio; if dfs is disabled, remove dfs channels from chan_list_legal + if (band == '5g' && exclude_dfs == true) { + ulog_info(`[%s] DFS Channel list from the driver = %s \n`, iface, dfs_chan_list); + + for (let _legal_chan in _chan_list_legal) { + let is_dfs_chan = false; + for (let dfs_chan in dfs_chan_list) { + if (dfs_chan == _legal_chan) { + is_dfs_chan = true; + break; + } + } + if (is_dfs_chan == false) { + push(chan_list_legal, _legal_chan); + } + } + } else { + chan_list_legal = _chan_list_legal; } if (chan_list_valid) { @@ -710,13 +733,13 @@ function check_center_channel(chosen_random_channel, current_channel, band, htmo return ret; } -function algo_rcs(iface, current_channel, band, htmode, selected_channels) { +function algo_rcs(iface, current_channel, band, htmode, selected_channels, exclude_dfs) { let chosen_random_channel = 0; let res = 0; let same_center_channel = false; // random_channel_selection script will help to select random channel - chosen_random_channel = random_channel_selection(iface, band, htmode, selected_channels); + chosen_random_channel = random_channel_selection(iface, band, htmode, selected_channels, exclude_dfs); stats_info_write("/tmp/rrm_random_channel_" + iface, chosen_random_channel); if (chosen_random_channel == current_channel) { @@ -826,7 +849,7 @@ function channel_optimize() { // get radio's uci config htmode[j] = wireless_status[radio_id].config.htmode; - acs_exclude_dfs[j] = wireless_status[radio_id].config.acs_exclude_dfs; + acs_exclude_dfs[j] = wireless_status[radio_id].config.acs_exclude_dfs || false; channel_config[j] = wireless_status[radio_id].config.channel; selected_channels[j] = wireless_status[radio_id].config.channels; @@ -961,7 +984,7 @@ function channel_optimize() { let assign_max_chan_util = 0; // call RCS for multiple random chan - let chan_scan = algo_rcs(radio_iface[l], curr_chan_list[num_chan-1], radio_band[l], htmode[l], selected_channels[l]); + let chan_scan = algo_rcs(radio_iface[l], curr_chan_list[num_chan-1], radio_band[l], htmode[l], selected_channels[l], acs_exclude_dfs[l]); curr_chan_list[num_chan] = stats_info_read("/tmp/rrm_random_channel_" + radio_iface[l]); if (chan_scan == 1) { From ee601508d97260e44125bc40b51dfe6abd2d947b Mon Sep 17 00:00:00 2001 From: Sebastian Huang Date: Fri, 12 Dec 2025 15:35:10 +0800 Subject: [PATCH 09/12] qca-wifi-7/hostapd: keep BSS coloring enabled with the same color if there is no free colors Fixes: WIFI-15279 Signed-off-by: Sebastian Huang --- ...ep-the-same-color-when-no-free-color.patch | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 feeds/qca-wifi-7/hostapd/patches/zzz-t01-keep-the-same-color-when-no-free-color.patch diff --git a/feeds/qca-wifi-7/hostapd/patches/zzz-t01-keep-the-same-color-when-no-free-color.patch b/feeds/qca-wifi-7/hostapd/patches/zzz-t01-keep-the-same-color-when-no-free-color.patch new file mode 100644 index 000000000..625112717 --- /dev/null +++ b/feeds/qca-wifi-7/hostapd/patches/zzz-t01-keep-the-same-color-when-no-free-color.patch @@ -0,0 +1,20 @@ +diff -urp a/src/ap/hostapd.c b/src/ap/hostapd.c +--- a/src/ap/hostapd.c 2025-10-28 15:50:59.024346272 +0800 ++++ b/src/ap/hostapd.c 2025-12-09 23:03:55.351738472 +0800 +@@ -5115,14 +5115,11 @@ static void hostapd_switch_color_timeout + } + + if (i == HE_OPERATION_BSS_COLOR_MAX) { +- /* There are no free colors so turn BSS coloring off */ ++ /* There are no free colors so do not change color and wait for next check */ + wpa_printf(MSG_INFO, +- "No free colors left, turning off BSS coloring"); ++ "No free colors left, stay at the same color"); + hapd->iface->conf->he_op.he_bss_color_disabled = 1; +- hapd->iface->conf->he_op.he_bss_color = os_random() % 63 + 1; + hapd->no_free_color = 1; +- for (b = 0; b < hapd->iface->num_bss; b++) +- ieee802_11_set_beacon(hapd->iface->bss[b]); + + /* Enabling for next check after timeout*/ + hapd->iface->conf->he_op.he_bss_color_disabled = 0; From e366742c1b34a7c017e556b58012117da0e6028f Mon Sep 17 00:00:00 2001 From: ruanyaoyu Date: Fri, 12 Dec 2025 09:46:13 +0800 Subject: [PATCH 10/12] ipq807x: enable CPTCFG_ATH12K_DEBUG for CIG devices Signed-off-by: ruanyaoyu --- profiles/cig_wf189.yml | 1 + profiles/cig_wf189h.yml | 1 + profiles/cig_wf189w.yml | 1 + profiles/cig_wf672.yml | 1 + 4 files changed, 4 insertions(+) diff --git a/profiles/cig_wf189.yml b/profiles/cig_wf189.yml index df5abf107..d213ab76c 100644 --- a/profiles/cig_wf189.yml +++ b/profiles/cig_wf189.yml @@ -18,3 +18,4 @@ packages: - kmod-cig-poe-judgment diffconfig: | CONFIG_KERNEL_IPQ_MEM_PROFILE=0 + CONFIG_PACKAGE_ATH_DEBUG=y diff --git a/profiles/cig_wf189h.yml b/profiles/cig_wf189h.yml index b123a1578..f6b6852d4 100644 --- a/profiles/cig_wf189h.yml +++ b/profiles/cig_wf189h.yml @@ -17,3 +17,4 @@ packages: - kmod-cig-poe-judgment diffconfig: | CONFIG_KERNEL_IPQ_MEM_PROFILE=0 + CONFIG_PACKAGE_ATH_DEBUG=y diff --git a/profiles/cig_wf189w.yml b/profiles/cig_wf189w.yml index 6e90600b9..5376917fc 100644 --- a/profiles/cig_wf189w.yml +++ b/profiles/cig_wf189w.yml @@ -17,3 +17,4 @@ packages: - kmod-cig-poe-judgment diffconfig: | CONFIG_KERNEL_IPQ_MEM_PROFILE=0 + CONFIG_PACKAGE_ATH_DEBUG=y diff --git a/profiles/cig_wf672.yml b/profiles/cig_wf672.yml index 5cbe23497..51fa164a5 100644 --- a/profiles/cig_wf672.yml +++ b/profiles/cig_wf672.yml @@ -27,3 +27,4 @@ diffconfig: | CONFIG_KERNEL_IPQ_MEM_PROFILE=0 CONFIG_BUSYBOX_CUSTOM=y CONFIG_BUSYBOX_CONFIG_STTY=y + CONFIG_PACKAGE_ATH_DEBUG=y From a7a9458d81d3402a62a202cc3139d119bd602ea6 Mon Sep 17 00:00:00 2001 From: John Crispin Date: Fri, 12 Dec 2025 16:01:44 +0100 Subject: [PATCH 11/12] profiles/sonicfi_rap63xc-211g: add missing hostap feed Signed-off-by: John Crispin --- profiles/sonicfi_rap63xc-211g.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/profiles/sonicfi_rap63xc-211g.yml b/profiles/sonicfi_rap63xc-211g.yml index c0efe31cf..6a4745175 100755 --- a/profiles/sonicfi_rap63xc-211g.yml +++ b/profiles/sonicfi_rap63xc-211g.yml @@ -6,3 +6,4 @@ description: Build image for the Sonicfi EAP RAP63XC-211G image: bin/targets/ramips/mt7621/openwrt-ramips-mt7621-sonicfi_rap63xc-211g-squashfs-sysupgrade.bin include: - ucentral-ap + - hostapd From 815006f3e7da8a187b9d43fe75e0dbf731ee977d Mon Sep 17 00:00:00 2001 From: John Crispin Date: Fri, 12 Dec 2025 16:00:50 +0100 Subject: [PATCH 12/12] ucentral: set version to 4.2.0 Signed-off-by: John Crispin --- .../ucentral-client/files/etc/ucentral/version.json | 4 ++-- feeds/ucentral/ucentral-schema/Makefile | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/feeds/ucentral/ucentral-client/files/etc/ucentral/version.json b/feeds/ucentral/ucentral-client/files/etc/ucentral/version.json index 3aa7f606d..1afb1c11a 100644 --- a/feeds/ucentral/ucentral-client/files/etc/ucentral/version.json +++ b/feeds/ucentral/ucentral-client/files/etc/ucentral/version.json @@ -1,5 +1,5 @@ { "major": 4, - "minor": 1, - "patch": 1 + "minor": 2, + "patch": 0 } diff --git a/feeds/ucentral/ucentral-schema/Makefile b/feeds/ucentral/ucentral-schema/Makefile index 91a9588c7..1d426c3af 100644 --- a/feeds/ucentral/ucentral-schema/Makefile +++ b/feeds/ucentral/ucentral-schema/Makefile @@ -4,10 +4,10 @@ PKG_NAME:=ucentral-schema PKG_RELEASE:=1 PKG_SOURCE_URL=https://github.com/Telecominfraproject/wlan-ucentral-schema.git -PKG_MIRROR_HASH:=1fecb42750ea51d3da6a9ee7f8818424ecbc40eea524963cb9a6c465cea82944 +PKG_MIRROR_HASH:=6d3b8e342ce8e7aeef908acfcbefc989523f0de9cac215d8be4f148746c4e0ce PKG_SOURCE_PROTO:=git -PKG_SOURCE_DATE:=2025-12-11 -PKG_SOURCE_VERSION:=a6fdd32e408e7354c7ef6e63817e85f9a1ae8f1c +PKG_SOURCE_DATE:=2025-12-12 +PKG_SOURCE_VERSION:=d26c4b0a1e38d331deeef89c5ccf669ce9044791 PKG_MAINTAINER:=John Crispin PKG_LICENSE:=BSD-3-Clause