wifi: fix hostapd + autochannel
SVN-Revision: 15055
This commit is contained in:
parent
4aab5d7c49
commit
ca749bea97
3 changed files with 46 additions and 15 deletions
|
@ -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"
|
||||
|
|
|
@ -77,32 +77,28 @@ hostapd_setup_vif() {
|
|||
config_get channel "$device" channel
|
||||
config_get hwmode "$device" hwmode
|
||||
config_get country "$device" country
|
||||
case "$hwmode" in
|
||||
11a) hwmode=a;;
|
||||
11b) hwmode=b;;
|
||||
11g) hwmode=g;;
|
||||
11n)
|
||||
hwmode=g
|
||||
append hostapd_cfg "ieee80211n=1" "$N"
|
||||
[ "$channel" = auto ] && channel=
|
||||
[ -n "$channel" -a -z "$hwmode" ] && wifi_fixup_hwmode "$device"
|
||||
[ -n "$hwmode" ] && {
|
||||
config_get hwmode_11n "$device" hwmode_11n
|
||||
[ -n "$hwmode_11n" ] && {
|
||||
hwmode="$hwmode_11n"
|
||||
config_get ht_capab "$device" ht_capab
|
||||
;;
|
||||
*)
|
||||
hwmode=
|
||||
[ "$channel" -gt 14 ] && hwmode=a
|
||||
;;
|
||||
esac
|
||||
}
|
||||
}
|
||||
cat > /var/run/hostapd-$ifname.conf <<EOF
|
||||
ctrl_interface=/var/run/hostapd-$ifname
|
||||
driver=$driver
|
||||
interface=$ifname
|
||||
hw_mode=${hwmode:-g}
|
||||
channel=$channel
|
||||
${hwmode:+hw_mode=$hwmode}
|
||||
${channel:+channel=$channel}
|
||||
${bridge:+bridge=$bridge}
|
||||
ssid=$ssid
|
||||
debug=0
|
||||
wpa=$wpa
|
||||
${crypto:+wpa_pairwise=$crypto}
|
||||
${country:+country_code=$country}
|
||||
${hwmode_11n:+ieee80211n=1}
|
||||
${ht_capab:+ht_capab=$ht_capab}
|
||||
$hostapd_cfg
|
||||
EOF
|
||||
|
|
|
@ -54,6 +54,7 @@ enable_mac80211() {
|
|||
|
||||
local first=1
|
||||
local mesh_idx=0
|
||||
wifi_fixup_hwmode "$device" "g"
|
||||
for vif in $vifs; do
|
||||
ifconfig "$ifname" down 2>/dev/null
|
||||
config_get ifname "$vif" ifname
|
||||
|
|
Loading…
Reference in a new issue