ChangeSet 1.924.3.8, 2002/11/30 22:09:07-08:00, whitney@math.berkeley.edu

[PATCH] uhci-hcd.c shouldn't halt control endpoints

uhci-hcd.c currently calls usb_endpoint_halt() in the td_error: path of
uhci_result_control().  David Brownell told me that "control endpoints
don't halt" and that this is wrong.  The patch below fixes this and allows
my Belkin Universal UPS to work.  [Although it still prints lots of
"drivers/usb/input/hid-core.c: ctrl urb status -32 received" messages.]
Greg K-H, could you merge this if it looks right?  David mentioned that
the same bug exists in 2.4.x.


diff -Nru a/drivers/usb/host/uhci-hcd.c b/drivers/usb/host/uhci-hcd.c
--- a/drivers/usb/host/uhci-hcd.c	Sun Dec  1 23:06:01 2002
+++ b/drivers/usb/host/uhci-hcd.c	Sun Dec  1 23:06:01 2002
@@ -1051,10 +1051,6 @@
 
 td_error:
 	ret = uhci_map_status(status, uhci_packetout(td_token(td)));
-	if (ret == -EPIPE)
-		/* endpoint has stalled - mark it halted */
-		usb_endpoint_halt(urb->dev, uhci_endpoint(td_token(td)),
-	    			uhci_packetout(td_token(td)));
 
 err:
 	if ((debug == 1 && ret != -EPIPE) || debug > 1) {
