diff options
author | Paul Fulghum <paulkf@microgate.com> | 2006-06-28 07:26:47 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-06-28 17:59:05 -0400 |
commit | 817d6d3bceaf34c99f5343820f9b9e6021f0655c (patch) | |
tree | 651104833124262db46c2a372b7adb55289cd8dd /net/bluetooth/rfcomm/tty.c | |
parent | e0ac4761fa52acda90f9f53819c81474b511e3af (diff) |
[PATCH] remove TTY_DONT_FLIP
Remove TTY_DONT_FLIP tty flag. This flag was introduced in 2.1.X kernels
to prevent the N_TTY line discipline functions read_chan() and
n_tty_receive_buf() from running at the same time. 2.2.15 introduced
tty->read_lock to protect access to the N_TTY read buffer, which is the
only state requiring protection between these two functions.
The current TTY_DONT_FLIP implementation is broken for SMP, and is not
universally honored by drivers that send data directly to the line
discipline receive_buf function.
Because TTY_DONT_FLIP is not necessary, is broken in implementation, and is
not universally honored, it is removed.
Signed-off-by: Paul Fulghum <paulkf@microgate.com>
Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
Cc: Theodore Ts'o <tytso@mit.edu>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'net/bluetooth/rfcomm/tty.c')
-rw-r--r-- | net/bluetooth/rfcomm/tty.c | 8 |
1 files changed, 2 insertions, 6 deletions
diff --git a/net/bluetooth/rfcomm/tty.c b/net/bluetooth/rfcomm/tty.c index 74368f79ee5d..b81fad893328 100644 --- a/net/bluetooth/rfcomm/tty.c +++ b/net/bluetooth/rfcomm/tty.c | |||
@@ -480,12 +480,8 @@ static void rfcomm_dev_data_ready(struct rfcomm_dlc *dlc, struct sk_buff *skb) | |||
480 | 480 | ||
481 | BT_DBG("dlc %p tty %p len %d", dlc, tty, skb->len); | 481 | BT_DBG("dlc %p tty %p len %d", dlc, tty, skb->len); |
482 | 482 | ||
483 | if (test_bit(TTY_DONT_FLIP, &tty->flags)) { | 483 | tty_insert_flip_string(tty, skb->data, skb->len); |
484 | tty_buffer_request_room(tty, skb->len); | 484 | tty_flip_buffer_push(tty); |
485 | tty_insert_flip_string(tty, skb->data, skb->len); | ||
486 | tty_flip_buffer_push(tty); | ||
487 | } else | ||
488 | tty->ldisc.receive_buf(tty, skb->data, NULL, skb->len); | ||
489 | 485 | ||
490 | kfree_skb(skb); | 486 | kfree_skb(skb); |
491 | } | 487 | } |