X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2F5gnrmac%2Fmac_rach.c;h=363f0b956772e9dca5c7a6f4fc2103968099566c;hb=ff0c6fbd56fc24b9c286dc6444e1e0fbe8871625;hp=246e02ba4b36e7203ebb9b1a918a45bf8daecc2a;hpb=ee769160fe5360f0d3ea043deaede2902ae13073;p=o-du%2Fl2.git diff --git a/src/5gnrmac/mac_rach.c b/src/5gnrmac/mac_rach.c index 246e02ba4..363f0b956 100644 --- a/src/5gnrmac/mac_rach.c +++ b/src/5gnrmac/mac_rach.c @@ -16,39 +16,20 @@ ################################################################################ *******************************************************************************/ /* header include files (.h) */ -#include "envopt.h" /* environment options */ -#include "envdep.h" /* environment dependent */ -#include "envind.h" /* environment independent */ -#include "gen.h" /* general */ -#include "ssi.h" /* system services */ -#include "cm_tkns.h" /* Common Token Defines */ -#include "cm_llist.h" /* Common Link List Defines */ -#include "cm_hash.h" /* Common Hash List Defines */ -#include "cm_mblk.h" /* common memory link list library */ -#include "cm_lte.h" /* Common LTE Defines */ -#include "tfu.h" /* RGU Interface includes */ +#include "common_def.h" #include "lrg.h" - -#include "gen.x" /* general */ -#include "ssi.x" /* system services */ -#include "cm5.x" /* system services */ -#include "cm_tkns.x" /* Common Token Definitions */ -#include "cm_llist.x" /* Common Link List Definitions */ -#include "cm_lib.x" /* Common Library Definitions */ -#include "cm_hash.x" /* Common Hash List Definitions */ -#include "cm_mblk.x" /* common memory link list library */ -#include "cm_lte.x" /* Common LTE Defines */ -#include "tfu.x" /* RGU Interface includes */ #include "lrg.x" #include "du_app_mac_inf.h" +#include "mac_sch_interface.h" +#include "lwr_mac_upr_inf.h" #include "mac.h" -#include "du_log.h" +#include "mac_utils.h" /* Function pointer for sending rach ind from MAC to SCH */ MacSchRachIndFunc macSchRachIndOpts[]= { packMacSchRachInd, - macSchRachInd, + MacSchRachInd, packMacSchRachInd }; @@ -68,13 +49,11 @@ MacSchRachIndFunc macSchRachIndOpts[]= * RFAILED - failure * * ****************************************************************/ -int sendRachIndMacToSch(RachIndInfo *rachInd) +uint8_t sendRachIndMacToSch(RachIndInfo *rachInd) { Pst pst; - - fillMacToSchPst(&pst); - pst.event = EVENT_RACH_IND_TO_SCH; - + + FILL_PST_MAC_TO_SCH(pst, EVENT_RACH_IND_TO_SCH); return(*macSchRachIndOpts[pst.selector])(&pst, rachInd); } @@ -95,22 +74,26 @@ int sendRachIndMacToSch(RachIndInfo *rachInd) * RFAILED - failure * * ****************************************************************/ -uint16_t fapiMacRachInd(Pst *pst, RachInd *rachInd) +uint8_t fapiMacRachInd(Pst *pst, RachInd *rachInd) { uint8_t pduIdx; uint8_t preambleIdx; RachIndInfo *rachIndInfo; - DU_LOG("\nMAC : Received RACH indication"); + DU_LOG("\nINFO --> MAC : Received RACH indication"); /* Considering one pdu and one preamble */ pduIdx = 0; preambleIdx = 0; - rachIndInfo = &macCb.macCell->raCb; + MAC_ALLOC(rachIndInfo, sizeof(RachIndInfo)); + if(!rachIndInfo) + { + DU_LOG("\nERROR --> MAC : Memory allocation failure in fapiMacRachInd"); + MAC_FREE_SHRABL_BUF(pst->region, pst->pool, rachInd, sizeof(RachInd)); + return RFAILED; + } - rachIndInfo->cellId = rachInd->rachPdu[pduIdx].pci; - /* TODO : Allocate unique crnti for each ue */ - rachIndInfo->crnti = 100; + rachIndInfo->cellId = rachInd->cellId; rachIndInfo->timingInfo.sfn = rachInd->timingInfo.sfn; rachIndInfo->timingInfo.slot = rachInd->timingInfo.slot; rachIndInfo->slotIdx = rachInd->rachPdu[pduIdx].slotIdx; @@ -121,6 +104,13 @@ uint16_t fapiMacRachInd(Pst *pst, RachInd *rachInd) rachIndInfo->timingAdv = \ rachInd->rachPdu[pduIdx].preamInfo[preambleIdx].timingAdv; + /* Store the value in macRaCb */ + createMacRaCb(rachIndInfo); + + /* Free sharable buffer used to send RACH Indication from lower MAC to MAC */ + MAC_FREE_SHRABL_BUF(pst->region, pst->pool, rachInd, sizeof(RachInd)); + + /* Send RACH Indication to SCH */ return(sendRachIndMacToSch(rachIndInfo)); } @@ -128,13 +118,36 @@ uint16_t fapiMacRachInd(Pst *pst, RachInd *rachInd) uint8_t UnrestrictedSetNcsTable[MAX_ZERO_CORR_CFG_IDX] = {0, 2, 4, 6, 8, 10, 12, 13, 15, 17, 19, 23, 27, 34, 46, 69}; -int MacProcUlSchInfo(Pst *pst, UlSchInfo *ulSchInfo) +/******************************************************************* + * + * @brief Processes UL scheduling info from SCH + * + * @details + * + * Function : MacProcUlSchInfo + * + * Functionality: Processes UL scheduling info from SCH + * + * @params[in] Post structure + * UL scheduling info + * @return ROK - success + * RFAILED - failure + * + * ****************************************************************/ +uint8_t MacProcUlSchInfo(Pst *pst, UlSchedInfo *ulSchedInfo) { - if(ulSchInfo != NULLP) - { + uint16_t cellIdx; + +#ifdef CALL_FLOW_DEBUG_LOG + DU_LOG("\nCall Flow: ENTSCH -> ENTMAC : EVENT_UL_SCH_INFO\n"); +#endif + + GET_CELL_IDX(ulSchedInfo->cellId, cellIdx); + if(ulSchedInfo != NULLP) + { MacUlSlot *currUlSlot = - &macCb.macCell->ulSlot[ulSchInfo->slotIndInfo.slot % MAX_SLOT_SUPPORTED]; - memcpy(&currUlSlot->ulCellInfo, ulSchInfo, sizeof(UlSchInfo)); + &macCb.macCell[cellIdx]->ulSlot[ulSchedInfo->slotIndInfo.slot % MAX_SLOTS]; + memcpy(&currUlSlot->ulInfo, ulSchedInfo, sizeof(UlSchedInfo)); } return ROK; }