{
InitialDlBwp initDlBwp;
uint8_t numDlBwpToAdd;
- DlBwpInfo DlBwpToAddList[MAX_NUM_BWP];
+ DlBwpInfo dlBwpToAddList[MAX_NUM_BWP];
uint8_t firstActvDlBwpId;
uint8_t defaultDlBwpId;
uint8_t *bwpInactivityTmr;
PdschServCellCfg pdschServCellCfg;
InitialUlBwp initUlBwp;
uint8_t numUlBwpToAdd;
- UlBwpInfo UlBwpToAddList[MAX_NUM_BWP];
+ UlBwpInfo ulBwpToAddList[MAX_NUM_BWP];
uint8_t firstActvUlBwpId;
}ServCellCfgInfo;
ServCellCfgInfo servCellCfg;
}SpCellCfg;
+/* Serving cell Re-configuration */
+typedef struct servCellRecfgInfo
+{
+ InitialDlBwp initDlBwp;
+ uint8_t numDlBwpToAddOrMod;
+ DlBwpInfo dlBwpToAddOrModList[MAX_NUM_BWP];
+ uint8_t numDlBwpToRel;
+ DlBwpInfo dlBwpToRelList[MAX_NUM_BWP];
+ uint8_t firstActvDlBwpId;
+ uint8_t defaultDlBwpId;
+ uint8_t *bwpInactivityTmr;
+ PdschServCellCfg pdschServCellCfg;
+ InitialUlBwp initUlBwp;
+ uint8_t numUlBwpToAddOrMod;
+ UlBwpInfo ulBwpToAddOrModList[MAX_NUM_BWP];
+ uint8_t numUlBwpToRel;
+ UlBwpInfo ulBwpToRelList[MAX_NUM_BWP];
+ uint8_t firstActvUlBwpId;
+}ServCellRecfgInfo;
+
+/* Special cell Re-configuration */
+typedef struct spCellRecfg
+{
+ uint8_t servCellIdx;
+ ServCellRecfgInfo servCellCfg;
+}SpCellRecfg;
+
typedef struct ambrCfg
{
uint32_t ulBr; /* UL Bit rate */
BucketSizeDur bsd; // bucketSizeDuration
}UlLcCfg;
-typedef struct duLcCfg
+typedef struct dlLcCfg
{
LcPriority lcp; // logical Channel Prioritization
}DlLcCfg;
typedef struct lcCfg
{
- ConfigType configType;
uint8_t lcId;
- DrbQosInfo *drbQos;
Snssai *snssai;
+ DrbQosInfo *drbQos;
bool ulLcCfgPres;
UlLcCfg ulLcCfg;
DlLcCfg dlLcCfg;
typedef struct macUeCfg
{
- uint16_t cellId;
- uint8_t ueId;
- uint16_t crnti;
- bool macCellGrpCfgPres;
- MacCellGrpCfg macCellGrpCfg;
- bool phyCellGrpCfgPres;
- PhyCellGrpCfg phyCellGrpCfg;
- bool spCellCfgPres;
- SpCellCfg spCellCfg;
- AmbrCfg *ambrCfg;
- ModulationInfo dlModInfo; /* DL modulation info */
- ModulationInfo ulModInfo; /* UL modulation info */
- uint8_t numLcs;
- LcCfg lcCfgList[MAX_NUM_LC];
- UeCfgState macUeCfgState; /* InActive / Completed */
+ uint16_t cellId;
+ uint8_t ueId;
+ uint16_t crnti;
+ bool macCellGrpCfgPres;
+ MacCellGrpCfg macCellGrpCfg;
+ bool phyCellGrpCfgPres;
+ PhyCellGrpCfg phyCellGrpCfg;
+ bool spCellCfgPres;
+ SpCellCfg spCellCfg;
+ AmbrCfg *ambrCfg;
+ ModulationInfo dlModInfo; /* DL modulation info */
+ ModulationInfo ulModInfo; /* UL modulation info */
+ uint8_t numLcs;
+ LcCfg lcCfgList[MAX_NUM_LC];
+}MacUeCfg;
+
+/* UE Re-configuration */
+typedef struct macUeRecfg
+{
+ uint16_t cellId;
+ uint8_t ueId;
+ uint8_t beamIdx;
+ uint16_t crnti;
+ bool macCellGrpRecfgPres;
+ MacCellGrpCfg macCellGrpRecfg;
+ bool phyCellGrpRecfgPres;
+ PhyCellGrpCfg phyCellGrpRecfg;
+ bool spCellRecfgPres;
+ SpCellRecfg spCellRecfg;
+ AmbrCfg *ambrRecfg;
+ ModulationInfo dlModInfo;
+ ModulationInfo ulModInfo;
+ uint8_t numLcsToAdd;
+ LcCfg lcCfgAdd[MAX_NUM_LC];
+ uint8_t numLcsToDel;
+ uint8_t lcIdToDel[MAX_NUM_LC];
+ uint8_t numLcsToMod;
+ LcCfg lcCfgMod[MAX_NUM_LC];
DataTransmissionAction transmissionAction;
#ifdef NR_DRX
- bool drxConfigIndicatorRelease;
+ bool drxConfigIndicatorRelease;
#endif
-}MacUeCfg;
+}MacUeRecfg;
typedef struct nrcgi
{
DRBFailInfo *failedDRBlist;
uint8_t numSCellFailed; /* valid values : 0 to MAX_NUM_SCELL */
SCellFailInfo *failedSCellList;
+ uint8_t numDRBModFailed; /* valid values : 0 to MAX_NUM_DRB */
+ DRBFailInfo *failedDRBModlist;
}MacUeCfgRsp;
+typedef struct ueCfgRsp MacUeRecfgRsp;
+
typedef struct rachRsrcReq
{
uint16_t cellId;
UeDeleteStatus result;
}MacUeDeleteRsp;
-typedef struct macCellDelete
+typedef struct macCellDeleteReq
{
uint16_t cellId;
-}MacCellDelete;
+}MacCellDeleteReq;
typedef struct macCellDeleteRsp
{
typedef struct rrmPolicyRatio
{
- uint8_t policyMaxRatio;
- uint8_t policyMinRatio;
- uint8_t policyDedicatedRatio;
+ uint8_t maxRatio;
+ uint8_t minRatio;
+ uint8_t dedicatedRatio;
}RrmPolicyRatio;
-typedef struct macSliceRrmPolicy
+typedef struct rrmPolicyMemberList
{
+ Plmn plmn;
Snssai snssai;
- RrmPolicyRatio *rrmPolicyRatio;
+}RrmPolicyMemberList;
+
+typedef struct macSliceRrmPolicy
+{
+ ResourceType resourceType;
+ uint8_t numOfRrmPolicyMem;
+ RrmPolicyMemberList **rRMPolicyMemberList;
+ RrmPolicyRatio policyRatio;
}MacSliceRrmPolicy;
typedef struct macSliceCfgReq
{
- uint8_t numOfConfiguredSlice;
- MacSliceRrmPolicy **listOfSliceCfg;
+ uint8_t numOfRrmPolicy;
+ MacSliceRrmPolicy **listOfRrmPolicy;
}MacSliceCfgReq;
typedef struct macSliceCfgRsp
{
- uint8_t numSliceCfgRsp;
+ uint8_t numSliceCfgRsp;
MacSliceRsp **listOfSliceCfgRsp;
}MacSliceCfgRsp;
-typedef struct macPcchInd
+/*As per ORAN-WG8, Slice Cfg and ReCfg are same structures*/
+typedef struct macSliceCfgReq MacSliceRecfgReq;
+typedef struct macSliceCfgRsp MacSliceRecfgRsp;
+
+typedef struct dlPcchInd
{
uint16_t cellId;
uint16_t pf;
uint8_t i_s;
uint16_t pduLen;
uint8_t *pcchPdu;
-}MacPcchInd;
+}DlPcchInd;
+
+typedef struct cellInfo
+{
+ SlotTimingInfo slotInfo;
+ uint16_t cellId;
+}CellInfo;
+
+typedef struct cellInfo CellStartInfo;
+typedef struct cellInfo CellStopInfo;
/* Functions for CellUp Ind from MAC to DU APP*/
typedef uint8_t (*DuMacCellUpInd) ARGS((
/* Functions for mac cell start req */
typedef uint8_t (*DuMacCellStart) ARGS((
Pst *pst,
- OduCellId *cellId));
+ CellStartInfo *cellId));
/* Functions for mac cell stop request */
typedef uint8_t (*DuMacCellStop) ARGS((
Pst *pst,
- OduCellId *cellId ));
+ CellStopInfo *cellId ));
/* Function pointers for packing macCellCfg Request and Confirm */
typedef uint8_t (*packMacCellCfgReq) ARGS((
/* UE Reconfig Request from DU APP to MAC */
typedef uint8_t (*DuMacUeReconfigReq) ARGS((
Pst *pst,
- MacUeCfg *ueCfg ));
+ MacUeRecfg *ueCfg ));
+
+/* UE Reconfig Response from MAC to DU APP */
+typedef uint8_t (*MacDuUeRecfgRspFunc) ARGS((
+ Pst *pst,
+ MacUeRecfgRsp *cfgRsp));
/* RACH Resource Request from DU APP to MAC */
typedef uint8_t (*DuMacRachRsrcReq) ARGS((
/* Cell Delete Request from DU APP to MAC*/
typedef uint8_t (*DuMacCellDeleteReq) ARGS((
Pst *pst,
- MacCellDelete *cellDelete ));
+ MacCellDeleteReq *cellDelete ));
/* Cell Delete Response from MAC to DU APP*/
typedef uint8_t (*MacDuCellDeleteRspFunc) ARGS((
/* Slice ReReCfg Request from DU APP to MAC*/
typedef uint8_t (*DuMacSliceRecfgReq) ARGS((
Pst *pst,
- MacSliceCfgReq *CfgReq));
+ MacSliceRecfgReq *CfgReq));
/* Slice ReReCfg Response from MAC to DU APP */
-typedef uint8_t (*MacDuSliceReCfgRspFunc) ARGS((
+typedef uint8_t (*MacDuSliceRecfgRspFunc) ARGS((
Pst *pst,
- MacSliceCfgRsp *cfgRsp));
+ MacSliceRecfgRsp *cfgRsp));
/* Pcch indication from DU APP to MAC*/
typedef uint8_t (*DuMacDlPcchInd) ARGS((
Pst *pst,
- MacPcchInd *pcchInd));
+ DlPcchInd *pcchInd));
uint64_t ueBitMapPerCell[MAX_NUM_CELL]; /* Bit Map to store used/free UE-IDX per Cell */
uint8_t packMacCellUpInd(Pst *pst, OduCellId *cellId);
uint8_t unpackMacCellUpInd(DuMacCellUpInd func, Pst *pst, Buffer *mBuf);
uint8_t duHandleCellUpInd(Pst *pst, OduCellId *cellId);
-uint8_t packMacCellStart(Pst *pst, OduCellId *cellId);
+uint8_t packMacCellStart(Pst *pst, CellStartInfo *cellStartInfo);
uint8_t unpackMacCellStart(DuMacCellStart func, Pst *pst, Buffer *mBuf);
-uint8_t MacProcCellStart(Pst *pst, OduCellId *cellId);
-uint8_t packMacCellStop(Pst *pst, OduCellId *cellId);
+uint8_t MacProcCellStart(Pst *pst, CellStartInfo *cellStartInfo);
+uint8_t packMacCellStop(Pst *pst, CellStopInfo *cellStopInfo);
uint8_t unpackMacCellStop(DuMacCellStop func, Pst *pst, Buffer *mBuf);
-uint8_t MacProcCellStop(Pst *pst, OduCellId *cellId);
+uint8_t MacProcCellStop(Pst *pst, CellStopInfo *cellStopInfo);
uint8_t packMacCellCfg(Pst *pst, MacCellCfg *macCellCfg);
uint8_t unpackDuMacCellCfg(DuMacCellCfgReq func, Pst *pst, Buffer *mBuf);
uint8_t MacProcCellCfgReq(Pst *pst, MacCellCfg *macCellCfg);
uint8_t packDuMacUeCfgRsp(Pst *pst, MacUeCfgRsp *cfgRsp);
uint8_t unpackDuMacUeCfgRsp(MacDuUeCfgRspFunc func, Pst *pst, Buffer *mBuf);
uint8_t DuProcMacUeCfgRsp(Pst *pst, MacUeCfgRsp *cfgRsp);
-uint8_t packDuMacUeReconfigReq(Pst *pst, MacUeCfg *ueCfg);
+uint8_t packDuMacUeReconfigReq(Pst *pst, MacUeRecfg *ueRecfg);
uint8_t unpackMacUeReconfigReq(DuMacUeReconfigReq func, Pst *pst, Buffer *mBuf);
-uint8_t MacProcUeReconfigReq(Pst *pst, MacUeCfg *ueCfg);
+uint8_t MacProcUeReconfigReq(Pst *pst, MacUeRecfg *ueRecfg);
+uint8_t packDuMacUeRecfgRsp(Pst *pst, MacUeRecfgRsp *recfgRsp);
+uint8_t unpackDuMacUeRecfgRsp(MacDuUeRecfgRspFunc func, Pst *pst, Buffer *mBuf);
+uint8_t DuProcMacUeRecfgRsp(Pst *pst, MacUeRecfgRsp *recfgRsp);
uint8_t packDuMacRachRsrcReq(Pst *pst, MacRachRsrcReq *rachRsrcReq);
uint8_t unpackMacRachRsrcReq(DuMacRachRsrcReq func, Pst *pst, Buffer *mBuf);
uint8_t MacProcRachRsrcReq(Pst *pst, MacRachRsrcReq *rachRsrcReq);
uint8_t packDuMacUeDeleteRsp(Pst *pst, MacUeDeleteRsp *deleteRsp);
uint8_t DuProcMacUeDeleteRsp(Pst *pst, MacUeDeleteRsp *deleteRsp);
uint8_t unpackDuMacUeDeleteRsp(MacDuUeDeleteRspFunc func, Pst *pst, Buffer *mBuf);
-uint8_t packDuMacCellDeleteReq(Pst *pst, MacCellDelete *cellDelete);
-uint8_t MacProcCellDeleteReq(Pst *pst, MacCellDelete *cellDelete);
+uint8_t packDuMacCellDeleteReq(Pst *pst, MacCellDeleteReq *cellDelete);
+uint8_t MacProcCellDeleteReq(Pst *pst, MacCellDeleteReq *cellDelete);
uint8_t unpackMacCellDeleteReq(DuMacCellDeleteReq func, Pst *pst, Buffer *mBuf);
uint8_t packDuMacCellDeleteRsp(Pst *pst, MacCellDeleteRsp *cellDeleteRsp);
uint8_t DuProcMacCellDeleteRsp(Pst *pst, MacCellDeleteRsp *cellDeleteRsp);
uint8_t DuProcMacSliceCfgRsp(Pst *pst, MacSliceCfgRsp *cfgRsp);
uint8_t packDuMacSliceCfgRsp(Pst *pst, MacSliceCfgRsp *cfgRsp);
uint8_t unpackDuMacSliceCfgRsp(MacDuSliceCfgRspFunc func, Pst *pst, Buffer *mBuf);
-uint8_t packDuMacSliceRecfgReq(Pst *pst, MacSliceCfgReq *sliceReCfgReq);
-uint8_t MacProcSliceReCfgReq(Pst *pst, MacSliceCfgReq *sliceReCfgReq);
-uint8_t unpackMacSliceReCfgReq(DuMacSliceRecfgReq func, Pst *pst, Buffer *mBuf);
-uint8_t DuProcMacSliceReCfgRsp(Pst *pst, MacSliceCfgRsp *cfgRsp);
-uint8_t packDuMacSliceReCfgRsp(Pst *pst, MacSliceCfgRsp *cfgRsp);
-uint8_t unpackDuMacSliceReCfgRsp(MacDuSliceReCfgRspFunc func, Pst *pst, Buffer *mBuf);
+uint8_t packDuMacSliceRecfgReq(Pst *pst, MacSliceRecfgReq *sliceRecfgReq);
+uint8_t MacProcSliceRecfgReq(Pst *pst, MacSliceRecfgReq *sliceRecfgReq);
+uint8_t unpackMacSliceRecfgReq(DuMacSliceRecfgReq func, Pst *pst, Buffer *mBuf);
+uint8_t DuProcMacSliceRecfgRsp(Pst *pst, MacSliceRecfgRsp *sliceRecfgRsp);
+uint8_t packDuMacSliceRecfgRsp(Pst *pst, MacSliceRecfgRsp *sliceRecfgRsp);
+uint8_t unpackDuMacSliceRecfgRsp(MacDuSliceRecfgRspFunc func, Pst *pst, Buffer *mBuf);
uint8_t duHandleSlotInd(Pst *pst, SlotTimingInfo *slotIndInfo);
uint8_t packMacSlotInd(Pst *pst, SlotTimingInfo *slotIndInfo);
uint8_t unpackDuMacSlotInd(DuMacSlotInd func, Pst *pst, Buffer *mBuf);
-uint8_t packDuMacDlPcchInd(Pst *pst, MacPcchInd *pcchInd);
-uint8_t MacProcDlPcchInd(Pst *pst, MacPcchInd *pcchInd);
+uint8_t packDuMacDlPcchInd(Pst *pst, DlPcchInd *pcchInd);
+uint8_t MacProcDlPcchInd(Pst *pst, DlPcchInd *pcchInd);
uint8_t unpackMacDlPcchInd(DuMacDlPcchInd func, Pst *pst, Buffer *mBuf);
int8_t getFreeBitFromUeBitMap(uint16_t cellId);
void unsetBitInUeBitMap(uint16_t cellId, uint8_t bitPos);