Context (measured, #359)
Per-frame ACK has a small measured asymmetry: ~15–20 duplicate deliveries per phase (frame arrived, ACK lost, peer retransmitted) and 1–3 ok=0-but-delivered per phase (peer wrote off a delivered frame). Safe direction — the TX ledger under-claims — but it wastes airtime on redundant retransmissions, and it scales with ACK exchanges. BlockAck replaces N ACK exchanges with one re-solicitable bitmap, and A-MPDU is already worth ~+30% goodput (docs/aggregation.md); the responder side is already BA-capable (SetAckResponder arms the BlockAck responder too).
Steps
- [verify] Report semantics under aggregation. Vendor check for J3: does CCX report per MPDU or per PPDU inside an A-MPDU, and how does the SW_DEFINE tag echo behave? The arq_e2e tag-reconstruction depends on the answer. (The payload pctr ledger is immune — it is per-MPDU by construction; the A-MPDU engine renumbers 802.11 seqs, which is why the bench never keyed on them.)
- [measure] Bench arm.
tests/arq_e2e_delivery.sh with DEVOURER_TX_AMPDU_MODE on the drone-sim + BA responder on the DUT: acked_undelivered (must stay 0), dup rate, ok=0-but-delivered, goodput vs the per-frame-ACK arms — same phases, same stalls.
- [revisit] Retry interplay. The earlier aggregation work found the data-queue aggregation path ignores noack and
rty0 suppresses — re-examine under the DEVOURER_TX_RETRY_LIMIT knob so the BA path's retransmission budget is actually configurable.
- [document] If the contract holds and asymmetry shrinks: recommend A-MPDU+BA as the ARQ transport for video streams in docs/aggregation.md + docs/scheduled-mac.md, with the measured numbers.
Acceptance
au = 0 under BA in all arms; dup + write-off rates compared against per-frame ACK with the same RF; goodput delta published.
Refs: #359, docs/aggregation.md, the SetAmpduMode/BA-responder work.
Context (measured, #359)
Per-frame ACK has a small measured asymmetry: ~15–20 duplicate deliveries per phase (frame arrived, ACK lost, peer retransmitted) and 1–3
ok=0-but-delivered per phase (peer wrote off a delivered frame). Safe direction — the TX ledger under-claims — but it wastes airtime on redundant retransmissions, and it scales with ACK exchanges. BlockAck replaces N ACK exchanges with one re-solicitable bitmap, and A-MPDU is already worth ~+30% goodput (docs/aggregation.md); the responder side is already BA-capable (SetAckResponder arms the BlockAck responder too).Steps
tests/arq_e2e_delivery.shwithDEVOURER_TX_AMPDU_MODEon the drone-sim + BA responder on the DUT: acked_undelivered (must stay 0), dup rate,ok=0-but-delivered, goodput vs the per-frame-ACK arms — same phases, same stalls.rty0suppresses — re-examine under theDEVOURER_TX_RETRY_LIMITknob so the BA path's retransmission budget is actually configurable.Acceptance
au = 0 under BA in all arms; dup + write-off rates compared against per-frame ACK with the same RF; goodput delta published.
Refs: #359, docs/aggregation.md, the SetAmpduMode/BA-responder work.