usb: ehci: only prepare zero packet for out transfer if required
authorMing Lei <tom.leiming@gmail.com>
Mon, 5 Sep 2011 13:05:56 +0000 (21:05 +0800)
committerGreg Kroah-Hartman <gregkh@suse.de>
Sun, 18 Sep 2011 08:38:59 +0000 (01:38 -0700)
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>
drivers/usb/host/ehci-q.c

index 726bd9d74ebbd4ef5f86bd9fd2316621c1933421..ef5925830bf1908b5b8f47e03a36e3da2bab87a2 100644 (file)
@@ -722,7 +722,8 @@ qh_urb_transaction (
 
        /*
         * 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)) {
                int     one_more = 0;
@@ -731,7 +732,7 @@ qh_urb_transaction (
                        one_more = 1;
                        token ^= 0x0100;        /* "in" <--> "out"  */
                        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_buffer_length % maxpacket)) {
                        one_more = 1;