X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2F5gnrmac%2Fmac_msg_hdl.c;h=94589307305f52b5074668d7a9a309f25e4c1627;hb=197f4abee4ee0909e4509d6a2fbba78c500be7fe;hp=b0ff0142ce6a89ab90687d70b2371274582b696b;hpb=d2d9dcbd92e8f1be15dd5891aaf9ada9bc071e1a;p=o-du%2Fl2.git diff --git a/src/5gnrmac/mac_msg_hdl.c b/src/5gnrmac/mac_msg_hdl.c index b0ff0142c..945893073 100644 --- a/src/5gnrmac/mac_msg_hdl.c +++ b/src/5gnrmac/mac_msg_hdl.c @@ -56,9 +56,155 @@ #include "rg_prg.x" #include "du_app_mac_inf.h" #include "rg.x" +#include "lwr_mac_fsm.h" +#include "mac.h" /* This file contains message handling functionality for MAC */ +extern void sendToLowerMac(uint16_t msgType, uint32_t msgLen, void *msg); + +/* Function pointer for sending crc ind from MAC to SCH */ +MacSchCrcIndFunc macSchCrcIndOpts[]= +{ + packMacSchCrcInd, + macSchCrcInd, + packMacSchCrcInd +}; + +/******************************************************************* + * + * @brief Sends CRC Indication to SCH + * + * @details + * + * Function : sendCrcIndMacToSch + * + * Functionality: + * Sends CRC Indication to SCH + * + * @params[in] + * @return ROK - success + * RFAILED - failure + * + ****************************************************************/ +int sendCrcIndMacToSch(CrcIndInfo *crcInd) +{ + Pst pst; + + fillMacToSchPst(&pst); + pst.event = EVENT_CRC_IND_TO_SCH; + + return(*macSchCrcIndOpts[pst.selector])(&pst, crcInd); +} + +/******************************************************************* + * + * @brief Processes CRC Indication from PHY + * + * @details + * + * Function : fapiMacCrcInd + * + * Functionality: + * Processes CRC Indication from PHY + * + * @params[in] Post Structure Pointer + * Crc Indication Pointer + * @return ROK - success + * RFAILED - failure + * + * ****************************************************************/ +uint16_t fapiMacCrcInd(Pst *pst, CrcInd *crcInd) +{ + CrcIndInfo crcIndInfo; + + DU_LOG("\nMAC : Received CRC indication"); + + /* Considering one pdu and one preamble */ + crcIndInfo.cellId = macCb.macCell->cellId;; + crcIndInfo.crnti = crcInd->crcInfo[0].rnti; + crcIndInfo.timingInfo.sfn = crcInd->timingInfo.sfn; + crcIndInfo.timingInfo.slot = crcInd->timingInfo.slot; + crcIndInfo.numCrcInd = crcInd->crcInfo[0].numCb; + crcIndInfo.crcInd[0] = crcInd->crcInfo[0].cbCrcStatus[0]; + + return(sendCrcIndMacToSch(&crcIndInfo)); +} + +/******************************************************************* + * + * @brief Process Rx Data Ind at MAC + * + * @details + * + * Function : fapiMacRxDataInd + * + * Functionality: + * Process Rx Data Ind at MAC + * + * @params[in] Post structure + * Rx Data Indication + * @return ROK - success + * RFAILED - failure + * + * ****************************************************************/ +uint16_t fapiMacRxDataInd(Pst *pst, RxDataInd *rxDataInd) +{ + uint16_t pduIdx; + + DU_LOG("\nMAC : Received Rx Data indication"); + for(pduIdx = 0; pduIdx < rxDataInd->numPdus; pduIdx++) + { + unpackRxData(rxDataInd->timingInfo, &rxDataInd->pdus[pduIdx]); + } + return ROK; +} + +/******************************************************************* + * + * @brief Processes DL data from RLC + * + * @details + * + * Function : MacRlcProcDlData + * + * Functionality: + * Processes DL data from RLC + * + * @params[in] Post structure + * DL data + * @return ROK - success + * RFAILED - failure + * + * ****************************************************************/ +uint16_t MacRlcProcDlData(Pst* pst, SpId spId, RlcMacData *dlData) +{ + return ROK; +} + +/******************************************************************* + * + * @brief Processes BO status from RLC + * + * @details + * + * Function : MacRlcProcBOStatus + * + * Functionality: + * Processes BO status from RLC + * + * @params[in] Post structure + * BO status + * @return ROK - success + * RFAILED - failure + * + * ****************************************************************/ +uint16_t MacRlcProcBOStatus(Pst* pst, SpId spId, RlcMacBOStatus* boStatus) +{ + return ROK; +} + + /******************************************************************* * * @brief Handles cell start reuqest from DU APP @@ -81,7 +227,7 @@ uint16_t MacHdlCellStartReq(Pst *pst, MacCellStartInfo *cellStartInfo) DU_LOG("\nMAC : Handling cell start request"); sendToLowerMac(START_REQUEST, 0, cellStartInfo); - MAC_FREE_MEM(pst->region, pst->pool, cellStartInfo, \ + MAC_FREE_SHRABL_BUF(pst->region, pst->pool, cellStartInfo, \ sizeof(MacCellStartInfo)); return ROK; @@ -106,10 +252,12 @@ uint16_t MacHdlCellStartReq(Pst *pst, MacCellStartInfo *cellStartInfo) * ****************************************************************/ uint16_t MacHdlCellStopReq(Pst *pst, MacCellStopInfo *cellStopInfo) { - DU_LOG("\nMAC : Handling cell stop request"); - sendToLowerMac(STOP_REQUEST, 0, cellStopInfo); + #ifdef FAPI + DU_LOG("\nMAC : Sending cell stop request to Lower Mac"); + sendToLowerMac(FAPI_STOP_REQUEST, 0, cellStopInfo); + #endif - MAC_FREE_MEM(pst->region, pst->pool, cellStopInfo, \ + MAC_FREE_SHRABL_BUF(pst->region, pst->pool, cellStopInfo, \ sizeof(MacCellStopInfo)); return ROK;