LTE ENB L1 API Definition
LTE ENB L1 API Definition
1
Femto Forum Technical Document
(a) you must only use and distribute this document in its entirety without amendment, deletion or addition of any
legal notice, text, graphics or other content; and
(b) you must not make this document available for download on any publically accessible bulletin board, website, ftp
site or file sharing service.
Disclaimer
This document is provided on an ‘as is’ basis without guarantees, representations, conditions or warranties as to its
accuracy or completeness or that it is free from error. To the extent permitted by law, the Femto Forum Ltd and the
contributors to this document exclude all representations, conditions, warranties and other terms which might
otherwise be implied by statute, common law or the law of equity.
Patents
It is possible that use of the technical matter published in this document may require the permission of the proprietor
of one or more patents. You are entirely response for identifying and where necessary obtaining a licence under such
patents should you choose to use any such technical matter. The Femto Forum Ltd has no responsibility in this regard
and shall not be liable for any loss or damage suffered in relation to an infringement of any third party patent as a
result of such use.
Copyright
This document is subject to copyright owned by the Femto Forum Ltd and/or licensed to the Femto Forum Ltd by its
contributing members. You may use and distribute this document free of charge provided that you comply with the
provisions set out in this notice. Other than this limited licence, you are not granted any further right, interest or title in
this document and the Femto Forum Ltd and/or its contributing members shall at all times remain the sole owner(s) of
the copyright in this document.
Trade Marks
The Femto Forum logo and other logo, trade and service marks contained in this document are the property of the
Femto Forum Ltd and, where applicable, other third parties. You are not permitted to use or reproduce these marks
without the prior written consent of the Femto Forum Ltd or where applicable the third party owner.
This document describes an Application Programming Interface (API) which defines the interface between LTE
L2/L3 software and L1 PHY. Specifically, this L1 API defines both P5 and P7 of the Femto Forum LTE FAPI.
The LTE standard [3] has been designed to support both TDD and FDD deployments. The LTE L1 API, described in
this document, also supports TDD and FDD modes. Features which are specific to only TDD, or FDD, are clearly
highlighted.
This document is divided into two sections. The first section provides a description of typical procedures which will
occur between the L1 and L2/L3 software. The second section provides the definition of the L1 API messages.
1.1 LTE
LTE is standardized by 3GPP (http://www.3gpp.org) and designed as an evolution to the current WCDMA wireless
network, which is in widespread use today. A critical requirement of LTE is the capability of supporting high data
rates (300Mbps), and many aspects of the LTE network have been designed specifically to support high data rates
and low latency.
Figure 1 shows the architecture of a LTE network. It consists of only two elements; the Evolved Pack Core (EPC)
and the E-UTRAN Node B (eNB). The LTE L1 API resides within the eNB element. The two standardized interfaces in
a LTE network are called S1 and X2. The L1 is not involved in either of these interfaces, and both are out of scope
for this document.
EPC
S1
S1
X2
eNB eNB
1.2 L1 API
The L1 API, defined in this document, resides within the eNB component. The functionality of an eNB is shown in
Figure 2 and Figure 3. In both Figures the location of the L1 API is highlighted.
Figure 2 shows the protocol model for the eNB defined in the E-UTRAN architectural standard [4]. It highlights the
separation of control- and data-plane information, which is maintained throughout the LTE network. Both control-
and data-plane information is passed through the L1 API, however, each API message contains either control- or
data-plane information, but never both.
Transport
Network Signalling Data
Layer Bearers Bearers
L1 API
PHY
Figure 3 provides an example of how the different L2/L3 protocol layers will interact with the L1 API. In this
example, a PHY control entity is responsible for configuration procedures (P5). The MAC layer is responsible for the
exchange of data-plane messages with the PHY (P7). The PHY configuration sent over the P5 interface may be
determined using SON techniques, information model parameters sent from the HeMS [11], or a combination of
both methods.
RRC
PHY PDCP
L2/L3 Control
Software
RLC
MAC
Scheduler
P5 P7
L1 API
PHY
2 L1 API Procedures
This section gives an overview of the procedures which use the L1 API. These procedures are split into two groups,
namely, configuration procedures and subframe procedures. Configuration procedures handle the management of
CONFIG.request
CONFIG.request
IDLE CONFIGURED
START.request STOP.request
PARAM.request
RUNNING
DL_CONFIG.request
UL_CONFIG.request
START.request
2.1.1 Initialization
The initialization procedure moves the PHY from the IDLE state to the RUNNING state, via the CONFIGURED state.
An overview of this procedure is given in Figure 5, the different stages are:
The PARAM message exchange procedure
The CONFIG message exchange procedure
The START message exchange procedure
L1 PHY
L2/L3 software
ref
PARAM message exchange
SUBFRAME indication()
The PARAM message exchange procedure is shown in Figure 6. Its purpose is to allow the L2/L3 software to collect
information about the PHY configuration and current state. The information returned by the PHY depends on its
state, and is described in Table 2. The PARAM message exchange is optional.
From Figure 6 it can be seen that the PARAM message exchange procedure is initiated by the L2/L3 software
sending a PARAM.request message to the PHY. It is recommended that the L2/L3 software starts a guard timer
to wait for the response from the PHY. If the PHY is operating correctly it will return a PARAM.response
message. In the IDLE and CONFIGURED states this message will include the current PHY state and a list of
configuration information, as described in Table 2. In the RUNNING state this message will indicate an
INVALID_STATE error, to determine the PHY capabilities it must be moved to the CONFIGURED state using the
termination procedure. If the guard timer expires before the PHY responds this indicates the PHY is not operating
correctly. This must be rectified before further L1 API commands are used; the rectification method is outside the
scope of this document.
The CONFIG message exchange procedure is shown in Figure 7. Its purpose is to allow the L2/L3 software to
configure the PHY. It can be used when the PHY is in any state. The procedure has slight differences depending on
the PHY state, for clarity each case is described separately.
If the PHY is in the IDLE state the CONFIG.request message, sent by the L2/L3 software, must include all
mandatory TLVs. The mandatory TLVs are highlighted later in Section 3.2.2.1. If all mandatory TLVs are included,
and set to values supported by the PHY, L1 will return a CONFIG.response message indicating it is successfully
configured and has moved to the CONFIGURED state. If the CONFIG.request message has missing mandatory
sd PARAM
L1 PHY
L2/L3 software
PARAM.request()
alt Response
[success]
PARAM.response(MSG_OK)
[invalid state]
PARAM.response(INVALID_STATE)
[no response]
(from Actors)
CONFIG.request()
alt Response
[success]
CONFIG.response(MSG_OK)
[config incomplete]
CONFIG.response(MSG_INVALID_CONFIG)
(from Actors)
The START message exchange procedure is shown in Figure 8. Its purpose is to instruct a configured PHY to start
transmitting as an eNB. The L2/L3 software initiates this procedure by sending a START.request message to the
PHY. If the PHY is in the CONFIGURED state, it will issue a SUBFRAME indication. After the PHY has sent its first
SUBFRAME.indication message it enters the RUNNING state.
If the PHY receives a START.request in either the IDLE or RUNNING state it will return an
ERROR.indication including an INVALID_STATE error.
L1 PHY
L2/L3 software
START.request()
alt Response
[success] If START.request is successful no response is
returned by the PHY. When the PHY has started it
will send a SUBFRAME indication to the L2/L3
software.
[failure]
ERROR.indication()
(from Actors)
2.1.2 Termination
The termination procedure is used to move the PHY from the RUNNING state to the CONFIGURED state. This stops
the PHY transmitting as an eNB. The termination procedure is shown in Figure 9 and initiated by the L2/L3 software
sending a STOP.request message.
If the STOP.request message is received by the PHY while operating in the RUNNING state, it will stop all TX and
RX operations and return to the CONFIGURED state. When the PHY has completed its stop procedure a
STOP.indication message is sent to the L2/L3 software.
If the STOP.request message was received by the PHY while in the IDLE or CONFIGURED state, it will return an
ERROR.indication message including an INVALID_STATE error. However, in this case the PHY was already
stopped.
L1 PHY
L2/L3 software
STOP.request()
alt Response
[success]
STOP.indication()
[failure]
ERROR.indication()
(from Actors)
2.1.3 Restart
The restart procedure is shown in Figure 10. It can be used by the L2/L3 software when it needs to stop
transmitting, but later wants to restart transmission using the same configuration. To complete this procedure the
L2/L3 software can follow the STOP message exchange shown in Figure 9. This moves the PHY to the CONFIGURED
state. To restart transmission it should follow the START message exchange, shown in Figure 8, moving the PHY
back to the RUNNING state.
sd Restart
L1 PHY
L2/L3 software
ref
STOP message exchange
ref
START message exchange
(from Actors)
sd Reset
L1 PHY
L2/L3 software
ref
STOP message exchange
(from Actors)
2.1.5 Reconfigure
Two methods of reconfiguration are supported by the PHY. A major reconfiguration where the PHY is stopped, and
a minor reconfiguration where the PHY continues running.
The major reconfigure procedure is shown in Figure 12. It is used when the L2/L3 software wants to make
significant changes to the configuration of the PHY. The STOP message exchange, shown in Figure 9, is followed to
halt the PHY and move it to the CONFIGURED state. The CONFIG message exchange, shown in Figure 7, is used to
reconfigure the PHY. Finally, the START message exchange, shown in Figure 8, is followed to start the PHY and
return it to the RUNNING state.
sd Reconfigure
L1 PHY
L2/L3 software
ref
STOP message exchange
ref
CONFIG message exchange
ref
START message exchange
(from Actors)
sd Minor Reconfigure
L1 PHY
L2/L3 software
SUBFRAME.indication()
CONFIG.request(SFN/SF = M)
CONFIG.response(MSG_OK)
DL_CONFIG.request(SFN/SF = M)
UL_CONFIG.request(SFN/SF = M)
(from Actors)
2.1.6 Query
The query procedure is shown in Figure 14. It is used by the L2/L3 software to determine the configuration and
operational status of the PHY. The PARAM message exchange, shown in Figure 6, is used. This signalling sequence
can be followed when the PHY is stopped, in the IDLE state and, optionally, the CONFIGURED state.
sd Query
L1 PHY
L2/L3 software
ref
PARAM message exchange
(from Actors)
sd Notification
L1 PHY
L2/L3 software
(from Actors)
N
SUBFRAME
indication
SUBFRAME SUBFRAME
N+0
N+0
indication indication
DwPTS
1ms subframe
DwPTS
SUBFRAME
indication GP GP
1ms subframe
1ms subframe
S
SUBFRAME
indication S SUBFRAME
indication
SUBFRAME
indication
UpPTS
UpPTS
SUBFRAME SUBFRAME
indication indication
SUBFRAME
indication indication
DwPTS
GP
S
indication
Figure 17: SUBFRAME signal for TDD using 10ms switch point
Figure 16: SUBFRAME signal for TDD using 5ms switch points
indication indication
SUBFRAME
UpPTS
indication SUBFRAME
SUBFRAME
indication
indication
SUBFRAME
indication SUBFRAME
SUBFRAME
indication
indication
SUBFRAME
SUBFRAME
indication
N+2 N+3 N+4 N+5 N+6 N+7 N+8 N+9
indication
The periodicity of the SUBFRAME.indication message for FDD (frame structure 1) is shown in Figure 18. The
2.2.2 SFN/SF Synchronization
The SFN/SF synchronization procedure is used to maintain a consistent SFN/SF value between the L2/L3 software
and PHY. Maintaining this synchronization is important since different subframes have different structures, and in
TDD subframes are either downlink or uplink.
Two options are provided by the L1 API; the first option configures the PHY to use the SFN/SF value provided by the
L2/L3 software. The second option configures the PHY to initialize the SFN/SF and ensure the L2/L3 software
remains synchronous. The synchronization option is selected at compile time. For each option two procedures are
described, the initial start-up synchronization and the maintenance of the synchronization.
START.request()
SUBFRAME.indication(SFN/SF = M)
PHY value SFN/SF = M
DL_CONFIG.request(SFN/SF = N)
ERROR.indication(SFN_OUT_OF_SYNC,
received SFN/SF, expected SFN/SF)
(from Actors)
START.request()
SUBFRAME.indication(SFN/SF = M)
PHY value
SFN/SF = M
L2/L3 changes its
internal SFN/SF to
M
DL_CONFIG.request(SFN/SF = M)
SUBFRAME.indication(SFN/SF = M + 1)
(from Actors)
The SFN/SF synchronization maintenance procedure is shown in Figure 22. In this example, the L1 PHY is expecting
the next DL_CONFIG.request to contain information regarding frame M. The procedure followed is:
The PHY sends a SUBFRAME.indication message to the L2/L3 software, with SFN/SF = M
The L2/L3 software sends a DL_CONFIG.request message to the PHY containing SFN/SF = N
If SFN/SF M = N
The PHY received the SFN/SF it was expecting. No SFN/SF synchronization is required
If SFN/SF M ≠ N
The PHY received a different SFN/SF from the expected value. SFN/SF synchronization is required
The PHY discards the received DL_CONFIG.request message
The PHY returns an ERROR.indication message indicating the mismatch
This SFN/SF synchronization procedure will continue to discard DL_CONFIG.request messages and emit
ERROR.indication messages until the L2/L3 software corrects its SFN/SF value.
SUBFRAME.indication(SFN/SF = M)
PHY value SFN/SF = M
PHY expecting
SFN/SF = M in
DL_CONFIG.request
DL_CONFIG.request(SFN/SF = N)
(from Actors)
SUBFRAME indication()
CONFIG.request()
UE_CONFIG.request()
UL_CONFIG.request()
[TDD DL]
DL_CONFIG.request()
[TDD UL]
UL_CONFIG.request()
opt
TX.request()
opt
HI_DCI0.request()
(from Actors)
opt UL data
CRC.indication(N)
opt UL data
RX_ULSCH.indication()
opt SR
RX_SR.indication()
opt CQI
RX_CQI.indication()
opt SRS
SRS.indication()
(from Actors)
sd UE Configuration
L1 PHY
L2/L3 software
UE_CONFIG.request()
alt Response
[success]
UE_CONFIG.response(MSG_OK)
(from Actors)
sd UE Release
L1 PHY
L2/L3 software
UE_RELEASE.request()
alt Response
[success]
UE_RELEASE.response(MSG_OK)
[failure]
UE_RELEASE.response(error code)
(from Actors)
2.2.6 Downlink
The procedures relating to downlink transmission are described in this Section.
2.2.6.1 BCH
The BCH transport channel is used to transmit the Master Information Block (MIB) information to the UE. The
location of the MIB is defined in the LTE standards [1], and shown in Figure 27. It is transmitted in subframe 0 of
each radio frame. When the radio frame (SFN mod 4) = 0 an updated MIB is transmitted in subframe 0. When the
radio frame (SFN mod 4) ≠ 0 the MIB is repeated.
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
New MIB Repeated Repeated
MIB MIB
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
Repeated New MIB Repeated
MIB MIB
The BCH procedure is shown in Figure 28. The L2/L3 software should provide a BCH PDU to the PHY in subframe
SF=0, for each radio frame (SFN mod 4) = 0. This is once every 40ms. The L2/L3 software provides the following
information:
In DL_CONFIG.request a BCH PDU is included.
In TX.request a MAC PDU containing the MIB is included.
If the PHY does not receive a BCH PDU in subframe SF=0, where radio frame (SFN mod 4) = 0, then no BCH will be
transmitted.
2.2.6.2 PCH
The PCH transport channel is used to transmit paging messages to the UE. The UE has specific paging occasions
where it listens for paging information [5]. The L2/L3 software is responsible for calculating the correct paging
occasion for a UE. The PHY is only responsible for transmitting PCH PDUs when instructed by the
DL_CONFIG.request message.
The PCH procedure is shown in Figure 29. To transmit a PCH PDU the L2/L3 software must provide the following
information:
In DL_CONFIG.request a PCH PDU and DCI PDU are included.
In TX.request a MAC PDU containing the paging message is included.
sd PCH
L1 PHY
L2/L3 software UE
DL_CONFIG.request(PCH and DCI PDU)
TX.request(MAC PDU)
[2]
UL_CONFIG.request(ULSCH CQI HARQ RI PDU for subframe N+K)
[3]
UL_CONFIG.request(UCI HARQ PDU for subframe N+K)
[4]
UL_CONFIG.request(UCI SR HARQ PDU for subframe N+K)
[6]
UL_CONFIG.request(UCI CQI SR HARQ PDU for subframe N+K)
HARQ.indication()
With DCI Format 2 and 2A the DL SCH channel is combined to send two layer data transmission to a UE, this
requires a single DCI PDU, but two DLSCH PDUs and two MAC PDUs. The procedure is shown in Figure 31. To
initiate a two layer transmission the L2/L3 software must provide the following information:
In DL_CONFIG.request a DCI Format 2 or 2A PDU is included. The DCI PDU contains control regarding
the DL frame transmission. Two DLSCH PDUs are included one for each transport block specified in the DCI
PDU.
In TX.request two MAC PDUs containing the data are included.
(The remaining behaviour is identical to single-layer transmission)
If uplink HARQ signalling is calculated in the MAC a HARQ PDU is included in a later
UL_CONFIG.request. A single HARQ PDU is required to provide the ACK/NACK response for both
transport blocks. The timing of this message is dependent on whether a TDD or FDD system is in operation.
For TDD, it is also dependent on the DL/UL subframe configuration. There are multiple possible HARQ
PDUs that can be used to indicate reception of the HARQ response on the uplink:
ULSCH_HARQ – is used if the UE is scheduled to transmit data and the ACK/NACK response
sd 2-layer DL-SCH
L1 PHY
L2/L3 software UE
[2]
UL_CONFIG.request(ULSCH CQI HARQ RI PDU for subframe N+K)
[3]
UL_CONFIG.request(UCI HARQ PDU for subframe N+K)
[4]
UL_CONFIG.request(UCI SR HARQ PDU for subframe N+K)
[5]
UL_CONFIG.request(UCI CQI HARQ PDU for subframe N+K)
[6]
UL_CONFIG.request(UCI CQI SR HARQ PDU for subframe N+K)
HARQ.indication()
sd MCH
L1 PHY
L2/L3 software UE
DL_CONFIG.request(MCH PDU)
TX.request(MAC PDU)
2.2.7 Uplink
The procedures relating to uplink reception are described in this Section.
2.2.7.1 RACH
The RACH transport channel is used by the UE to send data to the eNB when it has no scheduled resources. Also,
the L2/L3 software can indicate to the UE that it should initiate a RACH procedure. In LTE the occurrence of the
RACH follows a pattern advertised on the System Information broadcast messages. The L1 API supports the storage
of this information in either the MAC or PHY. If stored in the MAC the L1 API is used to instruct the PHY when it
should allocate a PRACH, if stored in the PHY there is no need to include this information in the L1 API messages.
In the scope of the L1 API, the RACH procedure begins when the PHY receives a UL_CONFIG.request message
indicating the presence of a RACH.
The RACH procedure is shown in Figure 33. To configure a RACH procedure the L2/L3 software must provide the
following information:
If the RACH pattern is stored in the MAC, in UL_CONFIG.request the RACH present field must be set.
If the RACH pattern is stored in the PHY this step is not required.
If a UE decides to RACH, and a preamble is detected by the PHY:
The PHY will include 1 RACH PDU in the RACH.indication message. This RACH PDU includes all
detected preambles
If no RACH preamble is detected by the PHY, then no RACH.indication message is sent
RACH.indication(RACH PDU)
[no]
2.2.7.2 UL-SCH
The UL-SCH transport channel is used to send data from the UE to the eNB. HARQ is always applied on the UL-SCH
transport channel. Therefore, together with scheduling uplink transmissions the L2/L3 software must schedule
downlink ACK/NACK responses.
The procedure for the UL-SCH transport channel is shown in Figure 34. To transmit an UL-SCH PDU the L2/L3
software must provide the following information:
Within the HI_DCI0.request for subframe N a DCI PDU is included. The DCI Format 0 PDU contains
control information regarding the UL frame transmission being scheduled.
In UL_CONFIG.request for subframe N+K1 an ULSCH PDU is included. The timing of this message is
dependent on whether a TDD or FDD system is in operation. For TDD, it is also dependent on the DL/UL
subframe configuration. There are multiple possible ULSCH PDUs that can be used to schedule ULSCH data
on the uplink:
ULSCH – is used if the UE is scheduled to only transmit data
If the uplink HARQ signalling calculation is performed in the MAC the following ULSCH PDU can also be
used:
ULSCH_HARQ – is used if the UE is scheduled to transmit data and an ACK/NACK response
If the semi-static UE information is held in the MAC the following ULSCH PDUs can also be used:
ULSCH_CQI_RI – is used if the UE is scheduled to transmit data and a CQI report
If both semi-static UE information and uplink HARQ signalling calculation is performed in the MAC the
following ULSCH PDU can also be used:
ULSCH_CQI_HARQ_RI – is used if the UE is scheduled to transmit data, a CQI report and an ACK/NACK
response
If the Data Report Mode TLV = 0 in the CONFIG.request message, then:
The PHY will return CRC information for the received data in a the CRC.indication message
The PHY will return the received uplink data in the RX_ULSCH.indication message. The
RX_ULSCH.indication message repeats the CRC information given in the CRC.indication
message.
sd UL-SCH
L1 PHY
L2/L3 software UE
[2]
UL_CONFIG.request(ULSCH_CQI_RI for subframe N+K1)
[3]
UL_CONFIG.request(ULSCH_HARQ for subframe N+K1)
[4]
UL_CONFIG.request(ULSCH_CQI_HARQ_RI for subframe N+K1)
CRC.indication()
[=1]
CRC.indication is not sent.
RX_ULSCH.indication()
sd SRS
L1 PHY
L2/L3 software UE
SRS.indication()
2.2.7.4 CQI
The CQI reporting mechanism is used by the L2/L3 software to determine the quality of the downlink channel. CQI
reporting is initiated through two methods. Firstly, during the RRC connection procedure the L2/L3 software will
instruct the UE to transmit periodic CQI reports. Secondly, the L2/L3 software can use the PDCCH to instruct the UE
to transmit an aperiodic CQI report.
The L1 API supports the storage of the periodic CQI information in either the MAC or PHY. If stored in the MAC the
L1 API is used to instruct the PHY when to expect a CQI transmission from the UE, if stored in the PHY there is no
need to include this information in the L1 API messages.
The CQI reporting procedure is shown in Figure 36. To schedule a CQI report the L2/L3 software must provide the
following information:
For an aperiodic report the DCI format 0 PDU is included in the HI_DCI.request. This instructs the UE
to send a CQI report. For periodic CQI report no explicit DCI information is sent.
If the CQI information is stored in the MAC:
sd CQI
L1 PHY
L2/L3 software UE
alt If CQI information stored in MAC the methods for defining CQI
[1]
UL_CONFIG.request(ULSCH_CQI_RI for subframe N+K1)
[2]
UL_CONFIG.request(ULSCH_CQI_HARQ_RI for subframe N+K1)
[4]
UL_CONFIG.request(UCI_CQI_SR for subframe N+K1)
[5]
UL_CONFIG.request(UCI_CQI_HARQ for subframe N+K1)
[6]
UL_CONFIG.request(UCI_CQI_SR_HARQ for subframe N+K1)
sd SR
L1 PHY
L2/L3 software UE
[2]
UL_CONFIG.request(UCI_SR_CQI)
[3]
UL_CONFIG.request(UCI_SR_HARQ)
[4]
UL_CONFIG.request(UCI_CQI_SR_HARQ)
SR from UE()
RX_SR.indication()
DL_CONFIG.request()
(from Actors)
UL_CONFIG.request()
(from Actors)
L1 PHY
L2/L3 software
HI_DCI0.request()
ERROR.indication()
(from Actors)
TX.request()
(from Actors)
3 L1 API Messages
This section provides a description of the L1 API message formats. It defines the L1 API message header, the
message bodies and the error codes associated with the L1 API.
Type Description
Message body
RESERVED 0x0c-0x7f
RESERVED 0x8c-0xff
3.2.1 PARAM
The PARAM message exchange was described in Figure 6.
3.2.1.1 PARAM.request
This message can be sent by the L2/L3 when the PHY is in the IDLE state and, optionally, the CONFIGURED state. If it
is sent when the PHY is in the RUNNING state, a MSG_INVALID_STATE error is returned in PARAM.response. No
message body is defined for PARAM.request. The message length in the generic header = 0.
3.2.1.2 PARAM.response
The PARAM.response message is given in Table 5. From this table it can be seen that PARAM.response
contains a list of TLVs providing information about the PHY. When the PHY is in the IDLE state this information
relates to the PHY’s overall capability. When the PHY is in the CONFIGURED state this information relates to the
current configuration.
The full list of TLVs is given in Section 3.2.3. However, the set of TLVs which will be returned in the
PARAM.response message depends on whether the PHY is TDD, or FDD, and on the current operational state of
the PHY. Table 6 to Table 9 provide clarification on when a TLV will be included. Note: There is no requirement for
the PHY to return the TLV's in the order specified in the Table.
Description Tag
PHY State 60
Table 6: TLVs included in PARAM.response for TDD when PHY is in IDLE state
Description Tag
PHY State 60
Duplexing Mode 1
P-B 3
Table 7: TLVs included in PARAM.response for TDD when PHY is in CONFIGURED state
Description Tag
PHY State 60
Table 8: TLVs included in PARAM.response for FDD when PHY is in IDLE state
Description Tag
PHY State 60
Duplexing Mode 1
P-B 3
Table 9: TLVs included in PARAM.response for FDD when PHY is in CONFIGURED state
3.2.2 CONFIG
The CONFIG message exchange was described in Figure 7.
3.2.2.1 CONFIG.request
The CONFIG.request message is given in Table 11. From this table it can be seen that CONFIG.request
contains a list of TLVs describing how the PHY should be configured. This message may be sent by the L2/L3
software when the PHY is in any state.
The full list of TLVs is given in Section 3.2.3. However, when the PHY is in the IDLE state there is a list of mandatory
TLVs that must be included. For clarification Table 12 and Table 13 are provided. These indicate mandatory TLVs,
which must be sent when the PHY is in IDLE state, and may be sent when the PHY is in the CONFIGURED state. The
tables, also, indicate optional TLVs which may be sent when the PHY is in either the IDLE or CONFIGURED state.
There is no requirement for the L2/L3 software to provide the TLVs in the order specified in the Tables.
Description Tag
Mandatory TLVs – These must be included when the PHY is in IDLE state, they may also be included when the PHY
is in CONFIGURED state.
Duplexing Mode 1
P-B 3
Optional TLVs – These may be included when the PHY is in either IDLE or CONFIGURED state.
Table 12: TLVs included in CONFIG.request for TDD for IDLE and CONFIGURED states
Mandatory TLVs – These must be included when the PHY is in IDLE state, they may also be included when the PHY
is in CONFIGURED state.
Duplexing Mode 1
P-B 3
Optional TLVs – These may be included when the PHY is in either IDLE or CONFIGURED state.
Table 13: TLVs included in CONFIG.request for FDD for IDLE and CONFIGURED states
Description Tag
SFN/SF 51
3.2.2.2 CONFIG.response
The CONFIG.response message is given in Table 15. If the configuration procedure was successful then the
error code returned will be MSG_OK and no TLV tags will be included. If the configuration procedure was
unsuccessful then MSG_INVALID_CONFIG will be returned, together with a list of TLVs identifying the problem.
Number of Missing uint8_t Number of missing TLVs contained in the message body. If
TLVs the PHY is in the CONFIGURED state this will always be 0.
Type Description
uint8_t Tag
uint16_t Value
These TLVs are used by the L2/L3 software to configure a physical parameter in L1.
PCFICH Power Offset 2 uint16_t The power per antenna of the PCFICH with respect to the
reference signal.
Value: 0-> 10000, represents -6dB to 4dB in steps 0.001dB
Value: 0 → 3
0: CP_NORMAL,
1: CP_EXTENDED.
0: CP_NORMAL,
1: CP_EXTENDED.
RFConfig
Reference Signal Power 8 uint16_t Normalized value levels (relative) to accommodate different
absolute Tx Power used by eNb.
Value: 0 → 255
Tx Antenna Ports 9 uint16_t The number of cell specific transmit antenna ports.
See [8] section 6.2.1.
Value:1,2,4
Rx Antenna Ports 10 uint16_t The number of cell specific receive antenna ports.
See [8] section 6.2.1.
Value: 1, 2, 4
PHICH Config
PHICH Resource 11 uint16_t The number of resource element groups used for PHICH.
See [8] section 6.9.
0: PHICH_R_ONE_SIXTH
1: PHICH_R_HALF
2: PHICH_R_ONE
3: PHICH_R_TWO
PHICH Duration 12 uint16_t The PHICH duration for MBSFN and non-MBSFN sub-frames.
See [8] section 6.9
0: PHICH_D_NORMAL
1: PHICH_D_EXTENDED
PHICH Power Offset 13 uint16_t The power per antenna of the PHICH with respect to the
reference signal.
Value: 0-> 10000, represents -6dB to 4dB in steps 0.001dB
SCH Config
Primary Synchronization 14 uint16_t The power of synchronization signal with respect to the
signal EPRE/EPRERS reference signal,
Value: 0 → 9999 represents -6dB to 4dB in step 0.001dB
Physical Cell ID 16 uint16_t The Cell ID sent with the synchronization signal.
See [8] section 6.11.
Value: 0 → 503
PRACH Config
Configuration Index 17 uint16_t Provides information about the location and format of the
PRACH.
See [8] section 5.7. Table 5.7.1-2 for FDD, Table 5.7.1-3 for TDD
The value is an index into the referenced tables.
Value: 0 → 63
Value: 0 → 837
Zero Correlation Zone 19 uint16_t Equivalent to Ncs, see [8] section 5.7.2.
Configuration
TDD: 0 → 6
FDD: 0 → 15
High Speed Flag 20 uint16_t Indicates if unrestricted, or restricted, set of preambles is used.
See [8] section 5.7.2.
0: HS_UNRESTRICTED_SET
1: HS_RESTRICTED_SET
Frequency Offset 21 uint16_t The first physical resource block available for PRACH. see [8]
section 5.7.1
Value: 0 → UL_channel_bandwidth – 6
PUSCH Config
Hopping Mode 22 uint16_t If hopping is enabled indicates the type of hopping used.
See [8] section 5.3.4
0: HM_INTER_SF
1: HM_INTRA_INTER_SF
Value: 0 → 98
Value: 1 → 4
PUCCH Config
Value: 1 → 3
N_CQI RB 26 uint16_t The bandwidth, in units of resource blocks, that is available for
use by PUCCH formats 2/2a/2b transmission in each slot.
See Section 5.4 in [8].
Value: 0 → 98
N_AN CS 27 uint16_t The number of cyclic shifts used for PUCCH formats 1/1a/1b in a
resource block with a mix of formats 1/a/1/ab and 2/2a/2b. See
Section 5.4 in [8].
Value: 0 → 7
Value: 0 → 2047
SRS Config
Value: 0 → 7
MaxUpPTS 30 uint16_t Used for TDD only and indicates how SRS operates in UpPTS
subframes.
See [8] section 5.5.3.2 and [6] section 8.2
0: Disabled
1: Enabled
Value: 0 → 15
SRS AckNack SRS 32 uint8 Indicates if SRS and ACK/NACK can be received in the same
Simultaneous subframe. Needed if semi-static configuration is held in PHY.
Transmission
0: no simultaneous transmission
1: simultaneous transmission
0: RS_NO_HOPPING
1: RS_GROUP_HOPPING
2: RS_SEQUENCE_HOPPING
Group Assignment (Delta 34 uint16_t The sequence shift pattern used if group hopping is enabled.
sequence-shift pattern)
See [8] section 5.5.1
Values: 0 → 29
Cyclic Shift 1 for DMRS 35 uint16_t Specifies the cyclic shift for the reference signal used in the cell.
See [8] section 5.5.1.
The value is an index into the referenced table.
Value: 0 → 7
Subframe Assignment 36 uint16_t For TDD mode only, indicates the DL/UL subframe structure.
See [8] section 4.2.
Value: 0 → 6
Special Subframe 37 uint16_t For TDD mode only. Length of fields DwPTS, GP and UpPTS. See
Patterns [8] section 4.2.
Value: 0 → 8
These TLVs are used by L1 to report its physical capabilities to the L2/L3 software.
Downlink Bandwidth 40 uint16_t The PHY downlink channel bandwidth capability (in resource
Support blocks).
See [7] section 5.6
Uplink Bandwidth Support 41 uint16_t The PHY uplink channel bandwidth capability (in resource
blocks).
See [7] section 5.6
Value: 1, 2, 4
These TLVs are used by the L2/L3 software to configure the interaction between L2/L3 and L1.
Data Report Mode 50 uint16_t The data report mode for the uplink data.
SFN/SF 51 uint16_t The future SFN/SF subframe where the TLVs included in the
message should be applied.
A 16-bit value where,
[15:4] SFN, range 0 → 1023
[3:0] SF, range 0 → 9
PHY State 60 uint16_t Indicates the current operational state of the PHY.
0 = IDLE
1 = CONFIGURED
2 = RUNNING
3.2.4 START
The START message exchange was described in Figure 8.
3.2.4.1 START.request
This message can be sent by the L2/L3 when the PHY is in the CONFIGURED state. If it is sent when the PHY is in the
IDLE, or RUNNING, state an ERROR.indication message will be sent by the PHY. No message body is defined
for START.request. The message length in the generic header = 0.
3.2.5.1 STOP.request
This message can be sent by the L2/L3 when the PHY is in the RUNNING state. If it is sent when the PHY is in the
IDLE, or CONFIGURED, state an ERROR.indication message will be sent by the PHY. No message body is
defined for STOP.request. The message length in the generic header = 0.
3.2.5.2 STOP.indication
This message is sent by the PHY to indicate that it has successfully stopped and returned to the CONFIGURED state.
No message body is defined for STOP.indication. The message length in the generic header = 0.
3.2.6 UE CONFIG
The UE CONFIG message exchange was described in Figure 25
3.2.6.1 UE_CONFIG.request
The UE_CONFIG.request message is given in Table 21. From this table it can be seen that
UE_CONFIG.request contains a list of TLVs describing how the PHY should be configured with UE-specific
parameters. This message may be sent by the L2/L3 software when the PHY is in the RUNNING state. The message
is only valid if semi-static configuration is kept in PHY.
Description Tag
Handle 100
RNTI 101
3.2.6.2 UE_CONFIG.response
The UE_CONFIG.response message is given in Table 15. If the configuration procedure was successful then the
error code returned will be MSG_OK and no TLV tags will be included. If the configuration procedure was
unsuccessful then MSG_INVALID_CONFIG will be returned, together with a list of TLVs identifying the problem.
Only valid if semi-static configuration is stored in PHY.
Number of Missing uint8_t Number of missing TLVs contained in the message body. If
TLVs the PHY is in the CONFIGURED state this will always be 0.
Type Description
uint8_t Tag
variable Value
RNTI 101 uint16_t The RNTI used for identifying the UE when receiving the PDU
See [3] section 5.1.4
Value: 1 → 65535.
CQI Config
CQI PUCCH Resource 102 uint16_t The PUCCH resource for periodc CQI reporting.
Index
Value: 0 → 1185.
CQI PMI Config Index 103 uint16_t The periodic PMI reporting configuration.
Value: 0 → 1023.
Value: 0 → 1023.
CQI simultaneous 105 uint8_t Indicates if simultaneous transmission of CQI and ACK/NACK is
ACK/NACK and CQI allowed.
Value:
0: no PUCCH Format 2a/2b
1: PUCCH Format 2a/2b can be used
ACK/NACK Config
TDD Ack/Nack Feedback 108 uint8_t The TDD ACK/NACK Feedback Mode
Mode Value:
0: bundling
1: multiplexing
SRS Config
SRS Bandwidth 109 uint8_t SRS Bandwidth. This value is fixed for a UE and allocated in RRC
connection setup.
Value: 0 → 3
SRS Hopping Bandwidth 110 uint8_t Configures the frequency hopping on the SRS. This value is fixed
for a UE and allocated in RRC connection setup.
See [8] section 5.5.3.2.
Value 0 → 3
Frequency Domain 111 uint8_t Frequency-domain position, NRRC This value is fixed for a UE and
Position allocated in RRC connection setup.
See [8] section 5.5.3.2
Value: 0 → 23
Value:
0: once
1: indefinite
ISRS / SRS-ConfigIndex 113 uint16_t Defines the periodicity and subframe location of the SRS.
SRS Configuration Index. This value is fixed for a UE and
allocated in RRC connection setup.
See [6] section 8.2.
Value: 0 → 1023.
Transmission Comb 114 uint8_t Configures the frequency location of the SRS. This value is fixed
for a UE and allocated in RRC connection setup.
Value: 0 → 1
Sounding Reference 115 uint8_t Configures the SRS sequence generation. This value is fixed for a
Cyclic Shift UE and allocated in RRC connection setup.
See [8] section 5.5.3.1.
Value: 0 → 7
SR Config
SR PUCCH Resource 116 uint16_t The scheduling request PUCCH resource index.
Index
Value: 0 → 2047.
SPS Config
3.2.7 UE RELEASE
The UE RELEASE message exchange was described in Figure 26.
3.2.7.1 UE_RELEASE.request
The UE_RELEASE.request message is given in Table 27. From this table it can be seen that
UE_RELEASE.request contains a list of TLVs describing how the PHY should be configured with UE-specific
parameters. This message may be sent by the L2/L3 software when the PHY is in the RUNNING state.
This message is used to release the semi-static information in PHY if kept in PHY.
Description Tag
Handle 100
RNTI 101
Number of Missing uint8_t Number of missing TLVs contained in the message body. If
TLVs the PHY is in the CONFIGURED state this will always be 0.
3.2.8.1 ERROR.indication
This message is used to report an error to the L2/L3 software. These errors all relate to API message exchanges. The
format of ERROR.indication is given in Table 31.
Message ID uint8_t Indicate which message received by the PHY has an error.
Values taken from Table 4.
Error Code uint8_t The error code, see Section 3.4 for value.
If the value is MSG_PDU_ERR then more detailed error
information is included.
Error code struct The format of these bytes is dependent on the error code.
dependent values See Table 32 to Table 36.
Not used
Expected SFN/SF uint16_t The SFN/SF value the PHY was expecting to receive in the
message
Sub Error Code uint8_t The Sub Error Code for this message, see Section 3.4.1.
RNTI uint16_t The RNTI in the received PDU. If the error occurred in a MCH,
or BCH, PDU this value is set to 0
PDU Type uint8_t The PDU Type parameter specified in both DL subframe
configuration and UL subframe configuration
Sub Error Code uint8_t The Sub Error Code for this message, see Section 3.4.1.
PHICH Lowest UL RB uint8_t The PHICH RB Index parameters specified in each HI PDU
Index
Sub Error Code uint8_t The Sub Error Code for this message, see Section 3.4.1.
PDU Index uint16_t The PDU index parameter specified for each PDU
3.3.1 SUBFRAME
3.3.1.1 SUBFRAME.indication
The SUBFRAME.indication message is given in Table 37. It is sent from the PHY every 1ms.
3.3.1.2 DL_CONFIG.request
The format of the DL_CONFIG.request message is shown in Table 38. A DL_CONFIG.request message
indicates the SFN/SF subframe it contains information for. This control information is for a downlink subframe.
This message can be sent by the L2/L3 when the PHY is in the RUNNING state. If it is sent when the PHY is in the
IDLE or CONFIGURED state an ERROR.indication message will be sent by the PHY.
The following combinations of PDUs are required:
A BCH PDU does not have an associated DCI PDU
A PCH PDU requires an associated DCI PDU
A MCH PDU requires an associated DCI PDU
A DLSCH allocated with Semi-Persistent Scheduling may not have an associated DCI PDU
A DLSCH for a unique RNTI requires an associated DCI PDU. Therefore, 2 DLSCH for the same RNTI only
require 1 DCI PDU
Number of PDCCH uint8_t The number of OFDM symbols for the PDCCH.
OFDM symbols
See [8] section 6.7.
Value:0 → 4
Number of DCIs uint8_t The number of DCI PDUs included in this message.
Range: 0 → 255
Number of PDUs uint16_t Number of PDUs that are included in this message.
Range 0 → 514
PDU Size uint8_t Size of the PDU control information (in bytes).
This length value includes the 2 bytes required for the PDU
type and PDU size parameters.
Value: 0 → 88
Value: 1,2,4,8
RNTI uint16_t The RNTI used for identifying the UE when receiving the PDU
Valid for all DCI formats
Value: 1 → 65535.
0=type 0
1=type 1
0 = localized
1 = distributed
Resource Block uint32_t The encoding for the resource blocks. It's coding is dependent
Coding on whether resource allocation type 0, 1, 2 is in use.
Value: 0 → 31
st
Redundancy uint8_t The redundancy version for 1 transport block.
Version_1
Valid for DCI formats: 1,1A,1B,1C,1D ,2,2A
Value: 0 → 3
st
New Data uint8_t The new data indicator for 1 transport block.
Indicator_1
Valid for DCI formats: 1,1A,1B,1C,1D ,2,2A
0 = no swapping
1 = swapped
nd
MCS_2 uint8_t The modulation and coding scheme for 2 transport block.
Valid for DCI formats: 2,2A
Value: 0 → 31
nd
Redundancy uint8_t The redundancy version for 2 transport block.
Version_2
Valid for DCI formats: 2,2A
Value: 0 → 3
nd
New Data uint8_t The new data indicator for 2 transport block.
Indicator_2
Valid for DCI formats: 2,2A
Value: 0 →15
2 antenna_ports: 0 → 3
4 antenna_ports: 0 → 15
2 antenna_ports: 0 → 7
4 antenna_ports: 0 → 63
Value: 0,1,2,3
In case of DCI format 1A and RNTI=SI-RNTI,RA-RNTI or P-RNTI
the TPC values are either 0,1 representing N_PRB=2 and
N_PRB =3 respectively. In case of SPS-C-RNTI it represents the
PUCCH resource index.
Downlink uint8_t The downlink assignment index. Only used in TDD mode,
Assignment Index value ignored for FDD.
Valid for DCI formats: 1,1A,1B,1D,2,2A
Value: 1,2,3,4
0= NGAP1
1= NGAP2
Value: 0 → 31
Downlink power uint8_t Indicates the DL power offset type for multi-user MIMO
offset transmission
Valid for DCI formats: 1D
Value: 0 → 1
0 = false
1=true
Value: 0 → 63
PRACH Mask Index uint8_t The mask index to be used on the PRACH
Valid for DCI formats: 1A
Value: 0 → 15
1 = C-RNTI
2 = RA-RNTI, P-RNTI, or SI-RNTI.
3 = SPS-CRNTI
Length uint16_t The length (in bytes) of the associated MAC PDU, delivered in
TX.request. This should be the actual length of the MAC
PDU, which may not be a multiple of 32-bits.
PDU index uint16_t This is a count value which is incremented every time a BCH,
MCH, PCH or DLSCH PDU is included in the
DL_CONFIG.request message.
This value is repeated in TX.request and associates the
control information to the data.
It is reset to 0 for every subframe
Range 0 → 65535
Length uint16_t The length (in bytes) of the associated MAC PDU, delivered in
TX.request. This should be the actual length of the MAC
PDU, which may not be a multiple of 32-bits
PDU index uint16_t This is a count value which is incremented every time a BCH,
MCH, PCH or DLSCH PDU is included in the
DL_CONFIG.request message.
This value is repeated in TX.request and associates the
control information to the data.
It is reset to 0 for every subframe
Range 0 → 65535
Value: 1 → 65535.
0 = type 0
1 = type 1
2 = type 2
Resource Block uint32_t The encoding for the resource blocks. It's coding is dependent
Coding on whether resource allocation type 0, 1, 2 is in use.
See [6] section 7.1.6 for the encoding used for each format.
Length uint16_t The length (in bytes) of the associated MAC PDU, delivered in
TX.request. This should be the actual length of the MAC
PDU, which may not be a multiple of 32-bits.
PDU index uint16_t This is a count value which is incremented every time a BCH,
MCH, PCH or DLSCH PDU is included in the
DL_CONFIG.request message.
This value is repeated in TX.request and associates the
control information to the data.
It is reset to 0 for every subframe
Range 0 → 65535
Value: 1 → 65535.
0 = type 0
1 = type 1
2 = type 2
Virtual resource uint8_t Type of virtual resource block used. This should match the
block assignment value sent in the DCI Format 1A, 1B, 1D PDU which allocated
flag this grant.
See [6] section 7.1.6.3
0 = localized
1 = distributed
Resource Block uint32_t The encoding for the resource blocks. It's coding is dependent
Coding on whether resource allocation type 0, 1, 2 is in use. This
should match the value sent in the DCI Format PDU which
allocated this grant.
See [6] section 7.1.6 for the encoding used for each format.
Redundancy Version uint8_t HARQ redundancy version. This should match the value sent in
the DCI Format PDU which allocated this grant.
Value: 0 → 3.
Transport Blocks uint8_t The transport block transmitted to this RNTI. A value of 2
indicates this is the second transport block for either DCI
format 2 or 2A. For other DCI values this field will always be 1.
Value: 1 → 2
Transport block to uint8_t Indicates the mapping of transport block to codewords. This
codeword swap flag should match the value sent in the DCI Format 2, 2A PDU
which allocated this grant.
0 = no swapping
1 = swapped
0: SINGLE_ANTENNA_PORT_0,
1: TX_DIVERSITY,
2: LARGE_DELAY_CDD,
3: CLOSED_LOOP_SPATIAL_MULTIPLEXING,
4: MULTI_USER_MIMO,
5: CLOSED_LOOP_RANK_1_PRECODING,
6: SINGLE_ANTENNA_PORT_5.
Value: 1 → 4
Value 0 -> 13
Value:1 → 5
P-A uint8_t The ratio of PDSCH EPRE to cell-specific RS EPRE among PDSCH
REs in all the OFDM symbols not containing cell-specific RS in
dB.
See [6], section 5.2.
0: -6dB
1: -4.77dB
2: -3dB
3: -1.77dB
4: 0dB
5: 1dB
6: 2dB
7: 3dB
NPRB uint8_t Used with DCI format 1A and RNTI=SI-RNTI or RA-RNTI. This
should match the value sent in the TPC field of the DCI 1A PDU
which allocated this grant.
0: NPRB = 2
1: NPRB = 3
subbandIndex uint8_t Index of subband for which the following beam forming
vector is applied
bfValue uint16_t Beam forming vector element for physical antenna #i real 8
bits followed by imaginery 8 bits
Length uint16_t The length (in bytes) of the associated MAC PDU, delivered in
TX.request. This should be the actual length of the MAC
PDU, which may not be a multiple of 32-bits.
PDU index uint16_t This is a count value which is incremented every time a BCH,
MCH, PCH or DLSCH PDU is included in the
DL_CONFIG.request message.
This value is repeated in TX.request and associates the
control information to the data.
It is reset to 0 for every subframe
Range 0 → 65535
Value: 0xFFFE
Virtual resource uint8_t Type of virtual resource block used. This should match the
block assignment value sent in the DCI Format 1A, 1B, 1D PDU which allocated
flag this grant.
See [6] section 7.1.6.3
0 = localized
1 = distributed
Resource Block uint32_t The encoding for the resource blocks. It's coding is dependent
Coding on whether resource allocation type 0, 1, 2 is in use. This
should match the value sent in the DCI Format PDU which
allocated this grant.
See [6] section 7.1.6 for the encoding used for each format.
0: QPSK
Redundancy Version uint8_t For PCH PDU only redundancy version 0 is allowed
Value: 0
Number Of uint8_t The number of transport blocks transmitted to this RNTI. Only
Transport Blocks 1 transport block is sent on the PCH per subframe.
Value: 1
Transport block to uint8_t Reserved. This parameter is not used on the PCH transport
codeword swap flag channel.
0: SINGLE_ANTENNA_PORT_0,
1: TX_DIVERSITY,
6: SINGLE_ANTENNA_PORT_5.
Value: 1 → 4
Codebook Index uint8_t Reserved. This parameter is not used on the PCH transport
channel.
UE Category uint8_t Reserved. This parameter is not used on the PCH transport
Capacity channel.
0: -6dB
1: -4.77dB
2: -3dB
3: -1.77dB
4: 0dB
5: 1dB
6: 2dB
7: 3dB
steps.
NPRB uint8_t Used with DCI 1A format. This should match the value sent in
the TPC field of the DCI 1A PDU which allocated this grant.
0: NPRB = 2
1: NPRB = 3
3.3.1.3 UL_CONFIG.request
The format of the UL_CONFIG.request message is shown in Table 45. An UL_CONFIG.request message
indicates the SFN/SF subframe it contains information for. This control information is for an uplink subframe.
This message can be sent by the L2/L3 when the PHY is in the RUNNING state. If it is sent when the PHY is in the
IDLE or CONFIGURED state an ERROR.indication message will be sent by the PHY.
The supported PDUs are dependent on whether the semi-static information and uplink HARQ signalling calculation
is held in the MAC or PHY.
If the semi-static information and uplink HARQ signalling calculation is held in the MAC, the following combinations
of PDUs are required:
In order to support RACH in the subframe, the RACH present field must be true
In order to support SRS in the subframe, the SRS present field must be true
If the SRS present field is true, there can be 0 SRS PDU, or ≥1 SRS PDU present.
The ULSCH PDU is present when a UE has been instructed to only send uplink data
The ULSCH_CQI_RI, ULSCH_HARQ and ULSCH_CQI_HARQ_RI PDUs are present when a UE has been
instructed to send uplink data and control
The UCI_CQI, UCI_SR, UCI_SR_HARQ, UCI_CQI_HARQ, UCI_CQI_SR and UCI_CQI_SR_HARQ PDUs are
present when a UE has been only been instructed to transmit control
The following combinations can have the same RNTI values:
UCI_x + SRS
ULSCH_x + SRS
If the semi-static information and uplink HARQ signalling calculation is held in the PHY, the following combinations
of PDUs are required:
The ULSCH PDU is present when a UE has been instructed to send uplink data
If the semi-static information is held in the MAC, and the uplink HARQ signalling calculation is held in the PHY, the
following combinations of PDUs are required:
In order to support RACH in the subframe, the RACH present field must be true
In order to support SRS in the subframe, the SRS present field must be true
If the SRS present field is true, there can be 0 SRS PDU, or ≥1 SRS PDU present.
The ULSCH PDU is present when a UE has been instructed to only send uplink data
The ULSCH_CQI_RI is present when a UE has been instructed to send uplink data and control
Range 0 → 65535.
Number of PDUs uint8_t The number of UL SCHs PDUs included in this message.
PDU Size uint8_t Size of the PDU control information (in bytes).
This length value includes the 2 bytes required for the PDU
type and PDU size parameters.
Size uint16_t The size of the ULSCH PDU in bytes as defined by the relevant
UL grant. The size can be 0 if UCI over ULSCH without data is
configured. The size of CQI/RI/HARQ are not added to this
element.
RNTI uint16_t The RNTI used for identifying the UE when receiving the PDU
See [3] section 5.1.4
Value: 1 → 65535.
Resource Block Start uint8_t The starting resource block for this ULSCH allocation. This
should match the value sent in the DCI Format 0 PDU which
allocated this grant.
Value: 0 → 99
Number of Resource uint8_t The number of resource blocks allocated to this ULSCH grant.
Blocks This should match the value sent in the DCI Format 0 PDU
which allocated this grant.
Value: 1 → 100
Value: 0 → 7
Frequency hopping uint8_t Indicates if hopping is being used. This should match the
enabled flag value sent in the DCI Format 0 PDU which allocated this grant.
See [6] Section 8.4.
Frequency hopping uint8_t The frequency hopping bits. This should match the value sent
bits in the DCI Format 0 PDU which allocated this grant.
See [6] Section 8.4
Value: 0 → 3
New Data Indication uint8_t Specify whether this received PUSCH is a new transmission
from UE. This should match the value sent in the DCI Format
0 PDU which allocated this grant.
Value: 0 → 3
TDD 0 → 15
FDD 0 → 7
Current TX NB uint8_t The current HARQ transmission count of this transport block.
N srs uint8_t Indicates if the resource blocks allocated for this grant
overlap with the SRS configuration.
0 = no overlap
1 = overlap
DL CQI/PMI Size uint8_t The size of the DL CQI/PMI in bits in case of rank 1 report.
Rank = 1
Value: 0 → 255
DL CQI/PMI Size uint8_t The size of the DL CQI/PMI in bits in case of rank>1 report.
Rank>1
Value: 0 → 255
In case of periodic report rank=1 and rank>1 size should be
the same
Value:1 → 2
0 in case of periodic report
Delta Offset CQI uint8_t Delta offset for CQI. This value is fixed for a UE and allocated
in RRC connection setup.
See [6] section 8.6.3
Value: 0 → 15
Delta Offset RI uint8_t Delta offset for RI. This value is fixed for a UE and allocated in
RRC connection setup.
See [6] section 8.6.3
Value: 0 → 15
Value: 1 → 2
Delta Offset HARQ uint8_t Delta offset for HARQ. This value is fixed for a UE and
allocated in RRC connection setup.
See [6] section 8.6.3
Value: 0 → 15
ACK_NACK mode uint8_t The format of the ACK/NACK response expected. For TDD
only.
0 = BUNDLING
1 = MULTIPLEXING
Initial number of uint8_t The number of resource blocks used in the initial transmission
resource blocks of this transport block.
Value: 1 → 100
RNTI uint16_t The RNTI used for identifying the UE when receiving the PDU
See [3] section 5.1.4
Value: 1 → 65535.
RNTI uint16_t The RNTI used for identifying the UE when receiving the PDU
See [3] section 5.1.4
Value: 1 → 65535.
RNTI uint16_t The RNTI used for identifying the UE when receiving the PDU
See [3] section 5.1.4
Value: 1 → 65535.
HARQ Information struct Description of contents given in Table 62 for TDD and Table
63 for FDD.
RNTI uint16_t The RNTI used for identifying the UE when receiving the PDU
See [3] section 5.1.4
Value: 1 → 65535.
HARQ Information struct Description of contents given in Table 62 for TDD and Table
63 for FDD.
RNTI uint16_t The RNTI used for identifying the UE when receiving the PDU
See [3] section 5.1.4
Value: 1 → 65535.
HARQ Information struct Description of contents given in Table 62 for TDD and Table
63 for FDD.
RNTI uint16_t The RNTI used for identifying the UE when receiving the PDU
See [3] section 5.1.4
Value: 1 → 65535.
3.3.1.3.12 UCI_CQI_SR_HARQ_PDU
The format of the UCI_CQI_SR HARQ_PDU is given in Table 59. This PDU is only valid if both semi-static information
and the uplink HARQ signalling calculation is held in the MAC.
RNTI uint16_t The RNTI used for identifying the UE when receiving the PDU
See [3] section 5.1.4
Value: 1 → 65535.
HARQ Information struct Description of contents given in Table 62 for TDD and Table
63 for FDD.
Value: 0 → 1185
Value: 0 → 255
3.3.1.3.14 SR Information
The format of the SR Information used in UCI PDUs is given in Table 61.
Value: 0 → 2047
HARQ Size uint8_t For ACK_NACK Mode 0 (Bundling) and 1 (Multiplexing), this is
the size of the ACK/NACK in bits.
Value: 1 → 4
For Special Bundling this is the expected number of
ACK/NACK responses (UDAI + NSPS) (see table 7.3-1 in [6]).
Value: 0 → 9
ACK_NACK mode uint8_t The format of the ACK/NACK response expected. For TDD
only.
0 = BUNDLING
1 = MULTIPLEXING
Value: 0 → 2047
3.3.1.3.16 SRS
The format of the SRS PDU is given in Table 64. This PDU is only valid if semi-static information is held in the MAC.
RNTI uint16_t The RNTI used for identifying the UE when receiving the PDU
See [3] section 5.1.4
Value: 1 → 65535.
SRS Bandwidth uint8_t SRS Bandwidth. This value is fixed for a UE and allocated in
RRC connection setup.
Value: 0 → 3
Frequency Domain uint8_t Frequency-domain position, NRRC This value is fixed for a UE
Position and allocated in RRC connection setup.
See [8] section 5.5.3.2
Value: 0 → 23
SRS Hopping uint8_t Configures the frequency hopping on the SRS. This value is
Bandwidth fixed for a UE and allocated in RRC connection setup.
See [8] section 5.5.3.2.
Value 0 → 3
Transmission Comb uint8_t Configures the frequency location of the SRS. This value is
fixed for a UE and allocated in RRC connection setup.
Value: 0 → 1
ISRS / SRS- uint16_t Defines the periodicity and subframe location of the SRS.
ConfigIndex
SRS Configuration Index. This value is fixed for a UE and
allocated in RRC connection setup.
See [6] section 8.2.
Value: 0 → 1023.
Sounding Reference uint8_t Configures the SRS sequence generation. This value is fixed
Cyclic Shift for a UE and allocated in RRC connection setup.
See [8] section 5.5.3.1.
Value: 0 → 7
RNTI uint16_t The RNTI used for identifying the UE for which the HARQ
buffer should be released.
Value: 1 → 65535.
3.3.1.4 HI_DCI0.request
The format of the HI_DCI0.request message is given in Table 66. This message contains two types of control
information relating to the uplink. Firstly, it is used for the L2/L3 to send the ACK/NACK response for MAC PDUs
received on the ULSCH, LTE has strict timing requirements for returning this information to the UE. Secondly, it is
used for DCI control format information relating to the uplink which is broadcast on the PDCCH.
Section 2.2.3 contains a detailed description on when this message should be sent, and the correct value of SFN/SF.
SFN/SF uint16_t The SFN/SF in this message should be the same as the
corresponding DL_CONFIG.request message. A 2-byte
value where,
[15:4] SFN, range 0 → 1023
[3:0] SF, range 0 → 9
PDU Size uint8_t Size of the PDU control information (in bytes).
This length value includes the 2 bytes required for the PDU
type and PDU size parameters.
3.3.1.4.1 HI PDU
The format of a HI PDU is shown in Table 67. The HI PDU contains the ACK/NACK response for a ULSCH
transmission.
Resource Block Start uint8_t This value is the starting resource block assigned to the
ULSCH grant associated with this HI response. It should match
the value sent in the DCI format 0 which allocated the ULSCH
grant
See [6] section 9.1.2
Value: 0 → 100
nd
Cyclic Shift 2 for uint8_t This value is the 2 cyclic shift for DMRS assigned to the
DMRS ULSCH grant associated with this HI response. It should match
the value sent in the DCI format 0 which allocated the ULSCH
grant
See [6] section 9.1.2
Value: 0 → 7
0: HI_NACK
1: HI_ACK
I_PHICH uint8_t Is used in the calculation of the PHICH location. For TDD only.
See [6] section 9.1.2
1 = TDD subframe configuration 0 is used and the ULSCH
grant associated with this HI was received in subframe 4 or 9
0 = in all other cases
Value: 0 → 88
Value: 1,2,4,8
RNTI uint16_t The RNTI used for identifying the UE when receiving the PDU
Valid for all DCI formats
Value: 1 → 65535.
Resource Block Start uint8_t The starting resource block for this ULSCH allocation.
Valid for DCI format 0
Value: 0 → 100
Number of Resource uint8_t The number of resource blocks allocated to this ULSCH grant.
Blocks
Valid for DCI format 0
Value: 0 → 100
Value: 0 → 31
nd
Cyclic Shift 2 for uint8_t The 2 cyclic shift for DMRS assigned to the UE in the ULSCH
DMRS grant.
Valid for DCI format 0
Value: 0 → 7
Value: 0 → 3
New Data Indication uint8_t The new data indicator for the transport block.
Valid for DCI format 0
0 = Not configured;
1 = Configured and using UE port 0;
2 = Configured and using UE port 1.
Value: 0,1,2,3
Value: 0,1,2,3
DL assignment index uint8_t DL assignment index. Valid for TDD mode only.
Valid for DCI format 0
Value: 1,2,3,4
The error codes returned in an ERROR.indication generate by the UL_CONFIG.request message are given
in Table 69.
The error codes returned in an ERROR.indication generate by the HI_DCI0.request message are given in
Table 71.
3.3.2.1 TX.request
The format of the TX.request message is described in Table 72. This message contains the MAC PDU data for
transmission over the air interface. The PDUs described in this message must follow the same order as
DL_CONFIG.request.
This message can be sent by the L2/L3 when the PHY is in the RUNNING state. If it is sent when the PHY is in the
IDLE, or CONFIGURED, state an ERROR.indication message will be sent by the PHY.
SFN/SF uint16_t The SFN/SF in this message should be the same as the
corresponding DL_CONFIG.request message.
A 2-byte value where,
[15:4] SFN, range 0 → 1023
[3:0] SF, range 0 → 9
PDU Length uint16_t The total length (in bytes) of the PDU description and PDU
data, without the padding bytes.
PDU index uint16_t This is a count value which starts from 0. It is incremented for
each BCH, MCH, PCH or DLSCH PDU.
This value was included in TX.request and associates the
data to the control information.
It is reset to 0 for every subframe
Range 0 → 65535
numTLV uint32_t The number of TLVs describing the data of the transport
block.
length uint16_t Length of the actual payload in bytes, without the padding
bytes
3.3.3.1 RX_ULSCH.indication
The format of the RX_ULSCH.indication message is shown in Table 75.
SFN/SF uint16_t The SFN/SF of the SUBFRAME this information was received in.
Value: 1 → 65535.
Data Offset uint16_t Gives the PDU#i data address offset from the beginning of the
'Number of PDUs' field.
An offset of 0 indicates a CRC or decoding error.
Timing Advance uint16_t The timing advance measured for this PDU and UE.
Value: T_A from 0 to 1282 as defined in [6] section 4.2.3.
.. ... ...
3.3.3.2 HARQ.indication
The format of the uplink HARQ control from the UE is dependent on whether a TDD or FDD PHY is used. To
accommodate this difference two HARQ.indication messages are defined, one for TDD and one for FDD.
The HARQ.indication messages provide the following results for each ACK/NACK report.
ACK – The PHY confidently detected an ACK
NACK – The PHY confidently detected an NACK
DTX – The PHY confidently detected that the UE did not transmit an ACK/NACK response
ACK or NACK – The PHY is unsure whether it detected an ACK or NACK.
SFN/SF uint16_t The SFN/SF of the SUBFRAME this information was received in.
Handle uint32_t The handle received in the ULSCH PDU or UCI PDU.
Value: 1 → 65535.
Mode uint8_t The format of the ACK/NACK response expected. The bundling
and multiplexing options are passed to the PHY in an uplink
subframe configuration PDU. If the ACK/NACK is combined
with either CQI or SR information then a special ACK/NACK
encoding is used which reports the number of ACKs, rather
than providing specific ACK/NACK values. This is identified
separately and called SPECIAL_BUNDLING in this API. (see [6]
section 7.3 and section 3.3.1.3.15 of this document for more
information)
0 = BUNDLING
1 = MULTIPLEXING
Number of uint8_t The number of ACK/NACK results reported for this UE.
ACK/NACK
See [6] section 10.
Value: 1 → 4
For Special Bundling this is the expected number of ACK/NACK
responses (UDAI + NSPS) (see table 7.3-1 in [6]).
Value: 0 → 9
HARQ Data struct The format of the data is dependent on the HARQ mode;
BUNDLING, MULTIPLEXING, or SPECIAL BUNDLING. See Table
77 to Table 79.
Range 1 → 7
1 = ACK
2 = NACK
3 = ACK or NACK
4 = DTX
5 = ACK or DTX
6 = NACK or DTX
7 = ACK or NACK or DTX
Range 1 → 7
1 = ACK
2 = NACK
3 = ACK or NACK
4 = DTX
5 = ACK or DTX
6 = NACK or DTX
7 = ACK or NACK or DTX
Value 0 uint8_t Number of ACK among multiple ACK/NACK responses, see [6]
table 7.3.-1
Table 79: TDD HARQ data format for mode = SPECIAL BUNDLING
SFN/SF uint16_t The SFN/SF of the SUBFRAME this information was received in.
Handle uint32_t The handle received in the ULSCH PDU or UCI PDU.
Value: 1 → 65535.
st
HARQ TB1 uint8_t HARQ feedback of 1 TB.
Range 1 → 7
1 = ACK
2 = NACK
3 = ACK or NACK
4 = DTX
5 = ACK or DTX
6 = NACK or DTX
7 = ACK or NACK or DTX
nd
HARQ TB2 uint8_t HARQ feedback of 2 TB.
Range 1 → 7
1 = ACK
2 = NACK
3 = ACK or NACK
4 = DTX
5 = ACK or DTX
6 = NACK or DTX
7 = ACK or NACK or DTX
3.3.3.3 CRC.indication
The format of the CRC.indication message is given in Table 81.
SFN/SF uint16_t The SFN/SF of the SUBFRAME this information was received in.
Value: 1 → 65535.
0: CRC_CORRECT
1:CRC_ERROR
3.3.3.4 RX_SR.indication
The format of the RX_SR.indication message is given in Table 82.
SFN/SF uint16_t The SFN/SF of the SUBFRAME this information was received in.
A 2-byte value where,
[15:4] SFN, range 0 → 1023
[3:0] SF, range 0 → 9
RNTI uint16_t The RNTI identifying the UE. For semi-static information held
in the MAC this will be the value passed to the PHY in a
UL_CONFIG.request SR PDU.
See [3] section 5.1.4
Value: 0 → 65535.
3.3.3.5 RX_CQI.indication
The format of the RX_CQI.indication message is given in Table 83. The format of DL CQI feedback and
reports varies depending upon the channel used for feedback (PUSCH or PUCCH) and the DL transmission mode.
This is detailed in [9]. The formats differ in the fields reported and the resultant number of bits required for the
report.
SFN/SF uint16_t The SFN/SF of the SUBFRAME this information was received in.
Handle uint32_t The handle received in the ULSCH PDU or UCI PDU.
RNTI uint16_t The RNTI identifying the UE. For semi-static information held
in the MAC this will be the value passed to the PHY in a
UL_CONFIG.request CQI PDU.
See [3] section 5.1.4
Value: 1 → 65535.
Data Offset uint16_t Gives the PDU#i data address offset from the beginning of the
'Number of PDUs' field.
An offset of 0 indicates a CRC or decoding error, or only RI
received on PUSCH.
Timing Advance uint16_t The timing advance measured for this PDU and UE.
Value: T_A from 0 to 1282 as defined in [6] section 4.2.3.
PDU#1 Variable Contents of PDU#1. Raw format CQI report as defined in [9].
The first bit of the CQI report is bit [0] of byte 0.
PDU#2 Variable Contents of PDU#2. Raw format CQI report as defined in [9].
The first bit of the CQI report is bit [0] of byte 0.
.. ... ...
PDU#n Variable Contents of PDU#n. Raw format CQI report as defined in [9].
The first bit of the CQI report is bit [0] of byte 0.
Table 83: RX_CQI.indication message body
3.3.3.6 RACH.indication
The format of the RACH.indication message is given in Table 84.
SFN/SF uint16_t The SFN/SF of the SUBFRAME this information was received in.
Value: 1 → 65535.
Timing Advance uint16_t The measured timing advance for the preamble.
Value: 0 → 1282
3.3.3.7 SRS.indication
The format of the SRS.indication message is given in Table 85.
SFN/SF uint16_t The SFN/SF of the SUBFRAME this information was received in.
Values: 0 → 255,
Timing Advance uint16_t The timing advance measured for the UE.
Value: T_A from 0 to 1282 as defined in [6] section 4.2.3.
FFS
4 References
5 Revision History
Version
Description