|
@@ -289,8 +289,15 @@ static int ircomm_tty_block_til_ready(struct ircomm_tty_cb *self,
|
|
|
* If non-blocking mode is set, or the port is not enabled,
|
|
|
* then make the check up front and then exit.
|
|
|
*/
|
|
|
- if (filp->f_flags & O_NONBLOCK || tty->flags & (1 << TTY_IO_ERROR)){
|
|
|
- /* nonblock mode is set or port is not enabled */
|
|
|
+ if (test_bit(TTY_IO_ERROR, &tty->flags)) {
|
|
|
+ port->flags |= ASYNC_NORMAL_ACTIVE;
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (filp->f_flags & O_NONBLOCK) {
|
|
|
+ /* nonblock mode is set */
|
|
|
+ if (tty->termios.c_cflag & CBAUD)
|
|
|
+ tty_port_raise_dtr_rts(port);
|
|
|
port->flags |= ASYNC_NORMAL_ACTIVE;
|
|
|
IRDA_DEBUG(1, "%s(), O_NONBLOCK requested!\n", __func__ );
|
|
|
return 0;
|