Lines Matching refs:sce

133 	struct ugen_endpoint *sce;  member
427 struct ugen_endpoint *sce; in ugenif_attach() local
429 sce = &sc->sc_endpoints[i][dir]; in ugenif_attach()
430 selinit(&sce->rsel); in ugenif_attach()
431 cv_init(&sce->cv, "ugensce"); in ugenif_attach()
474 struct ugen_endpoint *sce = &sc->sc_endpoints[i][dir]; in ugen_clear_endpoints() local
475 memset(sce, 0, UGEN_ENDPOINT_NONZERO_CRUFT); in ugen_clear_endpoints()
487 struct ugen_endpoint *sce; in ugen_set_config() local
546 sce = &sc->sc_endpoints[UE_GET_ADDR(endpt)][dir]; in ugen_set_config()
550 sce->sc = sc; in ugen_set_config()
551 sce->edesc = ed; in ugen_set_config()
552 sce->iface = iface; in ugen_set_config()
577 struct ugen_endpoint *sce; in ugenopen() local
610 sce = &sc->sc_endpoints[endpt][dir]; in ugenopen()
611 if (sce->edesc == NULL) { in ugenopen()
623 sce = &sc->sc_endpoints[endpt][dir]; in ugenopen()
624 sce->state = 0; in ugenopen()
625 sce->timeout = USBD_NO_TIMEOUT; in ugenopen()
627 (uintptr_t)sc, endpt, dir, (uintptr_t)sce); in ugenopen()
628 edesc = sce->edesc; in ugenopen()
632 err = usbd_open_pipe(sce->iface, in ugenopen()
633 edesc->bEndpointAddress, 0, &sce->pipeh); in ugenopen()
645 sce->ibuf = kmem_alloc(isize, KM_SLEEP); in ugenopen()
648 if (clalloc(&sce->q, UGEN_IBSIZE, 0) == -1) { in ugenopen()
649 kmem_free(sce->ibuf, isize); in ugenopen()
650 sce->ibuf = NULL; in ugenopen()
654 err = usbd_open_pipe_intr(sce->iface, in ugenopen()
656 USBD_SHORT_XFER_OK, &sce->pipeh, sce, in ugenopen()
657 sce->ibuf, isize, ugenintr, in ugenopen()
660 clfree(&sce->q); in ugenopen()
661 kmem_free(sce->ibuf, isize); in ugenopen()
662 sce->ibuf = NULL; in ugenopen()
669 err = usbd_open_pipe(sce->iface, in ugenopen()
670 edesc->bEndpointAddress, 0, &sce->pipeh); in ugenopen()
675 sce->ra_wb_bufsize = UGEN_BULK_RA_WB_BUFSIZE; in ugenopen()
680 sce->ra_wb_reqsize = UGEN_BBSIZE; in ugenopen()
692 sce->ibuf = kmem_alloc(isize * UGEN_NISOFRAMES, in ugenopen()
694 sce->cur = sce->fill = sce->ibuf; in ugenopen()
695 sce->limit = sce->ibuf + isize * UGEN_NISOFRAMES; in ugenopen()
698 err = usbd_open_pipe(sce->iface, in ugenopen()
699 edesc->bEndpointAddress, 0, &sce->pipeh); in ugenopen()
701 kmem_free(sce->ibuf, isize * UGEN_NISOFRAMES); in ugenopen()
702 sce->ibuf = NULL; in ugenopen()
707 sce->isoreqs[i].sce = sce; in ugenopen()
708 err = usbd_create_xfer(sce->pipeh, in ugenopen()
713 sce->isoreqs[i].xfer = xfer; in ugenopen()
714 sce->isoreqs[i].dmabuf = usbd_get_buffer(xfer); in ugenopen()
716 sce->isoreqs[i].sizes[j] = isize; in ugenopen()
717 usbd_setup_isoc_xfer(xfer, &sce->isoreqs[i], in ugenopen()
718 sce->isoreqs[i].sizes, UGEN_NISORFRMS, 0, in ugenopen()
726 usbd_destroy_xfer(sce->isoreqs[i].xfer); in ugenopen()
727 sce->isoreqs[i].xfer = NULL; in ugenopen()
729 usbd_close_pipe(sce->pipeh); in ugenopen()
730 sce->pipeh = NULL; in ugenopen()
731 kmem_free(sce->ibuf, isize * UGEN_NISOFRAMES); in ugenopen()
732 sce->ibuf = NULL; in ugenopen()
736 sce->timeout = USBD_DEFAULT_TIMEOUT; in ugenopen()
751 struct ugen_endpoint *sce; in ugen_do_close() local
771 sce = &sc->sc_endpoints[endpt][dir]; in ugen_do_close()
772 if (sce->pipeh == NULL) in ugen_do_close()
775 endpt, dir, (uintptr_t)sce, 0); in ugen_do_close()
777 usbd_abort_pipe(sce->pipeh); in ugen_do_close()
779 int isize = UGETW(sce->edesc->wMaxPacketSize); in ugen_do_close()
782 switch (sce->edesc->bmAttributes & UE_XFERTYPE) { in ugen_do_close()
784 ndflush(&sce->q, sce->q.c_cc); in ugen_do_close()
785 clfree(&sce->q); in ugen_do_close()
790 usbd_destroy_xfer(sce->isoreqs[i].xfer); in ugen_do_close()
791 sce->isoreqs[i].xfer = NULL; in ugen_do_close()
796 if (sce->state & (UGEN_BULK_RA | UGEN_BULK_WB)) { in ugen_do_close()
797 usbd_destroy_xfer(sce->ra_wb_xfer); in ugen_do_close()
798 sce->ra_wb_xfer = NULL; in ugen_do_close()
799 msize = sce->ra_wb_bufsize; in ugen_do_close()
805 usbd_close_pipe(sce->pipeh); in ugen_do_close()
806 sce->pipeh = NULL; in ugen_do_close()
807 if (sce->ibuf != NULL) { in ugen_do_close()
808 kmem_free(sce->ibuf, msize); in ugen_do_close()
809 sce->ibuf = NULL; in ugen_do_close()
815 sce = &sc->sc_endpoints[endpt][dir]; in ugen_do_close()
816 KASSERT(sce->pipeh == NULL); in ugen_do_close()
817 KASSERT(sce->ibuf == NULL); in ugen_do_close()
818 KASSERT(sce->ra_wb_xfer == NULL); in ugen_do_close()
820 KASSERT(sce->isoreqs[i].xfer == NULL); in ugen_do_close()
851 struct ugen_endpoint *sce = &sc->sc_endpoints[endpt][IN]; in ugen_do_read() local
863 KASSERT(sce->edesc); in ugen_do_read()
864 KASSERT(sce->pipeh); in ugen_do_read()
866 switch (sce->edesc->bmAttributes & UE_XFERTYPE) { in ugen_do_read()
870 while (sce->q.c_cc == 0) { in ugen_do_read()
875 DPRINTFN(5, "sleep on %jx", (uintptr_t)sce, 0, 0, 0); in ugen_do_read()
877 error = cv_timedwait_sig(&sce->cv, &sc->sc_lock, in ugen_do_read()
878 mstohz(sce->timeout)); in ugen_do_read()
889 while (sce->q.c_cc > 0 && uio->uio_resid > 0 && !error) { in ugen_do_read()
890 n = uimin(sce->q.c_cc, uio->uio_resid); in ugen_do_read()
895 q_to_b(&sce->q, sc->sc_buffer, n); in ugen_do_read()
905 if (sce->state & UGEN_BULK_RA) { in ugen_do_read()
907 uio->uio_resid, sce->ra_wb_used, 0, 0); in ugen_do_read()
908 xfer = sce->ra_wb_xfer; in ugen_do_read()
911 if (sce->ra_wb_used == 0 && flag & IO_NDELAY) { in ugen_do_read()
916 while (sce->ra_wb_used == 0) { in ugen_do_read()
918 (uintptr_t)sce, 0, 0, 0); in ugen_do_read()
920 error = cv_timedwait_sig(&sce->cv, in ugen_do_read()
921 &sc->sc_lock, mstohz(sce->timeout)); in ugen_do_read()
932 && sce->ra_wb_used > 0) { in ugen_do_read()
934 sce->ra_wb_used); in ugen_do_read()
935 n = uimin(n, sce->limit - sce->cur); in ugen_do_read()
936 error = uiomove(sce->cur, n, uio); in ugen_do_read()
939 sce->cur += n; in ugen_do_read()
940 sce->ra_wb_used -= n; in ugen_do_read()
941 if (sce->cur == sce->limit) in ugen_do_read()
942 sce->cur = sce->ibuf; in ugen_do_read()
949 if (sce->state & UGEN_RA_WB_STOP && in ugen_do_read()
950 sce->ra_wb_used < sce->limit - sce->ibuf) { in ugen_do_read()
951 n = (sce->limit - sce->ibuf) in ugen_do_read()
952 - sce->ra_wb_used; in ugen_do_read()
953 usbd_setup_xfer(xfer, sce, NULL, in ugen_do_read()
954 uimin(n, sce->ra_wb_xferlen), in ugen_do_read()
957 sce->state &= ~UGEN_RA_WB_STOP; in ugen_do_read()
966 sce->state |= UGEN_RA_WB_STOP; in ugen_do_read()
972 error = usbd_create_xfer(sce->pipeh, UGEN_BBSIZE, in ugen_do_read()
979 err = usbd_bulk_transfer(xfer, sce->pipeh, in ugen_do_read()
980 sce->state & UGEN_SHORT_OK ? USBD_SHORT_XFER_OK : 0, in ugen_do_read()
981 sce->timeout, sc->sc_buffer, &tn); in ugen_do_read()
1000 while (sce->cur == sce->fill) { in ugen_do_read()
1006 DPRINTFN(5, "sleep on %jx", (uintptr_t)sce, 0, 0, 0); in ugen_do_read()
1007 error = cv_timedwait_sig(&sce->cv, &sc->sc_lock, in ugen_do_read()
1008 mstohz(sce->timeout)); in ugen_do_read()
1016 while (sce->cur != sce->fill && uio->uio_resid > 0 && !error) { in ugen_do_read()
1017 if(sce->fill > sce->cur) in ugen_do_read()
1018 n = uimin(sce->fill - sce->cur, uio->uio_resid); in ugen_do_read()
1020 n = uimin(sce->limit - sce->cur, uio->uio_resid); in ugen_do_read()
1025 error = uiomove(sce->cur, n, uio); in ugen_do_read()
1028 sce->cur += n; in ugen_do_read()
1029 if (sce->cur >= sce->limit) in ugen_do_read()
1030 sce->cur = sce->ibuf; in ugen_do_read()
1061 struct ugen_endpoint *sce = &sc->sc_endpoints[endpt][OUT]; in ugen_do_write() local
1076 KASSERT(sce->edesc); in ugen_do_write()
1077 KASSERT(sce->pipeh); in ugen_do_write()
1079 switch (sce->edesc->bmAttributes & UE_XFERTYPE) { in ugen_do_write()
1081 if (sce->state & UGEN_BULK_WB) { in ugen_do_write()
1083 uio->uio_resid, sce->ra_wb_used, 0, 0); in ugen_do_write()
1084 xfer = sce->ra_wb_xfer; in ugen_do_write()
1087 if (sce->ra_wb_used == sce->limit - sce->ibuf && in ugen_do_write()
1093 while (sce->ra_wb_used == in ugen_do_write()
1094 sce->limit - sce->ibuf) { in ugen_do_write()
1096 (uintptr_t)sce, 0, 0, 0); in ugen_do_write()
1098 error = cv_timedwait_sig(&sce->cv, in ugen_do_write()
1099 &sc->sc_lock, mstohz(sce->timeout)); in ugen_do_write()
1110 sce->ra_wb_used < sce->limit - sce->ibuf) { in ugen_do_write()
1112 (sce->limit - sce->ibuf) in ugen_do_write()
1113 - sce->ra_wb_used); in ugen_do_write()
1114 n = uimin(n, sce->limit - sce->fill); in ugen_do_write()
1115 error = uiomove(sce->fill, n, uio); in ugen_do_write()
1118 sce->fill += n; in ugen_do_write()
1119 sce->ra_wb_used += n; in ugen_do_write()
1120 if (sce->fill == sce->limit) in ugen_do_write()
1121 sce->fill = sce->ibuf; in ugen_do_write()
1128 if (sce->state & UGEN_RA_WB_STOP && in ugen_do_write()
1129 sce->ra_wb_used > 0) { in ugen_do_write()
1131 n = uimin(sce->ra_wb_used, in ugen_do_write()
1132 sce->ra_wb_xferlen); in ugen_do_write()
1133 tn = uimin(n, sce->limit - sce->cur); in ugen_do_write()
1134 memcpy(dbuf, sce->cur, tn); in ugen_do_write()
1137 memcpy(dbuf, sce->ibuf, in ugen_do_write()
1139 usbd_setup_xfer(xfer, sce, NULL, n, in ugen_do_write()
1142 sce->state &= ~UGEN_RA_WB_STOP; in ugen_do_write()
1151 sce->state |= UGEN_RA_WB_STOP; in ugen_do_write()
1157 error = usbd_create_xfer(sce->pipeh, UGEN_BBSIZE, in ugen_do_write()
1166 err = usbd_bulk_transfer(xfer, sce->pipeh, 0, sce->timeout, in ugen_do_write()
1181 error = usbd_create_xfer(sce->pipeh, in ugen_do_write()
1182 UGETW(sce->edesc->wMaxPacketSize), 0, 0, &xfer); in ugen_do_write()
1185 while ((n = uimin(UGETW(sce->edesc->wMaxPacketSize), in ugen_do_write()
1191 err = usbd_intr_transfer(xfer, sce->pipeh, 0, in ugen_do_write()
1192 sce->timeout, sc->sc_buffer, &n); in ugen_do_write()
1244 struct ugen_endpoint *sce; in ugen_detach() local
1278 sce = &sc->sc_endpoints[i][dir]; in ugen_detach()
1279 if (sce->pipeh) in ugen_detach()
1280 usbd_abort_pipe(sce->pipeh); in ugen_detach()
1323 sce = &sc->sc_endpoints[i][dir]; in ugen_detach()
1324 seldestroy(&sce->rsel); in ugen_detach()
1325 cv_destroy(&sce->cv); in ugen_detach()
1338 struct ugen_endpoint *sce = addr; in ugenintr() local
1339 struct ugen_softc *sc = sce->sc; in ugenintr()
1352 usbd_clear_endpoint_stall_async(sce->pipeh); in ugenintr()
1357 ibuf = sce->ibuf; in ugenintr()
1365 (void)b_to_q(ibuf, count, &sce->q); in ugenintr()
1366 cv_signal(&sce->cv); in ugenintr()
1368 selnotify(&sce->rsel, 0, 0); in ugenintr()
1376 struct ugen_endpoint *sce = req->sce; in ugen_isoc_rintr() local
1377 struct ugen_softc *sc = sce->sc; in ugen_isoc_rintr()
1390 (long)(req - sce->isoreqs), count, 0, 0); in ugen_isoc_rintr()
1395 if (sce->fill < sce->cur && sce->cur <= sce->fill + count) { in ugen_isoc_rintr()
1396 sce->cur += count; in ugen_isoc_rintr()
1397 if (sce->cur >= sce->limit) in ugen_isoc_rintr()
1398 sce->cur = sce->ibuf + (sce->limit - sce->cur); in ugen_isoc_rintr()
1403 isize = UGETW(sce->edesc->wMaxPacketSize); in ugen_isoc_rintr()
1410 n = uimin(actlen, sce->limit - sce->fill); in ugen_isoc_rintr()
1411 memcpy(sce->fill, tbuf, n); in ugen_isoc_rintr()
1415 sce->fill += n; in ugen_isoc_rintr()
1416 if (sce->fill == sce->limit) in ugen_isoc_rintr()
1417 sce->fill = sce->ibuf; in ugen_isoc_rintr()
1428 cv_signal(&sce->cv); in ugen_isoc_rintr()
1430 selnotify(&sce->rsel, 0, 0); in ugen_isoc_rintr()
1437 struct ugen_endpoint *sce = addr; in ugen_bulkra_intr() local
1438 struct ugen_softc *sc = sce->sc; in ugen_bulkra_intr()
1452 sce->state |= UGEN_RA_WB_STOP; in ugen_bulkra_intr()
1454 usbd_clear_endpoint_stall_async(sce->pipeh); in ugen_bulkra_intr()
1463 sce->ra_wb_used += count; in ugen_bulkra_intr()
1466 tbuf = (char const *)usbd_get_buffer(sce->ra_wb_xfer); in ugen_bulkra_intr()
1467 n = uimin(count, sce->limit - sce->fill); in ugen_bulkra_intr()
1468 memcpy(sce->fill, tbuf, n); in ugen_bulkra_intr()
1471 sce->fill += n; in ugen_bulkra_intr()
1472 if (sce->fill == sce->limit) in ugen_bulkra_intr()
1473 sce->fill = sce->ibuf; in ugen_bulkra_intr()
1475 memcpy(sce->fill, tbuf, count); in ugen_bulkra_intr()
1476 sce->fill += count; in ugen_bulkra_intr()
1480 n = (sce->limit - sce->ibuf) - sce->ra_wb_used; in ugen_bulkra_intr()
1482 usbd_setup_xfer(xfer, sce, NULL, uimin(n, sce->ra_wb_xferlen), 0, in ugen_bulkra_intr()
1491 sce->state |= UGEN_RA_WB_STOP; in ugen_bulkra_intr()
1495 sce->state |= UGEN_RA_WB_STOP; in ugen_bulkra_intr()
1497 cv_signal(&sce->cv); in ugen_bulkra_intr()
1499 selnotify(&sce->rsel, 0, 0); in ugen_bulkra_intr()
1506 struct ugen_endpoint *sce = addr; in ugen_bulkwb_intr() local
1507 struct ugen_softc *sc = sce->sc; in ugen_bulkwb_intr()
1521 sce->state |= UGEN_RA_WB_STOP; in ugen_bulkwb_intr()
1523 usbd_clear_endpoint_stall_async(sce->pipeh); in ugen_bulkwb_intr()
1532 sce->ra_wb_used -= count; in ugen_bulkwb_intr()
1535 sce->cur += count; in ugen_bulkwb_intr()
1536 if (sce->cur >= sce->limit) in ugen_bulkwb_intr()
1537 sce->cur = sce->ibuf + (sce->cur - sce->limit); in ugen_bulkwb_intr()
1540 if (sce->ra_wb_used > 0) { in ugen_bulkwb_intr()
1542 tbuf = (char *)usbd_get_buffer(sce->ra_wb_xfer); in ugen_bulkwb_intr()
1543 count = uimin(sce->ra_wb_used, sce->ra_wb_xferlen); in ugen_bulkwb_intr()
1544 n = uimin(count, sce->limit - sce->cur); in ugen_bulkwb_intr()
1545 memcpy(tbuf, sce->cur, n); in ugen_bulkwb_intr()
1548 memcpy(tbuf, sce->ibuf, count - n); in ugen_bulkwb_intr()
1550 usbd_setup_xfer(xfer, sce, NULL, count, 0, USBD_NO_TIMEOUT, in ugen_bulkwb_intr()
1559 sce->state |= UGEN_RA_WB_STOP; in ugen_bulkwb_intr()
1563 sce->state |= UGEN_RA_WB_STOP; in ugen_bulkwb_intr()
1565 cv_signal(&sce->cv); in ugen_bulkwb_intr()
1567 selnotify(&sce->rsel, 0, 0); in ugen_bulkwb_intr()
1576 struct ugen_endpoint *sce; in ugen_set_interface() local
1612 sce = &sc->sc_endpoints[UE_GET_ADDR(endpt)][dir]; in ugen_set_interface()
1613 sce->sc = sc; in ugen_set_interface()
1614 sce->edesc = ed; in ugen_set_interface()
1615 sce->iface = iface; in ugen_set_interface()
1674 struct ugen_endpoint *sce; in ugen_do_ioctl() local
1704 sce = &sc->sc_endpoints[endpt][IN]; in ugen_do_ioctl()
1705 if (sce == NULL || sce->pipeh == NULL) in ugen_do_ioctl()
1708 sce->state |= UGEN_SHORT_OK; in ugen_do_ioctl()
1710 sce->state &= ~UGEN_SHORT_OK; in ugen_do_ioctl()
1712 (uintptr_t)sce->pipeh, sce->state & UGEN_SHORT_OK, 0, 0); in ugen_do_ioctl()
1716 sce = &sc->sc_endpoints[endpt][dir]; in ugen_do_ioctl()
1717 if (sce == NULL) in ugen_do_ioctl()
1720 sce->timeout = *(int *)addr; in ugen_do_ioctl()
1722 (uintptr_t)sce->pipeh, dir, sce->timeout, 0); in ugen_do_ioctl()
1728 sce = &sc->sc_endpoints[endpt][IN]; in ugen_do_ioctl()
1729 if (sce == NULL || sce->pipeh == NULL) in ugen_do_ioctl()
1731 edesc = sce->edesc; in ugen_do_ioctl()
1737 if (sce->state & UGEN_BULK_RA) in ugen_do_ioctl()
1739 KASSERT(sce->ra_wb_xfer == NULL); in ugen_do_ioctl()
1740 KASSERT(sce->ibuf == NULL); in ugen_do_ioctl()
1742 if (sce->ra_wb_bufsize == 0 || sce->ra_wb_reqsize == 0) in ugen_do_ioctl()
1745 error = usbd_create_xfer(sce->pipeh, in ugen_do_ioctl()
1746 sce->ra_wb_reqsize, 0, 0, &sce->ra_wb_xfer); in ugen_do_ioctl()
1749 sce->ra_wb_xferlen = sce->ra_wb_reqsize; in ugen_do_ioctl()
1750 sce->ibuf = kmem_alloc(sce->ra_wb_bufsize, KM_SLEEP); in ugen_do_ioctl()
1751 sce->fill = sce->cur = sce->ibuf; in ugen_do_ioctl()
1752 sce->limit = sce->ibuf + sce->ra_wb_bufsize; in ugen_do_ioctl()
1753 sce->ra_wb_used = 0; in ugen_do_ioctl()
1754 sce->state |= UGEN_BULK_RA; in ugen_do_ioctl()
1755 sce->state &= ~UGEN_RA_WB_STOP; in ugen_do_ioctl()
1757 usbd_setup_xfer(sce->ra_wb_xfer, sce, NULL, in ugen_do_ioctl()
1758 uimin(sce->ra_wb_xferlen, sce->ra_wb_bufsize), in ugen_do_ioctl()
1760 err = usbd_transfer(sce->ra_wb_xfer); in ugen_do_ioctl()
1762 sce->state &= ~UGEN_BULK_RA; in ugen_do_ioctl()
1763 kmem_free(sce->ibuf, sce->ra_wb_bufsize); in ugen_do_ioctl()
1764 sce->ibuf = NULL; in ugen_do_ioctl()
1765 usbd_destroy_xfer(sce->ra_wb_xfer); in ugen_do_ioctl()
1766 sce->ra_wb_xfer = NULL; in ugen_do_ioctl()
1771 if (!(sce->state & UGEN_BULK_RA)) in ugen_do_ioctl()
1774 sce->state &= ~UGEN_BULK_RA; in ugen_do_ioctl()
1775 usbd_abort_pipe(sce->pipeh); in ugen_do_ioctl()
1776 usbd_destroy_xfer(sce->ra_wb_xfer); in ugen_do_ioctl()
1777 sce->ra_wb_xfer = NULL; in ugen_do_ioctl()
1783 kmem_free(sce->ibuf, sce->ra_wb_bufsize); in ugen_do_ioctl()
1784 sce->ibuf = NULL; in ugen_do_ioctl()
1790 sce = &sc->sc_endpoints[endpt][OUT]; in ugen_do_ioctl()
1791 if (sce == NULL || sce->pipeh == NULL) in ugen_do_ioctl()
1793 edesc = sce->edesc; in ugen_do_ioctl()
1799 if (sce->state & UGEN_BULK_WB) in ugen_do_ioctl()
1801 KASSERT(sce->ra_wb_xfer == NULL); in ugen_do_ioctl()
1802 KASSERT(sce->ibuf == NULL); in ugen_do_ioctl()
1804 if (sce->ra_wb_bufsize == 0 || sce->ra_wb_reqsize == 0) in ugen_do_ioctl()
1807 error = usbd_create_xfer(sce->pipeh, sce->ra_wb_reqsize, in ugen_do_ioctl()
1808 0, 0, &sce->ra_wb_xfer); in ugen_do_ioctl()
1810 sce->ra_wb_xferlen = sce->ra_wb_reqsize; in ugen_do_ioctl()
1811 sce->ibuf = kmem_alloc(sce->ra_wb_bufsize, KM_SLEEP); in ugen_do_ioctl()
1812 sce->fill = sce->cur = sce->ibuf; in ugen_do_ioctl()
1813 sce->limit = sce->ibuf + sce->ra_wb_bufsize; in ugen_do_ioctl()
1814 sce->ra_wb_used = 0; in ugen_do_ioctl()
1815 sce->state |= UGEN_BULK_WB | UGEN_RA_WB_STOP; in ugen_do_ioctl()
1818 if (!(sce->state & UGEN_BULK_WB)) in ugen_do_ioctl()
1821 sce->state &= ~UGEN_BULK_WB; in ugen_do_ioctl()
1827 usbd_abort_pipe(sce->pipeh); in ugen_do_ioctl()
1828 usbd_destroy_xfer(sce->ra_wb_xfer); in ugen_do_ioctl()
1829 sce->ra_wb_xfer = NULL; in ugen_do_ioctl()
1830 kmem_free(sce->ibuf, sce->ra_wb_bufsize); in ugen_do_ioctl()
1831 sce->ibuf = NULL; in ugen_do_ioctl()
1843 sce = &sc->sc_endpoints[endpt][IN]; in ugen_do_ioctl()
1845 sce = &sc->sc_endpoints[endpt][OUT]; in ugen_do_ioctl()
1846 if (sce == NULL || sce->pipeh == NULL) in ugen_do_ioctl()
1858 sce->ra_wb_bufsize = opt->ra_wb_buffer_size; in ugen_do_ioctl()
1859 sce->ra_wb_reqsize = opt->ra_wb_request_size; in ugen_do_ioctl()
2057 sce = &sc->sc_endpoints[endpt][IN]; in ugen_do_ioctl()
2059 ptr, ur->ucr_flags, &ur->ucr_actlen, sce->timeout); in ugen_do_ioctl()
2203 struct ugen_endpoint *sce = kn->kn_hook; in filt_ugenrdetach() local
2204 struct ugen_softc *sc = sce->sc; in filt_ugenrdetach()
2207 selremove_knote(&sce->rsel, kn); in filt_ugenrdetach()
2214 struct ugen_endpoint *sce = kn->kn_hook; in filt_ugenread_intr() local
2215 struct ugen_softc *sc = sce->sc; in filt_ugenread_intr()
2222 kn->kn_data = sce->q.c_cc; in filt_ugenread_intr()
2233 struct ugen_endpoint *sce = kn->kn_hook; in filt_ugenread_isoc() local
2234 struct ugen_softc *sc = sce->sc; in filt_ugenread_isoc()
2240 } else if (sce->cur == sce->fill) { in filt_ugenread_isoc()
2242 } else if (sce->cur < sce->fill) { in filt_ugenread_isoc()
2243 kn->kn_data = sce->fill - sce->cur; in filt_ugenread_isoc()
2246 kn->kn_data = (sce->limit - sce->cur) + in filt_ugenread_isoc()
2247 (sce->fill - sce->ibuf); in filt_ugenread_isoc()
2258 struct ugen_endpoint *sce = kn->kn_hook; in filt_ugenread_bulk() local
2259 struct ugen_softc *sc = sce->sc; in filt_ugenread_bulk()
2265 } else if (!(sce->state & UGEN_BULK_RA)) { in filt_ugenread_bulk()
2272 } else if (sce->ra_wb_used == 0) { in filt_ugenread_bulk()
2275 kn->kn_data = sce->ra_wb_used; in filt_ugenread_bulk()
2286 struct ugen_endpoint *sce = kn->kn_hook; in filt_ugenwrite_bulk() local
2287 struct ugen_softc *sc = sce->sc; in filt_ugenwrite_bulk()
2293 } else if (!(sce->state & UGEN_BULK_WB)) { in filt_ugenwrite_bulk()
2300 } else if (sce->ra_wb_used == sce->limit - sce->ibuf) { in filt_ugenwrite_bulk()
2303 kn->kn_data = (sce->limit - sce->ibuf) - sce->ra_wb_used; in filt_ugenwrite_bulk()
2343 struct ugen_endpoint *sce; in ugenkqfilter() local
2357 sce = &sc->sc_endpoints[UGENENDPOINT(dev)][IN]; in ugenkqfilter()
2358 if (sce == NULL) { in ugenkqfilter()
2363 sip = &sce->rsel; in ugenkqfilter()
2364 switch (sce->edesc->bmAttributes & UE_XFERTYPE) { in ugenkqfilter()
2381 sce = &sc->sc_endpoints[UGENENDPOINT(dev)][OUT]; in ugenkqfilter()
2382 if (sce == NULL) { in ugenkqfilter()
2387 sip = &sce->rsel; in ugenkqfilter()
2388 switch (sce->edesc->bmAttributes & UE_XFERTYPE) { in ugenkqfilter()
2409 kn->kn_hook = sce; in ugenkqfilter()