Skip to content

M2 — Reliability & link adaptation (per-UE ACK, HARQ, rate/power) #256

Description

@josephnef

Part of the 5G-NR RAN EPIC #254. Phase A.

Goal: make the scheduled cell reliable — per-UE hardware ACK (or a decided fallback), HARQ retransmission, and per-UE link adaptation of rate/power.

5G mapping

HARQ retransmission; per-UE link adaptation feeding the DCI grant (rate/pwr fields).

ACK framing corrected (from the architecture review)

The old "multi-MACID" framing was wrong: one ACK-responder MAC per physical node is normally sufficient — the AP has one BSSID and ACKs all UE uplinks addressed to it; each UE adapter ACKs its own downlinks. Multiple responder MACs are only needed if one adapter emulates several logical stations. The real capability question — does an injected unicast descriptor to an arbitrary UE request ACK, and does TxReport report the outcome? — is validated in M0 (#261), contract 3. M2 consumes that result.

Deliverables (into src/cell/)

  • hook up per-UE hardware ACK on the confirmed unicast path (AP↔UE, per M0's capability matrix).
  • src/cell/Harq.hsoftware HARQ with an explicit UE-feedback protocol. A no-ACK/broadcast TxReport "TX complete" only proves the frame aired, not that a UE received it — so HARQ requires: sequence number + HARQ process ID, cumulative-ACK/bitmap feedback, NACK + timeout rules, retransmission deadline + attempt limit, and receiver-side duplicate suppression. Hardware-ACK'd unicast can use TxReport (SW_DEFINE-matched) directly; the no-ACK path uses the feedback protocol.
  • src/cell/LinkAdapt.h — per-UE rate/power from the per-UE RX-quality window (M0 contract 4; NOT device-wide GetRxQuality) + retry rate, written into the grant map.

Reuses

SetAckResponder, SetAmpduMode, TxReport (state/retries/sw_define), M0's per-UE attribution.

Dependencies

M0 (#261) (ACK/TxReport matrix + per-UE attribution) and M1 (#255).

Test — tests/cell_reliability.sh

Attenuate one UE → HARQ recovers the flow vs a no-HARQ baseline; that UE's grant rate steps down (link adaptation); the other UE is untouched. Headless selftest: HARQ state machine (seq/PID, NACK/timeout, dedup) + link-adapt rate-step logic in the selftests aggregate.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions