+ uint8_t ueId;
+ uint16_t numPdu;
+ MacDlInfo pduInfo[MAX_MAC_DL_PDU];
+}MacDlData;
+
+/* DL HARQ entity */
+typedef struct dlHarqEnt
+{
+ uint8_t maxReTx; /* MAX HARQ retransmission */
+ uint8_t numHarqProcs; /* Number of HARQ procs */
+ DlHarqProcCb harqProcCb[MAX_NUM_HARQ_PROC];
+}DlHarqEnt;
+
+/* Uplink deidcated logical channel info */
+typedef struct ulLcCb
+{
+ uint8_t lcId; /* Logical Channel Id */
+ uint8_t lcGrpId; /* Logical Channel group */
+ MacLcState lcActive; /* Is LC active ? */
+ /*Commenting as S-NSSAI and PDU session will be used in future scope*/
+ /*For eg: When we have to send these for AMBR cases*/
+ #if 0
+ uint16_t pduSessionId; /*Pdu Session Id*/
+ Snssai *snssai; /*S-NSSAI assoc with LCID*/
+ #endif
+}UlLcCb;
+
+/* Downlink dedicated logical channel info */
+typedef struct dlLcCb
+{
+ uint8_t lcId; /* Logical channel Id */
+ MacLcState lcState; /* Is LC active ? */
+ /*Commenting as S-NSSAI and PDU session will be used in future scope*/
+ /*For eg: When we have to send these info via FAPI to phy layer*/
+ #if 0
+ uint16_t pduSessionId;/*Pdu Session Id*/
+ Snssai *snssai; /*S-NSSAI assoc with LCID*/
+ #endif
+}DlLcCb;
+
+/* BSR Information */
+typedef struct macBsrTmrCfg
+{
+ uint16_t periodicTimer;
+ uint16_t retxTimer;
+ uint16_t srDelayTimer;
+}MacBsrTmrCfg;
+
+/* UE specific UL info */
+typedef struct ueUlCb
+{
+ uint8_t maxReTx; /* MAX HARQ retransmission */
+ uint8_t numUlLc; /* Number of uplink logical channels */
+ UlLcCb lcCb[MAX_NUM_LC]; /* Uplink dedicated logocal channels */
+}UeUlCb;
+
+/* UE specific DL Info */
+typedef struct ueDlCb
+{
+ DlHarqEnt dlHarqEnt; /* DL HARQ entity */
+ uint8_t numDlLc; /* Number of downlink logical channels */
+ DlLcCb lcCb[MAX_NUM_LC]; /* Downlink dedicated logical channels */
+}UeDlCb;
+
+/* UE Cb */
+typedef struct macUeCb
+{
+ uint16_t ueId; /* UE Id from DU APP */
+ uint16_t crnti; /* UE CRNTI */
+ MacCellCb *cellCb; /* Pointer to cellCb to whihc this UE belongs */
+ UeState state; /* Is UE active ? */
+ MacCfraResource cfraResource; /* CF-RA resource */
+ MacRaCbInfo *raCb; /* RA info */
+ MacBsrTmrCfg bsrTmrCfg; /* BSR Timer Info */
+ UeUlCb ulInfo; /* UE specific UL info */
+ UeDlCb dlInfo; /* UE specific DL info */
+ DataTransmissionAction transmissionAction;
+}MacUeCb;
+
+struct macCellCb
+{
+ uint16_t cellId;
+ uint16_t numOfSlots;
+ MacCellStatus state;
+ uint16_t crntiMap;
+ MacRaCbInfo macRaCb[MAX_NUM_UE];
+ MacDlSlot dlSlot[MAX_SLOTS];
+ MacUlSlot ulSlot[MAX_SLOTS];
+ uint16_t numActvUe;
+ MacUeCreateReq *ueCfgTmpData[MAX_NUM_UE];
+ MacUeRecfg *ueRecfgTmpData[MAX_NUM_UE];
+ MacUeCb ueCb[MAX_NUM_UE];
+ MacCellCfg macCellCfg;
+ uint8_t numerology;
+ SlotTimingInfo currTime;
+};
+
+typedef struct macStatistics
+{
+ uint8_t numPendingStatsRsp;
+ MacStatsRsp pendingStatsRsp[MAX_PENDING_STATS_RSP];
+
+ /* This structure can be developed in future to add details of
+ * the statistics to be calculated at MAC */
+}MacStatistics;