On Tue, 10 Dec 2013, David Laight wrote:
> > From: Thomas Pugliese
> > Sent: 09 December 2013 19:11
> > To: linux-usb@vger.kernel.org
> > Cc: gre...@linuxfoundation.org; Thomas Pugliese
> > Subject: [PATCH] usb: wusbcore: fix short transfers
> >
> > If a URB is broken up into multiple transfer segments and a short
> > transfer occurs in any segment other than the last, the URB will
> > currently get stuck in the driver forever. This patch adds a check for
> > a short transfer and cleans up any pending segments so the URB can
> > complete properly.
>
> I thought that generic code ensured that this never happens.
> I thought that only xhci supports arbitrary fragmentation.
>
> David
>
>
>
>
Hi David,
WUSB actually does support arbitrary fragmentation but that is not the
type of fragmentation that is addressed with this fix. The HWA can break
up large URBs into smaller transfer segments that are not visible to the
USB core. These segments are similar to TRBs in xHCI. If a large read
request was broken up into multiple transfer segments and the read
completed early due to a short transfer, the tracking data for the
remaining segments would not be cleaned up and the URB would stay in the
driver forever. This patch solves that problem.
Tom
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html