summaryrefslogtreecommitdiff
path: root/drivers/tty/ipwireless
diff options
context:
space:
mode:
authorJeremy Kerr <jk@ozlabs.org>2018-03-27 06:48:27 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2018-04-23 11:16:50 +0300
commit5909c0bf9c7a17c52cf357bf5e752a76b8d72568 (patch)
tree3ccbc3fa01f81d6d08d55eee2a6cb578fefcd24c /drivers/tty/ipwireless
parent989983ea849d9421e8b9cd11f18e072fe00ea0d7 (diff)
downloadlinux-5909c0bf9c7a17c52cf357bf5e752a76b8d72568.tar.xz
serial/aspeed-vuart: Implement quick throttle mechanism
Although we populate the ->throttle and ->unthrottle UART operations, these may not be called until the ldisc has had a chance to schedule and check buffer space. This means that we may overflow the flip buffers without ever hitting the ldisc's throttle threshold. This change implements an interrupt-based throttle, where we check for space in the flip buffers before reading characters from the UART's FIFO. If there's no space available, we disable the RX interrupt and schedule a timer to check for space later. For this, we need an unlocked version of the set_throttle function to be able to change throttle state from the irq_handler, which already holds port->lock. This prevents a case where we drop characters under heavy RX load. Signed-off-by: Jeremy Kerr <jk@ozlabs.org> Tested-by: Eddie James <eajames@linux.vnet.ibm.com> Tested-by: Joel Stanley <joel@jms.id.au> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/tty/ipwireless')
0 files changed, 0 insertions, 0 deletions