aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2015-01-24 19:27:22 +0000
committerFelix Fietkau <nbd@openwrt.org>2015-01-24 19:27:22 +0000
commit768d09be8781228d3553142c0f1e1231c6aacc7c (patch)
treee3127d0d1db50f59bf8b113d44279add1728c2ad
parentc180e8df1e0c556d9bdd5f5f492736849925c0df (diff)
downloadupstream-768d09be8781228d3553142c0f1e1231c6aacc7c.tar.gz
upstream-768d09be8781228d3553142c0f1e1231c6aacc7c.tar.bz2
upstream-768d09be8781228d3553142c0f1e1231c6aacc7c.zip
mac80211/hostapd: fix HT mode setup for RSN ad-hoc networks
Signed-off-by: Felix Fietkau <nbd@openwrt.org> SVN-Revision: 44100
-rw-r--r--package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh62
-rw-r--r--package/network/services/hostapd/files/netifd.sh3
2 files changed, 35 insertions, 30 deletions
diff --git a/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh b/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh
index c7935b567f..1a85d15ed6 100644
--- a/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh
+++ b/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh
@@ -490,6 +490,38 @@ mac80211_setup_supplicant() {
wpa_supplicant_run "$ifname" ${hostapd_ctrl:+-H $hostapd_ctrl}
}
+mac80211_setup_adhoc_htmode() {
+ case "$htmode" in
+ VHT20|HT20) ibss_htmode=HT20;;
+ HT40*|VHT40|VHT80|VHT160)
+ case "$hwmode" in
+ a)
+ case "$(( ($channel / 4) % 2 ))" in
+ 1) ibss_htmode="HT40+" ;;
+ 0) ibss_htmode="HT40-";;
+ esac
+ ;;
+ *)
+ case "$htmode" in
+ HT40+) ibss_htmode="HT40+";;
+ HT40-) ibss_htmode="HT40-";;
+ *)
+ if [ "$channel" -lt 7 ]; then
+ ibss_htmode="HT40+"
+ else
+ ibss_htmode="HT40-"
+ fi
+ ;;
+ esac
+ ;;
+ esac
+ [ "$auto_channel" -gt 0 ] && ibss_htmode="HT40+"
+ ;;
+ *) ibss_htmode="" ;;
+ esac
+
+}
+
mac80211_setup_adhoc() {
json_get_vars bssid ssid key mcast_rate
@@ -523,35 +555,6 @@ mac80211_setup_adhoc() {
mcval=
[ -n "$mcast_rate" ] && wpa_supplicant_add_rate mcval "$mcast_rate"
- case "$htmode" in
- VHT20|HT20) ibss_htmode=HT20;;
- HT40*|VHT40|VHT80|VHT160)
- case "$hwmode" in
- a)
- case "$(( ($channel / 4) % 2 ))" in
- 1) ibss_htmode="HT40+" ;;
- 0) ibss_htmode="HT40-";;
- esac
- ;;
- *)
- case "$htmode" in
- HT40+) ibss_htmode="HT40+";;
- HT40-) ibss_htmode="HT40-";;
- *)
- if [ "$channel" -lt 7 ]; then
- ibss_htmode="HT40+"
- else
- ibss_htmode="HT40-"
- fi
- ;;
- esac
- ;;
- esac
- [ "$auto_channel" -gt 0 ] && ibss_htmode="HT40+"
- ;;
- *) ibss_htmode="" ;;
- esac
-
iw dev "$ifname" ibss join "$ssid" $freq $ibss_htmode fixed-freq $bssid \
${beacon_int:+beacon-interval $beacon_int} \
${brstr:+basic-rates $brstr} \
@@ -602,6 +605,7 @@ mac80211_setup_vif() {
;;
adhoc)
wireless_vif_parse_encryption
+ mac80211_setup_adhoc_htmode
if [ "$wpa" -gt 0 -o "$auto_channel" -gt 0 ]; then
mac80211_setup_supplicant || failed=1
else
diff --git a/package/network/services/hostapd/files/netifd.sh b/package/network/services/hostapd/files/netifd.sh
index d6257090ac..83fb129fe1 100644
--- a/package/network/services/hostapd/files/netifd.sh
+++ b/package/network/services/hostapd/files/netifd.sh
@@ -596,7 +596,8 @@ wpa_supplicant_add_network() {
}
local ht_str
- [ -n "$ht" ] && append network_data "htmode=$ht" "$N$T"
+ [[ "$_w_mode" = adhoc ]] || ibss_htmode=
+ [ -n "$ibss_htmode" ] && append network_data "htmode=$ibss_htmode" "$N$T"
cat >> "$_config" <<EOF
network={