diff options
author | Sarah Sharp <sarah.a.sharp@linux.intel.com> | 2009-11-11 13:28:40 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2009-12-11 14:55:23 -0500 |
commit | 5ad6a529c28db36010ec56c5ee8120addc712b51 (patch) | |
tree | 02eb9560267c0151dcdf7a14c72cb74f216f8e7b /drivers/usb/host | |
parent | ec74e4035a660013379882ec243de98dd6717b61 (diff) |
USB: xhci: Return success for vendor-specific info codes.
An xHCI host controller manufacturer can choose to implement several
vendor-specific informational completion codes. These are all to be
treated like a successful transfer completion.
Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb/host')
-rw-r--r-- | drivers/usb/host/xhci-ring.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c index 98437ffb065e..1549b9ceb91a 100644 --- a/drivers/usb/host/xhci-ring.c +++ b/drivers/usb/host/xhci-ring.c | |||
@@ -1153,6 +1153,16 @@ static int handle_tx_event(struct xhci_hcd *xhci, | |||
1153 | status = -ENOSR; | 1153 | status = -ENOSR; |
1154 | break; | 1154 | break; |
1155 | default: | 1155 | default: |
1156 | if (trb_comp_code >= 224 && trb_comp_code <= 255) { | ||
1157 | /* Vendor defined "informational" completion code, | ||
1158 | * treat as not-an-error. | ||
1159 | */ | ||
1160 | xhci_dbg(xhci, "Vendor defined info completion code %u\n", | ||
1161 | trb_comp_code); | ||
1162 | xhci_dbg(xhci, "Treating code as success.\n"); | ||
1163 | status = 0; | ||
1164 | break; | ||
1165 | } | ||
1156 | xhci_warn(xhci, "ERROR Unknown event condition, HC probably busted\n"); | 1166 | xhci_warn(xhci, "ERROR Unknown event condition, HC probably busted\n"); |
1157 | urb = NULL; | 1167 | urb = NULL; |
1158 | goto cleanup; | 1168 | goto cleanup; |