/******************************************************************************* ################################################################################ # 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 kwGenCfg { Pst lmPst; /*!< Post structure for communicating with LM. */ U32 maxUe; /*!< Maximum number of UEs supported by RLC. */ U16 maxKwuSaps; /*!< Maximum KWU SAPs. */ /* Supported by SPLIT Architecture */ U16 maxUdxSaps; /*!< Maximum Udx SAPs. */ /* Supported by SPLIT Architecture ends */ Ticks timeRes; /*!< Time resolution. */ /* Supported by SPLIT Architecture */ U8 rlcMode; /*!< RLC_DL or RLC_UL */ /* Supported by SPLIT Architecture ends */ U16 maxRguSaps; /*!< Maximum RGU SAPs. */ }KwGenCfg; /** @brief SAP Configuration Structure */ typedef struct kwSapCfg { 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. */ U16 bndTmrIntvl; /*!< Bind timer interval. */ Priority priority; /*!< Priority. */ Route route; /*!< Route. */ }KwSapCfg; /** @brief * Configuration Structure */ typedef struct kwCfg { union { KwGenCfg gen; /*!< General configuraton. */ KwSapCfg sap; /*!< SAP configuration. */ }s; }KwCfg; /** @brief General Statistics Structure */ typedef struct kwGenSts { 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. */ }KwGenSts; /** @brief RLC Upper SAP statistics */ typedef struct kwKwuSapSts { /* 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. */ }KwKwuSapSts; /** @brief RRC Control SAP Statistics */ typedef struct kwCkwCntSts { CntrSts statMsgs; /*!< Number of Status Messages send. */ }KwCkwCntSts; /** @brief Statistics Structure */ typedef struct kwSts { DateTime dt; /*!< Date and Time structure. */ union { KwGenSts gen; /*!< General Statistics. */ KwKwuSapSts kwuSap; /*!< RLC upper SAP statistics. */ KwCkwCntSts ckwSap; /*!< RRC control SAP. */ }s; }KwSts; /** @brief MAC Upper SAP Status Structure */ typedef struct kwRguSapSta { SuId suId; /*!< Service user ID. */ State state; /*!< State of the SAP. */ }KwRguSapSta; /** @brief RLC Upper SAP Status Structure */ typedef struct kwKwuSapSta { SpId spId; /*!< Service provider ID. */ State state; /*!< State of the SAP. */ }KwKwuSapSta; /** @brief RRC Control SAP Status Structure */ typedef struct kwCkwCntSapSta { SpId spId; /*!< Service provider ID. */ State state; /*!< State of the SAP. */ }KwCkwCntSapSta; /** @brief Status Structure */ typedef struct kwSSta { DateTime dt; /*!< Date and Time structure. */ union { SystemId sysId; /*!< System ID. */ KwRguSapSta rguSap; /*!< RLC lower SAP (MAC) status. */ KwKwuSapSta kwuSap; /*!< RLC Upper SAP status. */ KwCkwCntSapSta ckwSap; /*!< RRC Control SAP Status. */ }s; }KwSSta; /** @brief Trace Control Structure */ typedef struct kwTrcCntrl { U8 trcMask; /*!< Trace mask. */ S16 trcLen; /*!< Trace length. */ }KwTrcCntrl; /** @brief Debug Control Structure */ typedef struct kwDbgCntrl { U32 dbgMask; /*!< Debug mask. Assign non zero value to enable and zero to disable debug */ }KwDbgCntrl; /** @brief SAP Control Structure */ typedef struct kwSapCntrl { SuId suId; /*!< Service user ID. */ SpId spId; /*!< Service provider ID. */ }KwSapCntrl; /** @brief Control Structure */ typedef struct kwCntrl { DateTime dt; /*!< Date and Time structure. */ U8 action; /*!< Action. */ U8 subAction; /*!< Sub action. */ union { KwTrcCntrl trcCntrl; /*!< Trace Control Structure. */ KwDbgCntrl dbgCntrl; /*!< Debug Control Structure. */ KwSapCntrl sapCntrl; /*!< SAP Control Structure. */ #ifdef SS_DIAG U32 logMask; /*!< Logging Control Structure. */ #endif }s; }KwCntrl; /** @brief Unsolicited Status Structure */ typedef struct kwUSta { DateTime dt; /*!< Date and Time structure. */ CmAlarm alarm; /*!< Alarm. */ SuId suId; /*!< Service user ID. */ U32 ueId; /*!< Urnti UE ID. */ /* lkw_x_001.main_2, added support for L2 measurement */ #ifdef LTE_L2_MEAS U8 qci; /*!< Qci value */ #endif }KwUSta; /** @brief Trace Structure */ typedef struct kwTrc { DateTime dt; /*!< Date and Time structure. */ U16 event; /*!< Event. Events defined in the differenct RLC interfaces are pssible values here.*/ }KwTrc; /** @brief Layer Management Structure */ typedef struct _kwMngmt { Header hdr; /*!< Common header. */ CmStatus cfm; /*!< Status of confirmation. */ union { KwCfg cfg; /*!< General Configuration. */ KwCntrl cntrl; /*!< Control Structure. */ KwSts sts; /*!< Statistics. */ KwSSta ssta; /*!< Status. */ KwUSta usta; /*!< Unsolicited Status. */ KwTrc trc; /*!< Trace Structre. */ }t; }KwMngmt; /* lkw_x_001.main_2, added support for L2 measurement */ #ifdef LTE_L2_MEAS /** @brief Measurement Request Params Structure. */ typedef struct kwL2MeasReqInfo { U8 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 { U16 numSamples; /*!