/******************************************************************************* ################################################################################ # 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: PDCP Layer Manager Interface: LPJ Type: C include file Desc: This file Contains the Data structures and prototypes for LPJ Interface File: lpj.x *********************************************************************21*/ #ifndef __LPJ_X__ #define __LPJ_X__ #ifdef __cplusplus EXTERN "C" { #endif /* __cplusplus */ #if (defined(KW_PDCP) || defined(TENB_SPLIT_ARCH)) /*typedef U32 CntrSts;*/ #if (defined(PJ_SEC_ASYNC) || defined (PJ_CMP_ASYNC)) /** @struct PjOBPst * Post Info for Off-board Entities */ typedef struct pjObdPst { Pst cmpPst; /*!< Service user post structure for compression */ Pst secPst; /*!< Service user post structure for security algorithm */ }PjObdPst; #endif /* PJ_SEC_ASYNC || PJ_CMP_ASYNC */ /** @brief General Configuration Structure. */ typedef struct pjGenCfg { Pst lmPst; /*!< Post structure for communicating with LM. */ Ticks timeRes; /*!< Time resolution. */ U8 mode; /*!< Pdcp mode DL / UL */ U8 maxPjuSaps; /*!< Number of PDCP Data SAPs */ U8 maxKwuSaps; /*!< Number of PDCP Data SAPs */ U8 maxUdxSaps; /*!< Number of Udx SAPs */ U8 nmbUlBins; /*!< Number of bins which is used for RxBuff to store */ U8 nmbDlBins; /*!< Number of bins which is used for RxBuff to store */ U32 maxUe; #if (defined(PJ_SEC_ASYNC) || defined (PJ_CMP_ASYNC)) S32 obdTmrInt; /*!< Timer Interval used while waiting for an output data from Off-board entities */ S32 obdWtTmrInt; /*!< OBD wait timer used while opening and closing the context with Off-board entities */ PjObdPst obdPst; /*!< Post Information for off-board Interface */ #endif /* PJ_SEC_ASYNC || PJ_CMP_ASYNC */ }PjGenCfg; /** @brief SAP Configuration Structure */ typedef struct pjSapCfg { 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. */ }PjSapCfg; /** @brief * Configuration Structure */ typedef struct pjCfg { union { PjGenCfg gen; /*!< General configuraton. */ PjSapCfg sap; /*!< SAP configuration. */ }s; }PjCfg; /** @brief General Statistics Structure */ typedef struct pjGenSts { CntrSts numUe; CntrSts numOfRb; /*!< Total number of RBs in PDCP */ CntrSts rxPdus; /*!< Number of PDUs received Layer from RLC. */ CntrSts txPdus; /*!< Number of PDUs sent to RLC. */ CntrSts errorPdusRecv; /*!< Format error PDUs received from RLC. */ CntrSts numSdusDisc; /*!< Number of SDUs discarded due to PDCP discard timer expiry. */ CntrSts numCmpFails; /*!< Number of Compression fails */ CntrSts numDecmpFails; /*!< Number of Decompression fails */ CntrSts numIntgPrtFails; /*!< Number of Integration Protection fails */ CntrSts numIntgVrfFails; /*!< Number of Integration Verification fails */ CntrSts numCiphFails; /*!< Number of Ciphering fails */ CntrSts numDeciphFails; /*!< Number of Deciphering fails */ CntrSts numPdusDiscObdTmrExp; /*!< Number of PDUs discarded in UL due to Off-board timer expiry. */ CntrSts numSdusDiscObdTmrExp; /*!< Number of SDUs discarded in DL due to Off-board timer expiry. */ CntrSts numPktsFrwd; /*!< Number of Packets forwarded to X2 interface */ CntrSts numPktsRcvd; /*!< Number of Packets recieved to X2 interface */ }PjGenSts; /** @brief General Statistics Structure */ typedef struct pjPjuSts { /* lpj_x_001.main_1 modified from suId to spId */ SpId spId; /*!< Service provider ID. */ CntrSts rxSdus; /*!< Number of SDUs received Layer from UL. */ CntrSts txSdus; /*!< Number of SDUs sent to UL. */ }PjPjuSts; /** @brief Statistics Structure */ typedef struct pjSts { DateTime dt; /*!< Date and Time structure. */ union { PjGenSts gen; /*!< General Statistics. */ PjPjuSts pjuSap; /*!< PJU SAP Statistics. */ }s; }PjSts; /** @brief PDCP Data Plane Upper SAP Status Structure */ typedef struct pjPjuSapSta { SpId spId; /*!< Service provider ID. */ State state; /*!< State of the SAP. */ }PjPjuSapSta; /** @brief PDCP Uplink Downlink SAP Status Structure */ typedef struct pjUdxSapSta { SpId spId; /*!< Service provider ID. */ State state; /*!< State of the SAP. */ }PjUdxSapSta; /** @brief PDCP Data Plane Upper SAP Status Structure */ typedef struct pjKwuSapSta { SpId spId; /*!< Service provider ID. */ State state; /*!< State of the SAP. */ }PjKwuSapSta; /** @brief PDCP Control Plane SAP Status Structure */ typedef struct pjCpjSapSta { SpId spId; /*!< Service provider ID. */ State state; /*!< State of the SAP. */ }PjCpjSapSta; /** @brief Status Structure */ typedef struct pjSSta { DateTime dt; /*!< Date and Time structure. */ union { SystemId sysId; /*!< System ID. */ PjCpjSapSta cpjSap; /*!< PDCP Control plane Upper SAP Status. */ PjPjuSapSta pjuSap; /*!< PDCP Data plane Upper SAP status. */ PjKwuSapSta kwuSap; /*!< PDCP Data plane Upper SAP status. */ PjUdxSapSta udxSap; /*!< PDCP Data plane Upper SAP status. */ }s; }PjSSta; /** @brief Trace Control Structure */ typedef struct pjTrcCntrl { U8 trcMask; /*!< Trace mask. */ S16 trcLen; /*!< Trace length. */ }PjTrcCntrl; /** @brief Debug Control Structure */ typedef struct pjDbgCntrl { U32 dbgMask; /*!< Debug mask. Assign non zero value to enable and zero to disable debug */ }PjDbgCntrl; /** @brief SAP Control Structure */ typedef struct pjSapCntrl { SuId suId; /*!< Service user ID. */ SpId spId; /*!< Service provider ID. */ }PjSapCntrl; /** @brief Control Structure */ typedef struct pjCntrl { DateTime dt; /*!< Date and Time structure. */ U8 action; /*!< Action. */ U8 subAction; /*!< Sub action. */ union { PjTrcCntrl trcCntrl; /*!< Trace Control Structure. */ PjDbgCntrl dbgCntrl; /*!< Debug Control Structure. */ #ifdef SS_DIAG U32 logMask; /*!< Logging Control Structure. */ #endif PjSapCntrl sapCntrl; /*!< Debug Control Structure. */ }s; }PjCntrl; /** @brief Unsolicited Status Structure */ typedef struct pjUSta { DateTime dt; /*!< Date and Time structure. */ CmAlarm alarm; /*!< Alarm. */ SuId suId; /*!< Service user ID. */ U32 ueId; /*!< Urnti UE ID. */ /* lpj_x_001.main_1 added support for L2 Measurement */ #ifdef LTE_L2_MEAS U8 qci; /*!< QCI */ #endif }PjUSta; /** @brief Trace Structure */ typedef struct pjTrc { DateTime dt; /*!< Date and Time structure. */ U16 event; /*!< Event. Events defined in the different PDCP interfaces are possible values here.*/ }PjTrc; /** @brief Layer Management Structure */ typedef struct _pjMngmt { Header hdr; /*!< common header. */ CmStatus cfm; /*!< Status of confirmation. */ union { PjCfg cfg; /*!< General Configuration. */ PjCntrl cntrl; /*!< Control Structure. */ PjSts sts; /*!< Statistics. */ PjSSta ssta; /*!< Status. */ PjUSta usta; /*!< Unsolicited Status. */ PjTrc trc; /*!< Trace Structre. */ }t; }PjMngmt; /* lpj_x_001.main_1 added support for L2 Measurement */ #ifdef LTE_L2_MEAS /** @brief Measurement Request Params Structure. */ typedef struct pjL2MeasReqInfo { U16 measType; /*!< Type of measurement */ U8 numQci; /*!< Number of qCI to take measurement for */ U8 qci[LPJ_MAX_QCI]; /*!< QCI for the measurement */ }PjL2MeasReqInfo; /** @brief Measurement Request Structure. */ typedef struct pjL2MeasReqEvt { U32 transId; /*!< Transaction identifier */ U16 measPeriod; /*!< Time period of measurement */ PjL2MeasReqInfo measReq; /*!< Measurement request */ }PjL2MeasReqEvt; /** @brief Measurement Confirm Params Structure. */ typedef struct pjL2MeasCfmInfo { U8 qci; /*!< Qci */ U32 dlDelay; /*!< DL Delay */ U32 dlDisc; /*!< DL Discard */ U32 ulLoss; /*!< UL Loss */ U32 ulBitRate; /*!< UL Data Plane Bit Rate*/ U32 dlBitRate; /*!< DL Data Plane Bit Rate*/ U32 dlCpBitRate;/*!