Эх сурвалжийг харах

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>
Ming Lei 13 жил өмнө
parent
commit
9a971dda82

+ 3 - 2
drivers/usb/host/ehci-q.c

@@ -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;