X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2F5gnrmac%2Fmac_slot_ind.c;h=bca05f28a0f70d9279261e729d3677094dd62d34;hb=29b5f01d779caab32dbc5b3686a5d917e4c818ec;hp=7949523879bba8bede58962e8c35435369ce390e;hpb=51bd2af5867794ba058365581a7ad3c2eba0d1c3;p=o-du%2Fl2.git diff --git a/src/5gnrmac/mac_slot_ind.c b/src/5gnrmac/mac_slot_ind.c index 794952387..bca05f28a 100644 --- a/src/5gnrmac/mac_slot_ind.c +++ b/src/5gnrmac/mac_slot_ind.c @@ -16,17 +16,7 @@ ################################################################################ *******************************************************************************/ /* header include files (.h) */ -#include "stdbool.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 "common_def.h" #include "rgu.h" #include "tfu.h" /* RGU Interface includes */ #include "lrg.h" @@ -35,15 +25,6 @@ #include "rg_env.h" #include "rg.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 "rgu.x" #include "tfu.x" /* RGU Interface includes */ #include "lrg.x" @@ -104,58 +85,108 @@ int MacProcDlAlloc(Pst *pst, DlSchedInfo *dlSchedInfo) if(dlSchedInfo->msg4Alloc != NULLP) { Msg4Alloc *msg4Alloc = NULLP; - MacDlData msg4DlData; - MacCeInfo macCeData; - currDlSlot = &macCb.macCell->dlSlot[dlSchedInfo->schSlotValue.msg4Time.slot]; currDlSlot->dlInfo.msg4Alloc = dlSchedInfo->msg4Alloc; /* copy msg4 alloc pointer in MAC slot info */ msg4Alloc = dlSchedInfo->msg4Alloc; + macCb.macCell->macRaCb[0].msg4TbSize = msg4Alloc->msg4PdschCfg.codeword[0].tbSize; + } + } + return ROK; +} - memset(&msg4DlData, 0, sizeof(MacDlData)); - memset(&macCeData, 0, sizeof(MacCeInfo)); +/** + * @brief Forming anf filling the MUX Pdu + * @details + * + * Function : fillMsg4Pdu + * + * Forming and filling of Msg4Pdu + * + * @param[in] Msg4Alloc *msg4Alloc + * @return void + **/ +void fillMsg4Pdu(Msg4Alloc *msg4Alloc) +{ + MacDlData msg4DlData; + MacCeInfo macCeData; - macCb.macCell->macRaCb[0].msg4TbSize = msg4Alloc->msg4PdschCfg.codeword[0].tbSize; + memset(&msg4DlData, 0, sizeof(MacDlData)); + memset(&macCeData, 0, sizeof(MacCeInfo)); - if(macCb.macCell->macRaCb[0].msg4Pdu != NULLP) + if(macCb.macCell->macRaCb[0].msg4Pdu != NULLP) + { + MAC_ALLOC(msg4DlData.pduInfo[0].dlPdu, \ + macCb.macCell->macRaCb[0].msg4PduLen); + if(msg4DlData.pduInfo[0].dlPdu != NULLP) + { + fillMsg4DlData(&msg4DlData, macCb.macCell->macRaCb[0].msg4Pdu); + fillMacCe(&macCeData, macCb.macCell->macRaCb[0].msg3Pdu); + /* Forming Mux Pdu */ + macCb.macCell->macRaCb[0].msg4TxPdu = NULLP; + MAC_ALLOC(macCb.macCell->macRaCb[0].msg4TxPdu, macCb.macCell->macRaCb[0].msg4TbSize); + if(macCb.macCell->macRaCb[0].msg4TxPdu != NULLP) { - MAC_ALLOC(msg4DlData.pduInfo[0].dlPdu, \ - macCb.macCell->macRaCb[0].msg4PduLen); - if(msg4DlData.pduInfo[0].dlPdu != NULLP) - { - fillMsg4DlData(&msg4DlData); - } - } - - /* MUXing for msg4 */ - fillMacCe(&macCeData); - macMuxPdu(&msg4DlData, &macCeData, macCb.macCell->macRaCb[0].msg4TbSize); - - /* storing msg4 Pdu in macDlSlot */ - if(macCb.macCell->macRaCb[0].msg4TxPdu) - { - msg4Alloc->msg4Info.msg4PduLen = macCb.macCell->macRaCb[0].msg4TbSize; - MAC_ALLOC(msg4Alloc->msg4Info.msg4Pdu, msg4Alloc->msg4Info.msg4PduLen); - if(msg4Alloc->msg4Info.msg4Pdu != NULLP) - { - memcpy(msg4Alloc->msg4Info.msg4Pdu, macCb.macCell->macRaCb[0].msg4TxPdu, \ - msg4Alloc->msg4Info.msg4PduLen); - } + memset(macCb.macCell->macRaCb[0].msg4TxPdu, 0, macCb.macCell->macRaCb[0].msg4TbSize); + macMuxPdu(&msg4DlData, &macCeData, macCb.macCell->macRaCb[0].msg4TxPdu,\ + macCb.macCell->macRaCb[0].msg4TbSize); + } else { - DU_LOG("\nMAC: Failed at macMuxPdu()"); - return RFAILED; + DU_LOG("\nMAC: Failed allocating memory for msg4TxPdu"); } - /* TODO: Free all allocated memory, after the usage */ - /* MAC_FREE(macCb.macCell->macRaCb[0].msg4TxPdu, \ - macCb.macCell->macRaCb[0].msg4TbSize); // TODO: To be freed after re-transmission is successful. - MAC_FREE(dlSchedInfo->msg4Alloc->msg4Info.msg4Pdu,\ - macCb.macCell->macRaCb[0].msg4PduLen); //TODO: To be freed after lower-mac is succesfull - MAC_FREE(msg4DlData.pduInfo[0].dlPdu, macCb.macCell->macRaCb[0].msg4PduLen); - MAC_FREE(macCb.macCell->macRaCb[0].msg4Pdu, macCb.macCell->macRaCb[0].msg4PduLen); */ + /* Free memory allocated */ + MAC_FREE(msg4DlData.pduInfo[0].dlPdu, macCb.macCell->macRaCb[0].msg4PduLen); } } - return ROK; + + /* storing msg4 Pdu in macDlSlot */ + if(macCb.macCell->macRaCb[0].msg4TxPdu) + { + msg4Alloc->msg4Info.msg4PduLen = macCb.macCell->macRaCb[0].msg4TbSize; + MAC_ALLOC(msg4Alloc->msg4Info.msg4Pdu, msg4Alloc->msg4Info.msg4PduLen); + if(msg4Alloc->msg4Info.msg4Pdu != NULLP) + { + memcpy(msg4Alloc->msg4Info.msg4Pdu, macCb.macCell->macRaCb[0].msg4TxPdu, \ + msg4Alloc->msg4Info.msg4PduLen); + } + } + else + { + DU_LOG("\nMAC: Failed at macMuxPdu()"); + } + /* TODO: Free all allocated memory, after the usage */ + /* MAC_FREE(macCb.macCell->macRaCb[0].msg4TxPdu, \ + macCb.macCell->macRaCb[0].msg4TbSize); // TODO: To be freed after re-transmission is successful. + MAC_FREE(macCb.macCell->macRaCb[0].msg4Pdu, macCb.macCell->macRaCb[0].msg4PduLen); */ +} + +/** + * @brief Builds and Send the Muxed Pdu to Lower MAC + * + * @details + * + * Function : buildAndSendMuxPdu + * + * Build and Sends the Muxed Pdu to Lower MAC. + * + * @param[in] SlotIndInfo *slotInd + * @return void + **/ + +void buildAndSendMuxPdu(SlotIndInfo currTimingInfo) +{ + MacDlSlot *currDlSlot = NULLP; + SlotIndInfo muxTimingInfo; + memset(&muxTimingInfo, 0, sizeof(SlotIndInfo)); + + ADD_DELTA_TO_TIME(currTimingInfo, muxTimingInfo, PHY_DELTA); + currDlSlot = &macCb.macCell->dlSlot[muxTimingInfo.slot]; + if(currDlSlot->dlInfo.msg4Alloc) + { + fillMsg4Pdu(currDlSlot->dlInfo.msg4Alloc); + currDlSlot = NULLP; + } } /** @@ -218,7 +249,7 @@ int sendSlotIndMacToDuApp(SlotIndInfo *slotInd) slotInfo->slot = slotInd->slot; /* Fill Pst */ - pst.selector = DU_MAC_LWLC; + pst.selector = ODU_SELECTOR_LWLC; pst.srcEnt = ENTRG; pst.dstEnt = ENTDUAPP; pst.dstInst = 0;