>
Home5G NRPHY — Physical LayerUplink Link Adaptation (ULLA)
📵 PHY — Physical LayerAdvanced

Uplink Link Adaptation (ULLA) in 5G NR

Downlink link adaptation runs on a CQI the UE reports. Uplink has no such report — the gNB has to work out the right MCS from what it can directly measure off the UE’s own transmissions, and it shares that job with power control.

📚 3GPP-basedTS 38.214TS 38.213TS 38.212

Everything on the Link Adaptation (OLLA/ILLA) page — the inner loop mapping channel quality to MCS, the outer loop nudging that mapping to hit a BLER target — has a mirror image running in the uplink direction. The mechanics are structurally similar, but the starting point is different: downlink link adaptation begins with a CQI report the UE sends the gNB. Uplink link adaptation has no such report to read, because the gNB is the receiver — it has to estimate the uplink channel itself, from the UE's own transmissions, before it can decide what MCS the UE should use next.

Introduction

Uplink Link Adaptation (ULLA) is the process by which the gNB selects the Modulation and Coding Scheme (MCS) a UE should use for its next PUSCH transmission, adapted to the current uplink channel quality. The goal is identical to downlink link adaptation: keep the transport block error rate (BLER) close to a target — usually around 10% for initial transmissions — while pushing as much data through as the channel will currently support. What differs is entirely about where the measurement comes from and who owns the decision loop.

In the downlink, the UE measures its own received signal (via CSI-RS) and reports a CQI back to the gNB, which the gNB's scheduler then maps to an MCS. In the uplink, the roles invert: the gNB is the receiver, so it is the one doing the measuring, and there is no equivalent "report" step — the gNB simply looks at what it received and decides.

Why uplink needs its own treatment

Three things make uplink link adaptation structurally distinct from downlink, and are worth holding in mind through the rest of this page:

  • No CQI equivalent. There is no standardized "UL-CQI" message the UE sends describing its own uplink channel. The gNB has to infer channel quality itself from signals the UE already transmits.
  • Power control shares the job. In the downlink, the gNB's transmit power is largely fixed per cell; link adaptation does all the work of matching data rate to channel quality. In the uplink, the UE's transmit power is itself a variable the network can command (see Open-Loop Power Control and Closed-Loop Power Control) — so the network has two dials for the same problem: raise the UE's power, or lower the MCS. ULLA can't be reasoned about in isolation from power control.
  • The measurement itself costs uplink resources. A CSI-RS is cheap for the gNB to transmit whenever needed. An SRS, by contrast, is transmitted by every UE that needs to be measured, so scheduling it competes with actual uplink data traffic — channel-quality visibility is more resource-constrained on the uplink.

Measuring the channel: SRS instead of CQI

The gNB's primary tool for estimating uplink channel quality is the Sounding Reference Signal (SRS), a UE-transmitted reference signal configured via RRC (SRS-Config) on a periodic, semi-persistent, or aperiodic basis. The gNB measures the received SRS to estimate the uplink SINR across the relevant resource blocks, and that estimate is the uplink equivalent of a CQI report — except it was measured directly rather than reported.

Two other, cheaper signals also feed the picture: the gNB can extract channel-quality information from the demodulation reference signal (DMRS) carried on every actual PUSCH transmission, and, for TDD deployments, it can lean on channel reciprocity — since uplink and downlink share the same frequency in TDD, a downlink channel estimate (from CSI-RS/SSB) is a reasonable proxy for the uplink channel too, within the coherence time of the channel. FDD deployments, with separate UL/DL frequencies, cannot use reciprocity and depend more heavily on SRS.

UL inner loop: SINR estimate → MCS

Structurally this mirrors ILLA exactly, just fed by a different input. The gNB takes its SRS-based (or DMRS-based) SINR estimate for the UE, maps it to an achievable MCS using the same class of MCS/TBS tables defined in TS 38.214 that downlink link adaptation uses, and signals the chosen MCS to the UE in the uplink grant — DCI format 0_0 or 0_1 carried on PDCCH. The UE does not choose its own MCS; it simply transmits at whatever the grant specifies.

🎯

Key point: the UE has no say in its own uplink MCS. Every uplink transmission's modulation and code rate is entirely the gNB's decision, communicated via the grant — there's no uplink equivalent of the UE "requesting" a particular MCS.

UL outer loop: correcting for BLER

Just as downlink OLLA nudges the effective SINR target up or down based on observed HARQ outcomes, the uplink runs the same style of correction. The gNB tracks the ACK/NACK outcome of each uplink HARQ process (which it knows directly, since it's the one decoding the PUSCH), and if the observed BLER drifts away from the target — too many NACKs means the SINR estimate was optimistic, too few means it was pessimistic and throughput is being left on the table — the gNB applies a small SINR offset to future MCS selections for that UE, growing more conservative after failures and less conservative after a run of successes.

The mechanics are the same integrator-style up/down step logic as downlink OLLA, just closing the loop entirely on the gNB side, since it owns both the transmission decision (the grant) and the outcome observation (the HARQ result) — there is no cross-link reporting delay the way there is for a UE-reported downlink CQI.

DL AMC vs UL AMC — the structural differences

Downlink AMCUplink AMC (ULLA)
Who measures the channelUE (via CSI-RS)gNB (via SRS / DMRS, or reciprocity in TDD)
How the measurement reaches the decision-makerExplicit CQI report from UE to gNB (PUCCH/PUSCH)No report needed — gNB measures directly
Who decides the MCSgNB schedulergNB scheduler
Reporting delay / stalenessCQI can be several ms old by the time it's usedSRS-based estimate can be equally stale; DMRS-based is essentially instantaneous (measured on the actual transmission)
Coupled control loopIndependent of downlink power (largely fixed per cell)Tightly coupled to UL power control — MCS and TX power are jointly tuned
Outer-loop feedback sourceDownlink HARQ ACK/NACK (gNB observes, UE reports)Uplink HARQ ACK/NACK (gNB observes directly)

Sharing the job with power control

This is the piece with no downlink equivalent. When an uplink transmission is failing too often, the gNB has two independent levers, not one:

  • Lower the MCS — use a more robust modulation/code rate at the same transmit power, trading peak rate for reliability. This is ULLA's job.
  • Raise the transmit power — via a TPC command in closed-loop power control, improving the received SINR directly so the existing MCS becomes viable again.

In practice a well-tuned network uses both together: open-loop power control gives the UE a sensible starting power based on its own path-loss estimate, closed-loop power control makes small corrective nudges from TPC commands, and ULLA's inner/outer loops pick the MCS that best fits whatever SINR that power level is currently delivering. None of the three loops is tuned in isolation — they're solving one shared reliability-vs-throughput problem from different angles.

Worked Example

A UE is scheduled for PUSCH. The gNB's most recent SRS measurement puts the estimated uplink SINR at 8 dB, which maps to MCS index 14 (16-QAM, moderate code rate) in the UL MCS table. The gNB grants that MCS via DCI 0_1.

  • Transmission 1: decoded successfully (ACK). OLLA nudges its internal SINR offset up slightly — the channel is performing a bit better than the raw estimate suggested.
  • Transmission 2 (next grant, same UE): with the nudged-up offset, the gNB grants MCS index 15 — a small step up. Result: NACK.
  • Outer loop reacts: the gNB's BLER tracker sees this NACK, and since it's now above the 10% target for this UE's recent window, the SINR offset is pulled back down — more than the single up-step, since OLLA's down-step is typically larger to react faster to failures than it climbs after successes (this asymmetry is exactly how it holds the long-run BLER near target instead of drifting).
  • Transmission 3: back to MCS index 14. If it also fails, and the closed-loop power control TPC hasn't compensated yet, the gNB may drop the MCS further (e.g. to 12, QPSK) rather than keep trimming the same 16-QAM point — while a TPC command increases the UE's transmit power in parallel for the following grants.

Summary

Uplink link adaptation runs the same inner-loop/outer-loop shape as downlink — a channel-quality estimate mapped to an MCS, corrected over time by observed HARQ outcomes against a BLER target — but with the gNB doing its own measuring (via SRS, DMRS, or TDD reciprocity) instead of reading a UE-reported CQI, and with the added twist that MCS is only one of two levers available: uplink power control is the other, and the two are tuned together rather than independently.

Q&A Quick LTE 4G / 5G NR Interview Questions

Q. Why doesn't the UE report a CQI for the uplink the way it does for the downlink?

A. Because the gNB is the receiver in the uplink direction, so it's the one positioned to measure the channel directly — via SRS, DMRS, or TDD reciprocity — without needing the UE to measure and report anything back first.

Q. What's the practical difference between fixing an uplink BLER problem with ULLA vs with power control?

A. Lowering the MCS (ULLA) keeps the UE's transmit power the same but reduces peak throughput by using a more robust modulation/code rate. Raising the transmit power (closed-loop power control) can preserve the existing MCS and throughput, but costs more UE battery and can raise interference to neighbouring cells — the two are complementary tools for the same reliability problem.

Q. In a TDD system, why can the gNB sometimes skip SRS-based measurement?

A. Channel reciprocity: in TDD, uplink and downlink share the same carrier frequency, so within the channel's coherence time a downlink measurement (from CSI-RS/SSB) is a reasonable proxy for the uplink channel too, reducing how often a dedicated SRS is strictly needed.