Repository navigation
cell M1: QoS classes (CellScheduler) — 5QI sets each UE's HARQ budget, discard timer and link adaptation - #569
Conversation
PR Summary by QodoAdd 5QI-based per-UE QoS policies to the cell DU
AI Description
Diagram
High-Level Assessment
Files changed (4)
|
Code Review by Qodo
1. Expired downlink packets are retransmitted
|
…E's HARQ budget, DL discard timer and link adaptation src/cell/CellScheduler.h: the 5QIs 1 2 3 5 7 9 with their standardized characteristics (TS 23.501 table 5.7.4-1); policy_for() derives a UE's HARQ attempts (1 + the HARQ round trips that fit its PDB after the first superframe), a DL discard timer (the PDB, never below a superframe + 5 ms; also applied to a due retransmission) and link adaptation from the PER target, flagging a PDB shorter than a superframe (pdb_unmet); admission_order() and preempt_for() rank by priority level (headless). HarqSender::abandon(seq). The DU takes CELL_QOS="ue:5qi,..." (cell.qos, cell.dl.discard); unlisted UEs are served as before. Rig (testrig m1_qos.sh, lossy DL): no class 8.1 % lost (deliveries up to attempt 4); 5QI 9 at the cell's 3-superframe round trip 1 attempt, 52 %; with a 1-superframe round trip 2 attempts, 33 %; 5QI 1 54 %. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
Review fixes pushed:
Rig on the final build (
|
0b58880 to
85d96c5
Compare
|
The Qodo comment still lists the original four findings. All four are fixed in the pushed head (see the fix comment above):
Adding skip-qodo-gate. |
Closes the last open M1 deliverable of #255 ("
CellScheduler— 5QI-style QoS classes producing the grant map"), epic #254.M1's grid is fixed (one DL and one UL opportunity per UE per superframe), so a class can't buy airtime. It decides how each UE is served, and who is served when the pool is full.
src/cell/CellScheduler.h(headless, ctestcell_core)qos_class(5qi): 5QI 1, 2, 3, 5, 7, 9 with their standardized characteristics (3GPP TS 23.501 table 5.7.4-1): resource type, default priority level, PDB, PER.policy_for(class, superframe):CELL_HARQ_ATTEMPTS);pdb_unmetwhen the PDB is shorter than one superframe. One DL opportunity per superframe can't meet it, and that's said rather than pretended.admission_order()(priority, GBR first at a tie, first come) andpreempt_for()(only a strictly lower priority). Headless; the DU doesn't preempt yet.DU (
examples/cell):CELL_QOS="ue:5qi,...", with each UE's policy logged (cell.qos) and discards logged (cell.dl.discard). A UE that isn't listed is served exactly as before (the cell's HARQ and link adaptation, no discard); DAPS's buffered PDUs, for one, are older than any budget. A malformed or unknown entry stops the DU at start.Rig (testrig
m1_qos.sh: UE1's DL at a fixed 54 Mb/s, link adaptation off, −15 dB per-packet attenuation so about half the first transmissions are lost; 3 interleaved rounds, all pass):A tighter budget bounds the delay (each retry is a superframe) and pays in delivery on this deliberately lossy link. Run-to-run variance is large: 5QI 9 missed 72 / 103 / 168, because the attenuation sits on a steep edge (−14 dB lost nothing, −17 everything).
🤖 Generated with Claude Code