> -----Original Message----- > From: linux-serial-owner@xxxxxxxxxxxxxxx [mailto:linux-serial- > owner@xxxxxxxxxxxxxxx] On Behalf Of Alan Cox > Sent: den 28 juni 2012 18:24 > > On Thu, 28 Jun 2012 17:29:27 +0200 > Mikael Johansson <mikael.lars.johansson@xxxxxxxx> wrote: > > > Greetings, > > > > We have a problem with drivers/serial/artpec.c (Not yet in main tree) > > which uses hardware supported flow control (XON/XOFF). We do > cfmakeraw() > > and tcsetattr() from userspace to set a termios struct where (c_iflag > & > > IXON) is not set. The problem is that the call to tcsetattr() is not > > propagated down to serial_artpec_set_termios(), the reason being that > > uart_set_termios() doesn't think that IXON is a RELEVANT_IFLAG and > > returns prematurely instead of calling uart_change_speed --> > > ops->set_termios(). > > > > Could this be fixed by making IXON a RELEVANT_IFLAG?: > > That's actually insufficient for those cases - you can set the > characters > used for things as well plus IXANY and IXOFF. > > It's a stupid "optimisation" and the only reason I didn't get rid of it > before was in case it broke something else. Time for it to go. > > So yeah - I'd just delete it. Do you mean the entire if () { return; } statement or just the RELEVANT_IFLAG part? > If you are doing hardware XON/XOFF watch c_cc[VSTART] and c_cc[VSTOP]. > Those control the symbol used for soft flow control. We use STOP_CHAR(tty), we only have hardware support for stopping transfer, the tty layer kicks in and enables it again. > Alan /Johan -- To unsubscribe from this list: send the line "unsubscribe linux-serial" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html