[openwrt/openwrt] mac80211: properly setup mesh interface

LEDE Commits lede-commits at lists.infradead.org
Mon May 14 00:53:35 PDT 2018


dangole pushed a commit to openwrt/openwrt.git, branch master:
https://git.lede-project.org/574e4377fad5137595dea8a281061a3c945187c2

commit 574e4377fad5137595dea8a281061a3c945187c2
Author: Daniel Golle <daniel at makrotopia.org>
AuthorDate: Sun May 13 05:20:39 2018 +0200

    mac80211: properly setup mesh interface
    
    Setup wpa_supplicant for encrypted mesh or when using DFS channels and
    adjust interface setup to pass fixed frequency for mesh mode.
    
    Signed-off-by: Daniel Golle <daniel at makrotopia.org>
---
 package/kernel/mac80211/Makefile                        |  2 +-
 .../mac80211/files/lib/netifd/wireless/mac80211.sh      | 17 ++++++++++++++---
 2 files changed, 15 insertions(+), 4 deletions(-)

diff --git a/package/kernel/mac80211/Makefile b/package/kernel/mac80211/Makefile
index dc198eb..499de2f 100644
--- a/package/kernel/mac80211/Makefile
+++ b/package/kernel/mac80211/Makefile
@@ -11,7 +11,7 @@ include $(INCLUDE_DIR)/kernel.mk
 PKG_NAME:=mac80211
 
 PKG_VERSION:=2017-11-01
-PKG_RELEASE:=5
+PKG_RELEASE:=6
 PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources
 PKG_HASH:=8437ab7886b988c8152e7a4db30b7f41009e49a3b2cb863edd05da1ecd7eb05a
 
diff --git a/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh b/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh
index 16e32a9..dbe4aac 100644
--- a/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh
+++ b/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh
@@ -518,7 +518,11 @@ mac80211_prepare_vif() {
 
 mac80211_setup_supplicant() {
 	wpa_supplicant_prepare_interface "$ifname" nl80211 || return 1
-	wpa_supplicant_add_network "$ifname"
+	if [ "$mode" = "sta" ]; then
+		wpa_supplicant_add_network "$ifname"
+	else
+		wpa_supplicant_add_network "$ifname" "$freq" "$htmode" "$noscan"
+	fi
 	wpa_supplicant_run "$ifname" ${hostapd_ctrl:+-H $hostapd_ctrl}
 }
 
@@ -630,10 +634,10 @@ mac80211_setup_vif() {
 	case "$mode" in
 		mesh)
 			json_get_vars key
-			if [ -n "$key" ]; then
+			if [ "$wpa" -gt 0 -o "$auto_channel" -gt 0 ] || chan_is_dfs "$phy" "$channel"; then
 				wireless_vif_parse_encryption
 				freq="$(get_freq "$phy" "$channel")"
-				mac80211_setup_supplicant_noctl || failed=1
+				mac80211_setup_supplicant || failed=1
 			else
 				json_get_vars mesh_id mcast_rate
 
@@ -710,6 +714,13 @@ get_freq() {
 	iw "$phy" info | grep -E -m1 "(\* ${chan:-....} MHz${chan:+|\\[$chan\\]})" | grep MHz | awk '{print $2}'
 }
 
+chan_is_dfs() {
+	local phy="$1"
+	local chan="$2"
+	iw "$phy" info | grep -E -m1 "(\* ${chan:-....} MHz${chan:+|\\[$chan\\]})" | grep -q "MHz.*radar detection"
+	return $!
+}
+
 mac80211_interface_cleanup() {
 	local phy="$1"
 



More information about the lede-commits mailing list