mirror of
https://github.com/Telecominfraproject/wlan-ap.git
synced 2025-10-29 09:32:34 +00:00
Compare commits
11 Commits
WIFI-14873
...
staging-WI
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
06f5ab9ad4 | ||
|
|
7795c51947 | ||
|
|
9e68fc6e66 | ||
|
|
b60c244d93 | ||
|
|
ae1f394e28 | ||
|
|
d09126c674 | ||
|
|
810bc501e1 | ||
|
|
3001fa88fb | ||
|
|
89a1be09d9 | ||
|
|
3cb1f9c4dd | ||
|
|
63ef3588ce |
@@ -24,8 +24,6 @@ endef
|
||||
#
|
||||
|
||||
ALLWIFIBOARDS:= \
|
||||
cig-wf186w \
|
||||
cig-wf186h \
|
||||
cig-wf660a \
|
||||
cig-wf194c \
|
||||
cig-wf194c4 \
|
||||
@@ -108,6 +106,16 @@ $(call Package/ath11k-wifi-default)
|
||||
TITLE:=cig-wf196 bdf
|
||||
endef
|
||||
|
||||
define Package/ath11k-wifi-cig-wf186w
|
||||
$(call Package/ath11k-wifi-default)
|
||||
TITLE:=cig-wf186w bdf
|
||||
endef
|
||||
|
||||
define Package/ath11k-wifi-cig-wf186h
|
||||
$(call Package/ath11k-wifi-default)
|
||||
TITLE:=cig-wf186h bdf
|
||||
endef
|
||||
|
||||
define Package/ath11k-wifi-gl-ax1800
|
||||
$(call Package/ath11k-wifi-default)
|
||||
TITLE:=gl-ax1800 bdf
|
||||
@@ -284,6 +292,24 @@ define Package/ath11k-wifi-cig-wf196/install
|
||||
$(INSTALL_DATA) ./board-cig-wf196-us.bin.IPQ8074 $(1)/lib/firmware/ath11k/IPQ8074/hw2.0/board.bin.US
|
||||
endef
|
||||
|
||||
define Package/ath11k-wifi-cig-wf186w/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/ath11k/IPQ5018/hw1.0/
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/ath11k/qcn6122/hw1.0/
|
||||
$(INSTALL_DATA) ./board-cig-wf186w-us.bin.IPQ5018 $(1)/lib/firmware/ath11k/IPQ5018/hw1.0/board.bin.US
|
||||
$(INSTALL_DATA) ./board-cig-wf186w-ca.bin.IPQ5018 $(1)/lib/firmware/ath11k/IPQ5018/hw1.0/board.bin.CA
|
||||
$(INSTALL_DATA) ./board-cig-wf186w-us.bin.QCN6122 $(1)/lib/firmware/ath11k/qcn6122/hw1.0/board.bin.US
|
||||
$(INSTALL_DATA) ./board-cig-wf186w-ca.bin.QCN6122 $(1)/lib/firmware/ath11k/qcn6122/hw1.0/board.bin.CA
|
||||
endef
|
||||
|
||||
define Package/ath11k-wifi-cig-wf186h/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/ath11k/IPQ5018/hw1.0/
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/ath11k/qcn6122/hw1.0/
|
||||
$(INSTALL_DATA) ./board-cig-wf186h-us.bin.IPQ5018 $(1)/lib/firmware/ath11k/IPQ5018/hw1.0/board.bin.US
|
||||
$(INSTALL_DATA) ./board-cig-wf186h-ca.bin.IPQ5018 $(1)/lib/firmware/ath11k/IPQ5018/hw1.0/board.bin.CA
|
||||
$(INSTALL_DATA) ./board-cig-wf186h-us.bin.QCN6122 $(1)/lib/firmware/ath11k/qcn6122/hw1.0/board.bin.US
|
||||
$(INSTALL_DATA) ./board-cig-wf186h-ca.bin.QCN6122 $(1)/lib/firmware/ath11k/qcn6122/hw1.0/board.bin.CA
|
||||
endef
|
||||
|
||||
define Package/ath11k-wifi-optimcloud-d50/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/ath11k/IPQ5018/hw1.0/
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/ath11k/QCN9074/hw1.0/
|
||||
@@ -393,8 +419,6 @@ define Package/ath11k-wifi-cig-wf188n/install
|
||||
$(INSTALL_DATA) ./board-cig-wf188n-us.bin.IPQ6018 $(1)/lib/firmware/ath11k/IPQ6018/hw1.0/board.bin.US
|
||||
endef
|
||||
|
||||
$(eval $(call generate-ath11k-wifi-package,cig-wf186w,Cigtech WF186w))
|
||||
$(eval $(call generate-ath11k-wifi-package,cig-wf186h,Cigtech WF186h))
|
||||
$(eval $(call generate-ath11k-wifi-package,cig-wf660a,Cigtech WF660a))
|
||||
$(eval $(call generate-ath11k-wifi-package,cig-wf194c,Cigtech WF194c))
|
||||
$(eval $(call generate-ath11k-wifi-package,cig-wf194c4,Cigtech WF194c4))
|
||||
@@ -440,6 +464,8 @@ $(eval $(call BuildPackage,ath11k-wifi-qcom-ipq8074))
|
||||
$(eval $(call BuildPackage,ath11k-wifi-qcom-ipq6018))
|
||||
$(eval $(call BuildPackage,ath11k-wifi-qcom-qcn9000))
|
||||
$(eval $(call BuildPackage,ath11k-wifi-cig-wf196))
|
||||
$(eval $(call BuildPackage,ath11k-wifi-cig-wf186w))
|
||||
$(eval $(call BuildPackage,ath11k-wifi-cig-wf186h))
|
||||
$(eval $(call BuildPackage,ath11k-wifi-motorola-q14))
|
||||
$(eval $(call BuildPackage,ath11k-wifi-optimcloud-d50))
|
||||
$(eval $(call BuildPackage,ath11k-wifi-optimcloud-d60))
|
||||
|
||||
BIN
feeds/ipq807x_v5.4/ath11k-wifi/board-cig-wf186w-ca.bin.IPQ5018
Executable file
BIN
feeds/ipq807x_v5.4/ath11k-wifi/board-cig-wf186w-ca.bin.IPQ5018
Executable file
Binary file not shown.
BIN
feeds/ipq807x_v5.4/ath11k-wifi/board-cig-wf186w-ca.bin.QCN6122
Executable file
BIN
feeds/ipq807x_v5.4/ath11k-wifi/board-cig-wf186w-ca.bin.QCN6122
Executable file
Binary file not shown.
BIN
feeds/ipq807x_v5.4/ath11k-wifi/board-cig-wf186w-us.bin.IPQ5018
Executable file
BIN
feeds/ipq807x_v5.4/ath11k-wifi/board-cig-wf186w-us.bin.IPQ5018
Executable file
Binary file not shown.
BIN
feeds/ipq807x_v5.4/ath11k-wifi/board-cig-wf186w-us.bin.QCN6122
Executable file
BIN
feeds/ipq807x_v5.4/ath11k-wifi/board-cig-wf186w-us.bin.QCN6122
Executable file
Binary file not shown.
@@ -251,6 +251,32 @@ ath11k-macs)
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
ath11k/IPQ5018/hw1.0/board.bin)
|
||||
case "$board" in
|
||||
cig,wf186w|\
|
||||
cig,wf186h)
|
||||
country=`cat /etc/ucentral/country`
|
||||
if [ "$country" == "CA" ]; then
|
||||
ln -s /lib/firmware/ath11k/IPQ5018/hw1.0/board.bin.CA /lib/firmware/ath11k/IPQ5018/hw1.0/board.bin
|
||||
else
|
||||
ln -s /lib/firmware/ath11k/IPQ5018/hw1.0/board.bin.US /lib/firmware/ath11k/IPQ5018/hw1.0/board.bin
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
ath11k/qcn6122/hw1.0/board.bin)
|
||||
case "$board" in
|
||||
cig,wf186w|\
|
||||
cig,wf186h)
|
||||
country=`cat /etc/ucentral/country`
|
||||
if [ "$country" == "CA" ]; then
|
||||
ln -s /lib/firmware/ath11k/qcn6122/hw1.0/board.bin.CA /lib/firmware/ath11k/qcn6122/hw1.0/board.bin
|
||||
else
|
||||
ln -s /lib/firmware/ath11k/qcn6122/hw1.0/board.bin.US /lib/firmware/ath11k/qcn6122/hw1.0/board.bin
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
*)
|
||||
exit 1
|
||||
;;
|
||||
|
||||
66
feeds/ipq807x_v5.4/ipq50xx/base-files/etc/init.d/smp-affinity
Executable file
66
feeds/ipq807x_v5.4/ipq50xx/base-files/etc/init.d/smp-affinity
Executable file
@@ -0,0 +1,66 @@
|
||||
#!/bin/sh /etc/rc.common
|
||||
|
||||
START=99
|
||||
|
||||
adjust_irq_affinity() {
|
||||
#For 2G Radio
|
||||
irq_affinity_num=`grep -E -m1 'reo2host-destination-ring4' /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '`
|
||||
[ -n "$irq_affinity_num" ] && echo 2 > /proc/irq/$irq_affinity_num/smp_affinity
|
||||
irq_affinity_num=`grep -E -m1 'reo2host-destination-ring3' /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '`
|
||||
[ -n "$irq_affinity_num" ] && echo 1 > /proc/irq/$irq_affinity_num/smp_affinity
|
||||
irq_affinity_num=`grep -E -m1 'reo2host-destination-ring2' /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '`
|
||||
[ -n "$irq_affinity_num" ] && echo 2 > /proc/irq/$irq_affinity_num/smp_affinity
|
||||
irq_affinity_num=`grep -E -m1 'reo2host-destination-ring1' /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '`
|
||||
[ -n "$irq_affinity_num" ] && echo 1 > /proc/irq/$irq_affinity_num/smp_affinity
|
||||
irq_affinity_num=`grep -E -m1 'wbm2host-tx-completions-ring3' /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '`
|
||||
[ -n "$irq_affinity_num" ] && echo 3 > /proc/irq/$irq_affinity_num/smp_affinity
|
||||
irq_affinity_num=`grep -E -m1 'wbm2host-tx-completions-ring2' /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '`
|
||||
[ -n "$irq_affinity_num" ] && echo 2 > /proc/irq/$irq_affinity_num/smp_affinity
|
||||
irq_affinity_num=`grep -E -m1 'wbm2host-tx-completions-ring1' /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '`
|
||||
[ -n "$irq_affinity_num" ] && echo 1 > /proc/irq/$irq_affinity_num/smp_affinity
|
||||
irq_affinity_num=`grep -E -m1 'reo2ost-exception' /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '`
|
||||
[ -n "$irq_affinity_num" ] && echo 2 > /proc/irq/$irq_affinity_num/smp_affinity
|
||||
irq_affinity_num=`grep -E -m1 'wbm2host-rx-release' /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '`
|
||||
[ -n "$irq_affinity_num" ] && echo 2 > /proc/irq/$irq_affinity_num/smp_affinity
|
||||
irq_affinity_num=`grep -E -m1 'reo2host-status' /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '`
|
||||
[ -n "$irq_affinity_num" ] && echo 2 > /proc/irq/$irq_affinity_num/smp_affinity
|
||||
|
||||
#For 5G Radio
|
||||
irq_affinity_num=`grep -E -m1 'pci1_reo2host_destination_ring1' /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '`
|
||||
[ -n "$irq_affinity_num" ] && echo 1 > /proc/irq/$irq_affinity_num/smp_affinity
|
||||
irq_affinity_num=`grep -E -m1 'pci1_reo2host_destination_ring2' /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '`
|
||||
[ -n "$irq_affinity_num" ] && echo 2 > /proc/irq/$irq_affinity_num/smp_affinity
|
||||
irq_affinity_num=`grep -E -m1 'pci1_reo2host_destination_ring3' /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '`
|
||||
[ -n "$irq_affinity_num" ] && echo 1 > /proc/irq/$irq_affinity_num/smp_affinity
|
||||
irq_affinity_num=`grep -E -m1 'pci1_reo2host_destination_ring4' /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '`
|
||||
[ -n "$irq_affinity_num" ] && echo 2 > /proc/irq/$irq_affinity_num/smp_affinity
|
||||
irq_affinity_num=`grep -E -m1 'pci1_wbm2host_tx_completions_ring3' /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '`
|
||||
[ -n "$irq_affinity_num" ] && echo 2 > /proc/irq/$irq_affinity_num/smp_affinity
|
||||
irq_affinity_num=`grep -E -m1 'pci1_wbm2host_tx_completions_ring2' /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '`
|
||||
[ -n "$irq_affinity_num" ] && echo 2 > /proc/irq/$irq_affinity_num/smp_affinity
|
||||
irq_affinity_num=`grep -E -m1 'pci1_wbm2host_tx_completions_ring3' /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '`
|
||||
[ -n "$irq_affinity_num" ] && echo 3 > /proc/irq/$irq_affinity_num/smp_affinity
|
||||
irq_affinity_num=`grep -E -m1 'pci1_lmac_reo_misc_irq' /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '`
|
||||
[ -n "$irq_affinity_num" ] && echo 3 > /proc/irq/$irq_affinity_num/smp_affinity
|
||||
irq_affinity_num=`grep -E -m1 'pci1_ce0' /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '`
|
||||
[ -n "$irq_affinity_num" ] && echo 1 > /proc/irq/$irq_affinity_num/smp_affinity
|
||||
irq_affinity_num=`grep -E -m1 'pci1_ce1' /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '`
|
||||
[ -n "$irq_affinity_num" ] && echo 2 > /proc/irq/$irq_affinity_num/smp_affinity
|
||||
irq_affinity_num=`grep -E -m1 'pci1_ce2' /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '`
|
||||
[ -n "$irq_affinity_num" ] && echo 1 > /proc/irq/$irq_affinity_num/smp_affinity
|
||||
irq_affinity_num=`grep -E -m1 'pci1_ce3' /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '`
|
||||
[ -n "$irq_affinity_num" ] && echo 2 > /proc/irq/$irq_affinity_num/smp_affinity
|
||||
irq_affinity_num=`grep -E -m1 'pci1_ce5' /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '`
|
||||
[ -n "$irq_affinity_num" ] && echo 3 > /proc/irq/$irq_affinity_num/smp_affinity
|
||||
}
|
||||
|
||||
boot() {
|
||||
. /lib/functions.sh
|
||||
|
||||
case "$(board_name)" in
|
||||
cig,wf186h|\
|
||||
cig,wf186w)
|
||||
adjust_irq_affinity
|
||||
;;
|
||||
esac
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
#!/bin/sh
|
||||
|
||||
. /lib/functions.sh
|
||||
|
||||
board=$(board_name)
|
||||
|
||||
phy_dir="/sys/kernel/debug/ieee80211"
|
||||
# Count the number of phyX
|
||||
phy_count=$(ls -d $phy_dir/phy* 2>/dev/null | wc -l)
|
||||
echo "$phy_count" > /tmp/phy_count
|
||||
|
||||
case "$board" in
|
||||
"edgecore,eap112")
|
||||
phy1_file=/sys/kernel/debug/ieee80211/phy1/mt76/sr_enable
|
||||
phy2_file=/sys/kernel/debug/ieee80211/phy2/mt76/sr_enable
|
||||
|
||||
if [ -f "$phy1_file" ]; then
|
||||
check_phy1=$(cat $phy1_file)
|
||||
[ "$check_phy1" == 0 ] && echo 1 > $phy1_file
|
||||
fi
|
||||
|
||||
if [ -f "$phy2_file" ]; then
|
||||
check_phy2=$(cat $phy2_file)
|
||||
[ "$check_phy2" == 0 ] && echo 1 > $phy2_file
|
||||
fi
|
||||
|
||||
# note: phy0 is HaLow
|
||||
ln -s /sys/kernel/debug/ieee80211/phy1/mt76/sr_scene_cond /tmp/sr_scene_cond_phy2g
|
||||
ln -s /sys/kernel/debug/ieee80211/phy2/mt76/sr_scene_cond /tmp/sr_scene_cond_phy5g
|
||||
;;
|
||||
"edgecore,eap111")
|
||||
phy0_file=/sys/kernel/debug/ieee80211/phy0/mt76/sr_enable
|
||||
phy1_file=/sys/kernel/debug/ieee80211/phy1/mt76/sr_enable
|
||||
|
||||
if [ -f "$phy0_file" ]; then
|
||||
check_phy0=$(cat $phy0_file)
|
||||
echo "check_phy0 = $check_phy0"
|
||||
[ "$check_phy0" == 0 ] && echo 1 > $phy0_file
|
||||
fi
|
||||
|
||||
if [ -f "$phy1_file" ]; then
|
||||
check_phy1=$(cat $phy1_file)
|
||||
echo "check_phy1 = $check_phy1"
|
||||
[ "$check_phy1" == 0 ] && echo 1 > $phy1_file
|
||||
fi
|
||||
|
||||
ln -s /sys/kernel/debug/ieee80211/phy0/mt76/sr_scene_cond /tmp/sr_scene_cond_phy2g
|
||||
ln -s /sys/kernel/debug/ieee80211/phy1/mt76/sr_scene_cond /tmp/sr_scene_cond_phy5g
|
||||
;;
|
||||
esac
|
||||
@@ -1,107 +0,0 @@
|
||||
# Description: The Mesh11sd daemon expects the mesh interface name to follow the format 'mesh<index>'.
|
||||
# If it doesn't find this format, it attempts to set it in the UCI wireless configuration.
|
||||
# However, when operating in other modes such as AP, STA, or Ad-Hoc, the script was patched to remove
|
||||
# the mesh interface name from UCI. This process can lead to a race condition between the UI and Mesh11sd,
|
||||
# resulting in stale interface name values.
|
||||
# This patch resolves the issue by removing the setting of the interface name from the script, as it is
|
||||
# now managed through the UI, ensuring consistency and eliminating the race condition.
|
||||
|
||||
--- a/src/mesh11sd
|
||||
+++ b/src/mesh11sd
|
||||
@@ -387,45 +387,45 @@ elif [ "$1" = "daemon" ]; then
|
||||
|
||||
if [ $mode -eq 5 ]; then
|
||||
# startup=4, statusmode=0, enabled=1
|
||||
+ syslogmessage="mesh11sd v$version has started: mesh management mode $mode"
|
||||
startup=0
|
||||
statusmode=0
|
||||
mode=1
|
||||
- syslogmessage="mesh11sd v$version has started: mesh management mode $mode"
|
||||
|
||||
elif [ $mode -eq 4 ]; then
|
||||
# startup=4, statusmode=0, enabled=0
|
||||
+ syslogmessage="mesh11sd v$version has started: mesh status mode $mode"
|
||||
startup=0
|
||||
statusmode=2
|
||||
mode=0
|
||||
- syslogmessage="mesh11sd v$version has started: mesh status mode $mode"
|
||||
|
||||
elif [ $mode -eq 3 ]; then
|
||||
# startup=0, statusmode=2, enabled=1
|
||||
+ syslogmessage="mesh11sd v$version has started: mesh management mode $mode"
|
||||
startup=0
|
||||
statusmode=0
|
||||
mode=1
|
||||
- syslogmessage="mesh11sd v$version has started: mesh management mode $mode"
|
||||
|
||||
elif [ $mode -eq 2 ]; then
|
||||
# startup=0, statusmode=2, enabled=0
|
||||
+ syslogmessage="mesh11sd v$version has started: mesh status mode $mode"
|
||||
startup=0
|
||||
statusmode=2
|
||||
mode=0
|
||||
- syslogmessage="mesh11sd v$version has started: mesh status mode $mode"
|
||||
|
||||
elif [ $mode -eq 1 ]; then
|
||||
# startup=0, statusmode=0, enabled=1
|
||||
+ syslogmessage="mesh11sd v$version has started, mesh management mode $mode"
|
||||
startup=0
|
||||
statusmode=0
|
||||
mode=1
|
||||
- syslogmessage="mesh11sd v$version has started, mesh management mode $mode"
|
||||
|
||||
elif [ $mode -eq 0 ]; then
|
||||
# startup=0, statusmode=0, enabled=0
|
||||
+ syslogmessage="mesh11sd v$version has started: mesh status mode $mode"
|
||||
startup=0
|
||||
statusmode=2
|
||||
mode=0
|
||||
- syslogmessage="mesh11sd v$version has started: mesh status mode $mode"
|
||||
fi
|
||||
|
||||
if [ $mode -ne $lastmode ]; then
|
||||
@@ -441,26 +441,6 @@ elif [ "$1" = "daemon" ]; then
|
||||
meshconfigs=$(uci show wireless 2> /dev/null | grep "mode='mesh'" | awk -F ".mode='mesh'" '{printf "%s " $1}')
|
||||
|
||||
if [ ! -z "$meshconfigs" ]; then
|
||||
- for meshconfig in $meshconfigs; do
|
||||
- ifname=$(uci get $meshconfig.ifname 2> /dev/null)
|
||||
-
|
||||
- if [ -z "$ifname" ] || [ "$ifname" != "mesh$meshindex" ]; then
|
||||
- # No interface name in config, so add one
|
||||
- ucibatch="set $meshconfig.ifname='mesh$meshindex'"
|
||||
- echo "$ucibatch" | uci batch
|
||||
- changed=1
|
||||
- syslogmessage="Setting mesh interface name to [ mesh$meshindex ]"
|
||||
- write_to_syslog
|
||||
- fi
|
||||
- meshindex=$(($meshindex+1))
|
||||
- done
|
||||
-
|
||||
- if [ "$changed" -eq 1 ]; then
|
||||
- changed=0
|
||||
- restart_mesh
|
||||
- continue
|
||||
- fi
|
||||
-
|
||||
# get a list of interfaces
|
||||
get_mesh_iflist
|
||||
|
||||
@@ -482,13 +462,13 @@ elif [ "$1" = "daemon" ]; then
|
||||
# this is not a mesh interface
|
||||
continue
|
||||
else
|
||||
- # Check if this interface has a uci ifname
|
||||
- uciname=$(uci show wireless | grep "ifname='$iface'" | awk -F "." '{printf "wireless.%s" $2}')
|
||||
+ # Check if this interface mode is 'mesh'
|
||||
+ uciname=$(uci show wireless | grep "mode='mesh'" | awk -F "." '{printf "wireless.%s" $2}')
|
||||
|
||||
if [ -z "$uciname" ]; then
|
||||
- # Error - No interface name in config, we should have added one
|
||||
+ # Error - No interface with mode as mesh
|
||||
debugtype="err"
|
||||
- syslogmessage="Error getting mesh interface name"
|
||||
+ syslogmessage="Error getting mesh interface section"
|
||||
write_to_syslog
|
||||
continue
|
||||
fi
|
||||
@@ -0,0 +1,63 @@
|
||||
# Description: The Mesh11sd daemon sets the interface name 'mesh<index>' to the mesh interface.
|
||||
# However, even after disabling the mesh mode, this interface name persists, leading to confusion
|
||||
# when operating in other modes like AP/STA/Ad-Hoc, where the interface name continues to display as 'mesh<idx>'.
|
||||
# This patch addresses the issue by removing the 'mesh<idx>' interface name from the configuration when the device
|
||||
# is no longer in mesh mode. As this modification is not present in the upstream version, it is necessary to apply
|
||||
# this local patch to resolve the inconsistency
|
||||
|
||||
diff --git a/src/mesh11sd b/src/mesh11sd
|
||||
index 85041d3..5f50e97 100755
|
||||
--- a/src/mesh11sd
|
||||
+++ b/src/mesh11sd
|
||||
@@ -387,45 +387,45 @@ elif [ "$1" = "daemon" ]; then
|
||||
|
||||
if [ $mode -eq 5 ]; then
|
||||
# startup=4, statusmode=0, enabled=1
|
||||
+ syslogmessage="mesh11sd v$version has started: mesh management mode $mode"
|
||||
startup=0
|
||||
statusmode=0
|
||||
mode=1
|
||||
- syslogmessage="mesh11sd v$version has started: mesh management mode $mode"
|
||||
|
||||
elif [ $mode -eq 4 ]; then
|
||||
# startup=4, statusmode=0, enabled=0
|
||||
+ syslogmessage="mesh11sd v$version has started: mesh status mode $mode"
|
||||
startup=0
|
||||
statusmode=2
|
||||
mode=0
|
||||
- syslogmessage="mesh11sd v$version has started: mesh status mode $mode"
|
||||
|
||||
elif [ $mode -eq 3 ]; then
|
||||
# startup=0, statusmode=2, enabled=1
|
||||
+ syslogmessage="mesh11sd v$version has started: mesh management mode $mode"
|
||||
startup=0
|
||||
statusmode=0
|
||||
mode=1
|
||||
- syslogmessage="mesh11sd v$version has started: mesh management mode $mode"
|
||||
|
||||
elif [ $mode -eq 2 ]; then
|
||||
# startup=0, statusmode=2, enabled=0
|
||||
+ syslogmessage="mesh11sd v$version has started: mesh status mode $mode"
|
||||
startup=0
|
||||
statusmode=2
|
||||
mode=0
|
||||
- syslogmessage="mesh11sd v$version has started: mesh status mode $mode"
|
||||
|
||||
elif [ $mode -eq 1 ]; then
|
||||
# startup=0, statusmode=0, enabled=1
|
||||
+ syslogmessage="mesh11sd v$version has started, mesh management mode $mode"
|
||||
startup=0
|
||||
statusmode=0
|
||||
mode=1
|
||||
- syslogmessage="mesh11sd v$version has started, mesh management mode $mode"
|
||||
|
||||
elif [ $mode -eq 0 ]; then
|
||||
# startup=0, statusmode=0, enabled=0
|
||||
+ syslogmessage="mesh11sd v$version has started: mesh status mode $mode"
|
||||
startup=0
|
||||
statusmode=2
|
||||
mode=0
|
||||
- syslogmessage="mesh11sd v$version has started: mesh status mode $mode"
|
||||
fi
|
||||
|
||||
if [ $mode -ne $lastmode ]; then
|
||||
@@ -0,0 +1,39 @@
|
||||
--- a/src/mesh11sd 2024-09-06 17:13:52.075070001 +0800
|
||||
+++ b/src/mesh11sd 2024-09-06 17:47:36.326914438 +0800
|
||||
@@ -434,7 +434,6 @@
|
||||
fi
|
||||
|
||||
lastmode=$mode
|
||||
- meshindex=0
|
||||
|
||||
if [ "$enabled" = 1 ]; then
|
||||
#get list of mesh configs
|
||||
@@ -443,16 +442,19 @@
|
||||
if [ ! -z "$meshconfigs" ]; then
|
||||
for meshconfig in $meshconfigs; do
|
||||
ifname=$(uci get $meshconfig.ifname 2> /dev/null)
|
||||
-
|
||||
- if [ -z "$ifname" ] || [ "$ifname" != "mesh$meshindex" ]; then
|
||||
- # No interface name in config, so add one
|
||||
- ucibatch="set $meshconfig.ifname='mesh$meshindex'"
|
||||
- echo "$ucibatch" | uci batch
|
||||
- changed=1
|
||||
- syslogmessage="Setting mesh interface name to [ mesh$meshindex ]"
|
||||
- write_to_syslog
|
||||
+ device=$(uci -q get $meshconfig.device)
|
||||
+ device_type=$(uci -q get wireless.$device.type)
|
||||
+ new_ifname="halow_mesh"
|
||||
+ if [ "$device_type" == "morse" ]; then
|
||||
+ if [ -z "$ifname" ] || [ "$ifname" != "$new_ifname" ]; then
|
||||
+ # No interface name in config, so add one
|
||||
+ ucibatch="set $meshconfig.ifname='$new_ifname'"
|
||||
+ echo "$ucibatch" | uci batch
|
||||
+ changed=1
|
||||
+ syslogmessage="Setting mesh interface name to [ $new_ifname ]"
|
||||
+ write_to_syslog
|
||||
+ fi
|
||||
fi
|
||||
- meshindex=$(($meshindex+1))
|
||||
done
|
||||
|
||||
if [ "$changed" -eq 1 ]; then
|
||||
@@ -2,7 +2,7 @@ if PACKAGE_wpa_supplicant_s1g
|
||||
|
||||
config MORSE_WPA_SUPPLICANT_S1G_MESH_NETWORKING
|
||||
bool
|
||||
default n
|
||||
default y
|
||||
prompt "Enable mesh networking support"
|
||||
|
||||
config MORSE_WPA_SUPPLICANT_S1G_EAP
|
||||
|
||||
@@ -43,6 +43,11 @@ $(call Package/ath12k-wifi-default)
|
||||
TITLE:=board-2.bin for EAP105
|
||||
endef
|
||||
|
||||
define Package/ath12k-wifi-emplus-wap7635
|
||||
$(call Package/ath12k-wifi-default)
|
||||
TITLE:=board-2.bin for WAP7635
|
||||
endef
|
||||
|
||||
define Package/ath12k-wifi-sonicfi-rap7110c-341x
|
||||
$(call Package/ath12k-wifi-default)
|
||||
TITLE:=board-2.bin for RAP7710c_341x
|
||||
@@ -96,8 +101,8 @@ 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/
|
||||
$(INSTALL_DATA) ./board-2.bin.wf189.QCN92XX $(1)/lib/firmware/ath12k/QCN92XX/hw1.0/board-2.bin
|
||||
$(INSTALL_DATA) ./board-2.bin.wf189.IPQ5332 $(1)/lib/firmware/ath12k/IPQ5332/hw1.0/board-2.bin
|
||||
$(INSTALL_DATA) ./board-2.bin.wf189-us.QCN92XX $(1)/lib/firmware/ath12k/QCN92XX/hw1.0/board-2.bin.US
|
||||
$(INSTALL_DATA) ./board-2.bin.wf189-us.IPQ5332 $(1)/lib/firmware/ath12k/IPQ5332/hw1.0/board-2.bin.US
|
||||
endef
|
||||
|
||||
define Package/ath12k-wifi-edgecore-eap105/install
|
||||
@@ -107,6 +112,13 @@ define Package/ath12k-wifi-edgecore-eap105/install
|
||||
$(INSTALL_DATA) ./board-2.bin.eap105.IPQ5332 $(1)/lib/firmware/ath12k/IPQ5332/hw1.0/board-2.bin
|
||||
endef
|
||||
|
||||
define Package/ath12k-wifi-emplus-wap7635/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/ath12k/IPQ5332/hw1.0/
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/ath12k/QCN92XX/hw1.0/
|
||||
$(INSTALL_DATA) ./board-2.bin.wap7635.IPQ5332 $(1)/lib/firmware/ath12k/IPQ5332/hw1.0/board-2.bin
|
||||
$(INSTALL_DATA) ./board-2.bin.wap7635.QCN6274 $(1)/lib/firmware/ath12k/QCN92XX/hw1.0/board-2.bin
|
||||
endef
|
||||
|
||||
define Package/ath12k-wifi-sonicfi-rap7110c-341x/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/ath12k/QCN92XX/hw1.0/
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/ath12k/IPQ5332/hw1.0/
|
||||
@@ -144,8 +156,8 @@ endef
|
||||
define Package/ath12k-wifi-cig-wf189w/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/ath12k/IPQ5332/hw1.0/
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/ath12k/QCN6432/hw1.0/
|
||||
$(INSTALL_DATA) ./board-2.bin.189w.IPQ5332 $(1)/lib/firmware/ath12k/IPQ5332/hw1.0/board-2.bin
|
||||
$(INSTALL_DATA) ./board-2.bin.189w.QCN6432 $(1)/lib/firmware/ath12k/QCN6432/hw1.0/board-2.bin
|
||||
$(INSTALL_DATA) ./board-2.bin.189w-us.IPQ5332 $(1)/lib/firmware/ath12k/IPQ5332/hw1.0/board-2.bin.US
|
||||
$(INSTALL_DATA) ./board-2.bin.189w-us.QCN6432 $(1)/lib/firmware/ath12k/QCN6432/hw1.0/board-2.bin.US
|
||||
$(INSTALL_DATA) ./ipq5332_qcn6432.regdb $(1)/lib/firmware/ath12k/QCN6432/hw1.0/regdb.bin
|
||||
endef
|
||||
|
||||
@@ -153,8 +165,8 @@ endef
|
||||
define Package/ath12k-wifi-cig-wf189h/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/ath12k/IPQ5332/hw1.0/
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/ath12k/QCN6432/hw1.0/
|
||||
$(INSTALL_DATA) ./board-2.bin.189h.IPQ5332 $(1)/lib/firmware/ath12k/IPQ5332/hw1.0/board-2.bin
|
||||
$(INSTALL_DATA) ./board-2.bin.189h.QCN6432 $(1)/lib/firmware/ath12k/QCN6432/hw1.0/board-2.bin
|
||||
$(INSTALL_DATA) ./board-2.bin.189h-us.IPQ5332 $(1)/lib/firmware/ath12k/IPQ5332/hw1.0/board-2.bin.US
|
||||
$(INSTALL_DATA) ./board-2.bin.189h-us.QCN6432 $(1)/lib/firmware/ath12k/QCN6432/hw1.0/board-2.bin.US
|
||||
$(INSTALL_DATA) ./ipq5332_qcn6432.regdb $(1)/lib/firmware/ath12k/QCN6432/hw1.0/regdb.bin
|
||||
endef
|
||||
|
||||
@@ -182,12 +194,13 @@ endef
|
||||
define Package/ath12k-wifi-cig-wf672/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/ath12k/QCN92XX/hw1.0/
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/ath12k/IPQ5332/hw1.0/
|
||||
$(INSTALL_DATA) ./board-2.bin.wf672.QCN92XX $(1)/lib/firmware/ath12k/QCN92XX/hw1.0/board-2.bin
|
||||
$(INSTALL_DATA) ./board-2.bin.wf672.IPQ5332 $(1)/lib/firmware/ath12k/IPQ5332/hw1.0/board-2.bin
|
||||
$(INSTALL_DATA) ./board-2.bin.wf672-us.QCN92XX $(1)/lib/firmware/ath12k/QCN92XX/hw1.0/board-2.bin.US
|
||||
$(INSTALL_DATA) ./board-2.bin.wf672-us.IPQ5332 $(1)/lib/firmware/ath12k/IPQ5332/hw1.0/board-2.bin.US
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,ath12k-wifi-cig-wf189))
|
||||
$(eval $(call BuildPackage,ath12k-wifi-edgecore-eap105))
|
||||
$(eval $(call BuildPackage,ath12k-wifi-emplus-wap7635))
|
||||
$(eval $(call BuildPackage,ath12k-wifi-sonicfi-rap7110c-341x))
|
||||
$(eval $(call BuildPackage,ath12k-wifi-sonicfi-rap750e-h))
|
||||
$(eval $(call BuildPackage,ath12k-wifi-sonicfi-rap750e-s))
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
feeds/qca-wifi-7/ath12k-wifi/board-2.bin.wap7635.IPQ5332
Normal file
BIN
feeds/qca-wifi-7/ath12k-wifi/board-2.bin.wap7635.IPQ5332
Normal file
Binary file not shown.
BIN
feeds/qca-wifi-7/ath12k-wifi/board-2.bin.wap7635.QCN6274
Normal file
BIN
feeds/qca-wifi-7/ath12k-wifi/board-2.bin.wap7635.QCN6274
Normal file
Binary file not shown.
@@ -7,6 +7,11 @@ board_config_update
|
||||
board=$(board_name)
|
||||
|
||||
case "$board" in
|
||||
emplus,wap7635)
|
||||
ucidef_set_led_default "ledb" "LEDB" "sys:blue" "on"
|
||||
ucidef_set_led_default "ledg" "LEDG" "sys:green" "off"
|
||||
ucidef_set_led_default "ledr" "LEDR" "sys:red" "off"
|
||||
;;
|
||||
sercomm,ap72tip-v4|\
|
||||
sercomm,ap72tip)
|
||||
ucidef_set_led_default "power" "POWER" "blue:status" "on"
|
||||
|
||||
@@ -13,7 +13,6 @@ ipq53xx_setup_interfaces()
|
||||
ucidef_set_interfaces_lan_wan "eth1 eth2 eth3 eth4 eth5" "eth0"
|
||||
;;
|
||||
cig,wf189|\
|
||||
cig,wf672|\
|
||||
edgecore,eap105|\
|
||||
sercomm,ap72tip|\
|
||||
sonicfi,rap750w-311a)
|
||||
@@ -32,6 +31,10 @@ ipq53xx_setup_interfaces()
|
||||
ucidef_set_interfaces_lan_wan "eth1" "eth0"
|
||||
ucidef_add_switch "switch1" "0u@eth1" "3:lan" "2:lan"
|
||||
;;
|
||||
cig,wf672)
|
||||
ucidef_set_interface_wan "eth0 eth1"
|
||||
;;
|
||||
emplus,wap7635|\
|
||||
sercomm,ap72tip-v4)
|
||||
ucidef_set_interface_wan "eth0"
|
||||
;;
|
||||
@@ -104,6 +107,7 @@ qcom_setup_macs()
|
||||
ucidef_set_wireless_macaddr_base 2g $(macaddr_add "$wan_mac" 2)
|
||||
ucidef_set_wireless_macaddr_base 5g $(macaddr_add "$wan_mac" 3)
|
||||
;;
|
||||
emplus,wap7635|\
|
||||
sercomm,ap72tip-v4)
|
||||
wan_mac=$(cat /sys/class/net/eth0/address)
|
||||
ucidef_set_wireless_macaddr_base 2g $(macaddr_add "$wan_mac" 1)
|
||||
|
||||
@@ -64,6 +64,7 @@ ath12k/IPQ5332/hw1.0/caldata.bin)
|
||||
cig,wf189h|\
|
||||
cig,wf189|\
|
||||
edgecore,eap105|\
|
||||
emplus,wap7635|\
|
||||
sercomm,ap72tip-v4|\
|
||||
sercomm,ap72tip|\
|
||||
zyxel,nwa130be)
|
||||
@@ -86,6 +87,7 @@ ath12k/QCN92XX/hw1.0/cal-pci-0001:01:00.0.bin)
|
||||
case "$board" in
|
||||
cig,wf189|\
|
||||
edgecore,eap105|\
|
||||
emplus,wap7635|\
|
||||
sercomm,ap72tip-v4|\
|
||||
sercomm,ap72tip|\
|
||||
zyxel,nwa130be)
|
||||
@@ -124,6 +126,47 @@ ath12k/QCN6432/hw1.0/cal-ahb-soc@0:wifi2@c0000000.bin)
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
ath12k/IPQ5332/hw1.0/board-2.bin)
|
||||
case "$board" in
|
||||
cig,wf189|\
|
||||
cig,wf189h|\
|
||||
cig,wf189w|\
|
||||
cig,wf672)
|
||||
country=`cat /etc/ucentral/country`
|
||||
if [ "$country" == "CA" ]; then
|
||||
ln -s /lib/firmware/ath12k/IPQ5332/hw1.0/board-2.bin.CA /lib/firmware/ath12k/IPQ5332/hw1.0/board-2.bin
|
||||
else
|
||||
ln -s /lib/firmware/ath12k/IPQ5332/hw1.0/board-2.bin.US /lib/firmware/ath12k/IPQ5332/hw1.0/board-2.bin
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
ath12k/QCN6432/hw1.0/board-2.bin)
|
||||
case "$board" in
|
||||
cig,wf189h|\
|
||||
cig,wf189w)
|
||||
country=`cat /etc/ucentral/country`
|
||||
if [ "$country" == "CA" ]; then
|
||||
ln -s /lib/firmware/ath12k/QCN6432/hw1.0/board-2.bin.CA /lib/firmware/ath12k/QCN6432/hw1.0/board-2.bin
|
||||
else
|
||||
ln -s /lib/firmware/ath12k/QCN6432/hw1.0/board-2.bin.US /lib/firmware/ath12k/QCN6432/hw1.0/board-2.bin
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
ath12k/QCN92XX/hw1.0/board-2.bin)
|
||||
case "$board" in
|
||||
cig,wf189|\
|
||||
cig,wf672)
|
||||
country=`cat /etc/ucentral/country`
|
||||
if [ "$country" == "CA" ]; then
|
||||
ln -s /lib/firmware/ath12k/QCN92XX/hw1.0/board-2.bin.CA /lib/firmware/ath12k/QCN92XX/hw1.0/board-2.bin
|
||||
else
|
||||
ln -s /lib/firmware/ath12k/QCN92XX/hw1.0/board-2.bin.US /lib/firmware/ath12k/QCN92XX/hw1.0/board-2.bin
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
*)
|
||||
exit 1
|
||||
;;
|
||||
|
||||
@@ -136,7 +136,8 @@ platform_do_upgrade() {
|
||||
sercomm,ap72tip|\
|
||||
cig,wf189w|\
|
||||
cig,wf189h|\
|
||||
cig,wf189)
|
||||
cig,wf189|\
|
||||
emplus,wap7635)
|
||||
if [ -f /proc/boot_info/bootconfig0/rootfs/upgradepartition ]; then
|
||||
CI_UBIPART="$(cat /proc/boot_info/bootconfig0/rootfs/upgradepartition)"
|
||||
CI_BOOTCFG=1
|
||||
|
||||
413
feeds/qca-wifi-7/ipq53xx/dts/ipq5332-emplus-wap7635.dts
Normal file
413
feeds/qca-wifi-7/ipq53xx/dts/ipq5332-emplus-wap7635.dts
Normal file
@@ -0,0 +1,413 @@
|
||||
// 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-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
#include <dt-bindings/input/input.h>
|
||||
#include <dt-bindings/leds/common.h>
|
||||
#include "ipq5332.dtsi"
|
||||
#include "ipq5332-default-memory.dtsi"
|
||||
|
||||
/ {
|
||||
model = "Emplus WAP7635";
|
||||
compatible = "emplus,wap7635", "qcom,ipq5332-ap-mi01.6", "qcom,ipq5332";
|
||||
|
||||
aliases {
|
||||
serial0 = &blsp1_uart0; /*console*/
|
||||
ethernet0 = "/soc/dp1";
|
||||
|
||||
led-boot = &led_power_green;
|
||||
led-failsafe = &led_power_red;
|
||||
led-running = &led_power_green;
|
||||
led-upgrade = &led_power_green;
|
||||
};
|
||||
|
||||
chosen {
|
||||
stdout-path = "serial0";
|
||||
};
|
||||
|
||||
soc@0 {
|
||||
mdio:mdio@90000 {
|
||||
pinctrl-0 = <&mdio1_pins>;
|
||||
pinctrl-names = "default";
|
||||
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 = <24>;
|
||||
};
|
||||
};
|
||||
|
||||
ess-instance {
|
||||
/*num_devices = <0x1>;*/
|
||||
ess-switch@3a000000 {
|
||||
switch_cpu_bmp = <0x1>; /* cpu port bitmap */
|
||||
switch_lan_bmp = <0x2>; /* lan port bitmap */
|
||||
switch_wan_bmp = <0>; /* wan port bitmap */
|
||||
switch_mac_mode = <0xf>; /* mac mode for uniphy instance0*/
|
||||
switch_mac_mode1 = <0xd>; /* mac mode for uniphy instance1*/
|
||||
switch_mac_mode2 = <0xff>; /* mac mode for uniphy instance2*/
|
||||
|
||||
qcom,port_phyinfo {
|
||||
port@0 {
|
||||
port_id = <1>;
|
||||
phy_address = <24>;
|
||||
mdiobus = <&mdio>;
|
||||
ethernet-phy-ieee802.3-c45;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
dp1 {
|
||||
device_type = "network";
|
||||
compatible = "qcom,nss-dp";
|
||||
qcom,id = <1>;
|
||||
reg = <0x3a500000 0x4000>;
|
||||
qcom,mactype = <1>;
|
||||
local-mac-address = [000000000000];
|
||||
mdio-bus = <&mdio>;
|
||||
qcom,phy-mdio-addr = <24>;
|
||||
qcom,link-poll = <1>;
|
||||
phy-mode = "sgmii";
|
||||
/* phy-mode = "usxgmii"; */
|
||||
};
|
||||
|
||||
/* 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: <Rx-fill Tx-cmpl Rx Tx Queue-base Queue-count> */
|
||||
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 155 4>, /* RxFill ring id #4 IRQ info */
|
||||
<0 156 4>, /* RxFill ring id #5 IRQ info */
|
||||
<0 157 4>, /* RxFill ring id #6 IRQ info */
|
||||
<0 158 4>, /* RxFill ring id #7 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";
|
||||
|
||||
led_power_blue: led@34 {
|
||||
label = "sys:blue";
|
||||
gpios = <&tlmm 34 GPIO_ACTIVE_HIGH>;
|
||||
default-state = "off";
|
||||
};
|
||||
led_power_green: led@35 {
|
||||
label = "sys:green";
|
||||
gpios = <&tlmm 35 GPIO_ACTIVE_HIGH>;
|
||||
default-state = "off";
|
||||
};
|
||||
led_power_red: led@37 {
|
||||
label = "sys:red";
|
||||
gpios = <&tlmm 37 GPIO_ACTIVE_HIGH>;
|
||||
default-state = "off";
|
||||
};
|
||||
};
|
||||
|
||||
gpio_keys {
|
||||
compatible = "gpio-keys";
|
||||
pinctrl-0 = <&button_pins>;
|
||||
pinctrl-names = "default";
|
||||
button@1 {
|
||||
label = "reset";
|
||||
linux,code = <KEY_RESTART>;
|
||||
gpios = <&tlmm 24 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 = <0x16>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&mhi_region1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&qcn9224_pcie1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
/* QCN9224 5G+6G */
|
||||
&wifi4 {
|
||||
hremote_node = <&qcn9224_pcie1>;
|
||||
board_id = <0x1019>;
|
||||
node_id = <0x1>;
|
||||
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";
|
||||
};
|
||||
|
||||
&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 45 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 = <0x1019>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
/* PINCTRL */
|
||||
|
||||
&tlmm {
|
||||
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 { /*ble*/
|
||||
pins = "gpio33", "gpio35";
|
||||
function = "blsp1_uart2";
|
||||
drive-strength = <8>;
|
||||
bias-pull-up;
|
||||
};
|
||||
|
||||
button_pins: button-state {
|
||||
pins = "gpio24";
|
||||
function = "gpio";
|
||||
drive-strength = <8>;
|
||||
bias-pull-up;
|
||||
};
|
||||
|
||||
pcie1_default_state: pcie1-default-state {
|
||||
pins = "gpio45";
|
||||
function = "gpio";
|
||||
drive-strength = <8>;
|
||||
bias-pull-up;
|
||||
output-low;
|
||||
};
|
||||
};
|
||||
|
||||
&license_manager {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb3 {
|
||||
qcom,multiplexed-phy;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&hs_m31phy_0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&hs_m31phy_0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&ssuniphy_0 {
|
||||
status = "okay";
|
||||
};
|
||||
@@ -52,6 +52,19 @@ define Device/edgecore_eap105
|
||||
endef
|
||||
TARGET_DEVICES += edgecore_eap105
|
||||
|
||||
define Device/emplus_wap7635
|
||||
DEVICE_TITLE := EMPLUS WAP7635
|
||||
DEVICE_DTS := ipq5332-emplus-wap7635
|
||||
DEVICE_DTS_DIR := ../dts
|
||||
DEVICE_DTS_CONFIG := config@mi01.6
|
||||
IMAGES := sysupgrade.tar nand-factory.bin nand-factory.ubi
|
||||
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-emplus-wap7635 ath12k-firmware-qcn92xx ath12k-firmware-ipq5332
|
||||
endef
|
||||
TARGET_DEVICES += emplus_wap7635
|
||||
|
||||
define Device/sonicfi_rap7110c_341x
|
||||
DEVICE_TITLE := SONICFI RAP7110C-341X
|
||||
DEVICE_DTS := ipq5332-sonicfi-rap7110c-341x
|
||||
|
||||
@@ -20,6 +20,7 @@ copy_certificates() {
|
||||
[ -z "$country" ] && country=US
|
||||
echo "options cfg80211 ieee80211_regdom="$country > /etc/modules.conf
|
||||
echo -n $country > /etc/ucentral/country
|
||||
sync
|
||||
exit 0
|
||||
}
|
||||
|
||||
|
||||
@@ -91,6 +91,7 @@ function gateway_write(data) {
|
||||
}
|
||||
if (changed)
|
||||
fs.writefile('/etc/ucentral/gateway.json', new);
|
||||
system('sync');
|
||||
return changed;
|
||||
}
|
||||
|
||||
|
||||
@@ -78,7 +78,7 @@ function call_est_server(path, cert, target) {
|
||||
if (generate_csr(cert))
|
||||
return 1;
|
||||
|
||||
let ret = system('curl -X POST https://' + est_server + '/.well-known/est/' + path + ' -d @/tmp/csr.nohdr.p10 -H "Content-Type: application/pkcs10" --cert ' + cert + ' --key /etc/ucentral/key.pem --cacert /etc/ucentral/insta.pem -o /tmp/operational.nohdr.p7');
|
||||
let ret = system('curl -m 10 -X POST https://' + est_server + '/.well-known/est/' + path + ' -d @/tmp/csr.nohdr.p10 -H "Content-Type: application/pkcs10" --cert ' + cert + ' --key /etc/ucentral/key.pem --cacert /etc/ucentral/insta.pem -o /tmp/operational.nohdr.p7');
|
||||
if (ret) {
|
||||
ulog(LOG_INFO, 'Failed to request operational certificate\n');
|
||||
return 1;
|
||||
@@ -125,7 +125,7 @@ function load_operational_ca() {
|
||||
ulog(LOG_INFO, 'Operational CA is present\n');
|
||||
return 0;
|
||||
}
|
||||
let ret = system('curl -X GET https://' + est_server + '/.well-known/est/cacerts --cert /etc/ucentral/' + cert_prefix + '.pem --key /etc/ucentral/key.pem --cacert /etc/ucentral/insta.pem -o /tmp/' + cert_prefix + '.ca.nohdr.p7');
|
||||
let ret = system('curl -m 10 -X GET https://' + est_server + '/.well-known/est/cacerts --cert /etc/ucentral/' + cert_prefix + '.pem --key /etc/ucentral/key.pem --cacert /etc/ucentral/insta.pem -o /tmp/' + cert_prefix + '.ca.nohdr.p7');
|
||||
if (!ret)
|
||||
ret = p7_too_pem('/tmp/' + cert_prefix + '.ca.nohdr.p7', '/etc/ucentral/' + cert_prefix + '.ca');
|
||||
if (ret) {
|
||||
|
||||
@@ -350,7 +350,7 @@ function run_service() {
|
||||
printf('-> reload\n');
|
||||
let list = uctx.list();
|
||||
for (let obj in list) {
|
||||
if (!wildcard(obj, 'hostapd.wlan*'))
|
||||
if (!wildcard(obj, 'hostapd.wlan*') && !wildcard(obj, 'hostapd.phy*'))
|
||||
continue;
|
||||
let iface = split(obj, '.')[1];
|
||||
let device = get_device(devices, req.args.device);
|
||||
|
||||
@@ -8,6 +8,7 @@ USE_PROCD=1
|
||||
start_service() {
|
||||
rm -rf /tmp/threshold_breach_count*
|
||||
rm -rf /tmp/fixed_channel*
|
||||
rm -rf /tmp/chanutil_phy*
|
||||
|
||||
procd_open_instance
|
||||
procd_set_param command /usr/bin/rrmd.uc
|
||||
|
||||
@@ -11,19 +11,6 @@ let config = {
|
||||
consecutive_threshold_breach: 1,
|
||||
};
|
||||
|
||||
// total number of radios: default=2
|
||||
let num_radios = 2;
|
||||
|
||||
let board_name = board_info.board_name;
|
||||
switch(board_name) {
|
||||
case 'edgecore,eap105':
|
||||
case 'edgecore,oap101-6e':
|
||||
case 'edgecore,oap101e-6e':
|
||||
case 'zyxel,nwa130be':
|
||||
num_radios = 3;
|
||||
break;
|
||||
}
|
||||
|
||||
function stats_info_read(path) {
|
||||
let res = trim(fs.readfile(path));
|
||||
return res || 0;
|
||||
@@ -37,6 +24,25 @@ function stats_info_write(path, value) {
|
||||
file.close();
|
||||
}
|
||||
|
||||
// total number of radios: default=2
|
||||
let num_radios = 2;
|
||||
let phy_count;
|
||||
|
||||
let board_name = board_info.board_name;
|
||||
switch(board_name) {
|
||||
case 'edgecore,eap105':
|
||||
case 'edgecore,oap101-6e':
|
||||
case 'edgecore,oap101e-6e':
|
||||
case 'zyxel,nwa130be':
|
||||
num_radios = 3;
|
||||
break;
|
||||
case 'edgecore,eap112':
|
||||
phy_count = stats_info_read("/tmp/phy_count");
|
||||
if (phy_count)
|
||||
num_radios = int(phy_count);
|
||||
break;
|
||||
}
|
||||
|
||||
function cool_down_check(iface, cool_down_period) {
|
||||
let now_t = time();
|
||||
let cool_down_f= 0;
|
||||
@@ -151,6 +157,23 @@ function interface_status_check(iface) {
|
||||
let radio_status = 'DISABLED';
|
||||
let radio_down_f = 1;
|
||||
|
||||
if (board_info.board_name == 'edgecore,eap112' && phy_count == 3) {
|
||||
// hostapd_cli_s1g status | grep 'Selected interface'| awk -F "\'" '{print $2}'
|
||||
let check_HaLow_iface_cmd = sprintf('hostapd_cli_s1g status | grep \'Selected interface\'| awk -F "\'" \'{print $2}\'');
|
||||
let check_HaLow_iface = fs.popen(check_HaLow_iface_cmd);
|
||||
let _check_HaLow_iface = trim(check_HaLow_iface.read('all'));
|
||||
check_HaLow_iface.close();
|
||||
|
||||
if (_check_HaLow_iface && _check_HaLow_iface == iface) {
|
||||
ulog_info(`[%s] This is a HaLow interface \n`, _check_HaLow_iface);
|
||||
|
||||
// this iface is HaLow interface and we can neither check channel utilization nor switch channel, we can check if it is UP
|
||||
radio_down_f = 2;
|
||||
ulog_info(`[%s] status: ENABLED \n`, iface, radio_status);
|
||||
return radio_down_f;
|
||||
}
|
||||
}
|
||||
|
||||
let curr_stat = global.ubus.conn.call(`hostapd.${iface}`, 'get_status');
|
||||
if (curr_stat) {
|
||||
radio_status = curr_stat.status;
|
||||
@@ -162,9 +185,12 @@ function interface_status_check(iface) {
|
||||
}
|
||||
|
||||
function check_current_channel(iface) {
|
||||
let current_channel;
|
||||
// get wireless interface's live status & channel using "ubus call hostapd.<iface> get_status"
|
||||
let curr_stat = global.ubus.conn.call(`hostapd.${iface}`, 'get_status');
|
||||
let current_channel = curr_stat.channel;
|
||||
if (curr_stat)
|
||||
current_channel = curr_stat.channel;
|
||||
|
||||
if (curr_stat && current_channel) {
|
||||
ulog_info(`[%s] Current channel (from hostapd) = %d \n`, iface, current_channel);
|
||||
}
|
||||
@@ -186,7 +212,7 @@ function hostapd_switch_channel(msg) {
|
||||
if (bandwidth > 20)
|
||||
sec_channel_offset = 1;
|
||||
|
||||
// use hostadp_cli command
|
||||
// use hostapd_cli command
|
||||
if (target_freq != null) {
|
||||
ulog_info(`Sending to hostapd (Chan %d):: freq=%d, center_freq=%d, sec_channel_offset=%d, bandwidth=%d, mode=%s \n`, msg.channel, target_freq, center_freq, sec_channel_offset, bandwidth, mode);
|
||||
|
||||
@@ -213,9 +239,9 @@ function hostapd_switch_channel(msg) {
|
||||
return chan_switch_status;
|
||||
}
|
||||
|
||||
function switch_status_check(iface, dfs_enabled_5g_index) {
|
||||
function switch_status_check(iface, dfs_enabled_5g_flag) {
|
||||
// need to wait for radio 5GHz interface to be UP, when DFS is enabled
|
||||
if (dfs_enabled_5g_index == 1) {
|
||||
if (dfs_enabled_5g_flag == 1) {
|
||||
ulog_info(`[%s] 5G radio might need some time to be UP (DFS enabled) \n`, iface);
|
||||
|
||||
let p = 0;
|
||||
@@ -245,24 +271,25 @@ function switch_status_check(iface, dfs_enabled_5g_index) {
|
||||
return current_chan;
|
||||
}
|
||||
|
||||
function dfs_chan_check(iface_num, rcs_channel) {
|
||||
function dfs_chan_check(iface, rcs_channel) {
|
||||
let iface_num = replace(iface, /[^0-9]/g, '');
|
||||
let phy_id = 'phy' + iface_num;
|
||||
if (board_name == 'edgecore,eap105') {
|
||||
phy_id = 'phy00';
|
||||
}
|
||||
let dfs_enabled_5g = 0;
|
||||
let dfs_chan_list = global.phy.phys[phy_id].dfs_channels;
|
||||
let dfs_enabled_5g_f = 0;
|
||||
let dfs_chan_list = global.phy.phys[phy_id].dfs_channels;
|
||||
|
||||
// check if rcs_channel is in dfs_channel list
|
||||
for (let dfs_chan in dfs_chan_list) {
|
||||
if (dfs_chan == rcs_channel) {
|
||||
// flag up if dfs channel detected
|
||||
dfs_enabled_5g = 1;
|
||||
dfs_enabled_5g_f = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return dfs_enabled_5g;
|
||||
return dfs_enabled_5g_f;
|
||||
}
|
||||
|
||||
function fixed_channel_config(iface, iface_num, fixed_channel_f, auto_channel_f, fixed_chan_bkp, channel_config) {
|
||||
@@ -297,7 +324,9 @@ function get_chan_util(radio_band, sleep_time) {
|
||||
txFrameCount: null,
|
||||
rxFrameCount: null,
|
||||
rxClearCount: null,
|
||||
chanBusyTime: null,
|
||||
cycleCount: null,
|
||||
chanActiveTime: null,
|
||||
};
|
||||
|
||||
for (let c = 0; c < 2; c++) {
|
||||
@@ -308,67 +337,86 @@ function get_chan_util(radio_band, sleep_time) {
|
||||
txFrameCount: null,
|
||||
rxFrameCount: null,
|
||||
rxClearCount: null,
|
||||
chanBusyTime: null,
|
||||
cycleCount: null,
|
||||
chanActiveTime: null,
|
||||
};
|
||||
|
||||
pdev_stats = split(stats_info_read(pdev_stats_file), "\n");
|
||||
if (board_info.board_name == 'edgecore,eap111' || board_info.board_name == 'edgecore,eap112') {
|
||||
// for EAP111 and EAP112 (only 2.4G and 5G radio bands)
|
||||
system(`cat /tmp/sr_scene_cond_phy${radio_band}`);
|
||||
// logread -e "Congestion Ratio" | tail -n 1 | awk -F'= ' '{print $2}' | tr -d '%'
|
||||
let cmd = sprintf('logread -e \"Congestion Ratio\" | tail -n 1 | awk -F\'= \' \'{print $2}\' | tr -d \'\%\'');
|
||||
let chan_util_cmd = fs.popen(cmd);
|
||||
let _chan_util = chan_util_cmd.read('all');
|
||||
chan_util_cmd.close();
|
||||
|
||||
if (pdev_stats != null) {
|
||||
for (let curr_value in pdev_stats) {
|
||||
let txFrameCount = match(trim(curr_value), /^TX frame count(\s+\d+)/);
|
||||
if (txFrameCount)
|
||||
curr_values.txFrameCount = trim(txFrameCount[1]);
|
||||
chan_util = int(_chan_util);
|
||||
break;
|
||||
} else {
|
||||
pdev_stats = split(stats_info_read(pdev_stats_file), "\n");
|
||||
|
||||
let rxFrameCount = match(trim(curr_value), /^RX frame count(\s+\d+)/);
|
||||
if (rxFrameCount)
|
||||
curr_values.rxFrameCount = trim(rxFrameCount[1]);
|
||||
if (pdev_stats != null) {
|
||||
for (let curr_value in pdev_stats) {
|
||||
let txFrameCount = match(trim(curr_value), /^TX frame count(\s+\d+)/);
|
||||
if (txFrameCount)
|
||||
curr_values.txFrameCount = int(trim(txFrameCount[1]));
|
||||
|
||||
let rxClearCount = match(trim(curr_value), /^RX clear count(\s+\d+)/);
|
||||
if (rxClearCount)
|
||||
curr_values.rxClearCount = trim(rxClearCount[1]);
|
||||
let rxFrameCount = match(trim(curr_value), /^RX frame count(\s+\d+)/);
|
||||
if (rxFrameCount)
|
||||
curr_values.rxFrameCount = int(trim(rxFrameCount[1]));
|
||||
|
||||
let cycleCount = match(trim(curr_value), /^Cycle count(\s+\d+)/);
|
||||
if (cycleCount)
|
||||
curr_values.cycleCount = trim(cycleCount[1]);
|
||||
let rxClearCount = match(trim(curr_value), /^RX clear count(\s+\d+)/);
|
||||
if (rxClearCount)
|
||||
curr_values.rxClearCount = int(trim(rxClearCount[1]));
|
||||
|
||||
if (curr_values.txFrameCount && curr_values.rxFrameCount && curr_values.rxClearCount && curr_values.cycleCount) {
|
||||
break;
|
||||
let cycleCount = match(trim(curr_value), /^Cycle count(\s+\d+)/);
|
||||
if (cycleCount)
|
||||
curr_values.cycleCount = int(trim(cycleCount[1]));
|
||||
|
||||
if (curr_values.txFrameCount && curr_values.rxFrameCount && curr_values.rxClearCount && curr_values.cycleCount) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
let ignore = 0;
|
||||
|
||||
if (!prev_values.txFrameCount || !prev_values.rxFrameCount || !prev_values.rxClearCount || !prev_values.cycleCount) {
|
||||
ignore = 1;
|
||||
}
|
||||
|
||||
if ((curr_values.cycleCount) <= (prev_values.cycleCount) || (curr_values.txFrameCount) < (prev_values.txFrameCount) ||
|
||||
(curr_values.rxFrameCount) < (prev_values.rxFrameCount) || (curr_values.rxClearCount) < (prev_values.rxClearCount)) {
|
||||
ignore = 1;
|
||||
}
|
||||
|
||||
if (ignore != 1) {
|
||||
let cycle_count_delta = curr_values.cycleCount - prev_values.cycleCount;
|
||||
let rx_clear_delta = curr_values.rxClearCount - prev_values.rxClearCount;
|
||||
if (cycle_count_delta && cycle_count_delta > 0)
|
||||
total_usage = (rx_clear_delta * 100) / cycle_count_delta;
|
||||
chan_util = total_usage;
|
||||
}
|
||||
|
||||
prev_values.txFrameCount=curr_values.txFrameCount;
|
||||
prev_values.rxFrameCount=curr_values.rxFrameCount;
|
||||
prev_values.rxClearCount=curr_values.rxClearCount;
|
||||
prev_values.cycleCount=curr_values.cycleCount;
|
||||
}
|
||||
|
||||
let ignore = 0;
|
||||
|
||||
if (!prev_values.txFrameCount || !prev_values.rxFrameCount || !prev_values.rxClearCount || !prev_values.cycleCount) {
|
||||
ignore = 1;
|
||||
}
|
||||
|
||||
if ((curr_values.cycleCount) <= (prev_values.cycleCount) || (curr_values.txFrameCount) < (prev_values.txFrameCount) ||
|
||||
(curr_values.rxFrameCount) < (prev_values.rxFrameCount) || (curr_values.rxClearCount) < (prev_values.rxClearCount)) {
|
||||
ignore = 1;
|
||||
}
|
||||
|
||||
if (ignore != 1) {
|
||||
let cycle_count_delta = curr_values.cycleCount - prev_values.cycleCount;
|
||||
let rx_clear_delta = curr_values.rxClearCount - prev_values.rxClearCount;
|
||||
if (cycle_count_delta && cycle_count_delta > 0)
|
||||
total_usage = (rx_clear_delta * 100) / cycle_count_delta;
|
||||
chan_util = total_usage;
|
||||
}
|
||||
|
||||
prev_values.txFrameCount=curr_values.txFrameCount;
|
||||
prev_values.rxFrameCount=curr_values.rxFrameCount;
|
||||
prev_values.rxClearCount=curr_values.rxClearCount;
|
||||
prev_values.cycleCount=curr_values.cycleCount;
|
||||
}
|
||||
sleep(sleep_time);
|
||||
}
|
||||
|
||||
// record channel utilization
|
||||
stats_info_write("/tmp/chanutil_phy" + radio_band, chan_util);
|
||||
|
||||
return chan_util;
|
||||
}
|
||||
|
||||
function random_channel_selection(iface, iface_num, band, htmode, chan_list_valid) {
|
||||
function random_channel_selection(iface, band, htmode, chan_list_valid) {
|
||||
let math = require('math');
|
||||
let bw = replace(htmode, /[^0-9]/g, '');
|
||||
let iface_num = replace(iface, /[^0-9]/g, '');
|
||||
let phy_id = 'phy' + iface_num;
|
||||
if (board_name == 'edgecore,eap105') {
|
||||
phy_id = 'phy00';
|
||||
@@ -385,7 +433,7 @@ function random_channel_selection(iface, iface_num, band, htmode, chan_list_vali
|
||||
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);
|
||||
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 || '[]'));
|
||||
|
||||
if (band == '2g' && bw >= 40) {
|
||||
ulog_info(`[%s] It is highly recommended to NOT use %dMHz bandwidth for 2.4G radio \n`, iface, bw);
|
||||
@@ -445,7 +493,6 @@ function random_channel_selection(iface, iface_num, band, htmode, chan_list_vali
|
||||
36,
|
||||
52,
|
||||
100,
|
||||
116,
|
||||
132,
|
||||
149,
|
||||
165
|
||||
@@ -454,7 +501,6 @@ function random_channel_selection(iface, iface_num, band, htmode, chan_list_vali
|
||||
36, 44,
|
||||
52, 60,
|
||||
100, 108,
|
||||
116, 124,
|
||||
132, 140,
|
||||
149, 157,
|
||||
165
|
||||
@@ -463,7 +509,7 @@ function random_channel_selection(iface, iface_num, band, htmode, chan_list_vali
|
||||
36, 40, 44, 48,
|
||||
52, 56, 60, 64,
|
||||
100, 104, 108, 112,
|
||||
116, 120, 124, 128,
|
||||
116,
|
||||
132, 136, 140, 144,
|
||||
149, 153, 157, 161,
|
||||
165
|
||||
@@ -522,12 +568,12 @@ function random_channel_selection(iface, iface_num, band, htmode, chan_list_vali
|
||||
return random_channel;
|
||||
}
|
||||
|
||||
function algo_rcs(iface, iface_num, current_channel, band, htmode, selected_channels) {
|
||||
function algo_rcs(iface, current_channel, band, htmode, selected_channels) {
|
||||
let chosen_random_channel = 0;
|
||||
let res = 0;
|
||||
|
||||
// random_channel_selection script will help to select random channel
|
||||
chosen_random_channel = random_channel_selection(iface, iface_num, band, htmode, selected_channels);
|
||||
chosen_random_channel = random_channel_selection(iface, band, htmode, selected_channels);
|
||||
stats_info_write("/tmp/rrm_random_channel_" + iface, chosen_random_channel);
|
||||
|
||||
if (chosen_random_channel == current_channel) {
|
||||
@@ -578,7 +624,7 @@ function channel_optimize() {
|
||||
let channel_config = {};
|
||||
let selected_channels = {};
|
||||
let radio_5G_index = null;
|
||||
let dfs_enabled_5g = {};
|
||||
let dfs_enabled_5g_f = {};
|
||||
|
||||
// check the channel config used by the customer
|
||||
let fixed_chan_bkp = {};
|
||||
@@ -609,10 +655,12 @@ function channel_optimize() {
|
||||
radio_disabled[j] = wireless_status[radio_id].disabled;
|
||||
radio_band[j] = wireless_status[radio_id].config.band;
|
||||
|
||||
if (radio_disabled[j] == true) {
|
||||
radio_iface[j] = 'radio ' + radio_band[j];
|
||||
} else {
|
||||
radio_iface[j] = wireless_status[radio_id].interfaces[0].ifname;
|
||||
radio_iface[j] = 'radio ' + radio_band[j];
|
||||
|
||||
if (radio_disabled[j] == false) {
|
||||
let interface_created = wireless_status[radio_id].interfaces[0];
|
||||
if (interface_created)
|
||||
radio_iface[j] = wireless_status[radio_id].interfaces[0].ifname;
|
||||
}
|
||||
|
||||
// check wlan interface status
|
||||
@@ -635,7 +683,7 @@ function channel_optimize() {
|
||||
|
||||
// check if DFS is enabled for 5G radio
|
||||
if (acs_exclude_dfs[j] == false) {
|
||||
dfs_enabled_5g[j] = 1;
|
||||
dfs_enabled_5g_f[j] = 1;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -648,7 +696,6 @@ function channel_optimize() {
|
||||
|
||||
if (selected_channels[j]) {
|
||||
ulog_info(`[%s] Selected channel list (please update the radio config, if not correct) = %s \n`, radio_iface[j], selected_channels[j]);
|
||||
// should I check the validity of the chan list selected by the user??
|
||||
}
|
||||
} else if (selected_algo == "ACS") {
|
||||
if (channel_config[j] != '0') {
|
||||
@@ -718,6 +765,9 @@ function channel_optimize() {
|
||||
} else {
|
||||
check_all_cool_down++;
|
||||
}
|
||||
} else if (current_rf_down[j] == 2) {
|
||||
// this iface is HaLow interface and we can neither check channel utilization not switch channel
|
||||
ulog_info(`[%s] HaLow interface is UP, but RRM cannot be done on this interface \n`, radio_iface[j]);
|
||||
} else {
|
||||
ulog_info(`[%s] Interface not UP, will be checked in the next interval \n`, radio_iface[j]);
|
||||
}
|
||||
@@ -759,7 +809,7 @@ function channel_optimize() {
|
||||
let assign_max_chan_util = 0;
|
||||
|
||||
// call RCS for multiple random chan
|
||||
let chan_scan = algo_rcs(radio_iface[l], 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]);
|
||||
curr_chan_list[num_chan] = stats_info_read("/tmp/rrm_random_channel_" + radio_iface[l]);
|
||||
|
||||
if (chan_scan == 1) {
|
||||
@@ -772,21 +822,22 @@ function channel_optimize() {
|
||||
};
|
||||
|
||||
if (l == radio_5G_index) {
|
||||
dfs_enabled_5g[l] = dfs_chan_check(radio_5G_index, init_payload.channel);
|
||||
dfs_enabled_5g_f[l] = dfs_chan_check(radio_iface[l], init_payload.channel);
|
||||
}
|
||||
|
||||
ulog_info(`[%s] Initiated channel switch to random channel %d for comparing Channel utilization \n`, radio_iface[l], init_payload.channel);
|
||||
let init_chan_switch_status = hostapd_switch_channel(init_payload);
|
||||
|
||||
if (init_chan_switch_status != 0) {
|
||||
let actual_channel = switch_status_check(radio_iface[l], dfs_enabled_5g[l]);
|
||||
let actual_channel = switch_status_check(radio_iface[l], dfs_enabled_5g_f[l]);
|
||||
|
||||
if (actual_channel == init_payload.channel) {
|
||||
ulog_info(`[%s] Channel Switch success; Checking Channel utilization ... \n`, radio_iface[l]);
|
||||
// get chan util for current assigned random channel
|
||||
sleep(5000);
|
||||
chan_util_list[num_chan] = get_chan_util(radio_band[l], sleep_time);
|
||||
} else {
|
||||
if (dfs_enabled_5g[l] == 1 && interface_status_check(radio_iface[l]) == 1) {
|
||||
if (dfs_enabled_5g_f[l] == 1 && interface_status_check(radio_iface[l]) == 1) {
|
||||
// dfs channel not up yet
|
||||
ulog_info(`[%s] DFS channel %d taking too long to be UP. Interface status/Channel utilization will be checked in the next interval\n`, radio_iface[l], init_payload.channel);
|
||||
// jump back to original channel
|
||||
@@ -843,7 +894,7 @@ function channel_optimize() {
|
||||
};
|
||||
|
||||
if (l == radio_5G_index) {
|
||||
dfs_enabled_5g[l] = dfs_chan_check(radio_5G_index, final_payload.channel);
|
||||
dfs_enabled_5g_f[l] = dfs_chan_check(radio_iface[l], final_payload.channel);
|
||||
}
|
||||
|
||||
if (final_payload.channel != curr_chan_list[max_chan-1] || min_util != chan_util_list[max_chan-1]) {
|
||||
@@ -851,7 +902,7 @@ function channel_optimize() {
|
||||
let final_switch_status = hostapd_switch_channel(final_payload);
|
||||
|
||||
if (final_switch_status != 0) {
|
||||
let final_channel = switch_status_check(radio_iface[l], dfs_enabled_5g[l]);
|
||||
let final_channel = switch_status_check(radio_iface[l], dfs_enabled_5g_f[l]);
|
||||
|
||||
if (final_channel == final_payload.channel) {
|
||||
ulog_info(`[%s] Final channel switch success \n`, radio_iface[l]);
|
||||
@@ -946,7 +997,7 @@ function channel_optimize() {
|
||||
}
|
||||
|
||||
// need to wait for radio 5GHz interface, when it is DFS enabled && restarted
|
||||
if (radio_5g_restarted == 1 && dfs_enabled_5g[radio_5G_index] == 1) {
|
||||
if (radio_5g_restarted == 1 && dfs_enabled_5g_f[radio_5G_index] == 1) {
|
||||
ulog_info(`[%s] 5G radio might need some time to be UP (DFS enabled) ... wait for 30 seconds \n`, radio_iface[radio_5G_index]);
|
||||
// 30 sec delay for DFS scan to come finish
|
||||
sleep(30000);
|
||||
@@ -964,7 +1015,7 @@ function channel_optimize() {
|
||||
}
|
||||
}
|
||||
}
|
||||
ulog_info(`Interference detection finish; next RRM round starts in %d seconds \n`, config.interval/1000);
|
||||
ulog_info(`RRM with channel optimization finished; next RRM round starts in %d seconds \n`, config.interval/1000);
|
||||
|
||||
return config.interval;
|
||||
}
|
||||
|
||||
@@ -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:=1ad9f7b5d5d1145e3aed14937eef60d6794d821e0244cc8fa824400d3da47f5a
|
||||
PKG_MIRROR_HASH:=9b12cf94b94688aaf2245742ac1cd3d7a2bccade7e248c47c5f13a3dd7c07401
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_DATE:=2025-07-11
|
||||
PKG_SOURCE_VERSION:=5276d0b8b6e83ab57354b0bcbb820de83a91ab88
|
||||
PKG_SOURCE_VERSION:=b971b73d4cedae6175926373adcdc37a04ced11c
|
||||
PKG_MAINTAINER:=John Crispin <john@phrozen.org>
|
||||
PKG_LICENSE:=BSD-3-Clause
|
||||
|
||||
|
||||
68
patches/0090-netifd-add-gcmp-256-on-6GHz.patch
Normal file
68
patches/0090-netifd-add-gcmp-256-on-6GHz.patch
Normal file
@@ -0,0 +1,68 @@
|
||||
From a2a7cdf9e292bac5b146738276a593d8e119fe8f Mon Sep 17 00:00:00 2001
|
||||
From: Marek Kwaczynski <marek@shasta.cloud>
|
||||
Date: Thu, 3 Jul 2025 15:55:43 +0000
|
||||
Subject: [PATCH] netifd: add gcmp-256 as a cipher suite when SAE is enabled on
|
||||
HE/EHT
|
||||
|
||||
Enabling gcmp-256 only on 6GHz radio.
|
||||
|
||||
Fixes: WIFI-14594
|
||||
|
||||
Signed-off-by: Marek Kwaczynski <marek@shasta.cloud>
|
||||
---
|
||||
.../config/netifd/patches/200-gcmp-256.patch | 43 +++++++++++++++++++
|
||||
1 file changed, 43 insertions(+)
|
||||
create mode 100644 package/network/config/netifd/patches/200-gcmp-256.patch
|
||||
|
||||
diff --git a/package/network/config/netifd/patches/200-gcmp-256.patch b/package/network/config/netifd/patches/200-gcmp-256.patch
|
||||
new file mode 100644
|
||||
index 0000000000..7ac6262e7f
|
||||
--- /dev/null
|
||||
+++ b/package/network/config/netifd/patches/200-gcmp-256.patch
|
||||
@@ -0,0 +1,43 @@
|
||||
+Index: netifd-2023-09-19-8587c074/scripts/netifd-wireless.sh
|
||||
+===================================================================
|
||||
+--- netifd-2023-09-19-8587c074.orig/scripts/netifd-wireless.sh
|
||||
++++ netifd-2023-09-19-8587c074/scripts/netifd-wireless.sh
|
||||
+@@ -39,11 +39,10 @@ prepare_key_wep() {
|
||||
+ }
|
||||
+
|
||||
+ _wdev_prepare_channel() {
|
||||
+- json_get_vars channel band hwmode
|
||||
++ json_get_vars channel band hwmode htmode
|
||||
+
|
||||
+ auto_channel=0
|
||||
+ enable_ht=0
|
||||
+- htmode=
|
||||
+ hwmode="${hwmode##11}"
|
||||
+
|
||||
+ case "$channel" in
|
||||
+@@ -70,7 +69,14 @@ _wdev_prepare_channel() {
|
||||
+
|
||||
+ case "$band" in
|
||||
+ 2g) hwmode=g;;
|
||||
+- 5g|6g) hwmode=a;;
|
||||
++ 5g) hwmode=a;;
|
||||
++ 6g)
|
||||
++ hwmode=a;
|
||||
++ case "$htmode" in
|
||||
++ HE*|EHT*) wpa3_cipher="GCMP-256 ";;
|
||||
++ *) wpa3_cipher="";;
|
||||
++ esac
|
||||
++ ;;
|
||||
+ 60g) hwmode=ad;;
|
||||
+ *)
|
||||
+ case "$hwmode" in
|
||||
+@@ -216,6 +222,9 @@ wireless_vif_parse_encryption() {
|
||||
+ wpa_cipher="GCMP"
|
||||
+ else
|
||||
+ wpa_cipher="CCMP"
|
||||
++ case "$encryption" in
|
||||
++ sae*|wpa3*|psk3*|owe) wpa_cipher="${wpa3_cipher}$wpa_cipher";;
|
||||
++ esac
|
||||
+ fi
|
||||
+
|
||||
+ case "$encryption" in
|
||||
--
|
||||
2.43.0
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
From 9afc63f356f10942f924aaa6361f314f06727495 Mon Sep 17 00:00:00 2001
|
||||
From: John Crispin <john@phrozen.org>
|
||||
Date: Mon, 21 Jul 2025 13:27:07 +0200
|
||||
Subject: [PATCH] include/download.mk: switch to using git:// instead of
|
||||
https://
|
||||
|
||||
Signed-off-by: John Crispin <john@phrozen.org>
|
||||
---
|
||||
include/download.mk | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/include/download.mk b/include/download.mk
|
||||
index 9ab0b6c08f..430bd89307 100644
|
||||
--- a/include/download.mk
|
||||
+++ b/include/download.mk
|
||||
@@ -3,7 +3,7 @@
|
||||
# Copyright (C) 2006-2012 OpenWrt.org
|
||||
# Copyright (C) 2016 LEDE project
|
||||
|
||||
-PROJECT_GIT = https://git.openwrt.org
|
||||
+PROJECT_GIT = git://git.openwrt.org
|
||||
|
||||
OPENWRT_GIT = $(PROJECT_GIT)
|
||||
LEDE_GIT = $(PROJECT_GIT)
|
||||
--
|
||||
2.34.1
|
||||
|
||||
22
profiles/emplus_wap7635.yml
Normal file
22
profiles/emplus_wap7635.yml
Normal file
@@ -0,0 +1,22 @@
|
||||
---
|
||||
profile: emplus_wap7635
|
||||
target: ipq53xx
|
||||
subtarget: generic
|
||||
description: Build image for the EMPLUS WAP7635
|
||||
image: bin/targets/ipq53xx/generic/openwrt-ipq53xx-emplus_wap7635-squashfs-sysupgrade.tar
|
||||
feeds:
|
||||
- name: qca
|
||||
path: ../../feeds/qca-wifi-7
|
||||
include:
|
||||
- ucentral-ap
|
||||
packages:
|
||||
- ipq53xx
|
||||
- qca-ssdk-shell
|
||||
- iperf3
|
||||
- jq
|
||||
- sysstat
|
||||
- tree
|
||||
diffconfig: |
|
||||
CONFIG_KERNEL_IPQ_MEM_PROFILE=0
|
||||
CONFIG_BUSYBOX_CUSTOM=y
|
||||
CONFIG_BUSYBOX_CONFIG_PSTREE=y
|
||||
Reference in New Issue
Block a user