staging: octeon-usb: fail and warn if DMA counters are wrong
Fail and WARN if DMA counters are wrong. Signed-off-by: Aaro Koskinen <aaro.koskinen@iki.fi> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
eb04114f37
commit
f3b8edc0f3
@ -2617,6 +2617,17 @@ static int cvmx_usb_poll_channel(struct cvmx_usb_state *usb, int channel)
|
||||
(pipe->transfer_dir == CVMX_USB_DIRECTION_OUT))
|
||||
pipe->flags |= CVMX_USB_PIPE_FLAGS_NEED_PING;
|
||||
|
||||
if (unlikely(WARN_ON_ONCE(bytes_this_transfer < 0))) {
|
||||
/*
|
||||
* In some rare cases the DMA engine seems to get stuck and
|
||||
* keeps substracting same byte count over and over again. In
|
||||
* such case we just need to fail every transaction.
|
||||
*/
|
||||
cvmx_usb_perform_complete(usb, pipe, transaction,
|
||||
CVMX_USB_COMPLETE_ERROR);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (usbc_hcint.s.stall) {
|
||||
/*
|
||||
* STALL as a response means this transaction cannot be
|
||||
|
Loading…
Reference in New Issue
Block a user