X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2Fcm%2Fmac_sch_interface.h;h=8cf9301bb0839fde8673f8355675515b1922e72b;hb=34dbaa11b812648ba3fbea113d9772947ed6b85c;hp=495fc64027f3dee4402967c39a3937afaab87031;hpb=1d6200fae3b85714f8d9ddec062a01c8b9faca23;p=o-du%2Fl2.git diff --git a/src/cm/mac_sch_interface.h b/src/cm/mac_sch_interface.h index 495fc6402..8cf9301bb 100644 --- a/src/cm/mac_sch_interface.h +++ b/src/cm/mac_sch_interface.h @@ -19,7 +19,7 @@ /* events */ #define EVENT_SCH_CELL_CFG 1 #define EVENT_SCH_CELL_CFG_CFM 2 -#define EVENT_DL_ALLOC 3 +#define EVENT_DL_SCH_INFO 3 #define EVENT_UL_SCH_INFO 4 #define EVENT_RACH_IND_TO_SCH 5 #define EVENT_CRC_IND_TO_SCH 6 @@ -38,16 +38,9 @@ /*macros*/ -#define NO_SSB 0 -#define SSB_TRANSMISSION 1 -#define SSB_REPEAT 2 #define MAX_SSB_IDX 1 /* forcing it as 1 for now. Right value is 64 */ #define SCH_SSB_MASK_SIZE 1 -#define NO_SIB1 0 -#define SIB1_TRANSMISSION 1 -#define SIB1_REPITITION 2 - #define MAX_NUM_PRG 1 /* max value should be later 275 */ #define MAX_DIG_BF_INTERFACES 0 /* max value should be later 255 */ #define MAX_CODEWORDS 1 /* max should be 2 */ @@ -91,10 +84,22 @@ #define MAX_NUM_PATH_LOSS_REF_RS 4 #define MAX_NUM_DL_DATA_TO_UL_ACK 15 #define SD_SIZE 3 +#define QPSK_MODULATION 2 #define RAR_PAYLOAD_SIZE 10 /* As per spec 38.321, sections 6.1.5 and 6.2.3, RAR PDU is 8 bytes long and 2 bytes of padding */ #define TX_PAYLOAD_HDR_LEN 32 /* Intel L1 requires adding a 32 byte header to transmitted payload */ +#define MAX_NUM_CONFIG_SLOTS 160 /*Max number of slots as per the numerology*/ +#define MAX_NUM_K0_IDX 16 /* Max number of pdsch time domain downlink allocation */ +#define MAX_NUM_K1_IDX 8 /* As per spec 38.213 section 9.2.3 Max number of PDSCH-to-HARQ resource indication */ +#define MIN_NUM_K1_IDX 4 /* Min K1 values */ +#define MAX_NUM_K2_IDX 16 /* PUSCH time domain UL resource allocation list */ +#define DEFAULT_K0_VALUE 0 /* As per 38.331, PDSCH-TimeDomainResourceAllocation field descriptions */ +/* As per 38.331, PUSCH-TimeDomainResourceAllocationList field descriptions */ +#define DEFAULT_K2_VALUE_FOR_SCS15 1 +#define DEFAULT_K2_VALUE_FOR_SCS30 1 +#define DEFAULT_K2_VALUE_FOR_SCS60 2 +#define DEFAULT_K2_VALUE_FOR_SCS120 3 #define ADD_DELTA_TO_TIME(crntTime, toFill, incr) \ { \ @@ -113,6 +118,13 @@ } \ } +typedef enum +{ + NO_TRANSMISSION, + NEW_TRANSMISSION, + REPEATITION +}PduTxOccsaion; + typedef enum { UNSPECIFIED_CAUSE, @@ -390,6 +402,13 @@ typedef enum SCH_MCS_TABLE_QAM_64_LOW_SE }SchMcsTable; +typedef enum +{ + PDCCH_PDU, + PDSCH_PDU, + BOTH +}DlPduType; + /*structures*/ typedef struct timeDomainAlloc { @@ -610,12 +629,18 @@ typedef struct schPdcchCfgCmn uint8_t raSearchSpaceId; }SchPdcchCfgCmn; -typedef struct schPdschCfgCmn +typedef struct schPdschCfgCmnTimeDomRsrcAlloc { uint8_t k0; uint8_t mappingType; uint8_t startSymbol; uint8_t lengthSymbol; +}SchPdschCfgCmnTimeDomRsrcAlloc; + +typedef struct schPdschCfgCmn +{ + uint8_t numTimeDomAlloc; + SchPdschCfgCmnTimeDomRsrcAlloc timeDomRsrcAllocList[MAX_NUM_DL_ALLOC]; }SchPdschCfgCmn; typedef struct schPucchCfgCmn @@ -624,26 +649,72 @@ typedef struct schPucchCfgCmn uint8_t pucchGroupHopping; }SchPucchCfgCmn; +/* PUSCH Time Domain Resource Allocation */ +typedef struct schPuschTimeDomRsrcAlloc +{ + uint8_t k2; + SchTimeDomRsrcAllocMappingType mappingType; + uint8_t startSymbol; + uint8_t symbolLength; +}SchPuschTimeDomRsrcAlloc; + typedef struct schPuschCfgCmn { - uint8_t k2; - uint8_t mappingType; - uint8_t startSymbol; - uint8_t lengthSymbol; + uint8_t numTimeDomRsrcAlloc; + SchPuschTimeDomRsrcAlloc timeDomRsrcAllocList[MAX_NUM_UL_ALLOC]; /* PUSCH time domain UL resource allocation list */ }SchPuschCfgCmn; +typedef struct schK1TimingInfo +{ + uint8_t numK1; + uint8_t k1Indexes[MAX_NUM_K1_IDX]; +}SchK1TimingInfo; + +typedef struct schK0TimingInfo +{ + uint8_t k0Index; + SchK1TimingInfo k1TimingInfo; +}SchK0TimingInfo; + +typedef struct schK0K1TimingInfo +{ + uint8_t numK0; + SchK0TimingInfo k0Indexes[MAX_NUM_K0_IDX]; +}SchK0K1TimingInfo; + +typedef struct schK0K1TimingInfoTbl +{ + uint16_t tblSize; + SchK0K1TimingInfo k0k1TimingInfo[MAX_NUM_CONFIG_SLOTS]; +}SchK0K1TimingInfoTbl; + typedef struct schBwpDlCfg { SchBwpParams bwp; SchPdcchCfgCmn pdcchCommon; SchPdschCfgCmn pdschCommon; + SchK0K1TimingInfoTbl k0K1InfoTbl; }SchBwpDlCfg; +typedef struct schK2TimingInfo +{ + uint8_t numK2; + uint8_t k2Indexes[MAX_NUM_K2_IDX]; +}SchK2TimingInfo; + +typedef struct schK2TimingInfoTbl +{ + uint16_t tblSize; + SchK2TimingInfo k2TimingInfo[MAX_NUM_CONFIG_SLOTS]; +}SchK2TimingInfoTbl; + typedef struct schBwpUlCfg { SchBwpParams bwp; SchPucchCfgCmn pucchCommon; SchPuschCfgCmn puschCommon; + SchK2TimingInfoTbl msg3K2InfoTbl; + SchK2TimingInfoTbl k2InfoTbl; }SchBwpUlCfg; typedef struct schCellCfg @@ -711,12 +782,23 @@ typedef struct dlBrdcstAlloc Sib1AllocInfo sib1Alloc; }DlBrdcstAlloc; +typedef struct msg3UlGrant +{ + uint8_t freqHopFlag; + uint16_t bwpSize; + FreqDomainAlloc msg3FreqAlloc; + uint8_t k2Index; + uint8_t mcs; + uint8_t tpc; + uint8_t csiReq; +}Msg3UlGrant; + typedef struct rarInfo { uint16_t raRnti; uint8_t RAPID; uint16_t ta; - FreqDomainAlloc msg3FreqAlloc; + Msg3UlGrant ulGrant; uint16_t tcrnti; uint8_t rarPdu[RAR_PAYLOAD_SIZE]; uint8_t rarPduLen; @@ -724,6 +806,8 @@ typedef struct rarInfo typedef struct rarAlloc { + DlPduType pduPres; + uint8_t pdschSlot; RarInfo rarInfo; BwpCfg bwp; PdcchCfg rarPdcchCfg; @@ -764,11 +848,11 @@ typedef struct dlMsgAlloc typedef struct schSlotValue { - SlotIndInfo currentTime; - SlotIndInfo broadcastTime; - SlotIndInfo rarTime; - SlotIndInfo dlMsgTime; - SlotIndInfo ulDciTime; + SlotTimingInfo currentTime; + SlotTimingInfo broadcastTime; + SlotTimingInfo rarTime; + SlotTimingInfo dlMsgTime; + SlotTimingInfo ulDciTime; }SchSlotValue; typedef struct format0_0 @@ -809,7 +893,7 @@ typedef struct dciInfo { uint16_t cellId; uint16_t crnti; /* CRNI */ - SlotIndInfo slotIndInfo; /* Slot Info: sfn, slot number */ + SlotTimingInfo slotIndInfo; /* Slot Info: sfn, slot number */ BwpCfg bwpCfg; /* BWP Cfg */ CoresetCfg coresetCfg; /* Coreset1 Cfg */ FormatType formatType; /* DCI Format */ @@ -905,7 +989,7 @@ typedef struct ulSchedInfo { uint16_t cellId; /* Cell Id */ uint16_t crnti; /* CRNI */ - SlotIndInfo slotIndInfo; /* Slot Info: sfn, slot number */ + SlotTimingInfo slotIndInfo; /* Slot Info: sfn, slot number */ uint8_t dataType; /* Type of info being scheduled */ PrachSchInfo prachSchInfo; /* Prach scheduling info */ SchPuschInfo schPuschInfo; /* Pusch scheduling info */ @@ -916,7 +1000,7 @@ typedef struct rachIndInfo { uint16_t cellId; uint16_t crnti; - SlotIndInfo timingInfo; + SlotTimingInfo timingInfo; uint8_t slotIdx; uint8_t symbolIdx; uint8_t freqIdx; @@ -929,7 +1013,7 @@ typedef struct crcIndInfo { uint16_t cellId; uint16_t crnti; - SlotIndInfo timingInfo; + SlotTimingInfo timingInfo; uint16_t numCrcInd; uint8_t crcInd[MAX_NUMBER_OF_CRC_IND_BITS]; }CrcIndInfo; @@ -1051,6 +1135,7 @@ typedef struct schPdcchConfig /* PDSCH time domain resource allocation */ typedef struct schPdschTimeDomRsrcAlloc { + uint8_t *k0; SchTimeDomRsrcAllocMappingType mappingType; uint8_t startSymbol; uint8_t symbolLength; @@ -1096,6 +1181,7 @@ typedef struct schInitalDlBwp SchPdcchConfig pdcchCfg; bool pdschCfgPres; SchPdschConfig pdschCfg; + SchK0K1TimingInfoTbl k0K1InfoTbl; }SchInitalDlBwp; /* BWP Downlink common */ @@ -1289,15 +1375,6 @@ typedef struct SchDmrsUlCfg SchTransPrecodDisabled transPrecodDisabled; /* Transform precoding disabled */ }SchDmrsUlCfg; -/* PUSCH Time Domain Resource Allocation */ -typedef struct schPuschTimeDomRsrcAlloc -{ - uint8_t k2; - SchTimeDomRsrcAllocMappingType mappingType; - uint8_t startSymbol; - uint8_t symbolLength; -}SchPuschTimeDomRsrcAlloc; - /* PUSCH Configuration */ typedef struct schPuschCfg { @@ -1316,6 +1393,7 @@ typedef struct schInitialUlBwp SchPucchCfg pucchCfg; bool puschCfgPres; SchPuschCfg puschCfg; + SchK2TimingInfoTbl k2InfoTbl; }SchInitialUlBwp; /* Uplink BWP information */ @@ -1515,7 +1593,7 @@ typedef struct srUciIndInfo { uint16_t cellId; uint16_t crnti; - SlotIndInfo slotInd; + SlotTimingInfo slotInd; uint8_t numSrBits; uint8_t srPayload[MAX_SR_BITS_IN_BYTES]; }SrUciIndInfo; @@ -1564,7 +1642,7 @@ typedef uint8_t (*SchUeCfgRspFunc) ARGS(( typedef uint8_t (*MacSchSlotIndFunc) ARGS(( Pst *pst, /* Post structure */ - SlotIndInfo *slotInd)); /* Slot Info */ + SlotTimingInfo *slotInd)); /* Slot Info */ typedef uint8_t (*MacSchBsrFunc) ARGS(( Pst *pst, @@ -1600,7 +1678,7 @@ typedef uint8_t (*SchCellDeleteRspFunc) ARGS(( SchCellDeleteRsp *schCellDeleteRsp)); /* Scheduler UE delete response */ /* function declarations */ -uint8_t packMacSchSlotInd(Pst *pst, SlotIndInfo *slotInd); +uint8_t packMacSchSlotInd(Pst *pst, SlotTimingInfo *slotInd); uint8_t packSchMacDlAlloc(Pst *pst, DlSchedInfo *dlSchedInfo); uint8_t packSchMacUlSchInfo(Pst *pst, UlSchedInfo *ulSchedInfo); uint8_t packSchCellCfg(Pst *pst, SchCellCfg *schCellCfg); @@ -1621,8 +1699,8 @@ uint8_t packMacSchAddUeConfigReq(Pst *pst, SchUeCfg *ueCfgToSch); uint8_t MacSchAddUeConfigReq(Pst *pst, SchUeCfg *ueCfgToSch); uint8_t packSchUeCfgRsp(Pst *pst, SchUeCfgRsp *cfgRsp); uint8_t MacProcSchUeCfgRsp(Pst *pst, SchUeCfgRsp *cfgRsp); -uint8_t MacSchSlotInd ARGS((Pst * pst, SlotIndInfo * slotInd)); -uint8_t packMacSchSlotInd(Pst * pst, SlotIndInfo * slotInd); +uint8_t MacSchSlotInd ARGS((Pst * pst, SlotTimingInfo * slotInd)); +uint8_t packMacSchSlotInd(Pst * pst, SlotTimingInfo * slotInd); uint8_t unpackMacSchSlotInd(MacSchSlotIndFunc func, Pst *pst, Buffer *mBuf); uint8_t packMacSchBsr(Pst *pst, UlBufferStatusRptInd *bsrInd); uint8_t MacSchBsr(Pst *pst, UlBufferStatusRptInd *bsrInd);