UHCI: Fix handling of short last packet
authorAlan Stern <stern@rowland.harvard.edu>
Mon, 24 Jul 2006 16:06:55 +0000 (12:06 -0400)
committerGreg Kroah-Hartman <gregkh@suse.de>
Mon, 7 Aug 2006 03:52:14 +0000 (20:52 -0700)
commitab96dcd3d043f6169c6c309012b8a6aa28b83e18
tree67a51be9f2d04d0b6638fd4413362c7abe4aa892
parent1e1f0476535c248fb65ac11e1ae4adee221a2fc3
UHCI: Fix handling of short last packet

This patch (as753) fixes the way uhci-hcd handles a short packet when it
is the last packet of an URB.  Right now the driver handles short packets
the same no matter when they occur.  However, the controller stops
transferring packets when the short packet is not the last one (otherwise
it would be reading beyond the end of the device's data) and needs to be
restarted, whereas no such need occurs when the short packet is the last
one.

The result of the bug is that USB endpoint queues experience intermittent
hangs, a regression in 2.6.17 with respect to earlier kernels.  The bug
was raised in Bugzilla #6752 and this patch fixed it.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/usb/host/uhci-q.c