Lines Matching refs:xfer
165 struct usbd_xfer *xfer)
171 struct usbd_xfer *xfer)
245 dxfer->xfer.ux_state = XFER_BUSY;
252 dwc2_freex(struct usbd_bus *bus, struct usbd_xfer *xfer)
254 struct dwc2_xfer *dxfer = DWC2_XFER2DXFER(xfer);
260 if (xfer->ux_state != XFER_BUSY &&
261 xfer->ux_status != USBD_NOT_STARTED) {
262 DPRINTF("xfer=%p not busy, 0x%08x\n", xfer, xfer->ux_state);
264 xfer->ux_state = XFER_FREE;
268 pool_cache_put(sc->sc_xferpool, xfer);
291 struct usbd_xfer *xfer;
296 xfer = sc->sc_intrxfer;
298 if (xfer == NULL) {
304 KASSERT(xfer->ux_status == USBD_IN_PROGRESS);
307 p = KERNADDR(&xfer->ux_dmabuf, 0);
311 xfer->ux_actlen = xfer->ux_length;
312 xfer->ux_status = USBD_NORMAL_COMPLETION;
314 usb_transfer_complete(xfer);
338 if (!usbd_xfer_trycomplete(&dxfer->xfer))
341 * complete the xfer, and put it on sc_complete
344 * interrupt and soft interrupt, the xfer was
348 KASSERT(dxfer->xfer.ux_status == USBD_IN_PROGRESS);
359 KASSERT(dxfer->xfer.ux_status == USBD_IN_PROGRESS);
364 dxfer->xfer.ux_status = dxfer->intr_status;
365 usb_transfer_complete(&dxfer->xfer);
423 DPRINTF("bad xfer type %d\n", xfertype);
460 dwc2_abortx(struct usbd_xfer *xfer)
462 struct dwc2_xfer *dxfer = DWC2_XFER2DXFER(xfer);
463 struct dwc2_softc *sc = DWC2_XFER2SC(xfer);
468 DPRINTF("xfer %p pipe %p status 0x%08x", xfer, xfer->ux_pipe,
469 xfer->ux_status);
474 KASSERTMSG((xfer->ux_status == USBD_CANCELLED ||
475 xfer->ux_status == USBD_TIMEOUT),
476 "bad abort status: %d", xfer->ux_status);
487 * say, frees the xfer before the softint runs.
513 DPRINTFN(4, "xfer %p dying 0x%08x", xfer, xfer->ux_status);
610 dwc2_root_intr_transfer(struct usbd_xfer *xfer)
616 return dwc2_root_intr_start(SIMPLEQ_FIRST(&xfer->ux_pipe->up_queue));
620 dwc2_root_intr_start(struct usbd_xfer *xfer)
622 struct dwc2_softc *sc = DWC2_XFER2SC(xfer);
632 sc->sc_intrxfer = xfer;
633 xfer->ux_status = USBD_IN_PROGRESS;
640 dwc2_root_intr_abort(struct usbd_xfer *xfer)
642 struct dwc2_softc *sc __diagused = DWC2_XFER2SC(xfer);
644 DPRINTF("xfer=%p\n", xfer);
647 KASSERT(xfer->ux_pipe->up_intrxfer == xfer);
649 /* If xfer has already completed, nothing to do here. */
657 KASSERT(sc->sc_intrxfer == xfer);
658 KASSERT(xfer->ux_status == USBD_IN_PROGRESS);
659 xfer->ux_status = USBD_CANCELLED;
660 usb_transfer_complete(xfer);
673 * Caller must guarantee the xfer has completed first, by
680 dwc2_root_intr_done(struct usbd_xfer *xfer)
682 struct dwc2_softc *sc = DWC2_XFER2SC(xfer);
686 /* Claim the xfer so it doesn't get completed again. */
687 KASSERT(sc->sc_intrxfer == xfer);
688 KASSERT(xfer->ux_status != USBD_IN_PROGRESS);
695 dwc2_device_ctrl_transfer(struct usbd_xfer *xfer)
701 return dwc2_device_ctrl_start(SIMPLEQ_FIRST(&xfer->ux_pipe->up_queue));
705 dwc2_device_ctrl_start(struct usbd_xfer *xfer)
707 struct dwc2_softc *sc = DWC2_XFER2SC(xfer);
714 xfer->ux_status = USBD_IN_PROGRESS;
715 err = dwc2_device_start(xfer);
723 dwc2_device_ctrl_abort(struct usbd_xfer *xfer)
725 struct dwc2_softc *sc __diagused = DWC2_XFER2SC(xfer);
729 DPRINTF("xfer=%p\n", xfer);
730 usbd_xfer_abort(xfer);
745 dwc2_device_ctrl_done(struct usbd_xfer *xfer)
748 DPRINTF("xfer=%p\n", xfer);
754 dwc2_device_bulk_transfer(struct usbd_xfer *xfer)
757 DPRINTF("xfer=%p\n", xfer);
759 KASSERT(xfer->ux_status == USBD_NOT_STARTED);
760 xfer->ux_status = USBD_IN_PROGRESS;
761 return dwc2_device_start(xfer);
765 dwc2_device_bulk_abort(struct usbd_xfer *xfer)
767 struct dwc2_softc *sc __diagused = DWC2_XFER2SC(xfer);
771 DPRINTF("xfer=%p\n", xfer);
772 usbd_xfer_abort(xfer);
785 dwc2_device_bulk_done(struct usbd_xfer *xfer)
788 DPRINTF("xfer=%p\n", xfer);
794 dwc2_device_intr_transfer(struct usbd_xfer *xfer)
797 DPRINTF("xfer=%p\n", xfer);
800 return dwc2_device_intr_start(SIMPLEQ_FIRST(&xfer->ux_pipe->up_queue));
804 dwc2_device_intr_start(struct usbd_xfer *xfer)
806 struct dwc2_pipe *dpipe = DWC2_XFER2DPIPE(xfer)
813 xfer->ux_status = USBD_IN_PROGRESS;
814 err = dwc2_device_start(xfer);
823 dwc2_device_intr_abort(struct usbd_xfer *xfer)
825 struct dwc2_softc *sc __diagused = DWC2_XFER2SC(xfer);
829 DPRINTF("xfer=%p\n", xfer);
830 usbd_xfer_abort(xfer);
843 dwc2_device_intr_done(struct usbd_xfer *xfer)
852 dwc2_device_isoc_transfer(struct usbd_xfer *xfer)
855 DPRINTF("xfer=%p\n", xfer);
857 KASSERT(xfer->ux_status == USBD_NOT_STARTED);
858 xfer->ux_status = USBD_IN_PROGRESS;
859 return dwc2_device_start(xfer);
863 dwc2_device_isoc_abort(struct usbd_xfer *xfer)
865 struct dwc2_softc *sc __diagused = DWC2_XFER2SC(xfer);
868 DPRINTF("xfer=%p\n", xfer);
869 usbd_xfer_abort(xfer);
881 dwc2_device_isoc_done(struct usbd_xfer *xfer)
889 dwc2_device_start(struct usbd_xfer *xfer)
891 struct dwc2_xfer *dxfer = DWC2_XFER2DXFER(xfer);
892 struct dwc2_pipe *dpipe = DWC2_XFER2DPIPE(xfer);
893 struct dwc2_softc *sc = DWC2_XFER2SC(xfer);
897 struct usbd_device *dev = xfer->ux_pipe->up_dev;
898 usb_endpoint_descriptor_t *ed = xfer->ux_pipe->up_endpoint->ue_edesc;
911 DPRINTFN(1, "xfer=%p pipe=%p\n", xfer, xfer->ux_pipe);
918 if (!dwc2_hcd_is_bandwidth_allocated(hsotg, xfer))
928 usb_device_request_t *req = &xfer->ux_request;
930 DPRINTFN(3, "xfer=%p type=0x%02x request=0x%02x wValue=0x%04x "
933 xfer, req->bmRequestType, req->bRequest, UGETW(req->wValue),
952 DPRINTFN(3, "xfer=%p nframes=%d flags=%d addr=%d endpt=%d,"
953 " mps=%d dir %s\n", xfer, xfer->ux_nframes, xfer->ux_flags, addr,
958 for (size_t i = 0; i < xfer->ux_nframes; i++)
959 len += xfer->ux_frlengths[i];
960 if (len != xfer->ux_length)
961 panic("len (%d) != xfer->ux_length (%d)", len,
962 xfer->ux_length);
964 len = xfer->ux_length;
966 DPRINTFN(3, "xfer=%p len=%d flags=%d addr=%d endpt=%d,"
967 " mps=%d dir %s\n", xfer, xfer->ux_length, xfer->ux_flags, addr,
970 len = xfer->ux_length;
977 KASSERT(dwc2_urb->packet_count == xfer->ux_nframes);
981 dwc2_urb->priv = xfer;
982 dwc2_urb->packet_count = xfer->ux_nframes;
993 if ((xfer->ux_flags & USBD_FORCE_SHORT_XFER) && (len % mps) == 0)
1003 dwc2_urb->usbdma = &xfer->ux_dmabuf;
1007 usb_syncmem(&xfer->ux_dmabuf, 0, len,
1051 xfer->ux_actlen = 0;
1054 xfer->ux_nframes <= dwc2_urb->packet_count);
1055 KASSERTMSG(xfer->ux_nframes == 0 || xfertype == UE_ISOCHRONOUS,
1056 "nframes %d xfertype %d\n", xfer->ux_nframes, xfertype);
1059 for (size_t i = 0; i < xfer->ux_nframes; ++i) {
1060 DPRINTFN(3, "xfer=%p frame=%zd offset=%d length=%d\n", xfer, i,
1061 off, xfer->ux_frlengths[i]);
1064 xfer->ux_frlengths[i]);
1065 off += xfer->ux_frlengths[i];
1095 xfer->ux_status = USBD_IN_PROGRESS;
1096 usbd_xfer_schedule_timeout(xfer);
1101 xfer);
1365 struct usbd_xfer *xfer = context;
1366 struct dwc2_pipe *dpipe = DWC2_XFER2DPIPE(xfer);
1375 struct usbd_xfer *xfer = context;
1376 struct dwc2_pipe *dpipe = DWC2_XFER2DPIPE(xfer);
1391 struct usbd_xfer *xfer;
1409 xfer = qtd->urb->priv;
1410 if (!xfer) {
1415 dxfer = DWC2_XFER2DXFER(xfer);
1416 sc = DWC2_XFER2SC(xfer);
1417 ed = xfer->ux_pipe->up_endpoint->ue_edesc;
1421 xfer->ux_actlen = dwc2_hcd_urb_get_actual_length(urb);
1423 DPRINTFN(3, "xfer=%p actlen=%d\n", xfer, xfer->ux_actlen);
1426 xfer->ux_actlen = 0;
1427 for (size_t i = 0; i < xfer->ux_nframes; ++i) {
1428 xfer->ux_frlengths[i] =
1431 DPRINTFN(1, "xfer=%p frame=%zu length=%d\n", xfer, i,
1432 xfer->ux_frlengths[i]);
1433 xfer->ux_actlen += xfer->ux_frlengths[i];
1435 DPRINTFN(1, "xfer=%p actlen=%d (isoc)\n", xfer, xfer->ux_actlen);
1439 for (size_t i = 0; i < xfer->ux_nframes; i++)
1445 if (!(xfer->ux_flags & USBD_SHORT_XFER_OK) &&
1446 xfer->ux_actlen < xfer->ux_length)
1477 UGETW(xfer->ux_request.wLength) == 0) &&
1478 xfer->ux_actlen > 0 /* XXX PR/53503 */
1480 int rd = usbd_xfer_isread(xfer);
1482 usb_syncmem(&xfer->ux_dmabuf, 0, xfer->ux_actlen,
1489 struct dwc2_pipe *dpipe = DWC2_XFER2DPIPE(xfer);
1493 xfer);