aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2014-12-22 21:46:52 +0000
committerFelix Fietkau <nbd@openwrt.org>2014-12-22 21:46:52 +0000
commitce61b3c5ccff4a59a3173484130aa955fa0e35ec (patch)
tree635381f2c1ad036b072403363b485f0995183edb
parent3d4db95f4c35879f4a3c40cef887f6a96868b711 (diff)
downloadupstream-ce61b3c5ccff4a59a3173484130aa955fa0e35ec.tar.gz
upstream-ce61b3c5ccff4a59a3173484130aa955fa0e35ec.tar.bz2
upstream-ce61b3c5ccff4a59a3173484130aa955fa0e35ec.zip
mac80211: fix HT mode selection for ad-hoc
Signed-off-by: Felix Fietkau <nbd@openwrt.org> Backport of r43769 git-svn-id: svn://svn.openwrt.org/openwrt/branches/barrier_breaker@43770 3c298f89-4303-0410-b956-a3cf2f4a3e73
-rw-r--r--package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh35
1 files changed, 32 insertions, 3 deletions
diff --git a/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh b/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh
index e6241deb5f..a464cc941d 100644
--- a/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh
+++ b/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh
@@ -88,7 +88,7 @@ mac80211_hostapd_setup_base() {
[ "$auto_channel" -gt 0 ] && channel=acs_survey
- json_get_vars noscan htmode
+ json_get_vars noscan
json_get_values ht_capab_list ht_capab
ieee80211n=1
@@ -505,7 +505,36 @@ mac80211_setup_adhoc() {
mcval=
[ -n "$mcast_rate" ] && hostapd_add_rate mcval "$mcast_rate"
- iw dev "$ifname" ibss join "$ssid" $freq $htmode fixed-freq $bssid \
+ 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} \
${mcval:+mcast-rate $mcval} \
@@ -596,7 +625,7 @@ drv_mac80211_setup() {
country chanbw distance \
txpower antenna_gain \
rxantenna txantenna \
- frag rts beacon_int
+ frag rts beacon_int htmode
json_get_values basic_rate_list basic_rate
json_select ..