USB: xhci: Return success for vendor-specific info codes.
authorSarah Sharp <sarah.a.sharp@linux.intel.com>
Wed, 11 Nov 2009 18:28:40 +0000 (10:28 -0800)
committerGreg Kroah-Hartman <gregkh@suse.de>
Fri, 11 Dec 2009 19:55:23 +0000 (11:55 -0800)
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>
drivers/usb/host/xhci-ring.c

index 98437ffb065e64ecf1d7a37e7d991c00ec6d9dd0..1549b9ceb91af54a9dd8e3833a344e5c8777be78 100644 (file)
@@ -1153,6 +1153,16 @@ static int handle_tx_event(struct xhci_hcd *xhci,
                status = -ENOSR;
                break;
        default:
+               if (trb_comp_code >= 224 && trb_comp_code <= 255) {
+                       /* Vendor defined "informational" completion code,
+                        * treat as not-an-error.
+                        */
+                       xhci_dbg(xhci, "Vendor defined info completion code %u\n",
+                                       trb_comp_code);
+                       xhci_dbg(xhci, "Treating code as success.\n");
+                       status = 0;
+                       break;
+               }
                xhci_warn(xhci, "ERROR Unknown event condition, HC probably busted\n");
                urb = NULL;
                goto cleanup;