From 1f91de7ccca8cf268d7ea7e2bd7610d37e3ad490 Mon Sep 17 00:00:00 2001 From: Ryan Erickson Date: Tue, 7 Oct 2025 10:40:24 -0500 Subject: [PATCH] modem: backends: isr: notify remaining RX bytes If there are still bytes in the RX buffer, trigger another MODEM_PIPE_EVENT_RECEIVE_READY event. Signed-off-by: Ryan Erickson --- subsys/modem/backends/modem_backend_uart_isr.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/subsys/modem/backends/modem_backend_uart_isr.c b/subsys/modem/backends/modem_backend_uart_isr.c index 6c6c27c2db2e7..936d046d67bad 100644 --- a/subsys/modem/backends/modem_backend_uart_isr.c +++ b/subsys/modem/backends/modem_backend_uart_isr.c @@ -207,6 +207,8 @@ static int modem_backend_uart_isr_receive(void *data, uint8_t *buf, size_t size) read_bytes += ring_buf_get(&backend->isr.receive_rdb[receive_rdb_unused], buf, size); if (ring_buf_is_empty(&backend->isr.receive_rdb[receive_rdb_unused]) == false) { + /* More data available in the buffer */ + k_work_schedule(&backend->receive_ready_work, K_NO_WAIT); return (int)read_bytes; } @@ -218,8 +220,12 @@ static int modem_backend_uart_isr_receive(void *data, uint8_t *buf, size_t size) /* Read data from previously used buffer */ receive_rdb_unused = (backend->isr.receive_rdb_used == 1) ? 0 : 1; - read_bytes += ring_buf_get(&backend->isr.receive_rdb[receive_rdb_unused], - &buf[read_bytes], (size - read_bytes)); + read_bytes += ring_buf_get(&backend->isr.receive_rdb[receive_rdb_unused], &buf[read_bytes], + (size - read_bytes)); + if (ring_buf_is_empty(&backend->isr.receive_rdb[receive_rdb_unused]) == false) { + /* More data available in the buffer */ + k_work_schedule(&backend->receive_ready_work, K_NO_WAIT); + } return (int)read_bytes; }