From bea01b6399ad9b0495bc6def01bac8142ad77d5a Mon Sep 17 00:00:00 2001 From: m1nl Date: Sat, 28 Feb 2026 17:46:52 +0100 Subject: [PATCH] avoid tx delay build up setTransmitDelay increases delay for the very first packet in tx queue. Current implementation calls setTransmitDelay whenever TX or RX interrupt is received or canSendImmediately is false. In setTransmitDelay when tx_after is set, it will be always increased by add_delay which makes the value build up in busy environments very quickly. --- src/mesh/RadioLibInterface.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mesh/RadioLibInterface.cpp b/src/mesh/RadioLibInterface.cpp index 30cd587da23..a5f2b7aea3f 100644 --- a/src/mesh/RadioLibInterface.cpp +++ b/src/mesh/RadioLibInterface.cpp @@ -317,7 +317,7 @@ void RadioLibInterface::setTransmitDelay() if (p->tx_after) { unsigned long add_delay = p->rx_rssi ? getTxDelayMsecWeighted(p) : getTxDelayMsec(); unsigned long now = millis(); - p->tx_after = min(max(p->tx_after + add_delay, now + add_delay), now + 2 * getTxDelayMsecWeightedWorst(p->rx_snr)); + p->tx_after = min(max((unsigned long)p->tx_after, now + add_delay), now + 2 * getTxDelayMsecWeightedWorst(p->rx_snr)); notifyLater(p->tx_after - now, TRANSMIT_DELAY_COMPLETED, false); } else if (p->rx_snr == 0 && p->rx_rssi == 0) { /* We assume if rx_snr = 0 and rx_rssi = 0, the packet was generated locally.