/******************************************************************************* ################################################################################ # 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: LKW RLC Layer Manager Interface Type: C include file Desc: This file Contains the Data structures and prototypes for LKW Interface File: lkw.x *********************************************************************21*/ #ifndef __LKW_X__ #define __LKW_X__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /** @brief General Configuration Structure. */ typedef struct rlcGenCfg { Pst lmPst; /*!< Post structure for communicating with LM. */ uint32_t maxUe; /*!< Maximum number of UEs supported by RLC. */ uint16_t maxKwuSaps; /*!< Maximum KWU SAPs. */ /* Supported by SPLIT Architecture */ uint16_t maxUdxSaps; /*!< Maximum Udx SAPs. */ /* Supported by SPLIT Architecture ends */ Ticks timeRes; /*!< Time resolution. */ /* Supported by SPLIT Architecture */ uint8_t rlcMode; /*!< RLC_DL or RLC_UL */ /* Supported by SPLIT Architecture ends */ uint16_t maxRguSaps; /*!< Maximum RGU SAPs. */ }RlcGenCfg; /** @brief SAP Configuration Structure */ typedef struct rlcSapCfg { Selector selector; /*!< Selector for LC/TC. */ MemoryId mem; /*!< Region and pool. */ ProcId procId; /*!< Processor ID. */ Ent ent; /*!< Entity ID. */ Inst inst; /*!< Instance ID. */ SpId sapId; /*!< SAP ID. */ uint16_t bndTmrIntvl; /*!< Bind timer interval. */ Priority priority; /*!< Priority. */ Route route; /*!< Route. */ }RlcSapCfg; /** @brief * Configuration Structure */ typedef struct rlcCfg { union { RlcGenCfg gen; /*!< General configuraton. */ RlcSapCfg sap; /*!< SAP configuration. */ }s; }RlcCfg; /** @brief General Statistics Structure */ typedef struct rlcGenSts { CntrSts numUe; /*!< Total number of UEs. */ CntrSts pdusRecv; /*!< Number of PDUs received. */ CntrSts pdusSent; /*!< Number of PDUs sent. */ CntrSts pdusRetx; /*!< Number of PDUs retransmitted. */ CntrSts bytesRecv; /*!< Number of bytes received. */ CntrSts bytesSent; /*!< Number of bytes sent. */ CntrSts unexpPdusRecv; /*!< Unexpected PDU received. */ CntrSts errorPdusRecv; /*!< Format error pdus received. */ CntrSts protTimeOut; /*!< Number of protocol time outs leading to retransmission. */ CntrSts numOfRb; /*!< Total number of RBs in RLC. */ CntrSts numSduDisc; /*!< Number of SDUs discarded. */ }RlcGenSts; /** @brief RLC Upper SAP statistics */ typedef struct rlcKwuSapSts { /* lkw_x_001.main_2, changed from suId to spId */ SpId spId; /*!< Service Provider ID. */ CntrSts sduRx; /*!< Number of SDUs received. */ CntrSts sduTx; /*!< Number of tranxmitted SDUs. */ }RlcKwuSapSts; /** @brief RRC Control SAP Statistics */ typedef struct rlcCkwCntSts { CntrSts statMsgs; /*!< Number of Status Messages send. */ }RlcCkwCntSts; /** @brief Statistics Structure */ typedef struct rlcSts { DateTime dt; /*!< Date and Time structure. */ union { RlcGenSts gen; /*!< General Statistics. */ RlcKwuSapSts rlckwuSap; /*!< RLC upper SAP statistics. */ RlcCkwCntSts ckwSap; /*!< RRC control SAP. */ }s; }RlcSts; /** @brief MAC Upper SAP Status Structure */ typedef struct rlcRguSapSta { SuId suId; /*!< Service user ID. */ State state; /*!< State of the SAP. */ }RlcRguSapSta; /** @brief RLC Upper SAP Status Structure */ typedef struct rlcKwuSapSta { SpId spId; /*!< Service provider ID. */ State state; /*!< State of the SAP. */ }RlcKwuSapSta; /** @brief RRC Control SAP Status Structure */ typedef struct rlcCkwCntSapSta { SpId spId; /*!< Service provider ID. */ State state; /*!< State of the SAP. */ }RlcCkwCntSapSta; /** @brief Status Structure */ typedef struct rlcSSta { DateTime dt; /*!< Date and Time structure. */ union { SystemId sysId; /*!< System ID. */ RlcRguSapSta rguSap; /*!< RLC lower SAP (MAC) status. */ RlcKwuSapSta rlckwuSap; /*!< RLC Upper SAP status. */ RlcCkwCntSapSta ckwSap; /*!< RRC Control SAP Status. */ }s; }RlcSSta; /** @brief Trace Control Structure */ typedef struct rlcTrcCntrl { uint8_t trcMask; /*!< Trace mask. */ S16 trcLen; /*!< Trace length. */ }RlcTrcCntrl; /** @brief Debug Control Structure */ typedef struct rlcDbgCntrl { uint32_t dbgMask; /*!< Debug mask. Assign non zero value to enable and zero to disable debug */ }RlcDbgCntrl; /** @brief SAP Control Structure */ typedef struct rlcSapCntrl { SuId suId; /*!< Service user ID. */ SpId spId; /*!< Service provider ID. */ }RlcSapCntrl; /** @brief Control Structure */ typedef struct rlcCntrl { DateTime dt; /*!< Date and Time structure. */ uint8_t action; /*!< Action. */ uint8_t subAction; /*!< Sub action. */ union { RlcTrcCntrl trcCntrl; /*!< Trace Control Structure. */ RlcDbgCntrl dbgCntrl; /*!< Debug Control Structure. */ RlcSapCntrl sapCntrl; /*!< SAP Control Structure. */ #ifdef SS_DIAG uint32_t logMask; /*!< Logging Control Structure. */ #endif }s; }RlcCntrl; /** @brief Unsolicited Status Structure */ typedef struct rlcUSta { DateTime dt; /*!< Date and Time structure. */ CmAlarm alarm; /*!< Alarm. */ SuId suId; /*!< Service user ID. */ uint32_t ueId; /*!< Urnti UE ID. */ /* lkw_x_001.main_2, added support for L2 measurement */ #ifdef LTE_L2_MEAS uint8_t qci; /*!< Qci value */ #endif }RlcUSta; /** @brief Trace Structure */ typedef struct rlcTrc { DateTime dt; /*!< Date and Time structure. */ uint16_t event; /*!< Event. Events defined in the differenct RLC interfaces are pssible values here.*/ }RlcTrc; /** @brief Layer Management Structure */ typedef struct rlcMngmt { Header hdr; /*!< Common header. */ CmStatus cfm; /*!< Status of confirmation. */ union { RlcCfg cfg; /*!< General Configuration. */ RlcCntrl cntrl; /*!< Control Structure. */ RlcSts sts; /*!< Statistics. */ RlcSSta ssta; /*!< Status. */ RlcUSta usta; /*!< Unsolicited Status. */ RlcTrc trc; /*!< Trace Structre. */ }t; }RlcMngmt; /* lkw_x_001.main_2, added support for L2 measurement */ #ifdef LTE_L2_MEAS /** @brief Measurement Request Params Structure. */ typedef struct rlcL2MeasReqInfo { uint8_t measType; /*!< Measurement type, bit 1 to 4 (LSB nibble) will be used for non IP Throughput and bit 5 and 6 will be used for DL and UL Ipthroughput respectively */ union { struct { uint16_t numSamples; /*!