aboutsummaryrefslogtreecommitdiffstats
path: root/package
diff options
context:
space:
mode:
authorSantiago Piccinini <spiccinini@altermundi.net>2019-11-25 16:53:59 -0300
committerDaniel Golle <daniel@makrotopia.org>2019-11-30 20:20:54 +0100
commitd2d12346e8e6dd5fbb6befd4f9e3e1d5304a2e31 (patch)
tree202cfabfdce287b693bb13f8c387d59a8712c870 /package
parent06bf1a9b67789229ed8401b554bc1183950dff72 (diff)
downloadupstream-d2d12346e8e6dd5fbb6befd4f9e3e1d5304a2e31.tar.gz
upstream-d2d12346e8e6dd5fbb6befd4f9e3e1d5304a2e31.tar.bz2
upstream-d2d12346e8e6dd5fbb6befd4f9e3e1d5304a2e31.zip
mac80211: unify setup of iw htmode for mesh and adhoc
This also fixes mac80211_prepare_vif iw set channel in monitor or mesh mode. Signed-off-by: Santiago Piccinini <spiccinini@altermundi.net> Signed-off-by: Daniel Golle <daniel@makrotopia.org> [daniel@makrotopia.org: fixed commit message] (cherry picked from commit c7fb12beb1d347f1cedc7890dbe2d441f70ccf62)
Diffstat (limited to 'package')
-rw-r--r--package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh65
1 files changed, 16 insertions, 49 deletions
diff --git a/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh b/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh
index fff9f0d471..634aadcee9 100644
--- a/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh
+++ b/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh
@@ -513,7 +513,7 @@ mac80211_prepare_vif() {
case "$mode" in
monitor|mesh)
- [ "$auto_channel" -gt 0 ] || iw dev "$ifname" set channel "$channel" $htmode
+ [ "$auto_channel" -gt 0 ] || iw dev "$ifname" set channel "$channel" $iw_htmode
;;
esac
@@ -544,40 +544,40 @@ mac80211_setup_supplicant_noctl() {
wpa_supplicant_run "$ifname"
}
-mac80211_setup_adhoc_htmode() {
+mac80211_prepare_iw_htmode() {
case "$htmode" in
- VHT20|HT20) ibss_htmode=HT20;;
+ VHT20|HT20) iw_htmode=HT20;;
HT40*|VHT40|VHT160)
case "$hwmode" in
a)
case "$(( ($channel / 4) % 2 ))" in
- 1) ibss_htmode="HT40+" ;;
- 0) ibss_htmode="HT40-";;
+ 1) iw_htmode="HT40+" ;;
+ 0) iw_htmode="HT40-";;
esac
;;
*)
case "$htmode" in
- HT40+) ibss_htmode="HT40+";;
- HT40-) ibss_htmode="HT40-";;
+ HT40+) iw_htmode="HT40+";;
+ HT40-) iw_htmode="HT40-";;
*)
if [ "$channel" -lt 7 ]; then
- ibss_htmode="HT40+"
+ iw_htmode="HT40+"
else
- ibss_htmode="HT40-"
+ iw_htmode="HT40-"
fi
;;
esac
;;
esac
- [ "$auto_channel" -gt 0 ] && ibss_htmode="HT40+"
+ [ "$auto_channel" -gt 0 ] && iw_htmode="HT40+"
;;
VHT80)
- ibss_htmode="80MHZ"
+ iw_htmode="80MHZ"
;;
NONE|NOHT)
- ibss_htmode="NOHT"
+ iw_htmode="NOHT"
;;
- *) ibss_htmode="" ;;
+ *) iw_htmode="" ;;
esac
}
@@ -615,7 +615,7 @@ mac80211_setup_adhoc() {
mcval=
[ -n "$mcast_rate" ] && wpa_supplicant_add_rate mcval "$mcast_rate"
- iw dev "$ifname" ibss join "$ssid" $freq $ibss_htmode fixed-freq $bssid \
+ iw dev "$ifname" ibss join "$ssid" $freq $iw_htmode fixed-freq $bssid \
beacon-interval $beacon_int \
${brstr:+basic-rates $brstr} \
${mcval:+mcast-rate $mcval} \
@@ -629,40 +629,7 @@ mac80211_setup_mesh() {
[ -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 \
+ iw dev "$ifname" mesh join "$ssid" freq $freq $iw_htmode \
${mcval:+mcast-rate $mcval} \
beacon-interval $beacon_int
}
@@ -704,7 +671,6 @@ mac80211_setup_vif() {
;;
adhoc)
wireless_vif_parse_encryption
- mac80211_setup_adhoc_htmode
if [ "$wpa" -gt 0 -o "$auto_channel" -gt 0 ]; then
freq="$(get_freq "$phy" "$channel")"
mac80211_setup_supplicant_noctl || failed=1
@@ -818,6 +784,7 @@ drv_mac80211_setup() {
for_each_interface "sta adhoc mesh" mac80211_set_noscan
[ -n "$has_ap" ] && mac80211_hostapd_setup_base "$phy"
+ mac80211_prepare_iw_htmode
for_each_interface "sta adhoc mesh monitor" mac80211_prepare_vif
for_each_interface "ap" mac80211_prepare_vif