The purpose and function of NR MAC CE is almost same as LTE MAC CE.
When we say 'communication between UE and Network', we normally think about only signaling message (RRC or NAS message). When I say 'communication' in this case, it means 'control command exchange' between UE and network, not the data traffic.
In UMTS case, it is true that only RRC and NAS message functions as communication between UE and Network, but in LTE and NR a special type of communication is introduced working at MAC Layer. It implies that there are special MAC structure that carries special control information. These special MAC structure carrying the control information is called 'MAC CE', which means 'MAC Control Element'. Motivation for this kind of communication would be obvious. It would be much faster comparing to RRC layer or NAS layer communication.
This special MAC structure is implemented as a special bit string in LCID field of MAC Header (Refer to LTE MAC page for the details of MAC header).
There are several MAC CE in downlink MAC and also several MAC CE in uplink MAC. Following table from 38.213 shows the LCID types of MAC header. The parts marked in red rectangle is LCID representing various MAC CE. These are relatively small set of MAC CE defined in 38.321 Rel 15 - 6.2.1. You may see this gets longer as new release comes out as you have seen in LTE.
- Evolution of MAC CE
- MAC CE List in 38.321 v15.1
- MAC CE List in 38.321 v15.3
- MAC CE List in 38.321 v16.4
- MAC CE List in 38.321 v17.1
- MAC CE List in 38.321 v19.0
- List of MAC CE
- How is a MAC CE actually framed inside a MAC PDU ?
- Where does a MAC CE sit inside a MAC PDU ?
- Why did the LCID space have to be extended ?
- When does a control action use a MAC CE rather than RRC or DCI ?
- What do the MAC CEs do, grouped by purpose ?
- Reference
Evolution of MAC CE
As in LTE, the structure and functionality of MAC CE would be an area that is evolving continuously as new 3GPP release comes out. In this section, I will consollidates MAC CE LCID structure from different releases so that we can keep track of the structure and functional evolution of MAC CE.
LCID: The Logical Channel ID field identifies the logical channel instance of the corresponding MAC SDU or the type of the corresponding MAC CE or padding as described in 38.321-Tables 6.2.1-1, 6.2.1-1c and 6.2.1-2 for the DL-SCH and UL-SCH respectively. There is one LCID field per MAC subheader. The size of the LCID field is 6 bits. If the LCID field is set to 34, one additional octet is present in the MAC subheader containing the eLCID field and follow the octet containing LCID field. If the LCID field is set to 33, two additional octets are present in the MAC subheader containing the eLCID field and these two additional octets follow the octet containing LCID field.
eLCID: The extended Logical Channel ID field identifies the logical channel instance of the corresponding MAC SDU or the type of the corresponding MAC CE as described in 38.321-tables 6.2.1-1a, 6.2.1-1b, 6.2.1-2a and 6.2.1-2b for the DL-SCH and UL-SCH respectively. The size of the eLCID field is either 8 bits or 16 bits.
MAC CE List in 38.321 v15.1

MAC CE List in 38.321 v15.3

MAC CE List in 38.321 v16.4

MAC CE List in 38.321 v17.1



MAC CE List in 38.321 v19.0
< 38.321 - Table 6.2.1-1: Values of LCID for DL-SCH >
|
Codepoint/Index |
LCID values |
|---|---|
|
0 |
CCCH |
|
1–32 |
Identity of the logical channel of DCCH, DTCH and multicast MTCH |
|
33 |
Extended logical channel ID field (two-octet eLCID field) |
|
34 |
Extended logical channel ID field (one-octet eLCID field) |
|
35–46 |
Reserved |
|
47 |
Recommended bit rate |
|
48 |
SP ZP CSI-RS Resource Set Activation/Deactivation |
|
49 |
PUCCH spatial relation Activation/Deactivation |
|
50 |
SP SRS Activation/Deactivation |
|
51 |
SP CSI reporting on PUCCH Activation/Deactivation |
|
52 |
TCI State Indication for UE-specific PDCCH |
|
53 |
TCI States Activation/Deactivation for UE-specific PDSCH |
|
54 |
Aperiodic CSI Trigger State Subselection |
|
55 |
SP CSI-RS/CSI-IM Resource Set Activation/Deactivation |
|
56 |
Duplication Activation/Deactivation |
|
57 |
SCell Activation/Deactivation (four octets) |
|
58 |
SCell Activation/Deactivation (one octet) |
|
59 |
Long DRX Command |
|
60 |
DRX Command |
|
61 |
Timing Advance Command |
|
62 |
UE Contention Resolution Identity |
|
63 |
Padding |
< 38.321 - Table 6.2.1-1a: Values of two-octet eLCID for DL-SCH >
|
Codepoint |
Index |
LCID values |
|---|---|---|
|
0 to (216 − 1) |
320 to (216 + 319) |
Identity of the logical channel |
< 38.321 - Table 6.2.1-1b: Values of one-octet eLCID for DL-SCH >
|
Codepoint |
Index |
LCID values |
|---|---|---|
|
0 to 207 |
64 to 271 |
Reserved |
|
208 |
272 |
On-demand SSB Activation/Deactivation (one octet eL field) |
|
209 |
273 |
On-demand SSB Activation/Deactivation (four octet eL field) |
|
210 |
274 |
SP CSI-RS/CSI-IM Resource Set Activation/Deactivation |
|
211 |
275 |
UL Rate Control |
|
212 |
276 |
Pathloss Offset Update |
|
213 |
277 |
SP CSI-RS/CSI-IM Resource Set Activation/Deactivation for Candidate Cell |
|
214 |
278 |
Enhanced LTM Cell Switch Command |
|
215 |
279 |
Aggregated SP Positioning SRS Activation/Deactivation |
|
216 |
280 |
Enhanced SP CSI reporting on PUCCH Activation/Deactivation |
|
217 |
281 |
Cross-RRH TCI State Indication for UE-specific PDCCH |
|
218 |
282 |
LTM Cell Switch Command |
|
219 |
283 |
Candidate Cell TCI States Activation/Deactivation |
|
220 |
284 |
SP SSB Based Beam Indication |
|
221 |
285 |
Activation/Deactivation for Joint TCI States |
|
222 |
286 |
Enhanced Unified TCI states Activation/Deactivation MAC CE for Joint TCI States |
|
223 |
287 |
Enhanced Unified TCI states Activation/Deactivation MAC CE for Separate TCI States |
|
224 |
288 |
NCR Access Link Beam Indication |
|
225 |
289 |
NCR Downlink Backhaul Link Beam Indication |
|
226 |
290 |
NCR Uplink Backhaul Link Beam Indication |
|
227 |
291 |
Serving Cell Set based SRS TCI State Indication |
|
228 |
292 |
SP/IAP SRS TCI State Indication |
|
229 |
293 |
BFD-RS Indication |
|
230 |
294 |
Differential Koffset |
|
231 |
295 |
Enhanced SCell Activation/Deactivation (one octet eL field) |
|
232 |
296 |
Enhanced SCell Activation/Deactivation (four octet eL field) |
|
233 |
297 |
Unified TCI States Activation/Deactivation |
|
234 |
298 |
PUCCH Power Control Set Update for multiple PUCCH repetition |
|
235 |
299 |
PUCCH spatial relation Activation/Deactivation for multiple TRP PUCCH repetition |
|
236 |
300 |
Enhanced TCI States Indication for UE-specific PDCCH |
|
237 |
301 |
Positioning Measurement Gap Activation/Deactivation Command |
|
238 |
302 |
PPW Activation/Deactivation Command |
|
239 |
303 |
DL Tx Power Adjustment |
|
240 |
304 |
Timing Case Indication |
|
241 |
305 |
Child DL-BU Resetting Beam Indication |
|
242 |
306 |
Case-7 Timing advance offset |
|
243 |
307 |
Provided Guard Symbols for Case-6 timing |
|
244 |
308 |
Provided Guard Symbols for Case-7 timing |
|
245 |
309 |
Serving Cell Set based SRS Spatial Relation Indication |
|
246 |
310 |
PUCCH Pathloss Reference RS Update |
|
247 |
311 |
Pathloss Reference RS Update |
|
248 |
312 |
Enhanced SP/IAP SRS Spatial Relation Indication |
|
249 |
313 |
Enhanced PUCCH Spatial Relation Activation/Deactivation |
|
250 |
314 |
Enhanced TCI States Activation/Deactivation for UE-specific PDSCH |
|
251 |
315 |
Duplication RLC Activation/Deactivation |
|
252 |
316 |
Absolute Timing Advance Command |
|
253 |
317 |
SP Positioning SRS Activation/Deactivation |
|
254 |
318 |
Provided Guard Symbols |
|
255 |
319 |
Timing Delta |
< 38.321 - Table 6.2.1-1c: Values of LCID for MBS multicast MCCH and MBS broadcast on DL-SCH >
|
Codepoint/Index |
LCID values |
|---|---|
|
0 |
Broadcast MCCH or multicast MCCH |
|
1–32 |
Identity of the logical channel of broadcast MTCH |
|
33–63 |
Reserved |
< 38.321 - Table 6.2.1-2: Values of LCID for UL-SCH when the LX field is not present or is set to 0 >
|
Codepoint/Index |
LCID values |
|---|---|
|
0 |
CCCH of size 64 bits, except for an (e)RedCap UE |
|
1–32 |
Identity of the logical channel of DCCH and DTCH |
|
33 |
Extended logical channel ID field (two-octet eLCID field) |
|
34 |
Extended logical channel ID field (one-octet eLCID field) |
|
35 |
CCCH of size 48 bits for a RedCap UE |
|
36 |
CCCH of size 64 bits for a RedCap UE |
|
37–42 |
Reserved |
|
43 |
Truncated Enhanced BFR (one octet C) |
|
44 |
Timing Advance Report |
|
45 |
Truncated Sidelink BSR |
|
46 |
Sidelink BSR |
|
47 |
Reserved |
|
48 |
LBT failure (four octets) |
|
49 |
LBT failure (one octet) |
|
50 |
BFR (one octet C) |
|
51 |
Truncated BFR (one octet C) |
|
52 |
CCCH of size 48 bits, except for an (e)RedCap UE |
|
53 |
Recommended bit rate query |
|
54 |
Multiple Entry PHR (four octets C) |
|
55 |
Configured Grant Confirmation |
|
56 |
Multiple Entry PHR (one octet C) |
|
57 |
Single Entry PHR |
|
58 |
C-RNTI |
|
59 |
Short Truncated BSR |
|
60 |
Long Truncated BSR |
|
61 |
Short BSR |
|
62 |
Long BSR |
|
63 |
Padding |
|
NOTE: CCCH of size 48 bits and CCCH of size 64 bits are referred to as CCCH and CCCHH, respectively, in TS 38.331. |
|
< 38.321 - Table 6.2.1-2a: Values of two-octet eLCID for UL-SCH >
| Codepoint | Index |
LCID values |
|---|---|---|
|
0 to (215 − 1) |
320 to (215 + 319) |
Identity of the logical channel |
< 38.321 - Table 6.2.1-2b: Values of one-octet eLCID for UL-SCH >
|
Codepoint |
Index |
LCID values |
|---|---|---|
|
0 to 214 |
64 to 278 |
Reserved |
|
215 |
279 |
Multiple Entry Delay Status Report |
|
216 |
280 |
UL Rate Control |
|
217 |
281 |
Event Triggered L1 Measurement Report |
|
218 |
282 |
Truncated Event Triggered L1 Measurement Report |
|
219 |
283 |
Enhanced Multiple Entry PHR for multiple TRP ST×2P (four octets C) |
|
220 |
284 |
Enhanced Multiple Entry PHR for multiple TRP ST×2P (one octets C) |
|
221 |
285 |
Enhanced Single Entry PHR for multiple TRP ST×2P |
|
222 |
286 |
SL LBT Failure |
|
223 |
287 |
Enhanced Multiple Entry PHR with assumed PUSCH (four octets C) |
|
224 |
288 |
Enhanced Multiple Entry PHR with assumed PUSCH (one octets C) |
|
225 |
289 |
Single Entry PHR with assumed PUSCH |
|
226 |
290 |
SL-PRS Resource Request |
|
227 |
291 |
Refined Long BSR |
|
228 |
292 |
Multiple Entry Delay Status Report |
|
229 |
293 |
Enhanced Multiple Entry PHR for multiple TRP (four octets C) |
|
230 |
294 |
Enhanced Multiple Entry PHR for multiple TRP (one octets C) |
|
231 |
295 |
Enhanced Single Entry PHR for multiple TRP |
|
232 |
296 |
Enhanced Multiple Entry PHR (four octets C) |
|
233 |
297 |
Enhanced Multiple Entry PHR (one octets C) |
|
234 |
298 |
Enhanced Single Entry PHR |
|
235 |
299 |
Enhanced BFR (one octet C) |
|
236 |
300 |
Truncated Enhanced BFR (one octet C) |
|
237 |
301 |
Positioning Measurement Gap Activation/Deactivation Request |
|
238 |
302 |
IAB-MT Recommended Beam Indication |
|
239 |
303 |
Desired IAB-MT PSD range |
|
240 |
304 |
Desired DL Tx Power Adjustment |
|
241 |
305 |
Case-6 Timing Request |
|
242 |
306 |
Desired Guard Symbols for Case 6 timing |
|
243 |
307 |
Desired Guard Symbols for Case 7 timing |
|
244 |
308 |
Extended Short Truncated BSR |
|
245 |
309 |
Extended Long Truncated BSR |
|
246 |
310 |
Extended Short BSR |
|
247 |
311 |
Extended Long BSR |
|
248 |
312 |
Extended Pre-emptive BSR |
|
249 |
313 |
BFR (four octets C) |
|
250 |
314 |
Truncated BFR (four octets C) |
|
251 |
315 |
Multiple Entry Configured Grant Confirmation |
|
252 |
316 |
Single Entry Configured Grant Confirmation |
|
253 |
317 |
Desired Guard Symbols |
|
254 |
318 |
BFR (octets C) |
|
255 |
319 |
Pre-emptive BSR |
< 38.321 - Table 6.2.1-2c: Values of LCID for UL-SCH when the LX field is set to 1 >
|
Codepoint |
Index |
LCID values |
|---|---|---|
|
0 |
(215 + 320) |
CCCH of size 48 bits for an/eRedCap UE |
|
1 |
(215 + 321) |
CCCH of size 64 bits for an/eRedCap UE |
|
2 |
(215 + 322) |
CCCH of size 48 bits for PUCCH repetition of Msg4 HARQ-ACK, except for an (e)RedCap UE |
|
3 |
(215 + 323) |
CCCH of size 64 bits for PUCCH repetition of Msg4 HARQ-ACK, except for an (e)RedCap UE |
|
4 |
(215 + 324) |
CCCH of size 48 bits for PUCCH repetition of Msg4 HARQ-ACK of a RedCap UE |
|
5 |
(215 + 325) |
CCCH of size 64 bits for PUCCH repetition of Msg4 HARQ-ACK of a RedCap UE |
|
6 |
(215 + 326) |
CCCH of size 48 bits for PUCCH repetition of Msg4 HARQ-ACK of an eRedCap UE |
|
7 |
(215 + 327) |
CCCH of size 64 bits for PUCCH repetition of Msg4 HARQ-ACK of an eRedCap UE |
|
8 |
(215 + 328) |
CCCH of size 48 bits for PDSCH repetition of Msg4, except for an (e)RedCap UE |
|
9 |
(215 + 329) |
CCCH of size 64 bits for PDSCH repetition of Msg4, except for an (e)RedCap UE |
|
10 |
(215 + 330) |
CCCH of size 48 bits for PDSCH repetition of Msg4 of a RedCap UE |
|
11 |
(215 + 331) |
CCCH of size 64 bits for PDSCH repetition of Msg4 of a RedCap UE |
|
12 |
(215 + 332) |
CCCH of size 48 bits for PDSCH repetition of Msg4 of an eRedCap UE |
|
13 |
(215 + 333) |
CCCH of size 64 bits for PDSCH repetition of Msg4 of an eRedCap UE |
|
14 |
(215 + 334) |
CCCH of size 48 bits for PUCCH repetition of Msg4 HARQ-ACK and PDSCH repetition of Msg4, except for an (e)RedCap UE |
|
15 |
(215 + 335) |
CCCH of size 64 bits for PUCCH repetition of Msg4 HARQ-ACK and PDSCH repetition of Msg4, except for an (e)RedCap UE |
|
16 |
(215 + 336) |
CCCH of size 48 bits for PUCCH repetition of Msg4 HARQ-ACK and PDSCH repetition of Msg4 of a RedCap UE |
|
17 |
(215 + 337) |
CCCH of size 64 bits for PUCCH repetition of Msg4 HARQ-ACK and PDSCH repetition of Msg4 of a RedCap UE |
|
18 |
(215 + 338) |
CCCH of size 48 bits for PUCCH repetition of Msg4 HARQ-ACK and PDSCH repetition of Msg4 of an eRedCap UE |
|
19 |
(215 + 339) |
CCCH of size 64 bits for PUCCH repetition of Msg4 HARQ-ACK and PDSCH repetition of Msg4 of an eRedCap UE |
|
20 to 63 |
(215 + 340) to (215 + 383) |
Reserved |
|
NOTE 1: The MAC entity may use the code point corresponding to a given feature or feature combination only if network indicates support for the corresponding feature or feature combination. NOTE 2: CCCH of size 48 bits and CCCH of size 64 bits are referred to as CCCH and CCCH1, respectively, in TS 38.331. NOTE 3: For UE capable of PUCCH repetition of Msg4 HARQ-ACK, the MAC entity uses the code points corresponding to PUCCH repetition of Msg4 HARQ-ACK if |
||
List of MAC CE
Followings are the list of the MAC CEs specified in 38.321 as of now. Since each of these items is a pretty big top, I will create a separate page for each of these items.
|
MAC CE |
Reference |
|
38.321 - 6.1.3.1 |
|
|
38.321 - 6.1.3.2 |
|
|
38.321 - 6.1.3.3 |
|
|
38.321 - 6.1.3.4 |
|
|
DRX Command |
38.321 - 6.1.3.5 |
|
Long DRX Command |
38.321 - 6.1.3.6 |
|
Configured Grant Confirmation |
38.321 - 6.1.3.7 |
|
Single Entry PHR |
38.321 - 6.1.3.8 |
|
Multiple Entry PHR |
38.321 - 6.1.3.9 |
|
SCell Activation/Deactivation |
38.321 - 6.1.3.10 |
|
Duplication Activation/Deactivation |
38.321 - 6.1.3.11 |
|
SP CSI-RS / CSI-IM Resource Set Activation/Deactivation MAC CE |
38.321 - 6.1.3.12 |
|
Aperiodic CSI Trigger State Subselection MAC CE |
38.321 - 6.1.3.13 |
|
TCI States Activation/Deactivation for UE-specific PDSCH MAC CE |
38.321 - 6.1.3.14 |
|
38.321 - 6.1.3.15 |
|
|
SP CSI reporting on PUCCH Activation/Deactivation MAC CE |
38.321 - 6.1.3.16 |
|
SP SRS Activation/Deactivation MAC CE |
38.321 - 6.1.3.17 |
|
PUCCH spatial relation Activation/Deactivation MAC CE |
38.321 - 6.1.3.18 |
|
SP ZP CSI-RS Resource Set Activation/Deactivation MAC CE |
38.321 - 6.1.3.19 |
|
Recommended bit rate MAC CE |
38.321 - 6.1.3.20 |
How is a MAC CE actually framed inside a MAC PDU ?
I spent a while assuming a MAC CE carried a header of its own. It does not. A MAC CE is a payload, and what identifies it is the MAC subheader in front of it.
A MAC PDU is a sequence of MAC subPDUs. Each subPDU is one MAC subheader followed by one of three things: a MAC SDU, a MAC CE, or padding. The LCID value in that subheader says which of the three it is. For a MAC CE it also says which one.
The subheader comes in two shapes, and the deciding question is whether the thing behind it has a fixed length. A fixed-size MAC CE always occupies the same number of octets, so there is nothing to signal. Its subheader is one octet, holding two reserved bits and the six-bit LCID. Padding and the UL-CCCH MAC SDU use the same one-octet form.
A variable-size MAC CE, or any ordinary MAC SDU, needs a length. Its subheader replaces the second reserved bit with the F field and adds an L field behind the LCID. F set to 0 means L is 8 bits and the subheader is two octets. F set to 1 means L is 16 bits and the subheader is three octets.
The eLCID escapes add octets on top of that, in the way the quoted text in Evolution of MAC CE describes. An LCID of 34 is followed by one further octet carrying an 8-bit eLCID. An LCID of 33 is followed by two further octets carrying a 16-bit eLCID. In both cases the LCID itself has stopped being a name and become a pointer to one.
Figure 1 draws all five layouts against a common octet ruler.
Figure 1. The LCID value both names the MAC CE and decides how many octets the subheader occupies.
A MAC CE is a payload, not a header : The MAC subheader in front of it is what names it.Fixed-size means a one-octet subheader : Two reserved bits and the six-bit LCID, with no length field at all.Variable-size adds F and L : F set to 0 gives an 8-bit length. F set to 1 gives a 16-bit length.eLCID makes the LCID a pointer : An LCID of 34 or 33 says the real identifier follows, in one octet or two.The LCID decides the subheader size : Resolve the LCID first, or you do not know where the payload starts.
Where does a MAC CE sit inside a MAC PDU ?
The order of subPDUs inside a MAC PDU is not free. TS 38.321 fixes it, and it fixes it differently for the two directions.
In a downlink MAC PDU the MAC CE subPDUs come before every MAC SDU subPDU, and before the padding. In an uplink MAC PDU they are placed after all the subPDUs carrying MAC SDUs, and still before the padding. The two directions are mirror images of each other.
The reason is about when each end can do its work. A gNB sending a MAC CE wants the UE to act on it. Putting the CEs at the front lets the UE apply a timing advance or a DRX command without parsing the data first. A UE building an uplink PDU has the opposite problem. It wants its buffer status report to describe what is left after packing. So it fills the data in first, and appends the control elements afterwards.
This is one of the places where NR differs from LTE, where MAC CEs sat at the front in both directions. Anyone reading an NR uplink trace with LTE habits will look for the MAC CEs in the wrong place.
Figure 2 draws both layouts.
Figure 2. The asymmetry is deliberate. Each direction puts the MAC CEs where the sender can fill them in latest and the receiver can act on them earliest.
Downlink puts MAC CEs first : They come before every MAC SDU, so the UE can act on them before parsing data.Uplink puts MAC CEs last : They come after every MAC SDU. The UE can then report the state that is true after packing.Padding is last in both directions : It is a subPDU like any other, with its own one-octet subheader.This changed from LTE : LTE placed MAC CEs at the front in both directions. An LTE habit finds them in the wrong place in an NR uplink PDU.
Why did the LCID space have to be extended ?
The version tables in this page show the MAC CE list growing release by release. The eLCID escape appears part way through that growth, and the arithmetic behind it is short enough to work through.
The LCID field is six bits, so it has 64 codepoints in total. Most of them were spoken for before any MAC CE was defined.
|
LCID range |
Reserved for |
Codepoints |
|---|---|---|
|
|
CCCH on DL-SCH, and 48-bit CCCH on UL-SCH |
1 |
|
|
Identity of a logical channel |
32 |
|
|
Escape to a two-octet eLCID |
1 |
|
|
Escape to a one-octet eLCID |
1 |
|
|
Padding |
1 |
|
|
MAC CE types, and the remaining CCCH sizes |
Fewer than 30 |
That leaves fewer than thirty codepoints in each direction for every MAC CE type the specification would ever define. Release 15 fitted comfortably. By Release 16 the space was gone. Carrier aggregation, beam management, semi-persistent CSI and SRS, PDCP duplication and sidelink all wanted control elements.
Widening the LCID field would have changed every subheader in the protocol. Release 16 spent two of the remaining codepoints on escapes instead. An LCID of 34 says the identifier continues in one more octet, and an LCID of 33 says it continues in two. That buys 256 further values through the one-octet form, and 65536 through the two-octet form. Only the subPDUs that need them pay the extra octet or two.
This is why the tables in this page come in pairs. Every release from 16 onward has an LCID table and an eLCID table for each direction. A MAC CE introduced after the exhaustion point lives in the second of the two.
Six bits give 64 codepoints : Logical channel identities alone take 32 of them, and CCCH and padding take more.Fewer than thirty were ever available for MAC CEs : Release 16 exhausted them.The escape was cheaper than a wider field : Widening LCID would have changed every subheader, including those that did not need it.The cost falls only where it is used : A subPDU pays the extra octets only when its identifier is in the extended space.That is why each release has two tables per direction : One for LCID and one for eLCID.
When does a control action use a MAC CE rather than RRC or DCI ?
The question I find most useful when meeting an unfamiliar MAC CE is why it is a MAC CE at all. NR has three ways to send a control instruction. The choice trades speed against reliability and size.
|
RRC message |
MAC CE |
DCI |
|
|---|---|---|---|
|
|
A signalling radio bearer, through PDCP and RLC |
A subPDU inside an ordinary transport block |
The control channel, PDCCH |
|
|
Tens of milliseconds |
One HARQ round trip, plus a defined application delay |
The slot it is sent in |
|
|
RLC acknowledged mode, so retransmitted until confirmed |
HARQ, so the transport block is retransmitted on failure |
No retransmission. A missed DCI is simply lost |
|
|
Large and structured, including whole configurations |
A few octets, and a variable-size form where needed |
Tens of bits, fixed by the DCI format |
|
|
Establishing or reconfiguring something |
Switching on or off something already configured, and reporting state |
Scheduling, and anything that must act immediately |
A pattern runs through the table, and it explains most of the MAC CE list. RRC configures, and MAC CE activates. The heavy description of a CSI report, an SRS resource set or an SCell arrives once by RRC. After that a MAC CE turns it on and off. Sending the whole description again for every change would be far too slow. A DCI is far too small to carry it.
The reporting MAC CEs work by the same logic in the other direction. A buffer status report is too large for a DCI and far too frequent for RRC. MAC is the only layer left.
One consequence is worth remembering when reading a trace. A MAC CE does not take effect the instant it is received. The specification defines an application delay for several of them, measured from the HARQ acknowledgement of the transport block that carried it. An SCell that appears inactive shortly after an activation MAC CE is usually inside that window rather than failing.
RRC configures and MAC CE activates : The structure arrives once by RRC. A small MAC CE switches it on and off afterwards.MAC CE sits between DCI and RRC : Slower than a DCI and faster than RRC. Larger than a DCI and smaller than RRC.HARQ is what makes a MAC CE reliable : The transport block carrying it is retransmitted, which a DCI never is.Reports go by MAC CE for the same reason : Too big for a DCI, and too frequent for RRC.Application delay is defined, not immediate : Several MAC CEs take effect a specified time after the HARQ acknowledgement.
What do the MAC CEs do, grouped by purpose ?
The list in List of MAC CE is ordered by specification section. That is the right order for looking something up, and the wrong order for learning what exists. Grouped by purpose the same list is much shorter to hold.
|
Group |
What the group does |
Examples from the list above |
|---|---|---|
|
|
Completes contention resolution and identifies the UE |
C-RNTI, UE Contention Resolution Identity |
|
|
Keeps uplink transmissions aligned at the gNB receiver |
Timing Advance Command, Absolute Timing Advance Command |
|
|
Carries UE state that the scheduler needs |
Buffer Status Report, Power Headroom Report |
|
|
Moves the UE between monitoring and sleeping |
DRX Command, Long DRX Command |
|
|
Brings configured cells in and out of use |
SCell Activation and Deactivation, and the later dormancy indications |
|
|
Selects which configured beams and TCI states apply |
TCI State Indication and TCI States Activation and Deactivation |
|
|
Switches configured CSI and SRS resources on and off |
The semi-persistent CSI-RS, CSI reporting and SRS activation elements |
|
|
Confirms that the UE applied a configured grant or SPS change |
The configured grant and SPS confirmation elements |
|
|
Areas that arrived with Release 16 and 17 |
Sidelink, PDCP duplication, positioning and multicast elements |
Two observations come out of the grouping. The first is how many of these elements only activate and deactivate. That is the RRC configures, MAC CE activates pattern from the section above. It accounts for the carrier aggregation, beam management and measurement groups almost entirely.
The second is where the growth happened. The first four groups were largely complete in Release 15, because they cover things every connection needs. Everything added since is a feature that only some deployments use, which is exactly the traffic that exhausted the LCID space.
Most MAC CEs only switch things on and off : The configuration itself came earlier, by RRC.The Release 15 groups are the universal ones : Random access, timing, reporting and power saving are needed by every connection.Later groups are feature specific : Sidelink, duplication, positioning and multicast are used only where those features are deployed.The spec-ordered list stays the reference : Use the grouping to find the area. Use List of MAC CE to find the section number.
Reference
[1]