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

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions