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
