PERFORCE change 162771 for review
Hans Petter Selasky
hselasky at FreeBSD.org
Tue May 26 12:11:03 UTC 2009
http://perforce.freebsd.org/chv.cgi?CH=162771
Change 162771 by hselasky at hselasky_laptop001 on 2009/05/26 12:10:17
USB core: Improve clear stall logic.
Affected files ...
.. //depot/projects/usb/src/sys/dev/usb/usb_request.c#17 edit
Differences ...
==== //depot/projects/usb/src/sys/dev/usb/usb_request.c#17 (text+ko) ====
@@ -109,11 +109,11 @@
pipe_end = udev->pipes + udev->pipes_max;
pipe_first = udev->pipes;
to = udev->pipes_max;
- if (pipe == NULL) {
- pipe = pipe_first;
- }
+
switch (USB_GET_STATE(xfer)) {
case USB_ST_TRANSFERRED:
+ if (pipe == NULL)
+ goto tr_setup; /* device was unconfigured */
if (pipe->edesc &&
pipe->is_stalled) {
pipe->toggle_next = 0;
@@ -126,9 +126,10 @@
case USB_ST_SETUP:
tr_setup:
- if (pipe == pipe_end) {
- pipe = pipe_first;
- }
+ if (to == 0)
+ break; /* no pipes - nothing to do */
+ if ((pipe < pipe_first) || (pipe >= pipe_end))
+ pipe = pipe_first; /* pipe wrapped around */
if (pipe->edesc &&
pipe->is_stalled) {
@@ -156,9 +157,8 @@
break;
}
pipe++;
- if (--to)
- goto tr_setup;
- break;
+ to--;
+ goto tr_setup;
default:
if (xfer->error == USB_ERR_CANCELLED) {
More information about the p4-projects
mailing list