USB: gadget: g_serial: append zlp when tx buffer becomes empty
authorDaniel Glöckner <dg@emlix.com>
Thu, 28 May 2009 10:53:24 +0000 (12:53 +0200)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 16 Jun 2009 04:44:46 +0000 (21:44 -0700)
Some usb serial host drivers expect a short packet before they forward
the data to the application. This is caused by them trying to read more
than one packet at a time. So when the gadget sends an exact multiple
of the maximum packet size, it should append a zero-length packet.

Signed-off-by: Daniel Glöckner <dg@emlix.com>
Cc: David Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/usb/gadget/u_serial.c

index 0a4d99ab40d8c0c224a78d060e93574b63fcbd2e..fc6e709f45b1b184891b0201cffcbeef17daf09f 100644 (file)
@@ -371,6 +371,7 @@ __acquires(&port->port_lock)
 
                req->length = len;
                list_del(&req->list);
+               req->zero = (gs_buf_data_avail(&port->port_write_buf) == 0);
 
                pr_vdebug(PREFIX "%d: tx len=%d, 0x%02x 0x%02x 0x%02x ...\n",
                                port->port_num, len, *((u8 *)req->buf),