[Epic-ID: ODUHIGH-402][Task-ID: ODUHIGH-418] Harq feature changes
[o-du/l2.git] / src / 5gnrmac / mac.h
index 6f611b2..6115c67 100644 (file)
@@ -80,7 +80,8 @@ typedef enum
 typedef enum
 {
    UE_STATE_INACTIVE,
-   UE_STATE_ACTIVE
+   UE_STATE_ACTIVE,
+   UE_HANDIN_IN_PROGRESS
 }UeState;
 
 typedef enum
@@ -89,9 +90,25 @@ typedef enum
    MAC_LC_STATE_ACTIVE
 }MacLcState;
 
+typedef struct dlTbInfo
+{
+   SlotTimingInfo  txTime;  
+   uint16_t        tbSize;
+   uint8_t         *tb;
+}DlTbInfo;
+
+/* DL HARQ Process Info */
+typedef struct dlHarqProcCb
+{
+   uint8_t     procId;                 /* HARQ Process Id */
+   uint8_t     numTb;                  /* Number of TB */
+   DlTbInfo    tbInfo[MAX_NUM_TB_PER_UE];  /* TB information */
+}DlHarqProcCb;
+
 typedef struct macDlSlot
 {
    DlSchedInfo dlInfo;
+   DlPageAlloc *pageAllocInfo;
 }MacDlSlot;
 
 typedef struct macUlSlot
@@ -106,8 +123,7 @@ typedef struct macCbInfo
    uint8_t     msg3Pdu[6];  /* used as CRI value during muxing */
    uint8_t     *msg4Pdu;    /* storing DL-CCCH Ind Pdu */
    uint16_t    msg4PduLen;  /* storing DL-CCCH Ind Pdu Len */
-   uint8_t     *msg4TxPdu;  /* muxed Pdu used for re-transmission */
-   uint16_t    msg4TbSize;  /* size required for msg4TxPdu */
+   DlHarqProcCb msg4HqInfo; /* HARQ process info for msg 4 */
 }MacRaCbInfo;
 
 typedef struct macCe
@@ -136,12 +152,6 @@ typedef struct macDlData
    MacDlInfo  pduInfo[MAX_MAC_DL_PDU];
 }MacDlData;
 
-/* HARQ Process Info */
-typedef struct dlHarqProcCb
-{
-   uint8_t   procId;    /* HARQ Process Id */
-}DlHarqProcCb;
-
 /* DL HARQ entity */
 typedef struct dlHarqEnt
 {
@@ -204,21 +214,23 @@ typedef struct ueDlCb
 /* UE Cb */
 typedef struct macUeCb
 {
-   uint16_t     ueIdx;    /* UE Idx assigned by DU APP */
-   uint16_t     crnti;    /* UE CRNTI */
-   MacCellCb    *cellCb;  /* Pointer to cellCb to whihc this UE belongs */
-   UeState      state;    /* Is UE active ? */
-   MacRaCbInfo  *raCb;    /* RA info */
-   MacBsrTmrCfg bsrTmrCfg;  /* BSR Timer Info */
-   UeUlCb       ulInfo;   /* UE specific UL info */
-   UeDlCb       dlInfo;   /* UE specific DL info */
+   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;
    CellState   state;
-   uint8_t     crntiMap;
+   uint16_t    crntiMap;
    MacRaCbInfo macRaCb[MAX_NUM_UE];
    MacDlSlot   dlSlot[MAX_SLOTS];
    MacUlSlot   ulSlot[MAX_SLOTS];
@@ -246,7 +258,6 @@ MacCb macCb;
 /* Function declarations */
 short int macActvTmr(Ent ent,Inst inst);
 void fillRarPdu(RarInfo *rarInfo);
-void createMacRaCb(RachIndInfo *rachIndInfo);
 void fillMsg4DlData(MacDlData *dlData, uint16_t msg4PduLen, uint8_t *msg4Pdu);
 void fillMacCe(MacCeInfo  *macCeData, uint8_t *msg3Pdu);
 void macMuxPdu(MacDlData *dlData, MacCeInfo *macCeData, uint8_t *msg4TxPdu, uint16_t tbSize);
@@ -260,6 +271,7 @@ uint8_t macProcUlData(uint16_t cellId, uint16_t rnti, SlotTimingInfo slotInfo, \
 uint8_t sendSchedRptToRlc(DlSchedInfo dlInfo, SlotTimingInfo slotInfo, uint8_t ueIdx, uint8_t schInfoIdx);
 uint8_t macProcLongBsr(uint16_t cellId, uint16_t crnti,uint8_t numLcg,\
                          DataVolInfo dataVolInfo[MAX_NUM_LOGICAL_CHANNEL_GROUPS]);
+void freeMacSliceCfgReq(MacSliceCfgReq *cfgReq,Pst *pst);
 #endif
 /**********************************************************************
   End of file