X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2F5gnrsch%2Fsch.h;h=379bb270ea0e7668dfedd7b73ae98261b6e86f0e;hb=d1f428c3527bfff3b3eae2715e91ae8449ad1784;hp=352c582942da3283a0efc71574b1cf259a20932a;hpb=6636207100c598cd70537d177670ef131e263931;p=o-du%2Fl2.git diff --git a/src/5gnrsch/sch.h b/src/5gnrsch/sch.h index 352c58294..379bb270e 100644 --- a/src/5gnrsch/sch.h +++ b/src/5gnrsch/sch.h @@ -68,6 +68,8 @@ #define HQ_ACK 0 #define HQ_NACK 1 #define HQ_DTX 2 +#define ROOT_SEQ_LEN_1 139 +#define ROOT_SEQ_LEN_2 839 #ifdef NR_DRX /* As per 38.331 the largest offset which can be used in of size 10240. @@ -76,7 +78,7 @@ #define MAX_DRX_SIZE 512 #endif -#define NUM_SCH_TYPE 1 /*Supported number of Scheduler Algorithm types*/ +#define NUM_SCH_TYPE 2 /*Supported number of Scheduler Algorithm types*/ typedef struct schDlHqProcCb SchDlHqProcCb; typedef struct schUlHqEnt SchUlHqEnt; @@ -87,7 +89,8 @@ typedef struct schUeCb SchUeCb; typedef enum { - SCH_FCFS + SCH_FCFS, + SCH_SLICE_BASED }SchType; typedef enum @@ -134,6 +137,22 @@ typedef enum HQ_TB_WAITING }SchHqTbState; +#ifdef NR_TDD +typedef enum +{ + DL_SLOT, + UL_SLOT, + FLEXI_SLOT +}SlotConfig; + +typedef enum +{ + DL_SYMBOL, + UL_SYMBOL, + FLEXI_SYMBOL +}SchSymbolConfig; +#endif + /*Following structures to keep record and estimations of PRB allocated for each * LC taking into consideration the RRM policies*/ typedef struct lcInfo @@ -302,7 +321,7 @@ typedef struct schDlSlotInfo uint8_t pdschUe; /*!< UE for which PDSCH is scheduled in this slot */ RarAlloc *rarAlloc[MAX_NUM_UE]; /*!< RAR allocation per UE*/ DciInfo *ulGrant; - DlMsgAlloc *dlMsgAlloc[MAX_NUM_UE]; /*!< Dl msg allocation per UE*/ + DlMsgSchInfo *dlMsgAlloc[MAX_NUM_UE]; /*!< Dl msg allocation per UE*/ }SchDlSlotInfo; typedef struct schRaCb @@ -472,6 +491,10 @@ typedef struct schUeCb bool ueDrxInfoPres; SchDrxUeCb drxUeCb; #endif + bool k0K1TblPrsnt; + SchK0K1TimingInfoTbl k0K1InfoTbl; + bool k2TblPrsnt; + SchK2TimingInfoTbl k2InfoTbl; }SchUeCb; /** @@ -557,10 +580,27 @@ typedef struct schAllApis void (* SchDeleteUlHqProcCb)(SchUlHqProcCb *hqP); void (* SchScheduleSlot)(SchCellCb *cell, SlotTimingInfo *slotInd, Inst schInst); uint32_t (* SchScheduleDlLc)(SlotTimingInfo pdcchTime, SlotTimingInfo pdschTime, uint8_t pdschNumSymbols, \ - bool isRetx, SchDlHqProcCb **hqP); + uint16_t *startPrb, bool isRetx, SchDlHqProcCb **hqP); uint8_t (* SchScheduleUlLc)(SlotTimingInfo dciTime, SlotTimingInfo puschTime, uint8_t startStmb, \ uint8_t symbLen, bool isRetx, SchUlHqProcCb **hqP); }SchAllApis; + +typedef struct schHqCfgParam +{ + uint8_t maxDlDataHqTx; + uint8_t maxMsg4HqTx; + uint8_t maxUlDataHqTx; +}SchHqCfg; + +typedef struct +{ + /* parameters derived in scheduler */ + uint8_t n0; + BwpCfg bwp; + PdcchCfg sib1PdcchCfg; + PdschCfg sib1PdschCfg; +}SchSib1Cfg; + /** * @brief * Cell Control block per cell. @@ -589,7 +629,7 @@ typedef struct schCellCb #ifdef NR_TDD uint8_t numSlotsInPeriodicity; /*!< number of slots in configured periodicity and SCS */ uint32_t slotFrmtBitMap; /*!< 2 bits must be read together to determine D/U/S slots. 00-D, 01-U, 10-S */ - uint32_t symbFrmtBitMap; /*!< 2 bits must be read together to determine D/U/S symbols. 00-D, 01-U, 10-S */ + SchSymbolConfig slotCfg[MAX_TDD_PERIODICITY_SLOTS][MAX_SYMB_PER_SLOT]; #endif #ifdef NR_DRX SchDrxCb drxCb[MAX_DRX_SIZE]; /*!< Drx cb*/ @@ -597,15 +637,15 @@ typedef struct schCellCb SchType schAlgoType; /*!< The scheduler type which the cell is configured with.*/ SchAllApis *api; /*!< Reference of sch APIs for this cell based on the SchType*/ void *schSpcCell; /*Ref of Scheduler specific structure*/ + SchHqCfg schHqCfg; + SchK0K1TimingInfoTbl k0K1InfoTbl; + SchK2TimingInfoTbl msg3K2InfoTbl; + SchK2TimingInfoTbl k2InfoTbl; + SchSib1Cfg sib1SchCfg; /* SIB1 config */ + uint8_t maxMsg3Tx; /* MAximum num of msg3 tx*/ }SchCellCb; -typedef struct schSliceCfg -{ - uint8_t numOfSliceConfigured; - SchRrmPolicyOfSlice **listOfConfirguration; -}SchSliceCfg; - /** * @brief * Control block for sch @@ -618,7 +658,7 @@ typedef struct schCb CmTqType tmrTq[SCH_TQ_SIZE]; /*!< Timer Task Queue */ SchAllApis allApis[NUM_SCH_TYPE]; /*!