1 /*******************************************************************************
2 ################################################################################
3 # Copyright (c) [2017-2019] [Radisys] #
5 # Licensed under the Apache License, Version 2.0 (the "License"); #
6 # you may not use this file except in compliance with the License. #
7 # You may obtain a copy of the License at #
9 # http://www.apache.org/licenses/LICENSE-2.0 #
11 # Unless required by applicable law or agreed to in writing, software #
12 # distributed under the License is distributed on an "AS IS" BASIS, #
13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
14 # See the License for the specific language governing permissions and #
15 # limitations under the License. #
16 ################################################################################
17 *******************************************************************************/
19 /**********************************************************************
25 Desc: Structures, variables and typedefs required by the LTE MAC-RRC
26 Control (CRG) interface.
30 **********************************************************************/
37 @brief Structure declarations and definitions for CRG interface.
44 /* Enumertaions for CRG */
46 /* Data Structures for CRG */
49 @brief Transaction ID between MAC and RRC. */
50 typedef struct crgCfgTransId
52 uint8_t trans[CRG_CFG_TRANSID_SIZE]; /*!< RRC transaction ID */
56 @brief Bandwidth configuration per cell. */
57 typedef struct crgBwCfg
59 uint8_t dlTotalBw; /*!< Total Dowlink Bandwidth */
60 uint8_t ulTotalBw; /*!< Total Uplink Bandwidth */
64 @brief RACH configuration per cell. */
65 typedef struct crgRachCfg
67 uint8_t maxMsg3Tx; /*!< Maximum number of message 3 transmissions */
71 /** @brief UE secondary cell config params to MAC*/
72 typedef struct crgUeSCellInfo
74 uint16_t sCellId; /*!< This will be secondary cellId */
75 Inst macInst; /*!< MAC instance for SCell */
76 SuId rguUlSapId; /*!< MAC-RLC UL Sap ID */
77 SuId rguDlSapId; /*!< MAC-RLC DL SAP ID */
81 /** @brief Configuration information of Secondary cells for a UE*/
82 typedef struct crgUeSecCellInfo
84 Bool isSCellCfgPres; /*!< Bool indicates whether configuration
86 uint8_t numSCells; /*!< Number of SCells
88 CrgUeSCellInfo ueSCellCfg[CRG_MAX_SCELL_PER_UE]; /*!< Secondary cell
89 configuration per UE */
95 @brief Cell configuration. */
96 typedef struct crgCellCfg
98 CmLteCellId cellId; /*!< Cell ID */
99 CrgRachCfg rachCfg; /*!< RACH Configuration */
100 CrgBwCfg bwCfg; /*!< Bandwidth Configuration */
101 #ifdef TENB_MULT_CELL_SUPPRT
102 SpId rguUlSapId; /*!< RLC UL SAP Id for common channels */
103 SpId rguDlSapId; /*!< RLC DL SAP Id for common channels */
111 @brief Uplink HARQ configuration per UE. */
112 typedef struct crgUeUlHqCfg
114 uint8_t maxUlHqTx; /*!< Maximum number of UL HARQ transmissions */
117 /* crg_x_001.main_3 - Changes for MIMO feature addition */
118 /* crg_x_001.main_4 - Changes for MIMO feature addition */
120 * @enum UE Transmission Modes */
121 typedef enum crgTxMode
123 CRG_UE_TM_1 = 1, /** Transmission Mode 1 */
124 CRG_UE_TM_2, /** Transmission Mode 2 */
125 CRG_UE_TM_3, /** Transmission Mode 3 */
126 CRG_UE_TM_4, /** Transmission Mode 4 */
127 CRG_UE_TM_5, /** Transmission Mode 5 */
128 CRG_UE_TM_6, /** Transmission Mode 6 */
129 CRG_UE_TM_7 /** Transmission Mode 7 */
133 @brief UE Transmission mode configuration */
134 typedef struct crgTxModeCfg
136 Bool pres; /*!< TRUE if Transmission mode is being CFG/RECFG ed */
137 CrgTxMode tm; /*!< Transmission mode */
140 @brief UE configuration. */
141 typedef struct crgUeCfg
143 CmLteCellId cellId; /*!< Cell ID */
144 CmLteRnti crnti; /*!< UE ID: CRNTI */
145 CrgUeUlHqCfg ueUlHqCfg; /*!< UE related UL HARQ configuration */
146 CrgTxModeCfg txMode; /*!< UE Transmission mode Cfg */
147 #ifdef TENB_MULT_CELL_SUPPRT
148 SpId rguUlSapId; /*!< RLC UL SAP Id for common channels */
149 SpId rguDlSapId; /*!< RLC DL SAP Id for common channels */
154 @brief Logical channel configuration information for downlink logical channels. */
155 typedef struct crgDlLchCfg
157 uint8_t dlTrchType; /*!< Indicates type of DL transport channel:
158 Validated only for BCCH at MAC. DL Transport
159 channel type can take following values:<br>
162 CM_LTE_TRCH_DL_SCH */
166 @brief Logical channel configuration information for uplink logical channels. */
167 typedef struct crgUlLchCfg
169 uint8_t ulTrchType; /*!< Indicates type of UL transport channel:
170 Validated only for BCCH at MAC.
171 UL Transport channel type can take following values:<br>
173 CM_LTE_TRCH_UL_SCH */
174 uint8_t lcgId; /*!< Logical channel group ID */
177 /* crg_x_001.main_2: Documentation update */
179 @brief Logical channel configuration information for common and dedicated channels. */
180 typedef struct crgLchCfg
182 CmLteCellId cellId; /*!< Cell ID */
183 CmLteRnti crnti; /*!< CRNTI for DTCH and DCCH */
184 CmLteLcId lcId; /*!< Logical channel ID */
185 CmLteLcType lcType; /*!< Identifies the Logical channel type. lcType can take the following values:<br>
192 uint8_t dir; /*!< Indicates Direction. Direction can take following
198 CrgDlLchCfg dlInfo; /*!< Downlink logical channel configuration info */
199 CrgUlLchCfg ulInfo; /*!< Uplink logical channel configuration info */
200 /* crg_x_001.main_5 - ADD - Members corresponding to LTE_L2_MEAS */
202 uint8_t qci; /*!< QCI for the logical channel.
203 Valid Range:[0-255] (Actual QCI - 1). */
205 #endif /* LTE_L2_MEAS */
209 @brief Basic configuration information for MAC. */
210 typedef struct crgCfg
212 uint8_t cfgType; /*!< Indicates configuration type */
215 CrgCellCfg cellCfg; /*!< Cell configuration */
216 CrgUeCfg ueCfg; /*!< UE configuration */
217 CrgLchCfg lchCfg; /*!< Logical channel configuration */
218 } u; /*!< Union of Cell/UE/Lch configuration */
223 @brief Activation time information. */
224 typedef struct crgActvTime
226 Bool pres; /*!< Indicates the presence of activation time */
227 CmLteTimingInfo actvTime; /*!< Activation time information */
232 @brief Cell reconfiguration information. */
233 typedef struct crgCellRecfg
235 CmLteCellId cellId; /*!< Cell ID */
236 CrgRachCfg rachRecfg; /*!< RACH Configuration */
240 @brief UE reconfiguration information. */
241 typedef struct crgUeRecfg
243 CmLteCellId cellId; /*!< Cell ID */
244 CmLteRnti oldCrnti; /*!< Old UE ID */
245 CmLteRnti newCrnti; /*!< New UE ID: This value must match
246 'oldCrnti',if no CRNTI change during
248 CrgUeUlHqCfg ueUlHqRecfg; /*!< UE UL HARQ information */
249 CrgTxModeCfg txMode; /*!< UE Transmission mode ReCfg */
251 CrgUeSecCellInfo crgSCellCfg; /*!< Secondary cell dedicated informaton
257 @brief Logical channel reconfiguration information for dedicated channels only. */
258 typedef struct crgLchRecfg
260 CmLteCellId cellId; /*!< Cell ID */
261 CmLteRnti crnti; /*!< CRNTI for DTCH and DCCH */
262 CmLteLcId lcId; /*!< Logical channel ID */
266 uint8_t lcgId; /*!< Logical channel group ID */
267 } ulRecfg; /*!< Uplink logical channel reconfiguration information */
272 @brief Basic reconfiguration information for MAC. */
273 typedef struct crgRecfg
275 uint8_t recfgType; /*!< Indicates reconfiguration type */
278 CrgCellRecfg cellRecfg; /*!< Cell Reconfig information */
279 CrgUeRecfg ueRecfg; /*!< UE Reconfig information */
280 CrgLchRecfg lchRecfg; /*!< Logical channel reconfiguration information */
281 } u; /*!< Union of Cell/UE/Lch reconfiguration information
286 @brief Basic Delete information for MAC. */
287 typedef struct crgDel
289 uint8_t delType; /*!< Indicates configuration item to be deleted */
294 CmLteCellId cellId; /*!< Cell ID */
295 } cellDel; /*!< Cell Delete information */
299 CmLteCellId cellId; /*!< Cell ID */
300 CmLteRnti crnti; /*!< UE ID: CRNTI */
301 } ueDel; /*!< UE Delete information */
305 CmLteCellId cellId; /*!< Cell ID */
306 CmLteRnti crnti; /*!< CRNTI for DTCH and DCCH */
307 CmLteLcId lcId; /*!< Logical channel ID */
308 uint8_t dir; /*!< Indicates Direction. Direction can take following
313 } lchDel; /*!< Logical channel delete information */
314 } u; /*!< Union of Cell/UE/Lch delete information */
318 @brief UE RESET information for MAC. */
319 typedef struct crgRst
321 CmLteCellId cellId; /*!< Cell ID */
322 CmLteRnti crnti; /*!< UE ID: CRNTI tobe RESET */
325 @brief Config/Reconfig/Delete information for MAC. */
326 typedef struct crgCfgReqInfo
328 uint8_t action; /*!< Determines cfg/recfg/del/reset */
331 CrgCfg cfgInfo; /*!< Configuration related infomation */
332 CrgRecfg recfgInfo; /*!< Reconfiguration related information */
333 CrgDel delInfo; /*!< Deletion related information */
334 CrgRst rstInfo; /*!< Reset related information */
335 } u; /*!< Union of config/re-config/delete information */
341 /** @brief Request from RRC to MAC to bind the interface SAPs. */
342 typedef S16 (*CrgBndReq) ARGS((
346 /** @brief Confirmation from MAC to RRC for the bind/unbind
347 * request for the interface SAPs. */
348 typedef S16 (*CrgBndCfm) ARGS((
352 /** @brief Request from RRC to MAC to unbind the interface SAPs. */
353 typedef S16 (*CrgUbndReq) ARGS((
357 /** @brief Configuration Request from RRC to MAC for
358 * configuring Cell/Ue/Lch. */
359 typedef S16 (*CrgCfgReq) ARGS((
362 CrgCfgTransId transId,
363 CrgCfgReqInfo * cfgReqInfo));
364 /** @brief Configuration Confirm from MAC to RRC. */
365 typedef S16 (*CrgCfgCfm) ARGS((
368 CrgCfgTransId transId,
371 /** @brief Request from RRC to MAC to bind the interface SAPs. */
372 S16 RgUiCrgBndReq ARGS((
377 /** @brief Confirmation from MAC to RRC for the bind/unbind
378 * request for the interface SAPs. */
379 S16 RgUiCrgBndCfm ARGS((
384 /** @brief Request from RRC to MAC to Unbind the interface SAPs. */
385 S16 RgUiCrgUbndReq ARGS((
390 /** @brief Configuration Request from RRC to MAC for
391 * configuring Cell/Ue/Lch. */
392 S16 RgUiCrgCfgReq ARGS((
395 CrgCfgTransId transId,
396 CrgCfgReqInfo * cfgReqInfo
398 /** @brief Configuration Confirm from MAC to RRC. */
399 S16 RgUiCrgCfgCfm ARGS((
402 CrgCfgTransId transId,
407 /** @brief Request from RRC to MAC to bind the interface SAPs. */
408 S16 NhLiCrgBndReq ARGS((
413 /** @brief Confirmation from MAC to RRC for the bind/unbind
414 * request for the interface SAPs. */
415 S16 NhLiCrgBndCfm ARGS((
420 /** @brief Request from RRC to MAC to Unbind the interface SAPs. */
421 S16 NhLiCrgUbndReq ARGS((
426 /** @brief Configuration Request from RRC to MAC for
427 * configuring Cell/Ue/Lch. */
428 S16 NhLiCrgCfgReq ARGS((
431 CrgCfgTransId transId,
432 CrgCfgReqInfo * cfgReqInfo
434 /** @brief Configuration Confirm from MAC to RRC. */
435 S16 NhLiCrgCfgCfm ARGS((
438 CrgCfgTransId transId,
444 /** @brief Request from RRC to MAC to bind the interface SAPs. */
445 S16 cmPkCrgBndReq ARGS((
450 /** @brief Request from RRC to MAC to bind the interface SAPs. */
451 S16 cmUnpkCrgBndReq ARGS((
456 /** @brief Confirmation from MAC to RRC for the bind/unbind
457 * request for the interface SAPs. */
458 S16 cmPkCrgBndCfm ARGS((
463 /** @brief Confirmation from MAC to RRC for the bind/unbind
464 * request for the interface SAPs. */
465 S16 cmUnpkCrgBndCfm ARGS((
470 /** @brief Request from RRC to MAC to unbind the interface SAPs. */
471 S16 cmPkCrgUbndReq ARGS((
476 /** @brief Request from RRC to MAC to unbind the interface SAPs. */
477 S16 cmUnpkCrgUbndReq ARGS((
482 /** @brief Configuration Request from RRC to MAC for
483 * configuring Cell/Ue/Lch. */
484 S16 cmPkCrgCfgReq ARGS((
487 CrgCfgTransId transId,
488 CrgCfgReqInfo * cfgReqInfo
490 /** @brief Configuration Request from RRC to MAC for
491 * configuring Cell/Ue/Lch. */
492 S16 cmUnpkCrgCfgReq ARGS((
497 /** @brief Configuration Confirm from MAC to RRC. */
498 S16 cmPkCrgCfgCfm ARGS((
501 CrgCfgTransId transId,
504 /** @brief Configuration Confirm from MAC to RRC. */
505 S16 cmUnpkCrgCfgCfm ARGS((
510 S16 cmPkCrgCfgTransId ARGS((
511 CrgCfgTransId *param,
514 S16 cmUnpkCrgCfgTransId ARGS((
515 CrgCfgTransId *param,
518 S16 cmPkCrgBwCfg ARGS((
522 S16 cmUnpkCrgBwCfg ARGS((
526 S16 cmPkCrgRachCfg ARGS((
530 S16 cmUnpkCrgRachCfg ARGS((
534 S16 cmPkCrgCellCfg ARGS((
538 S16 cmUnpkCrgCellCfg ARGS((
542 S16 cmPkCrgUeUlHqCfg ARGS((
546 S16 cmUnpkCrgUeUlHqCfg ARGS((
550 S16 cmPkCrgUeCfg ARGS((
554 S16 cmUnpkCrgUeCfg ARGS((
560 S16 cmPkCrgUeSecCellInfo ARGS((
561 CrgUeSecCellInfo *param,
565 S16 cmUnpkCrgUeSecCellInfo ARGS((
566 CrgUeSecCellInfo *param,
571 S16 cmPkCrgDlLchCfg ARGS((
575 S16 cmUnpkCrgDlLchCfg ARGS((
579 S16 cmPkCrgUlLchCfg ARGS((
583 S16 cmUnpkCrgUlLchCfg ARGS((
587 S16 cmPkCrgLchCfg ARGS((
591 S16 cmUnpkCrgLchCfg ARGS((
595 S16 cmPkCrgCfg ARGS((
599 S16 cmUnpkCrgCfg ARGS((
603 S16 cmPkCrgActvTime ARGS((
607 S16 cmUnpkCrgActvTime ARGS((
611 S16 cmPkCrgCellRecfg ARGS((
615 S16 cmUnpkCrgCellRecfg ARGS((
619 S16 cmPkCrgUeRecfg ARGS((
623 S16 cmUnpkCrgUeRecfg ARGS((
627 S16 cmPkCrgLchRecfg ARGS((
631 S16 cmUnpkCrgLchRecfg ARGS((
635 S16 cmPkCrgRecfg ARGS((
639 S16 cmUnpkCrgRecfg ARGS((
643 S16 cmPkCrgDel ARGS((
647 S16 cmUnpkCrgDel ARGS((
651 S16 cmPkCrgRst ARGS((
655 S16 cmUnpkCrgRst ARGS((
659 S16 cmPkCrgCfgReqInfo ARGS((
660 CrgCfgReqInfo *param,
663 S16 cmUnpkCrgCfgReqInfo ARGS((
664 CrgCfgReqInfo *param,
670 /** @brief Request from RRC to MAC to bind the interface SAPs. */
671 S16 DmUiCrgBndReq ARGS((
676 /** @brief Confirmation from MAC to RRC for the bind/unbind
677 * request for the interface SAPs. */
678 S16 DmUiCrgBndCfm ARGS((
683 /** @brief Request from RRC to MAC to unbind the interface SAPs. */
684 S16 DmUiCrgUbndReq ARGS((
689 /** @brief Configuration Request from RRC to MAC for
690 * configuring Cell/Ue/Lch. */
691 S16 DmUiCrgCfgReq ARGS((
694 CrgCfgTransId transId,
695 CrgCfgReqInfo * cfgReqInfo
697 /** @brief Configuration Confirm from MAC to RRC. */
698 S16 DmUiCrgCfgCfm ARGS((
701 CrgCfgTransId transId,
709 #endif /* __CRG_X__ */
711 /**********************************************************************
714 **********************************************************************/