summaryrefslogtreecommitdiffstats
path: root/package/base-files
diff options
context:
space:
mode:
authornbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>2009-03-27 21:14:59 +0000
committernbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>2009-03-27 21:14:59 +0000
commitdbaa421297b3576dbaf121faa13894139e3a39ec (patch)
treec2d9f37cc5a7fe3e1446132b529c9a117aeffc3f /package/base-files
parente9575c6635fa2361d4bab8ca372c21ee2401cadf (diff)
wifi: fix hostapd + autochannel
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@15055 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/base-files')
-rwxr-xr-xpackage/base-files/files/sbin/wifi34
1 files changed, 34 insertions, 0 deletions
diff --git a/package/base-files/files/sbin/wifi b/package/base-files/files/sbin/wifi
index e0aca6315..ec231457e 100755
--- a/package/base-files/files/sbin/wifi
+++ b/package/base-files/files/sbin/wifi
@@ -34,6 +34,40 @@ bridge_interface() {(
[ "$iftype" = bridge ] && config_get "$cfg" ifname
)}
+wifi_fixup_hwmode() {
+ local device="$1"
+ local default="$2"
+ local hwmode hwmode_11n
+
+ config_get channel "$device" channel
+ config_get hwmode "$device" hwmode
+ case "$hwmode" in
+ 11a) hwmode=a;;
+ 11b) hwmode=b;;
+ 11g) hwmode=g;;
+ 11n*)
+ hwmode_11n="${hwmode##11n}"
+ case "$hwmode" in
+ a|g) ;;
+ default) hwmode_11n="$default"
+ esac
+ config_set "$device" hwmode_11n "$hwmode_11n"
+ ;;
+ *)
+ hwmode=
+ if [ "${channel:-0}" -gt 0 ]; then
+ if [ "${channel:-0}" -gt 14 ]; then
+ hwmode=a
+ else
+ hwmode=g
+ fi
+ else
+ hwmode="$default"
+ fi
+ ;;
+ esac
+ config_set "$device" hwmode "$hwmode"
+}
wifi_updown() {
[ enable = "$1" ] && wifi_updown disable "$2"