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 interface between
26 Two MAC instances(PRG = MAC to MAC).
30 **********************************************************************/
33 @brief Structure declarations and definitions for MAC-MAC (PRG) interface.
44 typedef TfuDatReqTbInfo RgPrgDatReqTbInfo;
48 * @brief Typedef for uplink Dedicated Logical channel group Id.
50 typedef uint8_t RgPrgLteLcgId;
53 * @brief Structure to hold uplink Dedicated Logical channel info.
56 * - lcId : Logical channel ID at MAC
57 * - lcgId : Logical channel group ID at MAC
58 * - qci : QCI for this logical channel control block
59 * - measOn : TRUE if Timing Info needs to be fetched for scheduled UL
60 * IP throughput else FALSE
62 typedef struct rgPrgUlLcInfo
64 CmLteLcId lcId; /*!< Logical channel ID */
65 RgPrgLteLcgId lcgId; /*!< Logical channel group */
67 uint8_t qci; /*!< QCI for this logical channel control block */
69 Bool measOn; /*!< TRUE if Timing Info needs to be fetched for
70 Scheduled UL IP throughput else FALSE */
76 * @brief Structure to hold logical channel group information
79 * - lcgId : Logical channel group ID at MAC
80 * - lcCount : Logical channel count
81 * - isGbr : Indicate if LCG is GBR LCG
83 typedef struct rgPrgLcgInfo
85 /* Right now not keeping associated logical channels, searching for
86 * associated channels needed only during config */
87 RgPrgLteLcgId lcgId; /*!< Group ID */
88 uint8_t lcCount; /*!< Lc count */
89 Bool isGbr; /*!< Indicate if LCG is GBR LCG */
93 * @brief Structure to hold downlink Dedicated Logical channel info.
96 * - lcId : Logical channel ID at MAC
98 typedef struct rgPrgDlLcInfo
100 CmLteLcId lcId; /*!< Logical channel ID */
105 * @brief Structure to hold Config req from PMAC to SMAC.
108 * - ueId : UE identifier
110 * - maxUlHqRetx : Maximum number of harq retx
111 * - ulLcInfo : Dedicated Uplink logical channel info
112 * - lcgInfo : Logical channel groups
113 * - dlLcInfo : Dedicated Downlink logical channels in UE
114 * - txMode : UE Transmission mode Cfg
115 * - rguDlSapId : Sap id for associated with RLC DL
116 * - rguUlSapId : Sap id for associated with RLC UL
118 typedef struct rgPrgUeSCellCfgInfo
120 CmLteRnti ueId; /*!< UE identifier */
121 CmLteCellId cellId; /*!< Cell ID */
123 uint8_t maxUlHqRetx; /*!< Maximum number of harq
124 * re-transmissions */
125 RgPrgUlLcInfo ulLcInfo[RG_MAX_LC_PER_UE]; /*!< Dedicated Uplink
126 logical channel information */
127 RgPrgLcgInfo lcgInfo[RG_MAX_LCG_PER_UE]; /*!< Logical channel
129 RgPrgDlLcInfo dlLcInfo[RG_MAX_LC_PER_UE]; /*!< Dedicated Downlink
130 logical channels in UE */
132 CrgTxMode txMode; /*!< UE Transmission mode Cfg */
134 SuId rguDlSapId; /* !< Sap id for associated
136 SuId rguUlSapId; /* !< Sap id for associated
138 }RgPrgUeSCellCfgInfo;
141 * @brief Structure to hold config confirm info from PMAC to SMAC.
144 * - ueId : UE identifier
145 * - sCellId : SCell ID
146 * - status : status (OK/NOK)
148 typedef struct rgPrgCfgCfmInfo
150 CmLteRnti ueId; /*!< UE identifier */
151 CmLteCellId sCellId; /*!< SCell ID */
152 uint8_t status; /*!< Status: OK/NOK */
153 uint8_t event; /*!< type of event */
157 * @brief Structure to hold Ue delete Req/Ue Id change Info from PMAC to SMAC.
160 * - ueId : UE identifier
161 * - sCellId : sCell ID
162 * - newRnti : new RNTI changed as part of reestablishment
164 typedef struct rgPrgUeSCellDelInfo
166 CmLteRnti ueId; /*!< UE identifier */
167 CmLteCellId sCellId; /*!< sCell ID */
168 CmLteRnti newRnti; /*!< new RNTI changed as part of reestablishment */
169 }RgPrgUeSCellDelInfo;
172 * @brief Structure to hold LC Config req from PMAC to SMAC.
176 * - crnti : CRNTI for DTCH and DCCH
177 * - lcId : Logical Channel Id
178 * - lcgId : Logical channel group Id
180 typedef struct rgPrgUeSCellLchModInfo
182 CmLteCellId cellId; /*!< Cell ID */
183 CmLteRnti crnti; /*!< CRNTI for DTCH and DCCH */
184 CmLteLcId lcId; /*!< Logical channel ID */
188 uint8_t lcgId; /*!< Logical channel group ID */
189 } ulLchRecfg; /*!< Uplink logical channel reconfiguration
191 }RgPrgUeSCellLchModInfo;
194 * @brief Structure to hold LC Config req for deletion from PMAC to SMAC.
198 * - crnti : CRNTI for DTCH and DCCH
199 * - lcId : Logical Channel Id
200 * - dir : Indicates Direction
202 typedef struct rgPrgUeSCellLchDelInfo
204 CmLteCellId cellId; /*!< Cell ID */
205 CmLteRnti crnti; /*!< CRNTI for DTCH and DCCH */
206 CmLteLcId lcId; /*!< Logical channel ID */
207 uint8_t dir; /*!< Indicates Direction. Direction can take following
213 }RgPrgUeSCellLchDelInfo;
216 * @brief Logical channel configuration information for uplink logical channels.
219 * -ulTrchType : Indicates type of UL transport channel:
220 Validated only for BCCH at MAC.
221 UL Transport channel type can take following values:<br>
224 * -lcgId; : Logical channel group ID
226 typedef struct rgPrgUlLchCfg
228 uint8_t ulTrchType; /*!< Indicates type of UL transport channel:
229 Validated only for BCCH at MAC.
230 UL Transport channel type can take following values:<br>
232 CM_LTE_TRCH_UL_SCH */
233 uint8_t lcgId; /*!< Logical channel group ID */
238 * @brief Logical channel configuration information for downlink logical channels.
241 * -dlTrchType : Indicates type of DL transport channel:
242 Validated only for BCCH at MAC. DL Transport
243 channel type can take following values:<br>
248 typedef struct rgPrgDlLchCfg
250 uint8_t dlTrchType; /*!< Indicates type of DL transport channel:
251 Validated only for BCCH at MAC. DL Transport
252 channel type can take following values:<br>
255 CM_LTE_TRCH_DL_SCH */
257 /** @brief Logical channel configuration information for common and dedicated channels.
261 * crnti : CRNTI for DTCH and DCCH
262 * lcId : Logical channel ID
263 * lcType : Identifies the Logical channel type. lcType can take the following values:<br>
270 * dir : Indicates Direction. Direction can take following
276 * dlInfo : Downlink logical channel configuration info
277 * ulInfo : Uplink logical channel configuration info
279 * qci; : QCI for the logical channel.
280 Valid Range:[0-255] (Actual QCI - 1).
282 typedef struct rgPrgUeSCellLchAddInfo
284 CmLteCellId cellId; /*!< Cell ID */
285 CmLteRnti crnti; /*!< CRNTI for DTCH and DCCH */
286 CmLteLcId lcId; /*!< Logical channel ID */
287 CmLteLcType lcType; /*!< Identifies the Logical channel type. lcType can take the following values:<br>
294 uint8_t dir; /*!< Indicates Direction. Direction can take following
300 RgPrgDlLchCfg dlInfo; /*!< Downlink logical channel configuration info */
301 RgPrgUlLchCfg ulInfo; /*!< Uplink logical channel configuration info */
303 uint8_t qci; /*!< QCI for the logical channel.
304 Valid Range:[0-255] (Actual QCI - 1). */
306 #endif /* LTE_L2_MEAS */
307 } RgPrgUeSCellLchAddInfo;
313 /** @brief Request from PMAC to SMAC to add Ue Scell config. */
314 S16 RgPrgPMacSMacUeSCellCfg ARGS
317 RgPrgUeSCellCfgInfo *ueSCellCb
320 /** @brief Request from PMAC to SMAC to add Ue Scell config. */
321 S16 RgPrgPMacSMacUeSCellCfgReq ARGS
324 RgPrgUeSCellCfgInfo *ueSCellCb
327 /** @brief Function ptr for Request from PMAC to SMAC to add Ue Scell config.*/
328 typedef S16 (*RgPrgUeSCellCfgReq) ARGS ((
330 RgPrgUeSCellCfgInfo *ueSCellCb
333 /** @brief Config confirm of Ue SCell config Req from SMAC to PMAC */
334 S16 RgPrgSMacPMacCfg ARGS ((
336 RgPrgCfgCfmInfo *cfgCfm
339 /** @brief Config confirm from SMAC to PMAC */
340 S16 RgPrgSMacPMacCfgCfm ARGS ((
342 RgPrgCfgCfmInfo *cfgCfm
345 /** @brief Function ptr for Config confirm from SMAC to PMAC */
346 typedef S16 (*RgSMacPMacCfgCfm) ARGS((
348 RgPrgCfgCfmInfo *cfgCfm
352 * @brief Ue SCell cfg delete Req from PMac to SMac*/
353 S16 RgPrgPMacSMacUeSCellDel ARGS ((
355 RgPrgUeSCellDelInfo *sCellUedelReq
359 * @brief Ue SCell cfg delete Req from PMac to SMac*/
360 S16 RgPrgPMacSMacUeSCellDelReq ARGS ((
362 RgPrgUeSCellDelInfo *sCellUedelReq
366 * @brief Function ptr to Ue SCell cfg delete Req from PMac to SMac*/
367 typedef S16 (*RgUeSCellDelReq) ARGS((
369 RgPrgUeSCellDelInfo *sCellUedelReq
374 * @brief Ue SCell Cfg Req from PMac to SMac.
375 * @details This primitive is used for light-weight loose coupling.
377 S16 cmPkPrgPMacSMacUeSCellCfgReq ARGS ((
379 RgPrgUeSCellCfgInfo *ueSCellCb
382 S16 cmUnpkPrgPMacSMacUeSCellCfgReq ARGS ((
383 RgPrgUeSCellCfgReq func,
389 * @brief Ue SCell Add Cfg cfm from SMac to PMac.
390 * @details This primitive is used for light-weight loose coupling.
392 S16 cmPkPrgSMacPMacCfgCfm ARGS((
394 RgPrgCfgCfmInfo *cfgCfm
398 S16 cmUnpkPrgSMacPMacCfgCfm ARGS((
399 RgSMacPMacCfgCfm func,
404 * @brief SCell Ue Delete Req from PMac to SMac.
405 * @details This primitive is used for light-weight loose coupling.
407 S16 cmPkPrgPMacSMacUeSCellDelReq ARGS((
409 RgPrgUeSCellDelInfo *sCellUeDelInfo
413 S16 cmUnpkPrgPMacSMacUeSCellDelReq ARGS((
414 RgUeSCellDelReq func,
421 * @brief Ue Lch recfg Req from PMac to SMac.
422 * @details This primitive is used for light-weight loose coupling.
424 S16 cmPkPrgPMacSMacUeSCellLchModReq ARGS((
426 RgPrgUeSCellLchModInfo *lchCfgCb
429 S16 cmUnpkPrgPMacSMacUeSCellLchModReq ARGS((
430 RgPrgUeScellModLchReq func,
436 * @brief SCell Ue Delete Req from PMac to SMac.
437 * @details This primitive is used for light-weight loose coupling.
439 S16 cmPkPrgPMacSMacUeSCellLchDelReq ARGS((
441 RgPrgUeSCellLchDelInfo *delLcCb
445 S16 cmUnpkPrgPMacSMacUeSCellLchDelReq ARGS((
446 RgPrgUeScellDelLchReq func,
452 * @brief Ue Lch cfg Req from PMac to SMac.
453 * @details This primitive is used for light-weight loose coupling.
455 S16 cmPkPrgPMacSMacUeSCellLchAddReq ARGS ((
457 RgPrgUeSCellLchAddInfo *lchCfgCb
460 S16 cmUnpkPrgPMacSMacUeSCellLchAddReq ARGS ((
461 RgPrgUeScellAddLchReq func,
469 /** @brief Request from PMAC to SMAC to add Lch Reconfig. */
470 S16 RgPrgPMacSMacUeScellLchMod ARGS
473 RgPrgUeSCellLchModInfo *lchCfgCb
476 /** @brief Request from PMAC to SMAC to add Lch Reconfig. */
478 /** @brief Function ptr for Request from PMAC to SMAC to add Lch Reconfig.*/
479 typedef S16 (*RgPrgUeScellModLchReq) ARGS((
481 RgPrgUeSCellLchModInfo *lchCfgCb
484 /** @brief Request from PMAC to SMAC to delete Lch . */
485 S16 RgPrgPMacSMacUeScellLchDel ARGS
488 RgPrgUeSCellLchDelInfo *delLcCb
491 /** @brief Request from PMAC to SMAC to delete Lch. */
493 /** @brief Function ptr for Request from PMAC to SMAC to delete Lch.*/
494 typedef S16 (*RgPrgUeScellDelLchReq) ARGS((
496 RgPrgUeSCellLchDelInfo *delLcCb
500 /** @brief Request from PMAC to SMAC to add Lch config. */
501 S16 RgPrgPMacSMacUeScellLchAdd ARGS
504 RgPrgUeSCellLchAddInfo *lchCfgCb
507 /** @brief Request from PMAC to SMAC to add Lch config. */
509 /** @brief Function ptr for Request from PMAC to SMAC to add Lch config.*/
510 typedef S16 (*RgPrgUeScellAddLchReq) ARGS
512 RgPrgUeSCellLchAddInfo *lchCfgCb
518 #endif /* __RGPRG_X__*/
520 /**********************************************************************
522 End of file: rg_prg.x
523 **********************************************************************/