summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Golle <daniel@makrotopia.org>2018-05-13 05:20:39 +0200
committerDaniel Golle <daniel@makrotopia.org>2018-05-14 09:48:58 +0200
commit574e4377fad5137595dea8a281061a3c945187c2 (patch)
treee5a739c9420ae1b50331346995664bac4558da5e
parent6e0fa4a76db667d7f0c1d84a3af5017df26d3fad (diff)
downloadopenwrt-574e4377fad5137595dea8a281061a3c945187c2.tar.gz
openwrt-574e4377fad5137595dea8a281061a3c945187c2.tar.bz2
openwrt-574e4377fad5137595dea8a281061a3c945187c2.zip
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@makrotopia.org>
-rw-r--r--package/kernel/mac80211/Makefile2
-rw-r--r--package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh17
2 files changed, 15 insertions, 4 deletions
diff --git a/package/kernel/mac80211/Makefile b/package/kernel/mac80211/Makefile
index dc198eb542..499de2fd4e 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 16e32a91a4..dbe4aac7d7 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"