Re: Bug in USB FTDI SIO driver
From: Alan Cox <hidden>
Date: 2012-09-08 17:11:48
On Sat, 08 Sep 2012 12:14:39 +0200 peter.sheeren@axiris.be wrote:
if (((old_priv.flags & ASYNC_SPD_MASK) !=
(priv->flags & ASYNC_SPD_MASK)) ||
(((priv->flags & ASYNC_SPD_MASK) == ASYNC_SPD_CUST) &&
(old_priv.custom_divisor != priv->custom_divisor))) {
change_speed(tty, port);
Function change_speed() is called only when the baudrate
(custom_divisor) has changed but after a USB replug this assumption is
wrong. Also note that /dev/ttyUSB0 remains in existence on the system
under test. If it were up to me, I'd always send the baudrate setting
over the USB bus nomatter whether the baudrate (supposedly) has
changed or not.We don't do that because if you gratuitously send speed changes that have no effect the hardware seems to reset its configuration and you lose characters, something a lot of software doesn't expect. If you think that if check is the problem can you replace it with an unconditional call to change_speed(tty, port) and the re-test. That will confirm if it is the cause. If it is then we can think about fixing it somehow. Alan