X-Git-Url: http://git.openwrt.org/?p=openwrt%2Fsvn-archive%2Farchive.git;a=blobdiff_plain;f=package%2Fkernel%2Fbroadcom-wl%2Ffiles%2Flib%2Fwifi%2Fbroadcom.sh;fp=package%2Fkernel%2Fbroadcom-wl%2Ffiles%2Flib%2Fwifi%2Fbroadcom.sh;h=65179a569274b3c195ce02703c4b21b77f3180d0;hp=69e3132967595fa686fa8fdee0e454a22c3c7597;hb=452925430278a8ce04997cf346c8ecf18be0ec3e;hpb=14f31192dcb73400eb03674d39e206271e3a8f02 diff --git a/package/kernel/broadcom-wl/files/lib/wifi/broadcom.sh b/package/kernel/broadcom-wl/files/lib/wifi/broadcom.sh index 69e3132967..65179a5692 100644 --- a/package/kernel/broadcom-wl/files/lib/wifi/broadcom.sh +++ b/package/kernel/broadcom-wl/files/lib/wifi/broadcom.sh @@ -199,11 +199,20 @@ enable_broadcom() { } # Use 'chanspec' instead of 'channel' for 'N' modes (See bcmwifi.h) - [ ${nmode:-0} -ne 0 -a -n "$band" -a -n "$channel" ] && { + [ -n "$nmode" -a -n "$band" -a -n "$channel" ] && { case "$htmode" in - HT40-) chanspec=$(printf 0x%x%x%02x $band 0xe $(($channel - 2))); channel=;; - HT40+) chanspec=$(printf 0x%x%x%02x $band 0xd $(($channel + 2))); channel=;; - HT20) chanspec=$(printf 0x%x%x%02x $band 0xb $channel); channel=;; + HT40) + if [ -n "$gmode" ]; then + [ $channel -lt 7 ] && htmode="HT40+" || htmode="HT40-" + else + [ $(( ($channel / 4) % 2 )) -eq 1 ] && htmode="HT40+" || htmode="HT40-" + fi + ;; + esac + case "$htmode" in + HT40-) chanspec=$(printf 0x%x%x%02x $band 0xe $(($channel - 2))); nmode=1; channel=;; + HT40+) chanspec=$(printf 0x%x%x%02x $band 0xd $(($channel + 2))); nmode=1; channel=;; + HT20) chanspec=$(printf 0x%x%x%02x $band 0xb $channel); nmode=1; channel=;; *) ;; esac }