Module Name: src Committed By: christos Date: Tue Mar 12 14:19:34 UTC 2013
Modified Files: src/sys/dev/usb: if_urtwn.c if_urtwn_data.h if_urtwnvar.h Log Message: more locking and int -> size_t from Anon Ymous To generate a diff of this commit: cvs rdiff -u -r1.21 -r1.22 src/sys/dev/usb/if_urtwn.c cvs rdiff -u -r1.1 -r1.2 src/sys/dev/usb/if_urtwn_data.h cvs rdiff -u -r1.4 -r1.5 src/sys/dev/usb/if_urtwnvar.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/dev/usb/if_urtwn.c diff -u src/sys/dev/usb/if_urtwn.c:1.21 src/sys/dev/usb/if_urtwn.c:1.22 --- src/sys/dev/usb/if_urtwn.c:1.21 Tue Feb 5 13:17:05 2013 +++ src/sys/dev/usb/if_urtwn.c Tue Mar 12 10:19:34 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: if_urtwn.c,v 1.21 2013/02/05 18:17:05 christos Exp $ */ +/* $NetBSD: if_urtwn.c,v 1.22 2013/03/12 14:19:34 christos Exp $ */ /* $OpenBSD: if_urtwn.c,v 1.20 2011/11/26 06:39:33 ckuethe Exp $ */ /*- @@ -22,7 +22,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_urtwn.c,v 1.21 2013/02/05 18:17:05 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_urtwn.c,v 1.22 2013/03/12 14:19:34 christos Exp $"); #ifdef _KERNEL_OPT #include "opt_inet.h" @@ -233,7 +233,7 @@ static void urtwn_pa_bias_init(struct ur static void urtwn_rxfilter_init(struct urtwn_softc *); static void urtwn_edca_init(struct urtwn_softc *); static void urtwn_write_txpower(struct urtwn_softc *, int, uint16_t[]); -static void urtwn_get_txpower(struct urtwn_softc *, int, u_int, u_int, +static void urtwn_get_txpower(struct urtwn_softc *, size_t, u_int, u_int, uint16_t[]); static void urtwn_set_txpower(struct urtwn_softc *, u_int, u_int); static void urtwn_set_chan(struct urtwn_softc *, struct ieee80211_channel *, @@ -267,7 +267,8 @@ urtwn_attach(device_t parent, device_t s struct ifnet *ifp = &sc->sc_if; struct usb_attach_arg *uaa = aux; char *devinfop; - int i, error; + size_t i; + int error; sc->sc_dev = self; sc->sc_udev = uaa->device; @@ -323,7 +324,7 @@ urtwn_attach(device_t parent, device_t s } urtwn_read_rom(sc); - aprint_normal_dev(self, "MAC/BB RTL%s, RF 6052 %dT%dR, address %s\n", + aprint_normal_dev(self, "MAC/BB RTL%s, RF 6052 %zdT%zdR, address %s\n", (sc->chip & URTWN_CHIP_92C) ? "8192CU" : (sc->board_type == R92C_BOARD_TYPE_HIGHPA) ? "8188RU" : (sc->board_type == R92C_BOARD_TYPE_MINICARD) ? "8188CE-VAU" : @@ -480,7 +481,8 @@ urtwn_open_pipes(struct urtwn_softc *sc) static const uint8_t epaddr[] = { 0x02, 0x03, 0x05 }; usb_interface_descriptor_t *id; usb_endpoint_descriptor_t *ed; - int i, ntx = 0, error; + size_t i, ntx = 0; + int error; DPRINTFN(DBG_FN, ("%s: %s\n", device_xname(sc->sc_dev), __func__)); @@ -493,11 +495,11 @@ urtwn_open_pipes(struct urtwn_softc *sc) UE_GET_DIR(ed->bEndpointAddress) == UE_DIR_OUT) ntx++; } - DPRINTFN(DBG_INIT, ("%s: %s: found %d bulk-out pipes\n", + DPRINTFN(DBG_INIT, ("%s: %s: found %zd bulk-out pipes\n", device_xname(sc->sc_dev), __func__, ntx)); if (ntx == 0 || ntx > R92C_MAX_EPOUT) { aprint_error_dev(sc->sc_dev, - "%d: invalid number of Tx bulk pipes\n", ntx); + "%zd: invalid number of Tx bulk pipes\n", ntx); return (EIO); } sc->rx_npipe = 1; @@ -539,23 +541,25 @@ urtwn_open_pipes(struct urtwn_softc *sc) static void urtwn_close_pipes(struct urtwn_softc *sc) { - int i; + usbd_pipe_handle pipe; + size_t i; DPRINTFN(DBG_FN, ("%s: %s\n", device_xname(sc->sc_dev), __func__)); /* Close Rx pipe. */ - if (sc->rx_pipe != NULL) { - usbd_abort_pipe(sc->rx_pipe); - usbd_close_pipe(sc->rx_pipe); - sc->rx_pipe = NULL; + CTASSERT(sizeof(pipe) == sizeof(void *)); + pipe = atomic_swap_ptr(&sc->rx_pipe, NULL); + if (pipe != NULL) { + usbd_abort_pipe(pipe); + usbd_close_pipe(pipe); } /* Close Tx pipes. */ for (i = 0; i < R92C_MAX_EPOUT; i++) { - if (sc->tx_pipe[i] == NULL) - continue; - usbd_abort_pipe(sc->tx_pipe[i]); - usbd_close_pipe(sc->tx_pipe[i]); - sc->tx_pipe[i] = NULL; + pipe = atomic_swap_ptr(&sc->tx_pipe[i], NULL); + if (pipe != NULL) { + usbd_abort_pipe(pipe); + usbd_close_pipe(pipe); + } } } @@ -563,7 +567,8 @@ static int urtwn_alloc_rx_list(struct urtwn_softc *sc) { struct urtwn_rx_data *data; - int i, error = 0; + size_t i; + int error = 0; DPRINTFN(DBG_FN, ("%s: %s\n", device_xname(sc->sc_dev), __func__)); @@ -596,16 +601,17 @@ urtwn_alloc_rx_list(struct urtwn_softc * static void urtwn_free_rx_list(struct urtwn_softc *sc) { - int i; + usbd_xfer_handle xfer; + size_t i; DPRINTFN(DBG_FN, ("%s: %s\n", device_xname(sc->sc_dev), __func__)); /* NB: Caller must abort pipe first. */ for (i = 0; i < URTWN_RX_LIST_COUNT; i++) { - if (sc->rx_data[i].xfer != NULL) { - usbd_free_xfer(sc->rx_data[i].xfer); - sc->rx_data[i].xfer = NULL; - } + CTASSERT(sizeof(xfer) == sizeof(void *)); + xfer = atomic_swap_ptr(&sc->tx_data[i].xfer, NULL); + if (xfer != NULL) + usbd_free_xfer(xfer); } } @@ -613,7 +619,8 @@ static int urtwn_alloc_tx_list(struct urtwn_softc *sc) { struct urtwn_tx_data *data; - int i, error = 0; + size_t i; + int error = 0; DPRINTFN(DBG_FN, ("%s: %s\n", device_xname(sc->sc_dev), __func__)); @@ -655,19 +662,17 @@ urtwn_alloc_tx_list(struct urtwn_softc * static void urtwn_free_tx_list(struct urtwn_softc *sc) { - struct urtwn_tx_data *data; - int i; + usbd_xfer_handle xfer; + size_t i; DPRINTFN(DBG_FN, ("%s: %s\n", device_xname(sc->sc_dev), __func__)); /* NB: Caller must abort pipe first. */ for (i = 0; i < URTWN_TX_LIST_COUNT; i++) { - data = &sc->tx_data[i]; - - if (data->xfer != NULL) { - usbd_free_xfer(data->xfer); - data->xfer = NULL; - } + CTASSERT(sizeof(xfer) == sizeof(void *)); + xfer = atomic_swap_ptr(&sc->tx_data[i].xfer, NULL); + if (xfer != NULL) + usbd_free_xfer(xfer); } } @@ -1017,7 +1022,7 @@ urtwn_efuse_read(struct urtwn_softc *sc) uint32_t reg; uint16_t addr = 0; uint8_t off, msk; - int i; + size_t i; DPRINTFN(DBG_FN, ("%s: %s\n", device_xname(sc->sc_dev), __func__)); @@ -1251,7 +1256,8 @@ urtwn_ra_init(struct urtwn_softc *sc) uint32_t rates, basicrates; uint32_t mask; uint8_t mode; - int maxrate, maxbasicrate, error, i, j; + size_t maxrate, maxbasicrate, i, j; + int error; DPRINTFN(DBG_FN, ("%s: %s\n", device_xname(sc->sc_dev), __func__)); @@ -1262,7 +1268,7 @@ urtwn_ra_init(struct urtwn_softc *sc) maxrate = maxbasicrate = 0; for (i = 0; i < rs->rs_nrates; i++) { /* Convert 802.11 rate to HW rate index. */ - for (j = 0; j < (int)__arraycount(map); j++) { + for (j = 0; j < __arraycount(map); j++) { if ((rs->rs_rates[i] & IEEE80211_RATE_VAL) == map[j]) { break; } @@ -1290,7 +1296,7 @@ urtwn_ra_init(struct urtwn_softc *sc) mode = R92C_RAID_11BG; } DPRINTFN(DBG_INIT, ("%s: %s: mode=0x%x rates=0x%x, basicrates=0x%x, " - "maxrate=%x, maxbasicrate=%x\n", + "maxrate=%zx, maxbasicrate=%zx\n", device_xname(sc->sc_dev), __func__, mode, rates, basicrates, maxrate, maxbasicrate)); if (basicrates == 0) { @@ -1311,7 +1317,7 @@ urtwn_ra_init(struct urtwn_softc *sc) return (error); } /* Set initial MRR rate. */ - DPRINTFN(DBG_INIT, ("%s: %s: maxbasicrate=%d\n", + DPRINTFN(DBG_INIT, ("%s: %s: maxbasicrate=%zd\n", device_xname(sc->sc_dev), __func__, maxbasicrate)); urtwn_write_1(sc, R92C_INIDATA_RATE_SEL(URTWN_MACID_BC), maxbasicrate); @@ -1328,7 +1334,7 @@ urtwn_ra_init(struct urtwn_softc *sc) return (error); } /* Set initial MRR rate. */ - DPRINTFN(DBG_INIT, ("%s: %s: maxrate=%d\n", device_xname(sc->sc_dev), + DPRINTFN(DBG_INIT, ("%s: %s: maxrate=%zd\n", device_xname(sc->sc_dev), __func__, maxrate)); urtwn_write_1(sc, R92C_INIDATA_RATE_SEL(URTWN_MACID_BSS), maxrate); @@ -1935,7 +1941,8 @@ urtwn_rx_frame(struct urtwn_softc *sc, u * XXX: This will drop most control packets. Do we really * want this in IEEE80211_M_MONITOR mode? */ - if (__predict_false(pktlen < (int)sizeof(*wh))) { +// if (__predict_false(pktlen < (int)sizeof(*wh))) { + if (__predict_false(pktlen < (int)sizeof(struct ieee80211_frame_ack))) { DPRINTFN(DBG_RX, ("%s: %s: packet too short %d\n", device_xname(sc->sc_dev), __func__, pktlen)); ic->ic_stats.is_rx_tooshort++; @@ -2157,9 +2164,10 @@ urtwn_tx(struct urtwn_softc *sc, struct struct ieee80211_key *k = NULL; struct r92c_tx_desc *txd; usbd_pipe_handle pipe; + size_t i, padsize, xferlen; uint16_t seq, sum; uint8_t raid, type, tid, qid; - int i, s, hasqos, xferlen, padsize, error; + int s, hasqos, error; DPRINTFN(DBG_FN, ("%s: %s\n", device_xname(sc->sc_dev), __func__)); @@ -2226,7 +2234,7 @@ urtwn_tx(struct urtwn_softc *sc, struct /* fix pad field */ if (padsize > 0) { - DPRINTFN(DBG_TX, ("%s: %s: padding: size=%d\n", + DPRINTFN(DBG_TX, ("%s: %s: padding: size=%zd\n", device_xname(sc->sc_dev), __func__, padsize)); txd->txdw1 |= htole32(SM(R92C_TXDW1_PKTOFF, (padsize / 8))); } @@ -2304,7 +2312,7 @@ urtwn_tx(struct urtwn_softc *sc, struct /* Compute Tx descriptor checksum. */ sum = 0; - for (i = 0; i < (int)sizeof(*txd) / 2; i++) + for (i = 0; i < sizeof(*txd) / 2; i++) sum ^= ((uint16_t *)txd)[i]; txd->txdsum = sum; /* NB: already little endian. */ @@ -2588,7 +2596,8 @@ urtwn_power_on(struct urtwn_softc *sc) static int urtwn_llt_init(struct urtwn_softc *sc) { - int i, error; + size_t i; + int error; DPRINTFN(DBG_FN, ("%s: %s\n", device_xname(sc->sc_dev), __func__)); @@ -2882,14 +2891,14 @@ urtwn_dma_init(struct urtwn_softc *sc) static void urtwn_mac_init(struct urtwn_softc *sc) { - int i; + size_t i; DPRINTFN(DBG_FN, ("%s: %s\n", device_xname(sc->sc_dev), __func__)); KASSERT(mutex_owned(&sc->sc_write_mtx)); /* Write MAC initialization values. */ - for (i = 0; i < (int)__arraycount(rtl8192cu_mac); i++) + for (i = 0; i < __arraycount(rtl8192cu_mac); i++) urtwn_write_1(sc, rtl8192cu_mac[i].reg, rtl8192cu_mac[i].val); } @@ -2898,7 +2907,7 @@ urtwn_bb_init(struct urtwn_softc *sc) { const struct urtwn_bb_prog *prog; uint32_t reg; - int i; + size_t i; DPRINTFN(DBG_FN, ("%s: %s\n", device_xname(sc->sc_dev), __func__)); @@ -3022,7 +3031,7 @@ urtwn_rf_init(struct urtwn_softc *sc) { const struct urtwn_rf_prog *prog; uint32_t reg, mask, saved; - int i, j, idx; + size_t i, j, idx; DPRINTFN(DBG_FN, ("%s: %s\n", device_xname(sc->sc_dev), __func__)); @@ -3104,7 +3113,7 @@ urtwn_cam_init(struct urtwn_softc *sc) { uint32_t content, command; uint8_t idx; - int i; + size_t i; DPRINTFN(DBG_FN, ("%s: %s\n", device_xname(sc->sc_dev), __func__)); @@ -3136,7 +3145,7 @@ urtwn_cam_init(struct urtwn_softc *sc) command = R92C_CAMCMD_POLLING | R92C_CAMCMD_WRITE | R92C_CAM_CTL0(idx) - | (u_int)i; + | i; urtwn_write_4(sc, R92C_CAMWRITE, content); urtwn_write_4(sc, R92C_CAMCMD, command); @@ -3151,7 +3160,7 @@ static void urtwn_pa_bias_init(struct urtwn_softc *sc) { uint8_t reg; - int i; + size_t i; DPRINTFN(DBG_FN, ("%s: %s\n", device_xname(sc->sc_dev), __func__)); @@ -3287,7 +3296,7 @@ urtwn_write_txpower(struct urtwn_softc * } static void -urtwn_get_txpower(struct urtwn_softc *sc, int chain, u_int chan, u_int ht40m, +urtwn_get_txpower(struct urtwn_softc *sc, size_t chain, u_int chan, u_int ht40m, uint16_t power[URTWN_RIDX_COUNT]) { struct r92c_rom *rom = &sc->rom; @@ -3295,7 +3304,7 @@ urtwn_get_txpower(struct urtwn_softc *sc const struct urtwn_txpwr *base; int ridx, group; - DPRINTFN(DBG_FN, ("%s: %s: chain=%d, chan=%d\n", + DPRINTFN(DBG_FN, ("%s: %s: chain=%zd, chan=%d\n", device_xname(sc->sc_dev), __func__, chain, chan)); /* Determine channel group. */ @@ -3389,7 +3398,7 @@ urtwn_get_txpower(struct urtwn_softc *sc #ifdef URTWN_DEBUG if (urtwn_debug & DBG_RF) { /* Dump per-rate Tx power values. */ - printf("%s: %s: Tx power for chain %d:\n", + printf("%s: %s: Tx power for chain %zd:\n", device_xname(sc->sc_dev), __func__, chain); for (ridx = 0; ridx < URTWN_RIDX_COUNT; ridx++) { printf("%s: %s: Rate %d = %u\n", @@ -3404,7 +3413,7 @@ static void urtwn_set_txpower(struct urtwn_softc *sc, u_int chan, u_int ht40m) { uint16_t power[URTWN_RIDX_COUNT]; - int i; + size_t i; DPRINTFN(DBG_FN, ("%s: %s\n", device_xname(sc->sc_dev), __func__)); @@ -3421,7 +3430,7 @@ urtwn_set_chan(struct urtwn_softc *sc, s { struct ieee80211com *ic = &sc->sc_ic; u_int chan; - int i; + size_t i; chan = ieee80211_chan2ieee(ic, c); /* XXX center freq! */ @@ -3515,7 +3524,7 @@ urtwn_lc_calib(struct urtwn_softc *sc) { uint32_t rf_ac[2]; uint8_t txmode; - int i; + size_t i; DPRINTFN(DBG_FN, ("%s: %s\n", device_xname(sc->sc_dev), __func__)); @@ -3609,7 +3618,8 @@ urtwn_init(struct ifnet *ifp) struct ieee80211com *ic = &sc->sc_ic; struct urtwn_rx_data *data; uint32_t reg; - int i, error; + size_t i; + int error; DPRINTFN(DBG_FN, ("%s: %s\n", device_xname(sc->sc_dev), __func__)); @@ -3833,7 +3843,8 @@ urtwn_stop(struct ifnet *ifp, int disabl { struct urtwn_softc *sc = ifp->if_softc; struct ieee80211com *ic = &sc->sc_ic; - int i, s; + size_t i; + int s; DPRINTFN(DBG_FN, ("%s: %s\n", device_xname(sc->sc_dev), __func__)); Index: src/sys/dev/usb/if_urtwn_data.h diff -u src/sys/dev/usb/if_urtwn_data.h:1.1 src/sys/dev/usb/if_urtwn_data.h:1.2 --- src/sys/dev/usb/if_urtwn_data.h:1.1 Sat Mar 24 20:11:16 2012 +++ src/sys/dev/usb/if_urtwn_data.h Tue Mar 12 10:19:34 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: if_urtwn_data.h,v 1.1 2012/03/25 00:11:16 nonaka Exp $ */ +/* $NetBSD: if_urtwn_data.h,v 1.2 2013/03/12 14:19:34 christos Exp $ */ /* $OpenBSD: if_urtwnreg.h,v 1.3 2010/11/16 18:02:59 damien Exp $ */ /*- @@ -52,10 +52,10 @@ static const struct { * Baseband initialization values. */ struct urtwn_bb_prog { - int count; + size_t count; const uint16_t *regs; const uint32_t *vals; - int agccount; + size_t agccount; const uint32_t *agcvals; }; @@ -473,7 +473,7 @@ static const struct urtwn_bb_prog rtl818 * RF initialization values. */ struct urtwn_rf_prog { - int count; + size_t count; const uint8_t *regs; const uint32_t *vals; }; Index: src/sys/dev/usb/if_urtwnvar.h diff -u src/sys/dev/usb/if_urtwnvar.h:1.4 src/sys/dev/usb/if_urtwnvar.h:1.5 --- src/sys/dev/usb/if_urtwnvar.h:1.4 Sun Jan 20 15:21:57 2013 +++ src/sys/dev/usb/if_urtwnvar.h Tue Mar 12 10:19:34 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: if_urtwnvar.h,v 1.4 2013/01/20 20:21:57 christos Exp $ */ +/* $NetBSD: if_urtwnvar.h,v 1.5 2013/03/12 14:19:34 christos Exp $ */ /* $OpenBSD: if_urtwnreg.h,v 1.3 2010/11/16 18:02:59 damien Exp $ */ /*- @@ -148,8 +148,8 @@ struct urtwn_softc { int avg_pwdb; int thcal_state; int thcal_lctemp; - int ntxchains; - int nrxchains; + size_t ntxchains; + size_t nrxchains; int ledlink; bool iqk_inited; @@ -181,4 +181,3 @@ struct urtwn_softc { }; #endif /* _IF_URTWNVAR_H_ */ -