diff options
Diffstat (limited to 'drivers/serial')
-rw-r--r-- | drivers/serial/jsm/jsm_tty.c | 43 |
1 files changed, 3 insertions, 40 deletions
diff --git a/drivers/serial/jsm/jsm_tty.c b/drivers/serial/jsm/jsm_tty.c index 281f23a371b2..94ec66372508 100644 --- a/drivers/serial/jsm/jsm_tty.c +++ b/drivers/serial/jsm/jsm_tty.c @@ -500,13 +500,11 @@ void jsm_input(struct jsm_channel *ch) { struct jsm_board *bd; struct tty_struct *tp; - struct tty_ldisc *ld; u32 rmask; u16 head; u16 tail; int data_len; unsigned long lock_flags; - int flip_len = 0; int len = 0; int n = 0; int s = 0; @@ -574,45 +572,13 @@ void jsm_input(struct jsm_channel *ch) jsm_printk(READ, INFO, &ch->ch_bd->pci_dev, "start 2\n"); - /* - * If the rxbuf is empty and we are not throttled, put as much - * as we can directly into the linux TTY buffer. - * - */ - flip_len = TTY_FLIPBUF_SIZE; - - len = min(data_len, flip_len); - len = min(len, (N_TTY_BUF_SIZE - 1) - tp->read_cnt); - ld = tty_ldisc_ref(tp); - - /* - * If we were unable to get a reference to the ld, - * don't flush our buffer, and act like the ld doesn't - * have any space to put the data right now. - */ - if (!ld) { - len = 0; - } else { - /* - * If ld doesn't have a pointer to a receive_buf function, - * flush the data, then act like the ld doesn't have any - * space to put the data right now. - */ - if (!ld->receive_buf) { - ch->ch_r_head = ch->ch_r_tail; - len = 0; - } - } - - if (len <= 0) { + if (data_len <= 0) { spin_unlock_irqrestore(&ch->ch_lock, lock_flags); jsm_printk(READ, INFO, &ch->ch_bd->pci_dev, "jsm_input 1\n"); - if (ld) - tty_ldisc_deref(ld); return; } - len = tty_buffer_request_room(tp, len); + len = tty_buffer_request_room(tp, data_len); n = len; /* @@ -647,7 +613,7 @@ void jsm_input(struct jsm_channel *ch) else if (*(ch->ch_equeue +tail +i) & UART_LSR_FE) tty_insert_flip_char(tp, *(ch->ch_rqueue +tail +i), TTY_FRAME); else - tty_insert_flip_char(tp, *(ch->ch_rqueue +tail +i), TTY_NORMAL); + tty_insert_flip_char(tp, *(ch->ch_rqueue +tail +i), TTY_NORMAL); } } else { tty_insert_flip_string(tp, ch->ch_rqueue + tail, s) ; @@ -666,9 +632,6 @@ void jsm_input(struct jsm_channel *ch) /* Tell the tty layer its okay to "eat" the data now */ tty_flip_buffer_push(tp); - if (ld) - tty_ldisc_deref(ld); - jsm_printk(IOCTL, INFO, &ch->ch_bd->pci_dev, "finish\n"); } |