You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
CCX report coverage is ~100% at 1 k fps and collapses to 53% at ~2.3 k fps (219,452 reports / 410,820 submitted) — while staying 100% on the retry-dropped population (no-ACK frames burn retries, throttling the sender so the fw reporter keeps up). Delivery still happened (ledger identity held delta-0), but half the frames get no per-packet verdict: any accounting scheme built on tx.report silently loses resolution exactly when the link is busiest.
Steps
[measure] Attribute the loss. Analyzer pass over the recorded drone.jsonl runs: sum the missed field deltas vs the unreported count — fw-emission drop vs C2H-path loss. Then a rate sweep (1/2/3/4 k fps) for the coverage-vs-rate envelope. One bench evening; changes what the fix can be.
[build] Deterministic sampling.DEVOURER_TX_REPORT=N semantics: SPE_RPT requested on every Nth descriptor (tag still stamped on all), so coverage becomes a designed 1/N with binomial confidence instead of load-dependent decay. Analyzer support for sampled ledgers.
[build] Windowed RX receipts — the truth tier. The ACK horizon is chip-FIFO admission and SIFS timing means it can never move (ARQ end-to-end delivery bench: three-ledger harness; count spsc-fat pool-exhaustion drops #359); end-to-end delivery truth belongs to the app layer. Receiver side: per-TA seq bitmap over a window (extend cell::UeRxAttribution); a compact receipt frame (own 802.11 data frame, versioned TLV) injected on the existing feedback path; TX side reconciles receipts into a delivered-set. Wire into duplex/txdemo for the bench.
Acceptance
(1) coverage curve + attribution documented.
(2) sampled mode measured on the bench: estimated delivery within CI of the rx.seq ground truth.
(3) receipts agree frame-exactly with the DUT rx.seq ledger on tests/arq_e2e_delivery.sh — the receipt path is only useful if it is as trustworthy as the ledger it replaces in the field.
Context (measured, #359)
CCX report coverage is ~100% at 1 k fps and collapses to 53% at ~2.3 k fps (219,452 reports / 410,820 submitted) — while staying 100% on the retry-dropped population (no-ACK frames burn retries, throttling the sender so the fw reporter keeps up). Delivery still happened (ledger identity held delta-0), but half the frames get no per-packet verdict: any accounting scheme built on
tx.reportsilently loses resolution exactly when the link is busiest.Steps
drone.jsonlruns: sum themissedfield deltas vs the unreported count — fw-emission drop vs C2H-path loss. Then a rate sweep (1/2/3/4 k fps) for the coverage-vs-rate envelope. One bench evening; changes what the fix can be.DEVOURER_TX_REPORT=Nsemantics: SPE_RPT requested on every Nth descriptor (tag still stamped on all), so coverage becomes a designed 1/N with binomial confidence instead of load-dependent decay. Analyzer support for sampled ledgers.cell::UeRxAttribution); a compact receipt frame (own 802.11 data frame, versioned TLV) injected on the existing feedback path; TX side reconciles receipts into a delivered-set. Wire into duplex/txdemo for the bench.Acceptance
tests/arq_e2e_delivery.sh— the receipt path is only useful if it is as trustworthy as the ledger it replaces in the field.Refs: #359, docs/scheduled-mac.md (ACK/TxReport contract), cell::UeRxAttribution.