Scheduling & Data

Uplink Scheduling —
The UE requests, the gNB decides

Uplink scheduling is more complex than downlink because the UE must first tell the gNB how much data it has — then wait for a grant. This section covers Buffer Status Reports, Scheduling Requests, power control, and the full PUSCH transmission chain including DFT-s-OFDM.

TS 38.321 §5.4 TS 38.213 §7 TS 38.214 §6.1

How uplink scheduling works

In downlink, the gNB decides everything and just tells the UE via DCI. In uplink, the process is more involved — the gNB cannot know how much data the UE has to send. The UE must first signal its buffer status, and the gNB grants uplink resources in response.

1
Data arrives in UE buffer
Application generates data (e.g. video upload). MAC layer sees the DTCH logical channel buffer fill up. Triggers BSR reporting procedure.
2
Scheduling Request (SR) sent on PUCCH
If no UL grant is available, the UE sends a 1-bit SR on the PUCCH resource configured in RRCSetup. This tells the gNB "I have data to send, please give me an uplink grant."
3
gNB sends DCI 0_1 (UL grant)
The gNB responds with a DCI 0_1 on PDCCH granting uplink resources: frequency allocation, time offset K2, MCS, and HARQ process number.
4
UE sends BSR + data on PUSCH
Using the grant K2 slots later, UE sends a Buffer Status Report MAC CE followed by as much data as the grant allows. The gNB uses the BSR to size future grants accurately.

Buffer Status Report (BSR)

A BSR reports the amount of data waiting in each logical channel group (LCG). LCGs are configured by RRC and group bearers by priority. The gNB uses the BSR to decide how many RBs to grant next time.

The MAC entity shall trigger a BSR procedure when data becomes available for transmission in the RLC entity of a logical channel which belongs to a LCG, and the data available in that LCG is larger than the data available in all other LCGs with lower priority.
3GPP TS 38.321, Section 5.4.5
BSR MAC CE — our UE reporting uplink dataTS 38.321 §6.1.3.1
// Short BSR format (1 LCG reported, 1 byte):
LCG ID    = 1   ← LCG 1 (user data bearers)
Buffer    = 18  ← index 18 → ~300 kB pending

// Long BSR format (all LCGs, used when >1 LCG has data):
LCG 0: 0   ← no SRB data pending
LCG 1: 18  ← 300 kB user data (video upload)
LCG 2: 0
...

// Buffer size index table (selected entries):
Index 0:   0 bytes
Index 10:  3,072 bytes (~3 kB)
Index 18: ~300 kB
Index 25: ~2 MB
Index 31: 30,576,752+ bytes (maximum)

DCI 0_1 — uplink grant fields

DCI Format 0_1 — UL grant decoded TS 38.212 §7.3.1.1.2
FieldValueMeaning
Freq domain resourceRIV=542RBs 8–29 (22 RBs)
Time domain (K2)K2=4Transmit 4 slots after this DCI
MCS1664-QAM, code rate 0.60
HARQ process0b0001 = 1UL HARQ process 1
TPC for PUSCH+1 dBSlight power increase commanded
UL/SUL indicator0Normal UL (not supplementary)

Uplink power control

Unlike the downlink where the gNB knows its own transmit power, uplink power control is a critical mechanism. The gNB wants the UE's signal to arrive at a specific target power — high enough to decode but not so high as to cause interference to other cells.

The UE shall set the PUSCH transmit power to:

P_PUSCH = min(P_CMAX, 10log10(2^μ × M_RB) + P_O_PUSCH + α × PL + ΔTF + f(i))
3GPP TS 38.213, Section 7.1.1, Equation 7.1.1-1
PUSCH power calculation — our UETS 38.213 §7.1.1
// Parameters (from RRC configuration):
P_O_PUSCH = −90 dBm  ← target received power at 1 RB (gNB configured)
α         = 0.8      ← path loss compensation factor (0=no comp, 1=full)
PL        = 128 dB   ← path loss (from RSRP measurement)
M_RB      = 22       ← allocated RBs
μ         = 1        ← numerology
ΔTF       = 0 dB     ← MCS-dependent offset
f(i)      = +1 dB    ← TPC accumulation from DCI

// Calculation:
P = 10×log10(2^1 × 22) + (−90) + 0.8×128 + 0 + 1
  = 16.4 + (−90) + 102.4 + 0 + 1
  = +29.8 dBm

// Capped at P_CMAX = 23 dBm:
P_PUSCH = min(23, 29.8) = 23 dBm  ← UE at max power

DFT-s-OFDM vs CP-OFDM for uplink

For uplink, the UE can use either CP-OFDM (same as downlink) or DFT-s-OFDM (DFT-spread OFDM). DFT-s-OFDM has a lower Peak-to-Average Power Ratio (PAPR) — crucial for the UE's power amplifier efficiency. Lower PAPR means the UE can transmit at higher average power without distortion, improving coverage.

The choice is configured by RRC. Our UE is configured for DFT-s-OFDM (single-layer, RRC configured transformPrecoder = enabled).

DFT-s-OFDM transmitter chain — PUSCH TS 38.211 §6.3.1
UL scheduling — our transmission
Trigger          → SR on PUCCH → DCI 0_1 received
Resources        → 22 RBs (8–29), K2=4 slots ahead
MCS              → 16 (64-QAM, rate 0.60)
Transmit power   → 23 dBm (max, path loss = 128 dB)
Waveform         → DFT-s-OFDM (low PAPR)