Skip to content

Commit e77cab7

Browse files
ij-intelgregkh
authored andcommitted
serial: Create uart_xmit_advance()
A very common pattern in the drivers is to advance xmit tail index and do bookkeeping of Tx'ed characters. Create uart_xmit_advance() to handle it. Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com> Cc: stable <stable@kernel.org> Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com> Link: https://lore.kernel.org/r/20220901143934.8850-2-ilpo.jarvinen@linux.intel.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1 parent 7e18e42 commit e77cab7

1 file changed

Lines changed: 17 additions & 0 deletions

File tree

include/linux/serial_core.h

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -624,6 +624,23 @@ struct uart_state {
624624
/* number of characters left in xmit buffer before we ask for more */
625625
#define WAKEUP_CHARS 256
626626

627+
/**
628+
* uart_xmit_advance - Advance xmit buffer and account Tx'ed chars
629+
* @up: uart_port structure describing the port
630+
* @chars: number of characters sent
631+
*
632+
* This function advances the tail of circular xmit buffer by the number of
633+
* @chars transmitted and handles accounting of transmitted bytes (into
634+
* @up's icount.tx).
635+
*/
636+
static inline void uart_xmit_advance(struct uart_port *up, unsigned int chars)
637+
{
638+
struct circ_buf *xmit = &up->state->xmit;
639+
640+
xmit->tail = (xmit->tail + chars) & (UART_XMIT_SIZE - 1);
641+
up->icount.tx += chars;
642+
}
643+
627644
struct module;
628645
struct tty_driver;
629646

0 commit comments

Comments
 (0)