linux/drivers/usb/gadget
David Brownell 937ef73d50 USB: serial gadget: rx path data loss fixes
Update RX path handling in new serial gadget code to cope better with
RX blockage:  queue every RX packet until its contents can safely be
passed up to the ldisc.  Most of the RX path work is now done in the
RX tasklet, instead of just the final "push to ldisc" step.  This
addresses some cases of data loss:

  - A longstanding serial gadget bug: when tty_insert_flip_string()
    didn't copy the entire buffer, the rest of the characters were
    dropped!  Now that packet stays queued until the rest of its data
    is pushed to the ldisc.

  - Another longstanding issue:  in the unlikely case that an RX
    transfer returns data and also reports a fault, that data is
    no longer discarded.

  - In the recently added RX throttling logic:  it needs to stop
    pushing data into the TTY layer, instead of just not submitting
    new USB read requests.  When the TTY is throttled long enough,
    backpressure will eventually make the OUT endpoint NAK.

Also: an #ifdef is removed (no longer necessary); and start switching
to a better convention for debug messages (prefix them with tty name).

Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2008-08-13 17:32:53 -07:00
..
amd5536udc.c
amd5536udc.h
at91_udc.c [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
at91_udc.h
atmel_usba_udc.c [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
atmel_usba_udc.h
cdc2.c
composite.c
config.c
dummy_hcd.c USB: fix USB boot crash, ecm_do_notify(), list_add corruption. prev->next should be next (ffff88003b8f82f8) 2008-08-13 17:32:47 -07:00
epautoconf.c
ether.c
f_acm.c
f_ecm.c
f_loopback.c
f_rndis.c
f_serial.c
f_sourcesink.c
f_subset.c
file_storage.c
fsl_usb2_udc.c
fsl_usb2_udc.h
g_zero.h
gadget_chips.h usb: gadget: protect gadget_chips.h from been included twice 2008-08-13 17:32:49 -07:00
gmidi.c
goku_udc.c
goku_udc.h
inode.c
Kconfig
lh7a40x_udc.c
lh7a40x_udc.h [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
m66592-udc.c
m66592-udc.h
Makefile
ndis.h
net2280.c
net2280.h
omap_udc.c [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
omap_udc.h
printer.c
pxa25x_udc.c [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
pxa25x_udc.h [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
pxa27x_udc.c [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
pxa27x_udc.h
rndis.c
rndis.h
s3c2410_udc.c [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
s3c2410_udc.h
serial.c
u_ether.c
u_ether.h
u_serial.c USB: serial gadget: rx path data loss fixes 2008-08-13 17:32:53 -07:00
u_serial.h
usbstring.c
zero.c