• V
    serial: 8250: 8250_omap: Fix throttling when DMA is enabled · 08fb00c6
    Vignesh R 提交于
    omap_8250_throttle() is called when tty RX buffer is about to overflow
    and can no longer keep up with the rate at which UART is receiving data.
    So, the expectation of this callback, is that UART stops RX and asserts
    HW flow control to signal the sender to stop sending more data.
    omap_8250_throttle() disables RX FIFO interrupts thus FIFO is no longer
    serviced, leading to assertion of flow control once RX FIFO is full.
    But, this does not work when DMA is enabled as driver keeps queuing new
    RX DMA request in completion handler without brothering about throttling
    request made by the higher layer.
    This patch introduces a flag that can be used to determine whether or
    not to queue next RX DMA request based on throttling request.
    
    Without this patch, tty buffer overflows are reported at higher
    baudrates.
    Signed-off-by: NVignesh R <vigneshr@ti.com>
    Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    08fb00c6
8250_omap.c 38.0 KB