aboutsummaryrefslogtreecommitdiffstats
path: root/package/base-files/files/sbin/wifi
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2009-03-27 21:14:59 +0000
committerFelix Fietkau <nbd@openwrt.org>2009-03-27 21:14:59 +0000
commitca749bea976300c4c5c2b67e132aefdda8ce1f3e (patch)
tree54a9fed2fd41fb18060e83827a22af4d3f3202d6 /package/base-files/files/sbin/wifi
parent4aab5d7c49e7de258cc5c20d95dec0d0138cff2f (diff)
downloadupstream-ca749bea976300c4c5c2b67e132aefdda8ce1f3e.tar.gz
upstream-ca749bea976300c4c5c2b67e132aefdda8ce1f3e.tar.bz2
upstream-ca749bea976300c4c5c2b67e132aefdda8ce1f3e.zip
wifi: fix hostapd + autochannel
SVN-Revision: 15055
Diffstat (limited to 'package/base-files/files/sbin/wifi')
-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 e0aca63155..ec231457e9 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"