mac80211: refactor non-{sae,dfs} mesh initialization
Refactor mesh initialization into a separate function, do some cleaning on the way to make the code more readable. Changes: * Move iw mesh setup to new mac80211_setup_mesh() * fallback on 'ssid' parameter in case 'mesh_id' isn't set * move setting of freq variable to shared code as it is needed for both, the wpa_supplicant and the iw based setup. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
This commit is contained in:
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user