diff options
Diffstat (limited to 'drivers/usb/host')
| -rw-r--r-- | drivers/usb/host/xhci-ring.c | 7 | ||||
| -rw-r--r-- | drivers/usb/host/xhci.h | 2 |
2 files changed, 7 insertions, 2 deletions
diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c index f5397a517c54..7d34cbfaf373 100644 --- a/drivers/usb/host/xhci-ring.c +++ b/drivers/usb/host/xhci-ring.c | |||
| @@ -2026,8 +2026,13 @@ static int process_isoc_td(struct xhci_hcd *xhci, struct xhci_td *td, | |||
| 2026 | break; | 2026 | break; |
| 2027 | case COMP_DEV_ERR: | 2027 | case COMP_DEV_ERR: |
| 2028 | case COMP_STALL: | 2028 | case COMP_STALL: |
| 2029 | frame->status = -EPROTO; | ||
| 2030 | skip_td = true; | ||
| 2031 | break; | ||
| 2029 | case COMP_TX_ERR: | 2032 | case COMP_TX_ERR: |
| 2030 | frame->status = -EPROTO; | 2033 | frame->status = -EPROTO; |
| 2034 | if (event_trb != td->last_trb) | ||
| 2035 | return 0; | ||
| 2031 | skip_td = true; | 2036 | skip_td = true; |
| 2032 | break; | 2037 | break; |
| 2033 | case COMP_STOP: | 2038 | case COMP_STOP: |
| @@ -2640,7 +2645,7 @@ irqreturn_t xhci_irq(struct usb_hcd *hcd) | |||
| 2640 | xhci_halt(xhci); | 2645 | xhci_halt(xhci); |
| 2641 | hw_died: | 2646 | hw_died: |
| 2642 | spin_unlock(&xhci->lock); | 2647 | spin_unlock(&xhci->lock); |
| 2643 | return -ESHUTDOWN; | 2648 | return IRQ_HANDLED; |
| 2644 | } | 2649 | } |
| 2645 | 2650 | ||
| 2646 | /* | 2651 | /* |
diff --git a/drivers/usb/host/xhci.h b/drivers/usb/host/xhci.h index 8e421b89632d..ea75e8ccd3c1 100644 --- a/drivers/usb/host/xhci.h +++ b/drivers/usb/host/xhci.h | |||
| @@ -1267,7 +1267,7 @@ union xhci_trb { | |||
| 1267 | * since the command ring is 64-byte aligned. | 1267 | * since the command ring is 64-byte aligned. |
| 1268 | * It must also be greater than 16. | 1268 | * It must also be greater than 16. |
| 1269 | */ | 1269 | */ |
| 1270 | #define TRBS_PER_SEGMENT 64 | 1270 | #define TRBS_PER_SEGMENT 256 |
| 1271 | /* Allow two commands + a link TRB, along with any reserved command TRBs */ | 1271 | /* Allow two commands + a link TRB, along with any reserved command TRBs */ |
| 1272 | #define MAX_RSVD_CMD_TRBS (TRBS_PER_SEGMENT - 3) | 1272 | #define MAX_RSVD_CMD_TRBS (TRBS_PER_SEGMENT - 3) |
| 1273 | #define TRB_SEGMENT_SIZE (TRBS_PER_SEGMENT*16) | 1273 | #define TRB_SEGMENT_SIZE (TRBS_PER_SEGMENT*16) |
