On Mon, Jan 20, 2020 at 09:06:18AM +0300, Sergey Organov wrote: > Michał Mirosław <mirq-linux@xxxxxxxxxxxx> writes: > > > On Fri, Jan 17, 2020 at 08:29:33AM +0300, Sergey Organov wrote: > >> --- a/drivers/usb/gadget/function/u_serial.c > >> +++ b/drivers/usb/gadget/function/u_serial.c > >> @@ -563,6 +563,8 @@ static int gs_start_io(struct gs_port *port) > >> > >> /* unblock any pending writes into our circular buffer */ > >> if (started) { > >> + pr_debug("gs_start_tx: ttyGS%d\n", port->port_num); > >> + gs_start_tx(port); > >> tty_wakeup(port->port.tty); > > > > The tty_wakeup() will be called from gs_start_tx(), so should be removed > > from here. > > Not exactly. tty_wakeup() will be called from gs_start_tx() only when > there has been something actually transferred from the buffer. I didn't > want to change behavior when the buffer is empty, so I kept the explicit > tty_wakeup() call in place, intentionally. Please let me know if you > still think it should be removed. Indeed it is as you describe. You might add an argument that initializes do_tty_wake, but I'm not sure saving one tty_wakeup() on open is worth the trouble. > > The pr_debug() in other callers of gs_start_tx() say: > > "caller: start ttyGS%d". > > ??? > > $ git co gregkh/tty-next && grep -r 'caller: start tty' . > HEAD is now at 7788f54... serial_core: Remove unused member in uart_port > $ Replace 'caller' with a function calling gs_start_io(). Best Regards, Michał Mirosław