USB: isp1362-hcd.c: usb message always saved in case of underrun

The usb message must be saved also in case the USB endpoint is not a
control endpoint (i.e., "endpoint 0"), otherwise in some circumstances
we don't have a payload in case of error.

The patch has been created by tracing with usbmon the different error
messages generated by this driver with respect to the ehci-hcd driver.

Signed-off-by: Bruno Morelli <bruno@evidence.eu.com>
Signed-off-by: Claudio Scordino <claudio@evidence.eu.com>
Tested-by: Bruno Morelli <bruno@evidence.eu.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Bruno Morelli 2012-07-30 15:26:50 +02:00 committed by Greg Kroah-Hartman
parent 872c495dd0
commit 4840ae17ba
1 changed files with 4 additions and 4 deletions

View File

@ -543,12 +543,12 @@ static void postproc_ep(struct isp1362_hcd *isp1362_hcd, struct isp1362_ep *ep)
usb_pipein(urb->pipe) ? "IN" : "OUT", ep->nextpid, usb_pipein(urb->pipe) ? "IN" : "OUT", ep->nextpid,
short_ok ? "" : "not_", short_ok ? "" : "not_",
PTD_GET_COUNT(ptd), ep->maxpacket, len); PTD_GET_COUNT(ptd), ep->maxpacket, len);
if (usb_pipecontrol(urb->pipe)) {
ep->nextpid = USB_PID_ACK;
/* save the data underrun error code for later and /* save the data underrun error code for later and
* proceed with the status stage * proceed with the status stage
*/ */
urb->actual_length += PTD_GET_COUNT(ptd); urb->actual_length += PTD_GET_COUNT(ptd);
if (usb_pipecontrol(urb->pipe)) {
ep->nextpid = USB_PID_ACK;
BUG_ON(urb->actual_length > urb->transfer_buffer_length); BUG_ON(urb->actual_length > urb->transfer_buffer_length);
if (urb->status == -EINPROGRESS) if (urb->status == -EINPROGRESS)