On 08/17/2013 02:09 PM, Hauke Mehrtens wrote:
> On 09/23/2012 11:07 PM, Nathan Hintz wrote:
>> This is partly based on patches sent by Ɓukasz Kwestarz (See 
>> https://lists.openwrt.org/pipermail/openwrt-devel/2012-March/014356.html).
>>
>> Signed-off-by: Nathan Hintz <nlhintz at hotmail.com>
>>
>> Index: trunk/package/broadcom-wl/Makefile
>> ===================================================================
>> --- trunk/package/broadcom-wl/Makefile       (revision 33530)
>> +++ trunk/package/broadcom-wl/Makefile       (working copy)
>> @@ -10,7 +10,7 @@
>>  
>>  PKG_NAME:=broadcom-wl
>>  PKG_VERSION:=5.10.56.27.3
>> -PKG_RELEASE:=4
>> +PKG_RELEASE:=5
>>  
>>  PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)_$(ARCH).tar.bz2
>>  PKG_SOURCE_URL:=http://downloads.openwrt.org/sources
>> Index: trunk/package/broadcom-wl/src/wlc.c
>> ===================================================================
>> --- trunk/package/broadcom-wl/src/wlc.c      (revision 33530)
>> +++ trunk/package/broadcom-wl/src/wlc.c      (working copy)
>> @@ -499,8 +499,8 @@
>>      /* driver doesn't support GET */
>>  
>>      if ((param & PARAM_MODE) == SET) {
>> -            strncpy(pmk.key, value, WSEC_MAX_PSK_LEN);
>> -            pmk.key_len = strlen(value);
>> +            strncpy(pmk.key, str, WSEC_MAX_PSK_LEN);
>> +            pmk.key_len = strlen(str);
>>  
>>              if (pmk.key_len > WSEC_MAX_PSK_LEN)
>>                      pmk.key_len = WSEC_MAX_PSK_LEN;
>> @@ -912,6 +912,41 @@
>>              .handler = wlc_ioctl,
>>              .desc = "G Mode"
>>      },
>> +    {
>> +            .name = "phytype",
>> +            .param = INT,
>> +            .data.num = (WLC_GET_PHYTYPE << 16),
>> +            .handler = wlc_ioctl,
>> +            .desc = "PHY Type"
>> +    },
>> +    {
>> +            .name = "nmode",
>> +            .param = INT,
>> +            .handler = wlc_iovar,
>> +            .data.str = "nmode",
>> +            .desc = "N Mode"
>> +    },
>> +    {
>> +            .name = "nreqd",
>> +            .param = INT,
>> +            .handler = wlc_iovar,
>> +            .data.str = "nreqd",
>> +            .desc = "N Mode required"
>> +    },
>> +    {
>> +            .name = "chanspec",
>> +            .param = INT,
>> +            .handler = wlc_iovar,
>> +            .data.str = "chanspec",
>> +            .desc = "Channel Spec (See bcmwifi.h)"
>> +    },
>> +    {
>> +            .name = "band",
>> +            .param = INT,
>> +            .data.num = ((WLC_GET_BAND << 16) | WLC_SET_BAND),
>> +            .handler = wlc_ioctl,
>> +            .desc = "Band"
>> +    },
>>  };
>>  #define wlc_calls_size (sizeof(wlc_calls) / sizeof(struct wlc_call))
>>  
>> @@ -971,7 +1006,7 @@
>>              set = 1;
>>              switch(cmd->param & PARAM_TYPE) {
>>                      case INT:
>> -                            intval = strtoul(arg, &end, 10);
>> +                            intval = strtoul(arg, &end, 0);
>>                              if (end && !(*end)) {
>>                                      memcpy(buf, &intval, sizeof(intval));
>>                              } else {
>> Index: trunk/package/broadcom-wl/files/lib/wifi/broadcom.sh
>> ===================================================================
>> --- trunk/package/broadcom-wl/files/lib/wifi/broadcom.sh     (revision 33530)
>> +++ trunk/package/broadcom-wl/files/lib/wifi/broadcom.sh     (working copy)
>> @@ -131,6 +131,7 @@
>>      config_get frag "$device" frag
>>      config_get rts "$device" rts
>>      config_get hwmode "$device" hwmode
>> +    config_get htmode "$device" htmode
>>      local vif_pre_up vif_post_up vif_do_up vif_txpower
>>      local doth=0
>>      local wmm=1
>> @@ -161,15 +162,40 @@
>>              ;;
>>      esac
>>  
>> +    [ ${channel:-0} -ge 1 -a ${channel:-0} -le 14 ] && band=2
>> +    [ ${channel:-0} -ge 36 ] && band=1
>> +
>>      case "$hwmode" in
>> -            *b)   hwmode=0;;
>> -            *bg)  hwmode=1;;
>> -            *g)   hwmode=2;;
>> -            *gst) hwmode=4;;
>> -            *lrs) hwmode=5;;
>> -            *)    hwmode=1;;
>> +            *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
>> +                    ;;
>>      esac
>>  
>> +        # Use 'nmode' for N-Phy only
>> +    [ "$(wlc ifname $device phytype)" = 4 ] || nmode=
>> +
>> +    # Use 'chanspec' instead of 'channel' for 'N' modes (See bcmwifi.h)
>> +    [ ${nmode:-0} -ne 0 -a -n "$band" ] && {
>> +            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=;;
>> +                    *) ;;
>> +            esac
>> +    }
>> +
>>      for vif in $vifs; do
>>              config_get vif_txpower "$vif" txpower
>>  
>> @@ -322,7 +348,10 @@
>>      wlc ifname "$device" stdin <<EOF
>>  $ifdown
>>  
>> -gmode ${hwmode:-1}
>> +${nmode:+band ${band:-0}}
>> +${nmode:+nmode $nmode}
>> +${nmode:+${nreqd:+nreqd $nreqd}}
>> +${gmode:+gmode $gmode}
>>  apsta $apsta
>>  ap $ap
>>  ${mssid:+mssid $mssid}
>> @@ -344,6 +373,7 @@
>>  ${wds:+wds $wds}
>>  country ${country:-US}
>>  ${channel:+channel $channel}
>> +${chanspec:+chanspec $chanspec}
>>  maxassoc ${maxassoc:-128}
>>  slottime ${slottime:--1}
>>  ${frameburst:+frameburst $frameburst}
>>
> Hi Nathan,
> 
> I had a look at this patch some time earlier, but it somehow slipped
> through.
> 
> This looks nice to me. The detect part should also be extended to write
> a correct initial config.
> 
> Hauke

This was committed in r37802.

I still have a problem when I activate encryption I do not see any
beacons, but this seams to be unrelated to your patch.

@Nathan I hope I applied all of your patches.

Hauke
_______________________________________________
openwrt-devel mailing list
[email protected]
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel

Reply via email to