From f1b7de863d1b26361784b6c0f02bef3900b1239d Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Sat, 24 Jan 2015 19:27:22 +0000 Subject: mac80211/hostapd: fix HT mode setup for RSN ad-hoc networks Signed-off-by: Felix Fietkau git-svn-id: svn://svn.openwrt.org/openwrt/trunk@44100 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../mac80211/files/lib/netifd/wireless/mac80211.sh | 62 ++++++++++++---------- 1 file changed, 33 insertions(+), 29 deletions(-) (limited to 'package/kernel') 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 -- cgit v1.2.3