PERFORCE change 154786 for review
Weongyo Jeong
weongyo at FreeBSD.org
Tue Dec 16 04:37:57 PST 2008
http://perforce.freebsd.org/chv.cgi?CH=154786
Change 154786 by weongyo at weongyo_ws on 2008/12/16 12:37:32
if the Interrupt IN pipe was already set we don't need to re-initialize
it again. In the previous it returned USBD_STATUS_SUCCESS which is
bad indicating a transaction had done. While I'm here fix it to
USBD_STATUS_PENDING to indicate a transaction is ready.
Affected files ...
.. //depot/projects/ndisusb/sys/compat/ndis/subr_usbd.c#24 edit
Differences ...
==== //depot/projects/ndisusb/sys/compat/ndis/subr_usbd.c#24 (text+ko) ====
@@ -328,6 +328,9 @@
switch (urb->uu_hdr.uuh_func) {
case URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER:
status = usbd_func_bulkintr(ip);
+ if (status != USBD_STATUS_SUCCESS &&
+ status != USBD_STATUS_PENDING)
+ USBD_URB_STATUS(urb) = status;
break;
case URB_FUNCTION_VENDOR_DEVICE:
case URB_FUNCTION_VENDOR_INTERFACE:
@@ -665,17 +668,17 @@
static irp *debug_irp = NULL;
#endif
+ urb = usbd_geturb(ip);
+
if (sc->ndisusb_ep[NDISUSB_ENDPT_IIN] != NULL) {
#ifdef NDISUSB_DEBUG
if (debug_irp != NULL && debug_irp != ip)
device_printf(dev,
"trying to re-initialize IIN with other IRP\n");
#endif
- /*
- * if we already set the endpoint for Interrupt IN, we doesn't
- * set again so just behave like we did good operations.
- */
- return usbd_usb2urb(USBD_NORMAL_COMPLETION);
+ /* don't need to open the NDISUSB_ENDPT_IIN pipe again. */
+ USBD_URB_STATUS(urb) = USBD_STATUS_PENDING;
+ return (USBD_STATUS_PENDING);
}
status = usbd_device2interface_handle(uaa->device, NDISUSB_IFACE_INDEX,
@@ -685,7 +688,6 @@
return usbd_usb2urb(status);
}
- urb = usbd_geturb(ip);
ubi = &urb->uu_bulkintr;
ep = ubi->ubi_epdesc;
More information about the p4-projects
mailing list