diff options
author | Daniel Golle <daniel@makrotopia.org> | 2018-05-13 05:20:39 +0200 |
---|---|---|
committer | Daniel Golle <daniel@makrotopia.org> | 2018-05-14 09:48:58 +0200 |
commit | 574e4377fad5137595dea8a281061a3c945187c2 (patch) | |
tree | e5a739c9420ae1b50331346995664bac4558da5e /package/kernel/mac80211/files | |
parent | 6e0fa4a76db667d7f0c1d84a3af5017df26d3fad (diff) | |
download | upstream-574e4377fad5137595dea8a281061a3c945187c2.tar.gz upstream-574e4377fad5137595dea8a281061a3c945187c2.tar.bz2 upstream-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>
Diffstat (limited to 'package/kernel/mac80211/files')
-rw-r--r-- | package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh | 17 |
1 files changed, 14 insertions, 3 deletions
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" |