X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2F5gnrsch%2Fsch.h;h=1b262b3c77a6b4c8a1408d9afc98539d8f6a6239;hb=8133a1985d2c53074af88c44edfb9231af64b433;hp=98a0133485da5957d60ce05831a5f0f0beb67db0;hpb=74ff55d4020f29652ad292bf3add3107021c63d4;p=o-du%2Fl2.git diff --git a/src/5gnrsch/sch.h b/src/5gnrsch/sch.h index 98a013348..1b262b3c7 100644 --- a/src/5gnrsch/sch.h +++ b/src/5gnrsch/sch.h @@ -96,6 +96,7 @@ typedef enum CREATE, DELETE }ActionTypeLcLL; + /** * @brief * Structure holding LTE MAC's General Configuration information. @@ -323,6 +324,13 @@ typedef struct schCellCb #endif }SchCellCb; + +typedef struct schSliceCfg +{ + uint8_t numOfSliceConfigured; + SchRrmPolicyOfSlice **listOfConfirguration; +}SchSliceCfg; + /** * @brief * Control block for sch @@ -333,7 +341,8 @@ typedef struct schCb SchGenCb genCfg; /*!< General Config info */ CmTqCp tmrTqCp; /*!< Timer Task Queue Cntrl Point */ CmTqType tmrTq[SCH_TQ_SIZE]; /*!< Timer Task Queue */ - SchCellCb *cells[MAX_NUM_CELL]; /* Array to store cellCb ptr */ + SchCellCb *cells[MAX_NUM_CELL]; /* Array to store cellCb ptr */ + SchSliceCfg sliceCfg; }SchCb; /* Declaration for scheduler control blocks */ @@ -372,8 +381,6 @@ uint8_t pdschStartSymbol, uint8_t pdschNumSymbols); uint16_t schAccumalateLcBoSize(SchCellCb *cell, uint16_t ueIdx); uint8_t allocatePrbDl(SchCellCb *cell, SlotTimingInfo slotTime, uint8_t startSymbol, uint8_t symbolLength, \ uint16_t *startPrb, uint16_t numPrb); -uint16_t searchLargestFreeBlockDL(SchCellCb *cell, SlotTimingInfo slotTime,uint16_t *startPrb); -void updateGrantSizeForBoRpt(CmLListCp *lcLL, DlMsgAlloc *dlMsgAlloc, uint32_t *accumalatedBOSize); void fillDlMsgInfo(DlMsgInfo *dlMsgInfo, uint8_t crnti); bool findValidK0K1Value(SchCellCb *cell, SlotTimingInfo currTime, uint8_t ueId, bool dedMsg, uint8_t *pdschStartSymbol,\ uint8_t *pdschSymblLen, SlotTimingInfo *pdcchTime, SlotTimingInfo *pdschTime, SlotTimingInfo *pucchTime); @@ -385,15 +392,21 @@ uint8_t schCalcPrachNumRb(SchCellCb *cell); void schPrachResAlloc(SchCellCb *cell, UlSchedInfo *ulSchedInfo, SlotTimingInfo prachOccasionTimingInfo); uint16_t schAllocPucchResource(SchCellCb *cell, SlotTimingInfo pucchTime, uint16_t crnti); uint8_t schFillUlDci(SchUeCb *ueCb, SchPuschInfo *puschInfo, DciInfo *dciInfo); -uint8_t schFillPuschAlloc(SchUeCb *ueCb, SlotTimingInfo puschTime, uint32_t dataVol, uint8_t k2, uint8_t startSymb, uint8_t symbLen); +uint8_t schFillPuschAlloc(SchUeCb *ueCb, SlotTimingInfo puschTime, uint32_t tbsSize, \ + uint8_t startSymb, uint8_t symbLen, uint16_t startPrb); uint8_t allocatePrbUl(SchCellCb *cell, SlotTimingInfo slotTime, uint8_t startSymbol, uint8_t symbolLength, \ uint16_t *startPrb, uint16_t numPrb); bool schProcessSrOrBsrReq(SchCellCb *cell, SlotTimingInfo currTime, uint8_t ueId); +bool schCalculateUlTbs(SchUeCb *ueCb, SlotTimingInfo puschTime, uint8_t symbLen,\ + uint16_t *startPrb, uint32_t *totTBS); /*Generic Functions*/ +void updateGrantSizeForBoRpt(CmLListCp *lcLL, DlMsgAlloc *dlMsgAlloc, BsrInfo *bsrInfo, uint32_t *accumalatedBOSize); +uint16_t searchLargestFreeBlock(SchCellCb *cell, SlotTimingInfo slotTime,uint16_t *startPrb, Direction dir); LcInfo* handleLcLList(CmLListCp *lcLL, uint8_t lcId, ActionTypeLcLL action); void prbAllocUsingRRMPolicy(CmLListCp *lcLL, bool dedicatedPRB, uint16_t mcsIdx,uint8_t numSymbols,\ - uint16_t *sharedPRB, uint16_t *reservedPRB, bool *isTxPayloadLenAdded); + uint16_t *sharedPRB, uint16_t *reservedPRB, bool *isTxPayloadLenAdded, bool *srRcvd); +void updateBsrAndLcList(CmLListCp *lcLL, BsrInfo *bsrInfo, uint8_t status); /********************************************************************** End of file