broadcom-wl: simplify processing of 'hwmode'
authorHauke Mehrtens <hauke@hauke-m.de>
Mon, 11 Nov 2013 22:00:39 +0000 (22:00 +0000)
committerHauke Mehrtens <hauke@hauke-m.de>
Mon, 11 Nov 2013 22:00:39 +0000 (22:00 +0000)
Default gmode to "GOnly" unless explicitly overwridden.  This corrects
processing for 11ng to specify "GOnly" for gmode instead of "Auto"
(which translated to "bg").

Signed-off-by: Nathan Hintz <nlhintz@hotmail.com>
SVN-Revision: 38754

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

index 191092a..7721b87 100644 (file)
@@ -165,32 +165,34 @@ enable_broadcom() {
                ;;
        esac
 
-       [ ${channel:-0} -ge 1 -a ${channel:-0} -le 14 ] && band=2
-       [ ${channel:-0} -ge 36 ] && band=1
+       local gmode=2 nmode=0 nreqd=
+       case "$hwmode" in
+               *a)     gmode=;;
+               *b)     gmode=0;;
+               *bg)    gmode=1;;
+               *g)     gmode=2;;
+               *gst)   gmode=4;;
+               *lrs)   gmode=5;;
+               *)      nmode=1; nreqd=0;;
+       esac
 
        case "$hwmode" in
-               *na)    nmode=1; nreqd=0;;
-               *a)     nmode=0;;
-               *ng)    gmode=1; nmode=1; nreqd=0;;
-               *n)     nmode=1; nreqd=1;;
-               *b)     gmode=0; nmode=0;;
-               *bg)    gmode=1; nmode=0;;
-               *g)     gmode=2; nmode=0;;
-               *gst)   gmode=4; nmode=0;;
-               *lrs)   gmode=5; nmode=0;;
-               *)      case "$band" in
-                               2) gmode=1; nmode=1; nreqd=0;;
-                               1) nmode=1; nreqd=0;;
-                               *) gmode=1; nmode=1; nreqd=0;;
-                       esac
-                       ;;
+               n|11n)  nmode=1; nreqd=1;;
+               *n*)    nmode=1; nreqd=0;;
        esac
 
         # Use 'nmode' for N-Phy only
-       [ "$(wlc ifname $device phytype)" = 4 ] || nmode=
+       [ "$(wlc ifname "$device" phytype)" = 4 ] || nmode=
+
+       local band chanspec
+       [ ${channel:-0} -ge 1 -a ${channel:-0} -le 14 ] && band=2
+       [ ${channel:-0} -ge 36 ] && {
+               band=1
+               gmode=
+       }
 
        # Use 'chanspec' instead of 'channel' for 'N' modes (See bcmwifi.h)
-       [ ${nmode:-0} -ne 0 -a -n "$band" ] && {
+       [ ${nmode:-0} -ne 0 -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=;;
@@ -352,7 +354,7 @@ enable_broadcom() {
        wlc ifname "$device" stdin <<EOF
 $ifdown
 
-${nmode:+band ${band:-0}}
+band ${band:-0}
 ${nmode:+nmode $nmode}
 ${nmode:+${nreqd:+nreqd $nreqd}}
 ${gmode:+gmode $gmode}