usb: ehci: only prepare zero packet for out transfer if required
Obviously, ZLP is only required for transfer of OUT direction, so just take same policy with UHCI for ZLP packet. Signed-off-by: Ming Lei <tom.leiming@gmail.com> Signed-off-by: Alan Stern <stern@rowland.harvard.edu> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
0412560e18
commit
9a971dda82
@@ -722,7 +722,8 @@ qh_urb_transaction (
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* control requests may need a terminating data "status" ack;
|
* control requests may need a terminating data "status" ack;
|
||||||
* bulk ones may need a terminating short packet (zero length).
|
* other OUT ones may need a terminating short packet
|
||||||
|
* (zero length).
|
||||||
*/
|
*/
|
||||||
if (likely (urb->transfer_buffer_length != 0)) {
|
if (likely (urb->transfer_buffer_length != 0)) {
|
||||||
int one_more = 0;
|
int one_more = 0;
|
||||||
@@ -731,7 +732,7 @@ qh_urb_transaction (
|
|||||||
one_more = 1;
|
one_more = 1;
|
||||||
token ^= 0x0100; /* "in" <--> "out" */
|
token ^= 0x0100; /* "in" <--> "out" */
|
||||||
token |= QTD_TOGGLE; /* force DATA1 */
|
token |= QTD_TOGGLE; /* force DATA1 */
|
||||||
} else if (usb_pipebulk (urb->pipe)
|
} else if (usb_pipeout(urb->pipe)
|
||||||
&& (urb->transfer_flags & URB_ZERO_PACKET)
|
&& (urb->transfer_flags & URB_ZERO_PACKET)
|
||||||
&& !(urb->transfer_buffer_length % maxpacket)) {
|
&& !(urb->transfer_buffer_length % maxpacket)) {
|
||||||
one_more = 1;
|
one_more = 1;
|
||||||
|
Reference in New Issue
Block a user