broadcom-wl: align with mac80211 config
authorJo-Philipp Wich <jow@openwrt.org>
Sat, 25 Oct 2014 18:43:18 +0000 (18:43 +0000)
committerJo-Philipp Wich <jow@openwrt.org>
Sat, 25 Oct 2014 18:43:18 +0000 (18:43 +0000)
 - Support HT40 instead of HT40+/HT40- like mac80211
 - Enable 11n if htmode is HT20 or HT40

Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
SVN-Revision: 43063

package/kernel/broadcom-wl/Makefile
package/kernel/broadcom-wl/files/lib/wifi/broadcom.sh

index d790d2c3a476b2f85930d3ac60aeb1387d977cdc..29137e0dc0efa3d2d814d45650af3e064bbc6411 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2006-2012 OpenWrt.org
+# Copyright (C) 2006-2014 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -10,7 +10,7 @@ include $(INCLUDE_DIR)/kernel.mk
 
 PKG_NAME:=broadcom-wl
 PKG_VERSION:=5.10.56.27.3
-PKG_RELEASE:=7
+PKG_RELEASE:=8
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)_$(ARCH).tar.bz2
 PKG_SOURCE_URL:=http://downloads.openwrt.org/sources
index 69e3132967595fa686fa8fdee0e454a22c3c7597..65179a569274b3c195ce02703c4b21b77f3180d0 100644 (file)
@@ -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
        }