lkml.org 
[lkml]   [2006]   [Jul]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [PATCH] Airprime driver improvements to allow full speed EvDO transfers
    From
    Date
    Ar Llu, 2006-07-10 am 14:36 +0400, ysgrifennodd Sergei Organov:
    > However, the problem is easily seen for USB-to-tty drivers where there
    > are no UARTS anywhere and speeds are rather high so that more than 4096
    > bytes (the line discipline buffer size) could be received before a task
    > has a chance to read from the line discipline buffer, and single flip
    > size is not limited by the hardware.

    There are no flip buffers in 2.6.17, they've gone. The tty buffering is
    now a proper queuing system.

    > Moreover, looking into the source code I don't see how tty can take care
    > not to over-stuff the ldisc. ldisc`s receive_buf() routine doesn't tell
    > the caller how many chars it actually consumed and silently throws away

    Not in the current kernel tree. The current tree does this:

    spin_lock_irqsave(&tty->buf.lock, flags);
    head = tty->buf.head;
    if (head != NULL) {
    tty->buf.head = NULL;
    for (;;) {
    int count = head->commit - head->read;
    if (!count) {
    if (head->next == NULL)
    break;
    tbuf = head;
    head = head->next;
    tty_buffer_free(tty, tbuf);
    continue;
    }
    if (!tty->receive_room) {
    schedule_delayed_work(&tty->buf.work, 1);
    break;
    }
    if (count > tty->receive_room)
    count = tty->receive_room;
    char_buf = head->char_buf_ptr + head->read;
    flag_buf = head->flag_buf_ptr + head->read;
    head->read += count;
    spin_unlock_irqrestore(&tty->buf.lock, flags);
    disc->receive_buf(tty, char_buf, flag_buf, count);
    spin_lock_irqsave(&tty->buf.lock, flags);
    }
    tty->buf.head = head;
    }
    spin_unlock_irqrestore(&tty->buf.lock, flags);

    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2006-07-10 12:57    [W:3.047 / U:0.024 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site