Escalate coding rate on hop-zero flood retries

This commit is contained in:
mikecarper committed 2026-09-10 11:17:58 -07:00
1 parent b8ecd7fcac
commit 499e5bc94a
6 files changed
+415 -3

No files matched your search

+44 -1
View File
@@ -3344,6 +3344,49 @@ The count, path, group-data path, and advert controls work on repeater, room-ser
firmware. Flood forwarding must also be enabled for retries to run. Prefix,
ignore, bridge, and bucket controls are repeater-only.
#### Hop-zero flood retry coding rate
Flood packets with no path hops recorded yet use the same CR escalation ladder
as direct retries. The starting point is the active radio CR, since a flood has
no single next-hop repeater whose SNR can select a starting CR. Each retry uses
its attempt number and the active radio setting; it does not restart the ladder
from the previous retry's override. Forwarded packets with one or more recorded
hops use the active radio CR on every retry, including bridge retries whose
effective path length discounts ignored hops.
The initial transmission uses the active radio CR. This table lists retries
after that initial transmission; any later retries remain at CR8:
| Starting CR | Retry 1 | Retry 2 | Retry 3 | Retry 4 | Retry 5+ |
| --- | --- | --- | --- | --- | --- |
| CR4 | CR4 | CR5 | CR7 | CR7 | CR8 |
| CR5 | CR5 | CR7 | CR7 | CR8 | CR8 |
| CR6 | CR6 | CR7 | CR7 | CR8 | CR8 |
| CR7 | CR7 | CR7 | CR8 | CR8 | CR8 |
| CR8 | CR8 | CR8 | CR8 | CR8 | CR8 |
The ladder is shared across presets. Presets change the retry budget, not the
CR steps. At CR5, the maximum hop-zero schedules are:
| Preset | Configured flood count | Hop-zero retries | CR schedule after the initial send |
| --- | ---: | ---: | --- |
| `infra` | 1 | 2 | CR5, CR7 |
| `rooftop` | 3 | 6 | CR5, CR7, CR7, CR8, CR8, CR8 |
| `mobile` | 15 | 15 | CR5, CR7, CR7, then CR8 for retries 4-15 |
These budgets apply to group text and the origin login/message family
(`RESPONSE`, `TXT_MSG`, `ANON_REQ`, `PATH`). Existing payload caps, echo
cancellation, and retry eligibility still apply: `REQ` and OTA do not use
generic flood retries; other payloads allow at most one retry. An eligible
advert at CR5 therefore gets only its first CR5 retry.
`set flood.retry.count 0` continues to disable all automatic flood retries,
including hop zero. It leaves the initial transmission and all direct-retry
settings and CR schedules unchanged. Direct retry's `direct.retry.cr` switch
and SNR thresholds continue to control direct retries only. Per-packet CR
overrides are restored after transmission and do not change the saved radio
setting or physical preamble.
#### View or change flood retry count
**Search terms:** flood tx retries, flood retry attempts, flood retransmissions, broadcast retries.
@@ -3690,7 +3733,7 @@ set direct.retry.margin 10
- Non-repeater retry packets start at the current radio CR and follow the same escalation pattern, clamped at CR8. With the normal CR5 radio setting this is CR5, CR7, CR7, then CR8.
- Room-server and sensor firmware accept `on` or `off`; numeric SNR thresholds
are repeater-only because those roles do not keep recent-repeater SNR data.
- `off` disables per-packet retry CR overrides and uses the current radio CR.
- `off` disables per-packet direct-retry CR overrides and uses the current radio CR.
- Retry packets may use a different coding rate, but they keep the radio's normal physical preamble.
- Unknown repeaters start at `+3.00 dB` for adaptive CR selection.
- A failed unknown repeater is seeded at `+2.75 dB`.
+10
View File
@@ -332,6 +332,16 @@ The shared retry preset sets these flood defaults:
| `rooftop` | `3` | `2` | `1` |
| `mobile` | `15` | `1` | `1` |
Hop-zero flood retries use the direct-retry CR ladder starting at the active
radio CR. With CR5, `infra` allows CR5, CR7; `rooftop` allows CR5, CR7, CR7,
CR8, CR8, CR8; `mobile` allows CR5, CR7, CR7, then CR8 through retry 15.
These lists exclude the initial send and remain subject to payload caps and
echo cancellation. Floods with recorded hops keep the active CR.
`flood.retry.count 0` still disables every automatic flood retry, including
hop zero, without changing direct-retry settings or their CR schedule.
See [hop-zero flood retry coding rate](cli_commands.md#hop-zero-flood-retry-coding-rate)
for every starting CR and the payload limits.
Example for path-gated retry:
```text