To submit a USB transfer, you generally use one of the variant of 
usbd_setup_xfer() coupled with one of the variant of usbd_transfer().

But if you're lazy or don't care about the non-default options you 
can use one of the variant of usbd_do_request() that mostly do
the two previous steps for you.

The following diff start to reduce the number of different way to submit
a transfer by getting rid of usbd_sync_transfer() which is just a
wrapper around usbd_transfer() but with one more flag that can be
specified in the chosen variant of usbd_setup_xfer() (:

ok?

Index: if_athn_usb.c
===================================================================
RCS file: /cvs/src/sys/dev/usb/if_athn_usb.c,v
retrieving revision 1.14
diff -u -p -r1.14 if_athn_usb.c
--- if_athn_usb.c       5 Apr 2013 05:39:46 -0000       1.14
+++ if_athn_usb.c       10 Apr 2013 12:18:17 -0000
@@ -730,8 +730,9 @@ athn_usb_htc_msg(struct athn_usb_softc *
 
        usbd_setup_xfer(data->xfer, usc->tx_intr_pipe, NULL, data->buf,
            sizeof(*htc) + sizeof(*msg) + len,
-           USBD_SHORT_XFER_OK | USBD_NO_COPY, ATHN_USB_CMD_TIMEOUT, NULL);
-       return (usbd_sync_transfer(data->xfer));
+           USBD_SHORT_XFER_OK | USBD_NO_COPY | USBD_SYNCHRONOUS,
+           ATHN_USB_CMD_TIMEOUT, NULL);
+       return (usbd_transfer(data->xfer));
 }
 
 int
Index: if_atu.c
===================================================================
RCS file: /cvs/src/sys/dev/usb/if_atu.c,v
retrieving revision 1.101
diff -u -p -r1.101 if_atu.c
--- if_atu.c    24 Feb 2012 06:19:00 -0000      1.101
+++ if_atu.c    10 Apr 2013 11:02:10 -0000
@@ -330,9 +330,9 @@ atu_usb_request(struct atu_softc *sc, u_
 
        xfer = usbd_alloc_xfer(sc->atu_udev);
        usbd_setup_default_xfer(xfer, sc->atu_udev, 0, 500000, &req, data,
-           length, USBD_SHORT_XFER_OK, 0);
+           length, USBD_SHORT_XFER_OK | USBD_SYNCHRONOUS, 0);
 
-       err = usbd_sync_transfer(xfer);
+       err = usbd_transfer(xfer);
 
        usbd_get_xfer_status(xfer, NULL, NULL, &total_len, NULL);
 
Index: if_otus.c
===================================================================
RCS file: /cvs/src/sys/dev/usb/if_otus.c,v
retrieving revision 1.32
diff -u -p -r1.32 if_otus.c
--- if_otus.c   12 Oct 2012 19:53:24 -0000      1.32
+++ if_otus.c   10 Apr 2013 11:02:01 -0000
@@ -867,8 +867,9 @@ otus_cmd(struct otus_softc *sc, uint8_t 
        cmd->done = 0;
 
        usbd_setup_xfer(cmd->xfer, sc->cmd_tx_pipe, cmd, cmd->buf, xferlen,
-           USBD_FORCE_SHORT_XFER | USBD_NO_COPY, OTUS_CMD_TIMEOUT, NULL);
-       error = usbd_sync_transfer(cmd->xfer);
+           USBD_FORCE_SHORT_XFER | USBD_NO_COPY | USBD_SYNCHRONOUS,
+           OTUS_CMD_TIMEOUT, NULL);
+       error = usbd_transfer(cmd->xfer);
        if (error != 0) {
                splx(s);
                printf("%s: could not send command 0x%x (error=%s)\n",
Index: if_ral.c
===================================================================
RCS file: /cvs/src/sys/dev/usb/if_ral.c,v
retrieving revision 1.121
diff -u -p -r1.121 if_ral.c
--- if_ral.c    3 Jul 2011 15:47:17 -0000       1.121
+++ if_ral.c    10 Apr 2013 11:01:48 -0000
@@ -1018,9 +1018,9 @@ ural_tx_bcn(struct ural_softc *sc, struc
        }
 
        usbd_setup_xfer(xfer, sc->sc_tx_pipeh, NULL, &cmd, sizeof cmd,
-           USBD_FORCE_SHORT_XFER, RAL_TX_TIMEOUT, NULL);
+           USBD_FORCE_SHORT_XFER | USBD_SYNCHRONOUS, RAL_TX_TIMEOUT, NULL);
 
-       error = usbd_sync_transfer(xfer);
+       error = usbd_transfer(xfer);
        if (error != 0) {
                usbd_free_xfer(xfer);
                return error;
@@ -1036,9 +1036,10 @@ ural_tx_bcn(struct ural_softc *sc, struc
            m0->m_pkthdr.len, rate, xferlen));
 
        usbd_setup_xfer(xfer, sc->sc_tx_pipeh, NULL, buf, xferlen,
-           USBD_FORCE_SHORT_XFER | USBD_NO_COPY, RAL_TX_TIMEOUT, NULL);
+           USBD_FORCE_SHORT_XFER | USBD_NO_COPY | USBD_SYNCHRONOUS,
+           RAL_TX_TIMEOUT, NULL);
 
-       error = usbd_sync_transfer(xfer);
+       error = usbd_transfer(xfer);
        usbd_free_xfer(xfer);
 
        return error;
Index: if_rsu.c
===================================================================
RCS file: /cvs/src/sys/dev/usb/if_rsu.c,v
retrieving revision 1.15
diff -u -p -r1.15 if_rsu.c
--- if_rsu.c    4 Feb 2013 23:13:41 -0000       1.15
+++ if_rsu.c    10 Apr 2013 12:17:26 -0000
@@ -776,8 +776,9 @@ rsu_fw_cmd(struct rsu_softc *sc, uint8_t
        DPRINTFN(2, ("Tx cmd code=%d len=%d\n", code, cmdsz));
        pipe = sc->pipe[sc->qid2idx[RSU_QID_H2C]];
        usbd_setup_xfer(data->xfer, pipe, NULL, data->buf, xferlen,
-           USBD_SHORT_XFER_OK | USBD_NO_COPY, RSU_CMD_TIMEOUT, NULL);
-       return (usbd_sync_transfer(data->xfer));
+           USBD_SHORT_XFER_OK | USBD_NO_COPY | USBD_SYNCHRONOUS,
+           RSU_CMD_TIMEOUT, NULL);
+       return (usbd_transfer(data->xfer));
 }
 
 int
@@ -2013,9 +2014,10 @@ rsu_fw_loadsection(struct rsu_softc *sc,
                memcpy(&txd[1], buf, mlen);
 
                usbd_setup_xfer(data->xfer, pipe, NULL, data->buf,
-                   sizeof(*txd) + mlen, USBD_SHORT_XFER_OK | USBD_NO_COPY,
+                   sizeof(*txd) + mlen,
+                   USBD_SHORT_XFER_OK | USBD_NO_COPY | USBD_SYNCHRONOUS,
                    RSU_TX_TIMEOUT, NULL);
-               error = usbd_sync_transfer(data->xfer);
+               error = usbd_transfer(data->xfer);
                if (error != 0)
                        return (error);
                buf += mlen;
Index: if_uath.c
===================================================================
RCS file: /cvs/src/sys/dev/usb/if_uath.c,v
retrieving revision 1.52
diff -u -p -r1.52 if_uath.c
--- if_uath.c   3 Oct 2012 08:05:26 -0000       1.52
+++ if_uath.c   10 Apr 2013 12:18:03 -0000
@@ -1319,8 +1319,8 @@ uath_tx_null(struct uath_softc *sc)
 
        usbd_setup_xfer(data->xfer, sc->data_tx_pipe, data, data->buf,
            sizeof (uint32_t) + sizeof (struct uath_tx_desc), USBD_NO_COPY |
-           USBD_FORCE_SHORT_XFER, UATH_DATA_TIMEOUT, NULL);
-       if (usbd_sync_transfer(data->xfer) != 0)
+           USBD_FORCE_SHORT_XFER | USBD_SYNCHRONOUS, UATH_DATA_TIMEOUT, NULL);
+       if (usbd_transfer(data->xfer) != 0)
                return EIO;
 
        sc->data_idx = (sc->data_idx + 1) % UATH_TX_DATA_LIST_COUNT;
@@ -2081,9 +2081,10 @@ uath_loadfirmware(struct uath_softc *sc,
 
                /* send firmware block meta-data */
                usbd_setup_xfer(ctlxfer, sc->cmd_tx_pipe, sc, txblock,
-                   sizeof (struct uath_fwblock), USBD_NO_COPY,
+                   sizeof (struct uath_fwblock),
+                   USBD_NO_COPY | USBD_SYNCHRONOUS,
                    UATH_CMD_TIMEOUT, NULL);
-               if ((error = usbd_sync_transfer(ctlxfer)) != 0) {
+               if ((error = usbd_transfer(ctlxfer)) != 0) {
                        printf("%s: could not send firmware block info\n",
                            sc->sc_dev.dv_xname);
                        break;
@@ -2092,8 +2093,8 @@ uath_loadfirmware(struct uath_softc *sc,
                /* send firmware block data */
                bcopy(fw, txdata, mlen);
                usbd_setup_xfer(txxfer, sc->data_tx_pipe, sc, txdata, mlen,
-                   USBD_NO_COPY, UATH_DATA_TIMEOUT, NULL);
-               if ((error = usbd_sync_transfer(txxfer)) != 0) {
+                   USBD_NO_COPY | USBD_SYNCHRONOUS, UATH_DATA_TIMEOUT, NULL);
+               if ((error = usbd_transfer(txxfer)) != 0) {
                        printf("%s: could not send firmware block data\n",
                            sc->sc_dev.dv_xname);
                        break;
@@ -2102,8 +2103,8 @@ uath_loadfirmware(struct uath_softc *sc,
                /* wait for ack from firmware */
                usbd_setup_xfer(rxxfer, sc->cmd_rx_pipe, sc, rxblock,
                    sizeof (struct uath_fwblock), USBD_SHORT_XFER_OK |
-                   USBD_NO_COPY, UATH_CMD_TIMEOUT, NULL);
-               if ((error = usbd_sync_transfer(rxxfer)) != 0) {
+                   USBD_NO_COPY | USBD_SYNCHRONOUS, UATH_CMD_TIMEOUT, NULL);
+               if ((error = usbd_transfer(rxxfer)) != 0) {
                        printf("%s: could not read firmware answer\n",
                            sc->sc_dev.dv_xname);
                        break;
Index: ueagle.c
===================================================================
RCS file: /cvs/src/sys/dev/usb/ueagle.c,v
retrieving revision 1.36
diff -u -p -r1.36 ueagle.c
--- ueagle.c    27 Nov 2011 09:20:57 -0000      1.36
+++ ueagle.c    10 Apr 2013 10:57:59 -0000
@@ -356,18 +356,18 @@ ueagle_loadpage(void *xsc)
                USETW(bi.wLast, (i == blockcount - 1) ? 1 : 0);
 
                /* send block info through the IDMA pipe */
-               usbd_setup_xfer(xfer, sc->pipeh_idma, sc, &bi, sizeof bi, 0,
-                   UEAGLE_IDMA_TIMEOUT, NULL);
-               if (usbd_sync_transfer(xfer) != 0) {
+               usbd_setup_xfer(xfer, sc->pipeh_idma, sc, &bi, sizeof bi,
+                   USBD_SYNCHRONOUS, UEAGLE_IDMA_TIMEOUT, NULL);
+               if (usbd_transfer(xfer) != 0) {
                        printf("%s: could not transfer block info\n",
                            sc->sc_dev.dv_xname);
                        break;
                }
 
                /* send block data through the IDMA pipe */
-               usbd_setup_xfer(xfer, sc->pipeh_idma, sc, p, blocksize, 0,
-                   UEAGLE_IDMA_TIMEOUT, NULL);
-               if (usbd_sync_transfer(xfer) != 0) {
+               usbd_setup_xfer(xfer, sc->pipeh_idma, sc, p, blocksize,
+                   USBD_SYNCHRONOUS, UEAGLE_IDMA_TIMEOUT, NULL);
+               if (usbd_transfer(xfer) != 0) {
                        printf("%s: could not transfer block data\n",
                            sc->sc_dev.dv_xname);
                        break;
Index: umbg.c
===================================================================
RCS file: /cvs/src/sys/dev/usb/umbg.c,v
retrieving revision 1.19
diff -u -p -r1.19 umbg.c
--- umbg.c      28 Mar 2013 03:58:03 -0000      1.19
+++ umbg.c      10 Apr 2013 10:57:19 -0000
@@ -402,10 +402,10 @@ umbg_read(struct umbg_softc *sc, u_int8_
        }
 
        usbd_setup_xfer(xfer, sc->sc_bulkout_pipe, NULL, &cmd, sizeof(cmd),
-           USBD_SHORT_XFER_OK, USBD_DEFAULT_TIMEOUT, NULL);
+           USBD_SHORT_XFER_OK | USBD_SYNCHRONOUS, USBD_DEFAULT_TIMEOUT, NULL);
        if (tstamp)
                nanotime(tstamp);
-       err = usbd_sync_transfer(xfer);
+       err = usbd_transfer(xfer);
        if (err) {
                DPRINTF(("%s: sending of command failed: %s\n",
                    sc->sc_dev.dv_xname, usbd_errstr(err)));
@@ -414,9 +414,9 @@ umbg_read(struct umbg_softc *sc, u_int8_
        }
 
        usbd_setup_xfer(xfer, sc->sc_bulkin_pipe, NULL, buf, len,
-           USBD_SHORT_XFER_OK, USBD_DEFAULT_TIMEOUT, NULL);
+           USBD_SHORT_XFER_OK | USBD_SYNCHRONOUS, USBD_DEFAULT_TIMEOUT, NULL);
 
-       err = usbd_sync_transfer(xfer);
+       err = usbd_transfer(xfer);
        usbd_free_xfer(xfer);
        if (err) {
                DPRINTF(("%s: reading data failed: %s\n",
Index: uow.c
===================================================================
RCS file: /cvs/src/sys/dev/usb/uow.c,v
retrieving revision 1.31
diff -u -p -r1.31 uow.c
--- uow.c       28 Mar 2013 03:58:03 -0000      1.31
+++ uow.c       10 Apr 2013 10:56:48 -0000
@@ -462,8 +462,8 @@ uow_read(struct uow_softc *sc, void *buf
                return (-1);
        }
        usbd_setup_xfer(sc->sc_xfer, sc->sc_ph_ibulk, sc, buf, len,
-           USBD_SHORT_XFER_OK, UOW_TIMEOUT, NULL);
-       error = usbd_sync_transfer(sc->sc_xfer);
+           USBD_SHORT_XFER_OK | USBD_SYNCHRONOUS, UOW_TIMEOUT, NULL);
+       error = usbd_transfer(sc->sc_xfer);
        usbd_free_xfer(sc->sc_xfer);
        if (error != 0) {
                printf("%s: read failed, len %d: %s\n",
@@ -492,9 +492,9 @@ uow_write(struct uow_softc *sc, const vo
                printf("%s: failed to alloc xfer\n", sc->sc_dev.dv_xname);
                return (-1);
        }
-       usbd_setup_xfer(sc->sc_xfer, sc->sc_ph_obulk, sc, (void *)buf, len, 0,
-           UOW_TIMEOUT, NULL);
-       error = usbd_sync_transfer(sc->sc_xfer);
+       usbd_setup_xfer(sc->sc_xfer, sc->sc_ph_obulk, sc, (void *)buf, len,
+           USBD_SYNCHRONOUS, UOW_TIMEOUT, NULL);
+       error = usbd_transfer(sc->sc_xfer);
        usbd_free_xfer(sc->sc_xfer);
        if (error != 0) {
                printf("%s: write failed, len %d: %s\n",
Index: usbdi.c
===================================================================
RCS file: /cvs/src/sys/dev/usb/usbdi.c,v
retrieving revision 1.46
diff -u -p -r1.46 usbdi.c
--- usbdi.c     9 Apr 2013 08:47:56 -0000       1.46
+++ usbdi.c     10 Apr 2013 12:12:38 -0000
@@ -380,14 +380,6 @@ usbd_transfer(usbd_xfer_handle xfer)
        return (xfer->status);
 }
 
-/* Like usbd_transfer(), but waits for completion. */
-usbd_status
-usbd_sync_transfer(usbd_xfer_handle xfer)
-{
-       xfer->flags |= USBD_SYNCHRONOUS;
-       return (usbd_transfer(xfer));
-}
-
 void *
 usbd_alloc_buffer(usbd_xfer_handle xfer, u_int32_t size)
 {
@@ -974,9 +966,9 @@ usbd_do_request_flags(usbd_device_handle
        if (xfer == NULL)
                return (USBD_NOMEM);
        usbd_setup_default_xfer(xfer, dev, 0, timeout, req, data,
-           UGETW(req->wLength), flags, 0);
+           UGETW(req->wLength), flags | USBD_SYNCHRONOUS, 0);
        xfer->pipe = pipe;
-       err = usbd_sync_transfer(xfer);
+       err = usbd_transfer(xfer);
 #if defined(USB_DEBUG) || defined(DIAGNOSTIC)
        if (xfer->actlen > xfer->length)
                DPRINTF(("usbd_do_request: overrun addr=%d type=0x%02x req=0x"
@@ -1005,8 +997,8 @@ usbd_do_request_flags(usbd_device_handle
                USETW(treq.wIndex, 0);
                USETW(treq.wLength, sizeof(usb_status_t));
                usbd_setup_default_xfer(xfer, dev, 0, USBD_DEFAULT_TIMEOUT,
-                   &treq, &status,sizeof(usb_status_t), 0, 0);
-               nerr = usbd_sync_transfer(xfer);
+                   &treq, &status, sizeof(usb_status_t), USBD_SYNCHRONOUS, 0);
+               nerr = usbd_transfer(xfer);
                if (nerr)
                        goto bad;
                s = UGETW(status.wStatus);
@@ -1019,8 +1011,8 @@ usbd_do_request_flags(usbd_device_handle
                USETW(treq.wIndex, 0);
                USETW(treq.wLength, 0);
                usbd_setup_default_xfer(xfer, dev, 0, USBD_DEFAULT_TIMEOUT,
-                   &treq, &status, 0, 0, 0);
-               nerr = usbd_sync_transfer(xfer);
+                   &treq, &status, 0, USBD_SYNCHRONOUS, 0);
+               nerr = usbd_transfer(xfer);
                if (nerr)
                        goto bad;
        }
Index: usbdi.h
===================================================================
RCS file: /cvs/src/sys/dev/usb/usbdi.h,v
retrieving revision 1.46
diff -u -p -r1.46 usbdi.h
--- usbdi.h     10 Apr 2013 07:39:43 -0000      1.46
+++ usbdi.h     10 Apr 2013 11:02:38 -0000
@@ -118,7 +118,6 @@ usbd_device_handle usbd_pipe2device_hand
 void *usbd_alloc_buffer(usbd_xfer_handle xfer, u_int32_t size);
 void usbd_free_buffer(usbd_xfer_handle xfer);
 void *usbd_get_buffer(usbd_xfer_handle xfer);
-usbd_status usbd_sync_transfer(usbd_xfer_handle req);
 usbd_status usbd_open_pipe_intr(usbd_interface_handle iface, u_int8_t address,
     u_int8_t flags, usbd_pipe_handle *pipe, usbd_private_handle priv,
     void *buffer, u_int32_t length, usbd_callback, int);
Index: uticom.c
===================================================================
RCS file: /cvs/src/sys/dev/usb/uticom.c,v
retrieving revision 1.18
diff -u -p -r1.18 uticom.c
--- uticom.c    17 Aug 2011 18:58:45 -0000      1.18
+++ uticom.c    10 Apr 2013 12:19:07 -0000
@@ -970,8 +970,9 @@ uticom_download_fw(struct uticom_softc *
        memcpy(obuf, buffer, buffer_size);
 
        usbd_setup_xfer(oxfer, pipe, (usbd_private_handle)sc, obuf, buffer_size,
-           USBD_NO_COPY | USBD_SYNCHRONOUS, USBD_NO_TIMEOUT, 0);
-       err = usbd_sync_transfer(oxfer);
+           USBD_NO_COPY | USBD_SYNCHRONOUS | USBD_SYNCHRONOUS,
+           USBD_NO_TIMEOUT, 0);
+       err = usbd_transfer(oxfer);
 
        if (err != USBD_NORMAL_COMPLETION)
                printf("%s: uticom_download_fw: error: %s\n",

Reply via email to