diff --git a/feeds/morse/utils/morse_mesh11sd/patches/002-remove-mesh-ifname-setting.patch b/feeds/morse/utils/morse_mesh11sd/patches/002-remove-mesh-ifname-setting.patch deleted file mode 100644 index 37050c4e9..000000000 --- a/feeds/morse/utils/morse_mesh11sd/patches/002-remove-mesh-ifname-setting.patch +++ /dev/null @@ -1,107 +0,0 @@ -# Description: The Mesh11sd daemon expects the mesh interface name to follow the format 'mesh'. -# 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 diff --git a/feeds/morse/utils/morse_mesh11sd/patches/002-remove-mesh-ifname-upon-disable.patch b/feeds/morse/utils/morse_mesh11sd/patches/002-remove-mesh-ifname-upon-disable.patch new file mode 100644 index 000000000..ece13af2f --- /dev/null +++ b/feeds/morse/utils/morse_mesh11sd/patches/002-remove-mesh-ifname-upon-disable.patch @@ -0,0 +1,63 @@ +# Description: The Mesh11sd daemon sets the interface name 'mesh' 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'. +# This patch addresses the issue by removing the 'mesh' 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 diff --git a/feeds/morse/utils/morse_mesh11sd/patches/003-accton_fix_ifname_confliction.patch b/feeds/morse/utils/morse_mesh11sd/patches/003-accton_fix_ifname_confliction.patch new file mode 100644 index 000000000..0e2dc5a89 --- /dev/null +++ b/feeds/morse/utils/morse_mesh11sd/patches/003-accton_fix_ifname_confliction.patch @@ -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 diff --git a/feeds/morse/utils/wpa_supplicant_s1g/Config.in b/feeds/morse/utils/wpa_supplicant_s1g/Config.in index d8b78317e..46f4a6572 100644 --- a/feeds/morse/utils/wpa_supplicant_s1g/Config.in +++ b/feeds/morse/utils/wpa_supplicant_s1g/Config.in @@ -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