|
@@ -1146,11 +1146,14 @@ static void uart_set_termios(struct tty_struct *tty, struct ktermios *old_termio
|
|
|
|
|
|
/*
|
|
|
* These are the bits that are used to setup various
|
|
|
- * flags in the low level driver.
|
|
|
+ * flags in the low level driver. We can ignore the Bfoo
|
|
|
+ * bits in c_cflag; c_[io]speed will always be set
|
|
|
+ * appropriately by set_termios() in tty_ioctl.c
|
|
|
*/
|
|
|
#define RELEVANT_IFLAG(iflag) ((iflag) & (IGNBRK|BRKINT|IGNPAR|PARMRK|INPCK))
|
|
|
-
|
|
|
if ((cflag ^ old_termios->c_cflag) == 0 &&
|
|
|
+ tty->termios->c_ospeed == old_termios->c_ospeed &&
|
|
|
+ tty->termios->c_ispeed == old_termios->c_ispeed &&
|
|
|
RELEVANT_IFLAG(tty->termios->c_iflag ^ old_termios->c_iflag) == 0)
|
|
|
return;
|
|
|
|