From owner-p4-projects@FreeBSD.ORG Wed Jan 2 18:26:44 2008 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 7CAA616A41B; Wed, 2 Jan 2008 18:26:44 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 28F6016A418 for ; Wed, 2 Jan 2008 18:26:44 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 1622313C4EF for ; Wed, 2 Jan 2008 18:26:44 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.1/8.14.1) with ESMTP id m02IQhcA086229 for ; Wed, 2 Jan 2008 18:26:43 GMT (envelope-from hselasky@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.1/8.14.1/Submit) id m02IQhoY086226 for perforce@freebsd.org; Wed, 2 Jan 2008 18:26:43 GMT (envelope-from hselasky@FreeBSD.org) Date: Wed, 2 Jan 2008 18:26:43 GMT Message-Id: <200801021826.m02IQhoY086226@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to hselasky@FreeBSD.org using -f From: Hans Petter Selasky To: Perforce Change Reviews Cc: Subject: PERFORCE change 132319 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 02 Jan 2008 18:26:44 -0000 http://perforce.freebsd.org/chv.cgi?CH=132319 Change 132319 by hselasky@hselasky_laptop001 on 2008/01/02 18:25:46 Style change by "usb_style.sh". Affected files ... .. //depot/projects/usb/src/sys/dev/usb/if_zyd.c#33 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb/if_zyd.c#33 (text+ko) ==== @@ -81,7 +81,7 @@ #endif #undef INDEXES -#define INDEXES(a) (sizeof(a) / sizeof((a)[0])) +#define INDEXES(a) (sizeof(a) / sizeof((a)[0])) struct mq { /* mini-queue */ struct mbuf *ifq_head; @@ -117,7 +117,7 @@ static usbd_config_td_command_t zyd_cfg_amrr_timeout; static uint8_t zyd_plcp2ieee(uint8_t signal, uint8_t isofdm); -static struct ieee80211_node * zyd_node_alloc_cb(struct ieee80211_node_table *nt); +static struct ieee80211_node *zyd_node_alloc_cb(struct ieee80211_node_table *nt); static void zyd_cfg_usbrequest(struct zyd_softc *sc, usb_device_request_t *req, uint8_t *data); static void zyd_cfg_usb_intr_read(struct zyd_softc *sc, void *data, uint32_t size); static void zyd_cfg_usb_intr_write(struct zyd_softc *sc, const void *data, uint16_t code, uint32_t size); @@ -163,62 +163,63 @@ /* various supported device vendors/products */ struct zyd_type { - struct usb_devno dev; - uint8_t rev; -#define ZYD_ZD1211 0 -#define ZYD_ZD1211B 1 + struct usb_devno dev; + uint8_t rev; +#define ZYD_ZD1211 0 +#define ZYD_ZD1211B 1 }; static const struct zyd_type zyd_devs[] = { - /* ZYD_ZD1211 */ - { { USB_VENDOR_3COM2, USB_PRODUCT_3COM2_3CRUSB10075 }, ZYD_ZD1211 }, - { { USB_VENDOR_ABOCOM, USB_PRODUCT_ABOCOM_WL54 }, ZYD_ZD1211 }, - { { USB_VENDOR_ASUS, USB_PRODUCT_ASUS_WL159G }, ZYD_ZD1211 }, - { { USB_VENDOR_CYBERTAN, USB_PRODUCT_CYBERTAN_TG54USB }, ZYD_ZD1211 }, - { { USB_VENDOR_DRAYTEK, USB_PRODUCT_DRAYTEK_VIGOR550 }, ZYD_ZD1211 }, - { { USB_VENDOR_PLANEX2, USB_PRODUCT_PLANEX2_GWUS54GD }, ZYD_ZD1211 }, - { { USB_VENDOR_PLANEX2, USB_PRODUCT_PLANEX2_GWUS54GZL }, ZYD_ZD1211 }, - { { USB_VENDOR_PLANEX3, USB_PRODUCT_PLANEX3_GWUS54GZ }, ZYD_ZD1211 }, - { { USB_VENDOR_PLANEX3, USB_PRODUCT_PLANEX3_GWUS54MINI }, ZYD_ZD1211 }, - { { USB_VENDOR_SAGEM, USB_PRODUCT_SAGEM_XG760A }, ZYD_ZD1211 }, - { { USB_VENDOR_SENAO, USB_PRODUCT_SENAO_NUB8301 }, ZYD_ZD1211 }, - { { USB_VENDOR_SITECOMEU, USB_PRODUCT_SITECOMEU_WL113 }, ZYD_ZD1211 }, - { { USB_VENDOR_SWEEX, USB_PRODUCT_SWEEX_ZD1211 }, ZYD_ZD1211 }, - { { USB_VENDOR_TEKRAM, USB_PRODUCT_TEKRAM_QUICKWLAN }, ZYD_ZD1211 }, - { { USB_VENDOR_TEKRAM, USB_PRODUCT_TEKRAM_ZD1211_1 }, ZYD_ZD1211 }, - { { USB_VENDOR_TEKRAM, USB_PRODUCT_TEKRAM_ZD1211_2 }, ZYD_ZD1211 }, - { { USB_VENDOR_TWINMOS, USB_PRODUCT_TWINMOS_G240 }, ZYD_ZD1211 }, - { { USB_VENDOR_UMEDIA, USB_PRODUCT_UMEDIA_ALL0298V2 }, ZYD_ZD1211 }, - { { USB_VENDOR_UMEDIA, USB_PRODUCT_UMEDIA_TEW429UB_A }, ZYD_ZD1211 }, - { { USB_VENDOR_UMEDIA, USB_PRODUCT_UMEDIA_TEW429UB }, ZYD_ZD1211 }, - { { USB_VENDOR_WISTRONNEWEB, USB_PRODUCT_WISTRONNEWEB_UR055G }, ZYD_ZD1211 }, - { { USB_VENDOR_ZCOM, USB_PRODUCT_ZCOM_ZD1211 }, ZYD_ZD1211 }, - { { USB_VENDOR_ZYDAS, USB_PRODUCT_ZYDAS_ZD1211 }, ZYD_ZD1211 }, - { { USB_VENDOR_ZYXEL, USB_PRODUCT_ZYXEL_AG225H }, ZYD_ZD1211 }, - { { USB_VENDOR_ZYXEL, USB_PRODUCT_ZYXEL_ZYAIRG220 }, ZYD_ZD1211 }, - { { USB_VENDOR_ZYXEL, USB_PRODUCT_ZYXEL_G200V2 }, ZYD_ZD1211 }, - /* ZYD_ZD1211B */ - { { USB_VENDOR_ACCTON, USB_PRODUCT_ACCTON_SMCWUSBG }, ZYD_ZD1211B }, - { { USB_VENDOR_ACCTON, USB_PRODUCT_ACCTON_ZD1211B }, ZYD_ZD1211B }, - { { USB_VENDOR_ASUS, USB_PRODUCT_ASUS_A9T_WIFI }, ZYD_ZD1211B }, - { { USB_VENDOR_BELKIN, USB_PRODUCT_BELKIN_F5D7050_V4000 }, ZYD_ZD1211B }, - { { USB_VENDOR_BELKIN, USB_PRODUCT_BELKIN_ZD1211B }, ZYD_ZD1211B }, - { { USB_VENDOR_CISCOLINKSYS, USB_PRODUCT_CISCOLINKSYS_WUSBF54G }, ZYD_ZD1211B }, - { { USB_VENDOR_FIBERLINE, USB_PRODUCT_FIBERLINE_WL430U }, ZYD_ZD1211B }, - { { USB_VENDOR_MELCO, USB_PRODUCT_MELCO_KG54L }, ZYD_ZD1211B }, - { { USB_VENDOR_PHILIPS, USB_PRODUCT_PHILIPS_SNU5600 }, ZYD_ZD1211B }, - { { USB_VENDOR_PLANEX2, USB_PRODUCT_PLANEX2_GW_US54GXS }, ZYD_ZD1211B }, - { { USB_VENDOR_SAGEM, USB_PRODUCT_SAGEM_XG76NA }, ZYD_ZD1211B }, - { { USB_VENDOR_SITECOMEU, USB_PRODUCT_SITECOMEU_ZD1211B }, ZYD_ZD1211B }, - { { USB_VENDOR_UMEDIA, USB_PRODUCT_UMEDIA_TEW429UBC1 }, ZYD_ZD1211B }, - { { USB_VENDOR_USR, USB_PRODUCT_USR_USR5423 }, ZYD_ZD1211B }, - { { USB_VENDOR_VTECH, USB_PRODUCT_VTECH_ZD1211B }, ZYD_ZD1211B }, - { { USB_VENDOR_ZCOM, USB_PRODUCT_ZCOM_ZD1211B }, ZYD_ZD1211B }, - { { USB_VENDOR_ZYDAS, USB_PRODUCT_ZYDAS_ZD1211B }, ZYD_ZD1211B }, - { { USB_VENDOR_ZYXEL, USB_PRODUCT_ZYXEL_M202 }, ZYD_ZD1211B }, - { { USB_VENDOR_ZYXEL, USB_PRODUCT_ZYXEL_G220V2 }, ZYD_ZD1211B }, + /* ZYD_ZD1211 */ + {{USB_VENDOR_3COM2, USB_PRODUCT_3COM2_3CRUSB10075}, ZYD_ZD1211}, + {{USB_VENDOR_ABOCOM, USB_PRODUCT_ABOCOM_WL54}, ZYD_ZD1211}, + {{USB_VENDOR_ASUS, USB_PRODUCT_ASUS_WL159G}, ZYD_ZD1211}, + {{USB_VENDOR_CYBERTAN, USB_PRODUCT_CYBERTAN_TG54USB}, ZYD_ZD1211}, + {{USB_VENDOR_DRAYTEK, USB_PRODUCT_DRAYTEK_VIGOR550}, ZYD_ZD1211}, + {{USB_VENDOR_PLANEX2, USB_PRODUCT_PLANEX2_GWUS54GD}, ZYD_ZD1211}, + {{USB_VENDOR_PLANEX2, USB_PRODUCT_PLANEX2_GWUS54GZL}, ZYD_ZD1211}, + {{USB_VENDOR_PLANEX3, USB_PRODUCT_PLANEX3_GWUS54GZ}, ZYD_ZD1211}, + {{USB_VENDOR_PLANEX3, USB_PRODUCT_PLANEX3_GWUS54MINI}, ZYD_ZD1211}, + {{USB_VENDOR_SAGEM, USB_PRODUCT_SAGEM_XG760A}, ZYD_ZD1211}, + {{USB_VENDOR_SENAO, USB_PRODUCT_SENAO_NUB8301}, ZYD_ZD1211}, + {{USB_VENDOR_SITECOMEU, USB_PRODUCT_SITECOMEU_WL113}, ZYD_ZD1211}, + {{USB_VENDOR_SWEEX, USB_PRODUCT_SWEEX_ZD1211}, ZYD_ZD1211}, + {{USB_VENDOR_TEKRAM, USB_PRODUCT_TEKRAM_QUICKWLAN}, ZYD_ZD1211}, + {{USB_VENDOR_TEKRAM, USB_PRODUCT_TEKRAM_ZD1211_1}, ZYD_ZD1211}, + {{USB_VENDOR_TEKRAM, USB_PRODUCT_TEKRAM_ZD1211_2}, ZYD_ZD1211}, + {{USB_VENDOR_TWINMOS, USB_PRODUCT_TWINMOS_G240}, ZYD_ZD1211}, + {{USB_VENDOR_UMEDIA, USB_PRODUCT_UMEDIA_ALL0298V2}, ZYD_ZD1211}, + {{USB_VENDOR_UMEDIA, USB_PRODUCT_UMEDIA_TEW429UB_A}, ZYD_ZD1211}, + {{USB_VENDOR_UMEDIA, USB_PRODUCT_UMEDIA_TEW429UB}, ZYD_ZD1211}, + {{USB_VENDOR_WISTRONNEWEB, USB_PRODUCT_WISTRONNEWEB_UR055G}, ZYD_ZD1211}, + {{USB_VENDOR_ZCOM, USB_PRODUCT_ZCOM_ZD1211}, ZYD_ZD1211}, + {{USB_VENDOR_ZYDAS, USB_PRODUCT_ZYDAS_ZD1211}, ZYD_ZD1211}, + {{USB_VENDOR_ZYXEL, USB_PRODUCT_ZYXEL_AG225H}, ZYD_ZD1211}, + {{USB_VENDOR_ZYXEL, USB_PRODUCT_ZYXEL_ZYAIRG220}, ZYD_ZD1211}, + {{USB_VENDOR_ZYXEL, USB_PRODUCT_ZYXEL_G200V2}, ZYD_ZD1211}, + /* ZYD_ZD1211B */ + {{USB_VENDOR_ACCTON, USB_PRODUCT_ACCTON_SMCWUSBG}, ZYD_ZD1211B}, + {{USB_VENDOR_ACCTON, USB_PRODUCT_ACCTON_ZD1211B}, ZYD_ZD1211B}, + {{USB_VENDOR_ASUS, USB_PRODUCT_ASUS_A9T_WIFI}, ZYD_ZD1211B}, + {{USB_VENDOR_BELKIN, USB_PRODUCT_BELKIN_F5D7050_V4000}, ZYD_ZD1211B}, + {{USB_VENDOR_BELKIN, USB_PRODUCT_BELKIN_ZD1211B}, ZYD_ZD1211B}, + {{USB_VENDOR_CISCOLINKSYS, USB_PRODUCT_CISCOLINKSYS_WUSBF54G}, ZYD_ZD1211B}, + {{USB_VENDOR_FIBERLINE, USB_PRODUCT_FIBERLINE_WL430U}, ZYD_ZD1211B}, + {{USB_VENDOR_MELCO, USB_PRODUCT_MELCO_KG54L}, ZYD_ZD1211B}, + {{USB_VENDOR_PHILIPS, USB_PRODUCT_PHILIPS_SNU5600}, ZYD_ZD1211B}, + {{USB_VENDOR_PLANEX2, USB_PRODUCT_PLANEX2_GW_US54GXS}, ZYD_ZD1211B}, + {{USB_VENDOR_SAGEM, USB_PRODUCT_SAGEM_XG76NA}, ZYD_ZD1211B}, + {{USB_VENDOR_SITECOMEU, USB_PRODUCT_SITECOMEU_ZD1211B}, ZYD_ZD1211B}, + {{USB_VENDOR_UMEDIA, USB_PRODUCT_UMEDIA_TEW429UBC1}, ZYD_ZD1211B}, + {{USB_VENDOR_USR, USB_PRODUCT_USR_USR5423}, ZYD_ZD1211B}, + {{USB_VENDOR_VTECH, USB_PRODUCT_VTECH_ZD1211B}, ZYD_ZD1211B}, + {{USB_VENDOR_ZCOM, USB_PRODUCT_ZCOM_ZD1211B}, ZYD_ZD1211B}, + {{USB_VENDOR_ZYDAS, USB_PRODUCT_ZYDAS_ZD1211B}, ZYD_ZD1211B}, + {{USB_VENDOR_ZYXEL, USB_PRODUCT_ZYXEL_M202}, ZYD_ZD1211B}, + {{USB_VENDOR_ZYXEL, USB_PRODUCT_ZYXEL_G220V2}, ZYD_ZD1211B}, }; -#define zyd_lookup(v, p) \ + +#define zyd_lookup(v, p) \ ((const struct zyd_type *)usb_lookup(zyd_devs, v, p)) static const struct usbd_config zyd_config[ZYD_N_TRANSFER] = { @@ -332,15 +333,17 @@ static uint8_t zyd_plcp2ieee(uint8_t signal, uint8_t isofdm) { - if (isofdm) { - static const uint8_t ofdmrates[16] = - { 0, 0, 0, 0, 0, 0, 0, 96, 48, 24, 12, 108, 72, 36, 18 }; - return ofdmrates[signal & 0xf]; - } else { - static const uint8_t cckrates[16] = - { 0, 0, 0, 0, 4, 0, 0, 11, 0, 0, 2, 0, 0, 0, 22, 0 }; - return cckrates[signal & 0xf]; - } + if (isofdm) { + static const uint8_t ofdmrates[16] = + {0, 0, 0, 0, 0, 0, 0, 96, 48, 24, 12, 108, 72, 36, 18}; + + return ofdmrates[signal & 0xf]; + } else { + static const uint8_t cckrates[16] = + {0, 0, 0, 0, 4, 0, 0, 11, 0, 0, 2, 0, 0, 0, 22, 0}; + + return cckrates[signal & 0xf]; + } } /* ARGUSED */ @@ -348,6 +351,7 @@ zyd_node_alloc_cb(struct ieee80211_node_table *nt __unused) { struct zyd_node *zn; + zn = malloc(sizeof(struct zyd_node), M_80211_NODE, M_WAITOK | M_ZERO); return ((zn != NULL) ? (&zn->ni) : NULL); } @@ -370,7 +374,7 @@ if (err) { DPRINTF(sc, -1, "%s: device request failed, err=%s " - "(ignored)\n", sc->sc_name, usbd_errstr(err)); + "(ignored)\n", sc->sc_name, usbd_errstr(err)); error: length = UGETW(req->wLength); @@ -420,7 +424,7 @@ usbd_copy_out(xfer->frbuffers + 0, 0, &(sc->sc_intr_ibuf), actlen); - switch(cmd->code) { + switch (cmd->code) { case htole16(ZYD_NOTIF_RETRYSTATUS): goto handle_notif_retrystatus; case htole16(ZYD_NOTIF_IORD): @@ -433,19 +437,18 @@ /* fallthrough */ case USBD_ST_SETUP: - tr_setup: +tr_setup: if (sc->sc_flags & ZYD_FLAG_INTR_READ_STALL) { usbd_transfer_start(sc->sc_xfer[ZYD_TR_INTR_CS_RD]); break; } - xfer->frlengths[0] = xfer->max_data_length; usbd_start_hardware(xfer); break; default: /* Error */ - DPRINTF(sc, 2, "error = %s\n", - usbd_errstr(xfer->error)); + DPRINTF(sc, 2, "error = %s\n", + usbd_errstr(xfer->error)); if (xfer->error != USBD_CANCELLED) { /* try to clear stall first */ @@ -462,89 +465,85 @@ } return; -handle_notif_retrystatus: { +handle_notif_retrystatus:{ + + struct zyd_notif_retry *retry = (void *)(cmd->data); + struct ieee80211com *ic = &sc->sc_ic; + struct ifnet *ifp = sc->sc_ifp; + struct ieee80211_node *ni; - struct zyd_notif_retry *retry = (void *)(cmd->data); - struct ieee80211com *ic = &sc->sc_ic; - struct ifnet *ifp = sc->sc_ifp; - struct ieee80211_node *ni; + DPRINTF(sc, 0, "retry intr: rate=0x%x " + "addr=%02x:%02x:%02x:%02x:%02x:%02x count=%d (0x%x)\n", + le16toh(retry->rate), retry->macaddr[0], retry->macaddr[1], + retry->macaddr[2], retry->macaddr[3], retry->macaddr[4], + retry->macaddr[5], le16toh(retry->count) & 0xff, + le16toh(retry->count)); - DPRINTF(sc, 0, "retry intr: rate=0x%x " - "addr=%02x:%02x:%02x:%02x:%02x:%02x count=%d (0x%x)\n", - le16toh(retry->rate), retry->macaddr[0], retry->macaddr[1], - retry->macaddr[2], retry->macaddr[3], retry->macaddr[4], - retry->macaddr[5], le16toh(retry->count) & 0xff, - le16toh(retry->count)); + /* + * Find the node to which the packet was sent and update its + * retry statistics. In BSS mode, this node is the AP we're + * associated to so no lookup is actually needed. + */ + if (ic->ic_opmode != IEEE80211_M_STA) { + ni = ieee80211_find_node(&ic->ic_sta, retry->macaddr); + } else { + ni = ic->ic_bss; + } + if (ni == NULL) { + goto tr_setup; + } + ((struct zyd_node *)ni)->amn.amn_retrycnt++; - /* - * Find the node to which the packet was sent and update its - * retry statistics. In BSS mode, this node is the AP we're - * associated to so no lookup is actually needed. - */ - if (ic->ic_opmode != IEEE80211_M_STA) { - ni = ieee80211_find_node(&ic->ic_sta, retry->macaddr); - } else { - ni = ic->ic_bss; - } - if (ni == NULL) { + if (retry->count & htole16(0x100)) { + ifp->if_oerrors++; /* too many retries */ + } goto tr_setup; } - ((struct zyd_node *)ni)->amn.amn_retrycnt++; +handle_notif_iord: - if (retry->count & htole16(0x100)) { - ifp->if_oerrors++; /* too many retries */ + if (*(uint16_t *)cmd->data == htole16(ZYD_CR_INTERRUPT)) { + goto tr_setup; /* HMAC interrupt */ + } + if (actlen < 4) { + goto tr_setup; /* too short */ } - goto tr_setup; -} + actlen -= 4; -handle_notif_iord: - - if (*(uint16_t *)cmd->data == htole16(ZYD_CR_INTERRUPT)) { - goto tr_setup; /* HMAC interrupt */ - } - - if (actlen < 4) { - goto tr_setup; /* too short */ - } - - actlen -= 4; - - if (actlen != sc->sc_intr_ilen) { + if (actlen != sc->sc_intr_ilen) { DPRINTF(sc, -1, "unexpected length %u != %u\n", actlen, sc->sc_intr_ilen); - goto tr_setup; /* invalid length */ - } + goto tr_setup; /* invalid length */ + } + actlen /= 4; - actlen /= 4; - - /* verify register values */ - for (x = 0; x != actlen; x++) { - if (sc->sc_intr_obuf.data[(2*x)] != - sc->sc_intr_ibuf.data[(4*x)]) { + /* verify register values */ + for (x = 0; x != actlen; x++) { + if (sc->sc_intr_obuf.data[(2 * x)] != + sc->sc_intr_ibuf.data[(4 * x)]) { /* invalid register */ - DPRINTF(sc, 0, "Invalid register (1)!\n"); - goto tr_setup; + DPRINTF(sc, 0, "Invalid register (1)!\n"); + goto tr_setup; } - if (sc->sc_intr_obuf.data[(2*x) + 1] != - sc->sc_intr_ibuf.data[(4*x) + 1]) { + if (sc->sc_intr_obuf.data[(2 * x) + 1] != + sc->sc_intr_ibuf.data[(4 * x) + 1]) { /* invalid register */ - DPRINTF(sc, 0, "Invalid register (2)!\n"); - goto tr_setup; + DPRINTF(sc, 0, "Invalid register (2)!\n"); + goto tr_setup; } - } + } - if (sc->sc_intr_iwakeup) { - sc->sc_intr_iwakeup = 0; - wakeup(&(sc->sc_intr_iwakeup)); - } else { - sc->sc_intr_iwakeup = 1; - } - /* - * We pause reading data from the interrupt endpoint until - * the data has been picked up! - */ - return; + if (sc->sc_intr_iwakeup) { + sc->sc_intr_iwakeup = 0; + wakeup(&(sc->sc_intr_iwakeup)); + } else { + sc->sc_intr_iwakeup = 1; + } + /* + * We pause reading data from the interrupt endpoint until the data + * has been picked up! + */ + return; } /* @@ -561,13 +560,11 @@ bzero(data, size); goto done; } - if (sc->sc_intr_iwakeup) { - DPRINTF(sc, 0, "got data already!\n"); - sc->sc_intr_iwakeup = 0; - goto got_data; + DPRINTF(sc, 0, "got data already!\n"); + sc->sc_intr_iwakeup = 0; + goto got_data; } - /* else wait for data */ sc->sc_intr_iwakeup = 1; @@ -577,22 +574,22 @@ while (sc->sc_intr_iwakeup) { if (mtx_sleep(&(sc->sc_intr_iwakeup), &(sc->sc_mtx), 0, - "zyd-ird", hz/2)) { + "zyd-ird", hz / 2)) { /* should not happen */ } - if (usbd_config_td_is_gone(&(sc->sc_config_td))) { - sc->sc_intr_iwakeup = 0; - bzero(data, size); - goto done; + if (usbd_config_td_is_gone(&(sc->sc_config_td))) { + sc->sc_intr_iwakeup = 0; + bzero(data, size); + goto done; + } } - } got_data: bcopy(sc->sc_intr_ibuf.data, data, size); - /* - * We have fetched the data from the shared buffer and it is - * safe to restart the interrupt transfer! + /* + * We have fetched the data from the shared buffer and it is safe to + * restart the interrupt transfer! */ usbd_transfer_start(sc->sc_xfer[ZYD_TR_INTR_DT_RD]); done: @@ -639,8 +636,8 @@ break; default: /* Error */ - DPRINTF(sc, 2, "error = %s\n", - usbd_errstr(xfer->error)); + DPRINTF(sc, 2, "error = %s\n", + usbd_errstr(xfer->error)); if (xfer->error != USBD_CANCELLED) { /* try to clear stall first */ @@ -653,8 +650,8 @@ wakeup: if (sc->sc_intr_owakeup) { - sc->sc_intr_owakeup = 0; - wakeup(&(sc->sc_intr_owakeup)); + sc->sc_intr_owakeup = 0; + wakeup(&(sc->sc_intr_owakeup)); } return; } @@ -666,8 +663,8 @@ * full speed mode, EP4 is bulk out, not interrupt out. */ static void -zyd_cfg_usb_intr_write(struct zyd_softc *sc, const void *data, -uint16_t code, uint32_t size) +zyd_cfg_usb_intr_write(struct zyd_softc *sc, const void *data, + uint16_t code, uint32_t size) { if (size > sizeof(sc->sc_intr_obuf.data)) { DPRINTF(sc, -1, "truncating transfer size!\n"); @@ -685,14 +682,13 @@ usbd_transfer_start(sc->sc_xfer[ZYD_TR_INTR_DT_WR]); while (sc->sc_intr_owakeup) { - if (mtx_sleep(&(sc->sc_intr_owakeup), &(sc->sc_mtx), 0, - "zyd-iwr", hz/2)) { - } - - if (usbd_config_td_is_gone(&(sc->sc_config_td))) { - sc->sc_intr_owakeup = 0; - goto done; - } + if (mtx_sleep(&(sc->sc_intr_owakeup), &(sc->sc_mtx), 0, + "zyd-iwr", hz / 2)) { + } + if (usbd_config_td_is_gone(&(sc->sc_config_td))) { + sc->sc_intr_owakeup = 0; + goto done; + } } done: return; @@ -714,9 +710,10 @@ zyd_cfg_read16(struct zyd_softc *sc, uint16_t addr, uint16_t *value) { struct zyd_pair tmp[1]; + addr = htole16(addr); zyd_cfg_cmd(sc, ZYD_CMD_IORD, &addr, sizeof(addr), - tmp, sizeof(tmp), ZYD_CMD_FLAG_READ); + tmp, sizeof(tmp), ZYD_CMD_FLAG_READ); *value = le16toh(tmp[0].val); return; } @@ -732,8 +729,8 @@ regs[0] = htole16(regs[0]); regs[1] = htole16(regs[1]); - zyd_cfg_cmd(sc, ZYD_CMD_IORD, regs, sizeof(regs), - tmp, sizeof(tmp), ZYD_CMD_FLAG_READ); + zyd_cfg_cmd(sc, ZYD_CMD_IORD, regs, sizeof(regs), + tmp, sizeof(tmp), ZYD_CMD_FLAG_READ); *value = (le16toh(tmp[0].val) << 16) | le16toh(tmp[1].val); return; } @@ -778,7 +775,7 @@ zyd_cfg_read16(sc, ZYD_CR203, &cr203); cr203 &= ~(ZYD_RF_IF_LE | ZYD_RF_CLK | ZYD_RF_DATA); - req.code = htole16(2); + req.code = htole16(2); req.width = htole16(rf->width); for (i = 0; i != rf->width; i++) { req.bit[i] = htole16(cr203); @@ -804,12 +801,12 @@ } static void -zyd_bulk_read_callback_sub(struct usbd_xfer *xfer, struct mq *mq, +zyd_bulk_read_callback_sub(struct usbd_xfer *xfer, struct mq *mq, uint32_t offset, uint16_t len) { - enum { - ZYD_OVERHEAD = (ZYD_HW_PADDING + IEEE80211_CRC_LEN), - }; + enum { + ZYD_OVERHEAD = (ZYD_HW_PADDING + IEEE80211_CRC_LEN), + }; struct zyd_softc *sc = xfer->priv_sc; struct ifnet *ifp = sc->sc_ifp; struct zyd_plcphdr plcp; @@ -818,29 +815,27 @@ if (len < ZYD_OVERHEAD) { DPRINTF(sc, 0, "frame too " - "short (length=%d)\n", len); + "short (length=%d)\n", len); ifp->if_ierrors++; return; } - usbd_copy_out(xfer->frbuffers + 0, offset, &plcp, sizeof(plcp)); - usbd_copy_out(xfer->frbuffers + 0, offset + len - sizeof(stat), - &stat, sizeof(stat)); + usbd_copy_out(xfer->frbuffers + 0, offset + len - sizeof(stat), + &stat, sizeof(stat)); if (stat.flags & ZYD_RX_ERROR) { DPRINTF(sc, 0, "RX status indicated " - "error (0x%02x)\n", stat.flags); + "error (0x%02x)\n", stat.flags); ifp->if_ierrors++; return; } - /* compute actual frame length */ len -= ZYD_OVERHEAD; /* allocate a mbuf to store the frame */ if (len > MCLBYTES) { DPRINTF(sc, 0, "too large frame, " - "%u bytes\n", len); + "%u bytes\n", len); return; } else if (len > MHLEN) m = m_getcl(M_DONTWAIT, MT_DATA, M_PKTHDR); @@ -856,8 +851,8 @@ m->m_pkthdr.len = len; m->m_len = len; - usbd_copy_out(xfer->frbuffers + 0, offset + - sizeof(plcp), m->m_data, len); + usbd_copy_out(xfer->frbuffers + 0, offset + + sizeof(plcp), m->m_data, len); if (bpf_peers_present(sc->sc_drvbpf)) { struct zyd_rx_radiotap_header *tap = &sc->sc_rxtap; @@ -871,15 +866,13 @@ tap->wr_rate = zyd_plcp2ieee(plcp.signal, stat.flags & ZYD_RX_OFDM); tap->wr_antsignal = stat.rssi + -95; - tap->wr_antnoise = -95; /* XXX */ + tap->wr_antnoise = -95; /* XXX */ bpf_mtap2(sc->sc_drvbpf, tap, sc->sc_rxtap_len, m); } - if (sizeof(m->m_hdr.pad) > 0) { - m->m_hdr.pad[0] = stat.rssi; /* XXX hack */ + m->m_hdr.pad[0] = stat.rssi; /* XXX hack */ } - _IF_ENQUEUE(mq, m); return; @@ -903,7 +896,7 @@ switch (USBD_GET_STATE(xfer)) { case USBD_ST_TRANSFERRED: - if (xfer->actlen < MAX(sizeof(rx_desc),ZYD_MIN_FRAGSZ)) { + if (xfer->actlen < MAX(sizeof(rx_desc), ZYD_MIN_FRAGSZ)) { DPRINTF(sc, -1, "xfer too short, %d bytes\n", xfer->actlen); ifp->if_ierrors++; goto tr_setup; @@ -916,28 +909,30 @@ offset = 0; DPRINTF(sc, 3, "received multi-frame transfer, " - "%u bytes\n", xfer->actlen); + "%u bytes\n", xfer->actlen); for (x = 0; x < ZYD_MAX_RXFRAMECNT; x++) { - len16 = UGETW(rx_desc.len[x]); + len16 = UGETW(rx_desc.len[x]); - if ((len16 == 0) || (len16 > xfer->actlen)) { - break; - } + if ((len16 == 0) || (len16 > xfer->actlen)) { + break; + } + zyd_bulk_read_callback_sub(xfer, &mq, offset, len16); - zyd_bulk_read_callback_sub(xfer, &mq, offset, len16); - - /* next frame is aligned on a 32-bit boundary */ - len16 = (len16 + 3) & ~3; - offset += len16; - if (len16 > xfer->actlen) { - break; - } - xfer->actlen -= len16; + /* + * next frame is aligned on a 32-bit + * boundary + */ + len16 = (len16 + 3) & ~3; + offset += len16; + if (len16 > xfer->actlen) { + break; + } + xfer->actlen -= len16; } } else { DPRINTF(sc, 3, "received single-frame transfer, " - "%u bytes\n", xfer->actlen); + "%u bytes\n", xfer->actlen); zyd_bulk_read_callback_sub(xfer, &mq, 0, xfer->actlen); } @@ -968,11 +963,11 @@ if (m == NULL) break; - rssi = m->m_hdr.pad[0]; /* XXX hack */ + rssi = m->m_hdr.pad[0]; /* XXX hack */ ni = ieee80211_find_rxnode(ic, mtod(m, void *)); - ieee80211_input(ic, m, ni, (rssi > 63) ? - 127 : (2 * rssi), -95/*XXX*/, 0); + ieee80211_input(ic, m, ni, (rssi > 63) ? + 127 : (2 * rssi), -95 /* XXX */ , 0); /* node is no longer needed */ ieee80211_free_node(ni); @@ -1021,21 +1016,20 @@ addr = ZYD_FIRMWARE_START_ADDR; while (fw_len > 0) { - if (fw_len < 64) { - temp = fw_len; - } + if (fw_len < 64) { + temp = fw_len; + } + DPRINTF(sc, 0, "firmware block: fw_len=%u\n", fw_len); - DPRINTF(sc, 0, "firmware block: fw_len=%u\n", fw_len); + USETW(req.wValue, addr); + USETW(req.wLength, temp); - USETW(req.wValue, addr); - USETW(req.wLength, temp); + zyd_cfg_usbrequest(sc, &req, + USBD_ADD_BYTES(fw_ptr, 0)); - zyd_cfg_usbrequest(sc, &req, - USBD_ADD_BYTES(fw_ptr,0)); - - addr += (temp / 2); - fw_len -= temp; - fw_ptr += temp; + addr += (temp / 2); + fw_len -= temp; + fw_ptr += temp; } /* check whether the upload succeeded */ @@ -1069,7 +1063,7 @@ return (UMATCH_NONE); return (zyd_lookup(uaa->vendor, uaa->product) ? - UMATCH_VENDOR_PRODUCT : UMATCH_NONE); + UMATCH_VENDOR_PRODUCT : UMATCH_NONE); } /* @@ -1184,8 +1178,8 @@ { /* XXX this is probably broken.. */ zyd_cfg_write32(sc, ZYD_CR_ATIM_WND_PERIOD, bintval - 2); - zyd_cfg_write32(sc, ZYD_CR_PRE_TBTT, bintval - 1); - zyd_cfg_write32(sc, ZYD_CR_BCN_INTERVAL, bintval); + zyd_cfg_write32(sc, ZYD_CR_PRE_TBTT, bintval - 1); + zyd_cfg_write32(sc, ZYD_CR_BCN_INTERVAL, bintval); return; } @@ -1195,12 +1189,13 @@ static const char * zyd_rf_name(uint8_t type) { - static const char * const zyd_rfs[] = { - "unknown", "unknown", "UW2451", "UCHIP", "AL2230", - "AL7230B", "THETA", "AL2210", "MAXIM_NEW", "GCT", - "PV2000", "RALINK", "INTERSIL", "RFMD", "MAXIM_NEW2", + static const char *const zyd_rfs[] = { + "unknown", "unknown", "UW2451", "UCHIP", "AL2230", + "AL7230B", "THETA", "AL2210", "MAXIM_NEW", "GCT", + "PV2000", "RALINK", "INTERSIL", "RFMD", "MAXIM_NEW2", "PHILIPS" }; + return (zyd_rfs[(type > 15) ? 0 : type]); } @@ -1245,8 +1240,8 @@ uint8_t channel) { static const struct { - uint32_t r1, r2; - } rfprog[] = ZYD_RFMD_CHANTABLE; + uint32_t r1, r2; + } rfprog[] = ZYD_RFMD_CHANTABLE; zyd_cfg_rfwrite(sc, rfprog[channel - 1].r1); zyd_cfg_rfwrite(sc, rfprog[channel - 1].r2); @@ -1261,7 +1256,7 @@ { uint8_t on251 = (sc->sc_mac_rev == ZYD_ZD1211) ? 0x3f : 0x7f; - zyd_cfg_write16(sc, ZYD_CR11, on ? 0x00 : 0x04); + zyd_cfg_write16(sc, ZYD_CR11, on ? 0x00 : 0x04); zyd_cfg_write16(sc, ZYD_CR251, on ? on251 : 0x2f); return; } @@ -1275,7 +1270,7 @@ static const struct zyd_phy_pair phyini[] = ZYD_AL2230_PHY; static const uint32_t rfini[] = ZYD_AL2230_RF; uint32_t i; - + /* init RF-dependent PHY registers */ for (i = 0; i != INDEXES(phyini); i++) { zyd_cfg_write16(sc, phyini[i].reg, phyini[i].val); @@ -1315,8 +1310,8 @@ uint8_t channel) { static const struct { - uint32_t r1, r2, r3; - } rfprog[] = ZYD_AL2230_CHANTABLE; + uint32_t r1, r2, r3; + } rfprog[] = ZYD_AL2230_CHANTABLE; zyd_cfg_rfwrite(sc, rfprog[channel - 1].r1); zyd_cfg_rfwrite(sc, rfprog[channel - 1].r2); @@ -1333,7 +1328,7 @@ static void zyd_cfg_rf_al7230b_switch_radio(struct zyd_softc *sc, uint8_t on) { - zyd_cfg_write16(sc, ZYD_CR11, on ? 0x00 : 0x04); + zyd_cfg_write16(sc, ZYD_CR11, on ? 0x00 : 0x04); zyd_cfg_write16(sc, ZYD_CR251, on ? 0x3f : 0x2f); return; } @@ -1378,8 +1373,8 @@ uint8_t channel) { static const struct { - uint32_t r1, r2; - } rfprog[] = ZYD_AL7230B_CHANTABLE; + uint32_t r1, r2; + } rfprog[] = ZYD_AL7230B_CHANTABLE; static const uint32_t rfsc[] = ZYD_AL7230B_RF_SETCHANNEL; uint32_t i; @@ -1393,7 +1388,7 @@ zyd_cfg_write16(sc, ZYD_CR128, 0x14); zyd_cfg_write16(sc, ZYD_CR129, 0x12); zyd_cfg_write16(sc, ZYD_CR130, 0x10); - zyd_cfg_write16(sc, ZYD_CR38, 0x38); + zyd_cfg_write16(sc, ZYD_CR38, 0x38); zyd_cfg_write16(sc, ZYD_CR136, 0xdf); zyd_cfg_rfwrite(sc, rfprog[channel - 1].r1); @@ -1555,8 +1550,8 @@ static const struct zyd_phy_pair phyini[] = ZYD_MAXIM_PHY; static const uint32_t rfini[] = ZYD_MAXIM_RF; static const struct { - uint32_t r1, r2; - } rfprog[] = ZYD_MAXIM_CHANTABLE; + uint32_t r1, r2; + } rfprog[] = ZYD_MAXIM_CHANTABLE; uint16_t tmp; uint32_t i; @@ -1578,10 +1573,10 @@ /* init maxim radio - skipping the two first values */ if (INDEXES(rfini) > 2) { - for (i = 2; i != INDEXES(rfini); i++) { - zyd_cfg_rfwrite(sc, rfini[i]); + for (i = 2; i != INDEXES(rfini); i++) { + zyd_cfg_rfwrite(sc, rfini[i]); + } } - } zyd_cfg_read16(sc, ZYD_CR203, &tmp); zyd_cfg_write16(sc, ZYD_CR203, tmp | (1 << 4)); @@ -1629,8 +1624,8 @@ static const struct zyd_phy_pair phyini[] = ZYD_MAXIM2_PHY; static const uint32_t rfini[] = ZYD_MAXIM2_RF; static const struct { - uint32_t r1, r2; - } rfprog[] = ZYD_MAXIM2_CHANTABLE; + uint32_t r1, r2; + } rfprog[] = ZYD_MAXIM2_CHANTABLE; uint16_t tmp; uint32_t i; @@ -1652,9 +1647,9 @@ /* init maxim2 radio - skipping the two first values */ if (INDEXES(rfini) > 2) { - for (i = 2; i != INDEXES(rfini); i++) { - zyd_cfg_rfwrite(sc, rfini[i]); - } + for (i = 2; i != INDEXES(rfini); i++) { + zyd_cfg_rfwrite(sc, rfini[i]); + } } zyd_cfg_read16(sc, ZYD_CR203, &tmp); zyd_cfg_write16(sc, ZYD_CR203, tmp | (1 << 4)); @@ -1667,14 +1662,14 @@ static uint8_t zyd_cfg_rf_init_hw(struct zyd_softc *sc, struct zyd_rf *rf) { - ; /* fix for indent */ + ; /* fix for indent */ switch (sc->sc_rf_rev) { case ZYD_RF_RFMD: - rf->cfg_init_hw = zyd_cfg_rf_rfmd_init; + rf->cfg_init_hw = zyd_cfg_rf_rfmd_init; rf->cfg_switch_radio = zyd_cfg_rf_rfmd_switch_radio; - rf->cfg_set_channel = zyd_cfg_rf_rfmd_set_channel; - rf->width = 24; /* 24-bit RF values */ + rf->cfg_set_channel = zyd_cfg_rf_rfmd_set_channel; + rf->width = 24; /* 24-bit RF values */ break; case ZYD_RF_AL2230: if (sc->sc_mac_rev == ZYD_ZD1211B) @@ -1682,38 +1677,38 @@ else rf->cfg_init_hw = zyd_cfg_rf_al2230_init; rf->cfg_switch_radio = zyd_cfg_rf_al2230_switch_radio; - rf->cfg_set_channel = zyd_cfg_rf_al2230_set_channel; - rf->width = 24; /* 24-bit RF values */ + rf->cfg_set_channel = zyd_cfg_rf_al2230_set_channel; + rf->width = 24; /* 24-bit RF values */ break; case ZYD_RF_AL7230B: - rf->cfg_init_hw = zyd_cfg_rf_al7230b_init; + rf->cfg_init_hw = zyd_cfg_rf_al7230b_init; rf->cfg_switch_radio = zyd_cfg_rf_al7230b_switch_radio; - rf->cfg_set_channel = zyd_cfg_rf_al7230b_set_channel; - rf->width = 24; /* 24-bit RF values */ + rf->cfg_set_channel = zyd_cfg_rf_al7230b_set_channel; + rf->width = 24; /* 24-bit RF values */ break; case ZYD_RF_AL2210: - rf->cfg_init_hw = zyd_cfg_rf_al2210_init; + rf->cfg_init_hw = zyd_cfg_rf_al2210_init; rf->cfg_switch_radio = zyd_cfg_rf_al2210_switch_radio; - rf->cfg_set_channel = zyd_cfg_rf_al2210_set_channel; - rf->width = 24; /* 24-bit RF values */ + rf->cfg_set_channel = zyd_cfg_rf_al2210_set_channel; + rf->width = 24; /* 24-bit RF values */ break; case ZYD_RF_GCT: - rf->cfg_init_hw = zyd_cfg_rf_gct_init; + rf->cfg_init_hw = zyd_cfg_rf_gct_init; rf->cfg_switch_radio = zyd_cfg_rf_gct_switch_radio; - rf->cfg_set_channel = zyd_cfg_rf_gct_set_channel; - rf->width = 21; /* 21-bit RF values */ + rf->cfg_set_channel = zyd_cfg_rf_gct_set_channel; + rf->width = 21; /* 21-bit RF values */ break; case ZYD_RF_MAXIM_NEW: - rf->cfg_init_hw = zyd_cfg_rf_maxim_init; + rf->cfg_init_hw = zyd_cfg_rf_maxim_init; rf->cfg_switch_radio = zyd_cfg_rf_maxim_switch_radio; - rf->cfg_set_channel = zyd_cfg_rf_maxim_set_channel; - rf->width = 18; /* 18-bit RF values */ + rf->cfg_set_channel = zyd_cfg_rf_maxim_set_channel; + rf->width = 18; /* 18-bit RF values */ break; case ZYD_RF_MAXIM_NEW2: - rf->cfg_init_hw = zyd_cfg_rf_maxim2_init; + rf->cfg_init_hw = zyd_cfg_rf_maxim2_init; rf->cfg_switch_radio = zyd_cfg_rf_maxim2_switch_radio; - rf->cfg_set_channel = zyd_cfg_rf_maxim2_set_channel; - rf->width = 18; /* 18-bit RF values */ + rf->cfg_set_channel = zyd_cfg_rf_maxim2_set_channel; + rf->width = 18; /* 18-bit RF values */ break; default: printf("%s: Sorry, radio %s is not supported yet\n", @@ -1802,7 +1797,7 @@ /* init beacon interval to 100ms */ zyd_cfg_set_beacon_interval(sc, 100); - return (0); /* success */ + return (0); /* success */ } /* @@ -1818,18 +1813,18 @@ /* read MAC address */ zyd_cfg_read32(sc, ZYD_EEPROM_MAC_ADDR_P1, &tmp); sc->sc_ic.ic_myaddr[0] = tmp & 0xff; - sc->sc_ic.ic_myaddr[1] = tmp >> 8; + sc->sc_ic.ic_myaddr[1] = tmp >> 8; sc->sc_ic.ic_myaddr[2] = tmp >> 16; sc->sc_ic.ic_myaddr[3] = tmp >> 24; zyd_cfg_read32(sc, ZYD_EEPROM_MAC_ADDR_P2, &tmp); sc->sc_ic.ic_myaddr[4] = tmp & 0xff; - sc->sc_ic.ic_myaddr[5] = tmp >> 8; + sc->sc_ic.ic_myaddr[5] = tmp >> 8; zyd_cfg_read32(sc, ZYD_EEPROM_POD, &tmp); - sc->sc_rf_rev = tmp & 0x0f; - sc->sc_fix_cr47 = (tmp >> 8 ) & 0x01; + sc->sc_rf_rev = tmp & 0x0f; + sc->sc_fix_cr47 = (tmp >> 8) & 0x01; sc->sc_fix_cr157 = (tmp >> 13) & 0x01; - sc->sc_pa_rev = (tmp >> 16) & 0x0f; + sc->sc_pa_rev = (tmp >> 16) & 0x0f; /* read regulatory domain (currently unused) */ zyd_cfg_read32(sc, ZYD_EEPROM_SUBID, &tmp); @@ -1930,14 +1925,12 @@ "upload firmware!\n", sc->sc_name); return; } - /* reset device */ - err = usbreq_set_config(sc->sc_udev, &(sc->sc_mtx), - sc->sc_udev->curr_config_no); + err = usbreq_set_config(sc->sc_udev, &(sc->sc_mtx), + sc->sc_udev->curr_config_no); if (err) { DPRINTF(sc, 0, "reset failed (ignored)\n"); } - /* Read MAC and other stuff rom EEPROM */ zyd_cfg_read_eeprom(sc); @@ -1946,15 +1939,13 @@ printf("%s: HW init failed!\n", sc->sc_name); return; } - /* Now init the RF chip */ if (zyd_cfg_rf_init_hw(sc, &sc->sc_rf)) { printf("%s: RF init failed!\n", sc->sc_name); return; } - printf("%s: HMAC ZD1211%s, FW %02x.%02x, RF %s, PA %x, address %02x:%02x:%02x:%02x:%02x:%02x\n", - sc->sc_name, (sc->sc_mac_rev == ZYD_ZD1211) ? "": "B", + sc->sc_name, (sc->sc_mac_rev == ZYD_ZD1211) ? "" : "B", sc->sc_fw_rev >> 8, sc->sc_fw_rev & 0xff, zyd_rf_name(sc->sc_rf_rev), sc->sc_pa_rev, sc->sc_ic.ic_myaddr[0], sc->sc_ic.ic_myaddr[1], sc->sc_ic.ic_myaddr[2], @@ -1993,13 +1984,13 @@ ic->ic_state = IEEE80211_S_INIT; /* Set device capabilities */ - ic->ic_caps = - IEEE80211_C_MONITOR /* monitor mode */ - | IEEE80211_C_SHPREAMBLE /* short preamble supported */ >>> TRUNCATED FOR MAIL (1000 lines) <<<