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>
master
Daniel Golle 7 years ago
parent 6e0fa4a76d
commit 574e4377fa
  1. 2
      package/kernel/mac80211/Makefile
  2. 15
      package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh

@ -11,7 +11,7 @@ include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=mac80211 PKG_NAME:=mac80211
PKG_VERSION:=2017-11-01 PKG_VERSION:=2017-11-01
PKG_RELEASE:=5 PKG_RELEASE:=6
PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources
PKG_HASH:=8437ab7886b988c8152e7a4db30b7f41009e49a3b2cb863edd05da1ecd7eb05a PKG_HASH:=8437ab7886b988c8152e7a4db30b7f41009e49a3b2cb863edd05da1ecd7eb05a

@ -518,7 +518,11 @@ mac80211_prepare_vif() {
mac80211_setup_supplicant() { mac80211_setup_supplicant() {
wpa_supplicant_prepare_interface "$ifname" nl80211 || return 1 wpa_supplicant_prepare_interface "$ifname" nl80211 || return 1
if [ "$mode" = "sta" ]; then
wpa_supplicant_add_network "$ifname" wpa_supplicant_add_network "$ifname"
else
wpa_supplicant_add_network "$ifname" "$freq" "$htmode" "$noscan"
fi
wpa_supplicant_run "$ifname" ${hostapd_ctrl:+-H $hostapd_ctrl} wpa_supplicant_run "$ifname" ${hostapd_ctrl:+-H $hostapd_ctrl}
} }
@ -630,10 +634,10 @@ mac80211_setup_vif() {
case "$mode" in case "$mode" in
mesh) mesh)
json_get_vars key 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 wireless_vif_parse_encryption
freq="$(get_freq "$phy" "$channel")" freq="$(get_freq "$phy" "$channel")"
mac80211_setup_supplicant_noctl || failed=1 mac80211_setup_supplicant || failed=1
else else
json_get_vars mesh_id mcast_rate 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}' 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() { mac80211_interface_cleanup() {
local phy="$1" local phy="$1"

Loading…
Cancel
Save