diff options
author | Felix Fietkau <nbd@openwrt.org> | 2015-01-24 19:27:22 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2015-01-24 19:27:22 +0000 |
commit | f1b7de863d1b26361784b6c0f02bef3900b1239d (patch) | |
tree | a99ea0c94806beecf4043249158a535efdcfc911 /package | |
parent | 8e1a7da881ea5c6679c43cfe2dbe2dbc4d4d652e (diff) | |
download | upstream-f1b7de863d1b26361784b6c0f02bef3900b1239d.tar.gz upstream-f1b7de863d1b26361784b6c0f02bef3900b1239d.tar.bz2 upstream-f1b7de863d1b26361784b6c0f02bef3900b1239d.zip |
mac80211/hostapd: fix HT mode setup for RSN ad-hoc networks
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@44100 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package')
-rw-r--r-- | package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh | 62 | ||||
-rw-r--r-- | package/network/services/hostapd/files/netifd.sh | 3 |
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={ |