/******************************************************************************* ################################################################################ # Copyright (c) [2017-2019] [Radisys] # # # # Licensed under the Apache License, Version 2.0 (the "License"); # # you may not use this file except in compliance with the License. # # You may obtain a copy of the License at # # # # http://www.apache.org/licenses/LICENSE-2.0 # # # # Unless required by applicable law or agreed to in writing, software # # distributed under the License is distributed on an "AS IS" BASIS, # # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # # See the License for the specific language governing permissions and # # limitations under the License. # ################################################################################ *******************************************************************************/ /********************************************************************20** Name: NR RLC file for uplink and non real time tasks Type: C include file Desc: This file contains all the data structures and prototypes for RLC in the uplink. File: kw_ul.x *********************************************************************21*/ /** * @file kw_ul.x * @brief RLC uplink structures, prototypes */ #ifndef __KW_ULX__ #define __KW_ULX__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ typedef struct rlcUlUeCb RlcUlUeCb; /** * @brief Structure to hold a RLC UM PDU segment * * @details * - lstEnt : This is required for the linked list in which the segments * are stored * - seg : Holds the segment data * - segSz : The length of the segment in bytes * - soEnd : SOEnd * - umHdr : The UM Header for the PDU segment * */ typedef struct rlcUmSeg { CmLList lstEnt; /*!< List entry for PDU segment */ Buffer *seg; /*!< PDU segment */ MsgLen segSz; /*!< Buffer Size */ uint16_t soEnd; /*!< Segment Offset End */ RlcUmHdr umHdr; /*!*/ #endif /* LTE_L2_MEAS */ CmLteRlcId rlcId; /**< RLC Identifier */ RlcLchInfo lch; /**< Logical Channel Info */ CmLteRlcMode mode; /**< Entity Mode */ uint8_t dir; /**< Direction for UL/DL */ Inst inst; /**< Tapa where Rb created Instance id */ SpId k1wuSapId; /**< KWU sap Id, to get the KwuSapCb */ SpId udxSapId; /**< KWU sap Id, to get the KwuSapCb */ uint32_t transId; /**< Transaction Id for RLC */ union { RlcUmUl umUl; /**< UM mode Ul elements */ RlcAmUl amUl; /**< AM mode uplink elements */ }m; /**< RLC mode specific Info */ }RlcUlRbCb; /** * @brief Structure to hold mapping between logical channel and Radio Bearer * * @details * - ulRbCb : Pointer to the uplink Radio Bearer */ typedef struct rlcUlLch { RlcUlRbCb *ulRbCb; /**< Pointer to Uplink RbCb */ }RlcUlLch; /** * @brief Structure to hold uplink information about the Cells * * @details * - cellHlEnt : Information about cells are stored in a hash table. This is * required for that. * - cellId : Identity of the cell * - rbCb : Radio Bearers in the cell * - lCh : Logical Channels in the cell * - selfPstUl : Pst structure for sending messages to self */ typedef struct rlcUlCellCb { CmHashListEnt cellHlEnt; /**< Hash list entry for CellCb */ CmLteCellId cellId; /**< Cell Id */ RlcUlRbCb *rbCb[RLC_MAX_RB_PER_CELL]; /**< RbCbs within a Cell */ RlcUlLch lCh[RLC_MAX_LCH_PER_CELL]; /**< Logical channels in a cell */ Pst selfPstUl; }RlcUlCellCb; /** * @brief Structure to hold uplink information about the UEs * * @details * - ueHlEnt : Information about cells are stored in a hash table. This is * required for that. * - key : Key to store/find the UE in the hashtable * - srbCb : Signaling Radio Bearers configured for the UE * - drbCb : Data Radio Bearers configured for the UE * - lCh : Logical Channels in the UE */ struct rlcUlUeCb { CmHashListEnt ueHlEnt; /**< Hash list entry for UeCb */ CmLteRnti ueId; /*!< UE Id */ CmLteCellId cellId; /*!< Cell Id */ RlcUlRbCb *srbCb[RLC_MAX_SRB_PER_UE]; /**< SRB RbCbs within an UE */ RlcUlRbCb *drbCb[RLC_MAX_DRB_PER_UE]; /**< DRB RbCbs within an UE */ RlcUlLch lCh[RLC_MAX_LCH_PER_UE]; /**< Logical channels of an UE*/ /* kw005.201 added support for L2 Measurement */ #ifdef LTE_L2_MEAS uint32_t firstPacketTTI; /*!< is first packet of the burst */ uint16_t numActRb[LKW_MAX_QCI]; /**< number of RBs Active */ Bool isUlBurstActive; /*!