@ -610,6 +610,51 @@ mac80211_setup_adhoc() {
${ keyspec : +keys $keyspec }
}
mac80211_setup_mesh( ) {
json_get_vars ssid mesh_id mcast_rate
mcval =
[ -n " $mcast_rate " ] && wpa_supplicant_add_rate mcval " $mcast_rate "
[ -n " $mesh_id " ] && ssid = " $mesh_id "
case " $htmode " in
VHT20| HT20) mesh_htmode = HT20; ;
HT40*| VHT40)
case " $hwmode " in
a)
case " $(( ( $channel / 4 ) % 2 )) " in
1) mesh_htmode = "HT40+" ; ;
0) mesh_htmode = "HT40-" ; ;
esac
; ;
*)
case " $htmode " in
HT40+) mesh_htmode = "HT40+" ; ;
HT40-) mesh_htmode = "HT40-" ; ;
*)
if [ " $channel " -lt 7 ] ; then
mesh_htmode = "HT40+"
else
mesh_htmode = "HT40-"
fi
; ;
esac
; ;
esac
; ;
VHT80)
mesh_htmode = "80Mhz"
; ;
VHT160)
mesh_htmode = "160Mhz"
; ;
*) mesh_htmode = "NOHT" ; ;
esac
iw dev " $ifname " mesh join " $ssid " freq $freq $mesh_htmode \
${ mcval : +mcast-rate $mcval } \
beacon-interval $beacon_int
}
mac80211_setup_vif( ) {
local name = " $1 "
local failed
@ -633,57 +678,13 @@ mac80211_setup_vif() {
case " $mode " in
mesh)
json_get_vars key
wireless_vif_parse_encryption
freq = " $( get_freq " $phy " " $channel " ) "
if [ " $wpa " -gt 0 -o " $auto_channel " -gt 0 ] || chan_is_dfs " $phy " " $channel " ; then
freq = " $( get_freq " $phy " " $channel " ) "
mac80211_setup_supplicant || failed = 1
else
json_get_vars mesh_id mcast_rate
mcval =
[ -n " $mcast_rate " ] && wpa_supplicant_add_rate mcval " $mcast_rate "
case " $htmode " in
VHT20| HT20) mesh_htmode = HT20; ;
HT40*| VHT40)
case " $hwmode " in
a)
case " $(( ( $channel / 4 ) % 2 )) " in
1) mesh_htmode = "HT40+" ; ;
0) mesh_htmode = "HT40-" ; ;
esac
; ;
*)
case " $htmode " in
HT40+) mesh_htmode = "HT40+" ; ;
HT40-) mesh_htmode = "HT40-" ; ;
*)
if [ " $channel " -lt 7 ] ; then
mesh_htmode = "HT40+"
else
mesh_htmode = "HT40-"
fi
; ;
esac
; ;
esac
; ;
VHT80)
mesh_htmode = "80Mhz"
; ;
VHT160)
mesh_htmode = "160Mhz"
; ;
*) mesh_htmode = "NOHT" ; ;
esac
freq = " $( get_freq " $phy " " $channel " ) "
iw dev " $ifname " mesh join " $mesh_id " freq $freq $mesh_htmode \
${ mcval : +mcast-rate $mcval } \
beacon-interval $beacon_int
mac80211_setup_mesh
fi
for var in $MP_CONFIG_INT $MP_CONFIG_BOOL $MP_CONFIG_STRING ; do
json_get_var mp_val " $var "
[ -n " $mp_val " ] && iw dev " $ifname " set mesh_param " $var " " $mp_val "