mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2024-11-19 05:51:32 +02:00
wifi: fix hostapd + autochannel
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@15055 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
parent
e9575c6635
commit
dbaa421297
@ -34,6 +34,40 @@ bridge_interface() {(
|
|||||||
[ "$iftype" = bridge ] && config_get "$cfg" ifname
|
[ "$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() {
|
wifi_updown() {
|
||||||
[ enable = "$1" ] && wifi_updown disable "$2"
|
[ enable = "$1" ] && wifi_updown disable "$2"
|
||||||
|
@ -77,32 +77,28 @@ hostapd_setup_vif() {
|
|||||||
config_get channel "$device" channel
|
config_get channel "$device" channel
|
||||||
config_get hwmode "$device" hwmode
|
config_get hwmode "$device" hwmode
|
||||||
config_get country "$device" country
|
config_get country "$device" country
|
||||||
case "$hwmode" in
|
[ "$channel" = auto ] && channel=
|
||||||
11a) hwmode=a;;
|
[ -n "$channel" -a -z "$hwmode" ] && wifi_fixup_hwmode "$device"
|
||||||
11b) hwmode=b;;
|
[ -n "$hwmode" ] && {
|
||||||
11g) hwmode=g;;
|
config_get hwmode_11n "$device" hwmode_11n
|
||||||
11n)
|
[ -n "$hwmode_11n" ] && {
|
||||||
hwmode=g
|
hwmode="$hwmode_11n"
|
||||||
append hostapd_cfg "ieee80211n=1" "$N"
|
|
||||||
config_get ht_capab "$device" ht_capab
|
config_get ht_capab "$device" ht_capab
|
||||||
;;
|
}
|
||||||
*)
|
}
|
||||||
hwmode=
|
|
||||||
[ "$channel" -gt 14 ] && hwmode=a
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
cat > /var/run/hostapd-$ifname.conf <<EOF
|
cat > /var/run/hostapd-$ifname.conf <<EOF
|
||||||
ctrl_interface=/var/run/hostapd-$ifname
|
ctrl_interface=/var/run/hostapd-$ifname
|
||||||
driver=$driver
|
driver=$driver
|
||||||
interface=$ifname
|
interface=$ifname
|
||||||
hw_mode=${hwmode:-g}
|
${hwmode:+hw_mode=$hwmode}
|
||||||
channel=$channel
|
${channel:+channel=$channel}
|
||||||
${bridge:+bridge=$bridge}
|
${bridge:+bridge=$bridge}
|
||||||
ssid=$ssid
|
ssid=$ssid
|
||||||
debug=0
|
debug=0
|
||||||
wpa=$wpa
|
wpa=$wpa
|
||||||
${crypto:+wpa_pairwise=$crypto}
|
${crypto:+wpa_pairwise=$crypto}
|
||||||
${country:+country_code=$country}
|
${country:+country_code=$country}
|
||||||
|
${hwmode_11n:+ieee80211n=1}
|
||||||
${ht_capab:+ht_capab=$ht_capab}
|
${ht_capab:+ht_capab=$ht_capab}
|
||||||
$hostapd_cfg
|
$hostapd_cfg
|
||||||
EOF
|
EOF
|
||||||
|
@ -54,6 +54,7 @@ enable_mac80211() {
|
|||||||
|
|
||||||
local first=1
|
local first=1
|
||||||
local mesh_idx=0
|
local mesh_idx=0
|
||||||
|
wifi_fixup_hwmode "$device" "g"
|
||||||
for vif in $vifs; do
|
for vif in $vifs; do
|
||||||
ifconfig "$ifname" down 2>/dev/null
|
ifconfig "$ifname" down 2>/dev/null
|
||||||
config_get ifname "$vif" ifname
|
config_get ifname "$vif" ifname
|
||||||
|
Loading…
Reference in New Issue
Block a user