From 2b6a053809ea5cf2c64231cae3343f2b2a0d9b6f Mon Sep 17 00:00:00 2001 From: nightjoker7 Date: Wed, 22 Apr 2026 21:40:07 -0500 Subject: [PATCH] RadioLibInterface: drop "caught missed RX_DONE" from WARN to DEBUG MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This log line fires in the normal recovery path for back-to-back RX events: a second packet's DIO1 edge arrives while the GPIO interrupt is still disabled from processing the previous packet (between ISR disable and handler re-enable), so no edge event queues for when we re-enable. The 1 Hz `pollMissedIrqs()` backup (added in #9658) then sees the RX_DONE IRQ flag is set, logs this line, and kicks the handler. This is the polling safety-net working as designed — not a warning condition. On a ROUTER_LATE Station G2 in an active urban mesh, it fires ~200 times per day under sustained RX load, burying actual warnings in noise. The file already uses LOG_DEBUG for analogous "we compensated for a normal radio oddity" messages: - LOG_DEBUG("Ignore false preamble detection") (line 123) - LOG_DEBUG("Ignore false header detection") (line 130) Align this one with that convention. Also expand the message slightly so anyone still watching DEBUG logs can understand what the line means without cross-referencing #9658. No behavior change — only log level. --- src/mesh/RadioLibInterface.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/mesh/RadioLibInterface.cpp b/src/mesh/RadioLibInterface.cpp index 7ef707e0db4..6a037835218 100644 --- a/src/mesh/RadioLibInterface.cpp +++ b/src/mesh/RadioLibInterface.cpp @@ -555,7 +555,12 @@ void RadioLibInterface::resetAGC() void RadioLibInterface::checkRxDoneIrqFlag() { if (iface->checkIrq(RADIOLIB_IRQ_RX_DONE)) { - LOG_WARN("caught missed RX_DONE"); + // This is the normal recovery path for back-to-back RX events where the + // second packet's DIO1 edge happens while the GPIO interrupt was still + // disabled (between ISR disable and the handler re-enabling it). + // Matches the log level used for other "compensated for a normal radio + // oddity" events in this file (e.g. "Ignore false preamble detection"). + LOG_DEBUG("Caught RX_DONE via poll (ISR-missed edge, normal under dense RX)"); notify(ISR_RX, true); } }