On Tue, 19 Jan 2010 16:25:36 +0100 Johan Hovold <jhovold@xxxxxxxxx> wrote: > > > The log shows no call to usb_serial_generic_write_room() > > > Do you consider this a bug in the tty layer? > > > > Actually this all makes sense because of where it was hanging. A reply of > > 0 to the tty->ops->write will cause it to either return (O_NONBLOCK) or > > sleep in the n_tty write code waiting for a write_wait wakeup > > (tty_wakeup(tty)) > > > > So the fix does indeed look correct. > > Is it really a fix? If the fifo is already full the write urb should be > in use and Oliver's patch would amount to only a minor optimisation as > usb_serial_generic_write_start would return 0 anyway. IF the write returns a zero then it will sleep in n_tty waiting for a wakeup when the FIFO level drops sufficiently. If that isn't working check that all cases where data is cleared from the FIFO called tty_wakeup and do so *after* the FIFO has been partly emptied and the locking has ensured the space is visible to the write side. -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html