Revert "xhci: Set scatter-gather limit to avoid failed block writes."
authorSarah Sharp <sarah.a.sharp@linux.intel.com>
Fri, 31 Jan 2014 19:45:02 +0000 (11:45 -0800)
committerSarah Sharp <sarah.a.sharp@linux.intel.com>
Fri, 7 Feb 2014 22:30:02 +0000 (14:30 -0800)
This reverts commit f2d9b991c549f159dc9ae81f77d8206c790cbfee.

We are ripping out commit 35773dac5f862cb1c82ea151eba3e2f6de51ec3e "usb:
xhci: Link TRB must not occur within a USB payload burst" because it's a
hack that caused regressions in the usb-storage and userspace USB
drivers that use usbfs and libusb.  This commit attempted to fix the
issues with that patch.

Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Cc: stable@vger.kernel.org #3.12
drivers/usb/host/xhci.c
drivers/usb/host/xhci.h

index 86a2e834fdff6e2370fb7c603b4fa75e72be0ff3..6fe577d46fa2d392e586d608efc3805666ac452c 100644 (file)
@@ -4730,8 +4730,8 @@ int xhci_gen_setup(struct usb_hcd *hcd, xhci_get_quirks_t get_quirks)
        struct device           *dev = hcd->self.controller;
        int                     retval;
 
-       /* Limit the block layer scatter-gather lists to half a segment. */
-       hcd->self.sg_tablesize = TRBS_PER_SEGMENT / 2;
+       /* Accept arbitrarily long scatter-gather lists */
+       hcd->self.sg_tablesize = ~0;
 
        /* XHCI controllers don't stop the ep queue on short packets :| */
        hcd->self.no_stop_on_short = 1;
index 9154fd6cf24c0f5ab11b94f8aecf2b4fd0a11d99..58ed9d088e635c4e7d7ebeaa027da6f126f848eb 100644 (file)
@@ -1268,7 +1268,7 @@ union xhci_trb {
  * since the command ring is 64-byte aligned.
  * It must also be greater than 16.
  */
-#define TRBS_PER_SEGMENT       256
+#define TRBS_PER_SEGMENT       64
 /* Allow two commands + a link TRB, along with any reserved command TRBs */
 #define MAX_RSVD_CMD_TRBS      (TRBS_PER_SEGMENT - 3)
 #define TRB_SEGMENT_SIZE       (TRBS_PER_SEGMENT*16)