X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2F5gnrmac%2Flwr_mac_handle_phy.c;h=5c22704f518ecaabb2f0befe4d6524b28f3c12d4;hb=bb267bb17ec2897af706e7307790d3b1e5b3ea8d;hp=ebcd761ffcb992c07e2b61f8a0f71acd8e8a3ed0;hpb=ff564d395659e1a7175787af8237d17c665c9660;p=o-du%2Fl2.git diff --git a/src/5gnrmac/lwr_mac_handle_phy.c b/src/5gnrmac/lwr_mac_handle_phy.c index ebcd761ff..5c22704f5 100644 --- a/src/5gnrmac/lwr_mac_handle_phy.c +++ b/src/5gnrmac/lwr_mac_handle_phy.c @@ -20,7 +20,7 @@ #include "common_def.h" #include "lrg.h" #ifdef INTEL_FAPI -#include "fapi.h" +#include "nr5g_fapi_internal.h" #include "fapi_vendor_extension.h" #endif @@ -106,16 +106,16 @@ uint8_t procSlotInd(fapi_slot_ind_t *fapiSlotInd) /* fill Pst structure to send to lwr_mac to MAC */ Pst pst; uint16_t ret = 0; - SlotIndInfo *slotInd = {0}; + SlotTimingInfo *slotInd = {0}; - MAC_ALLOC_SHRABL_BUF(slotInd, sizeof(SlotIndInfo)); + MAC_ALLOC_SHRABL_BUF(slotInd, sizeof(SlotTimingInfo)); if(slotInd) { slotInd->cellId = lwrMacCb.cellCb[0].cellId; slotInd->sfn = fapiSlotInd->sfn; slotInd->slot = fapiSlotInd->slot; - FILL_PST_LWR_MAC_TO_MAC(pst, EVENT_SLOT_IND_TO_MAC); + pst.selector = ODU_SELECTOR_LWLC; ret = (*sendSlotIndOpts[pst.selector])(&pst, slotInd); } else @@ -159,6 +159,7 @@ uint8_t procStopInd() DU_LOG("\nINFO --> LWR_MAC: PHY has moved to configured state"); FILL_PST_LWR_MAC_TO_MAC(pst, EVENT_STOP_IND_TO_MAC); + pst.selector = ODU_SELECTOR_LWLC; return (*sendStopIndOpts[pst.selector])(&pst, cellId); } @@ -180,22 +181,24 @@ uint8_t procStopInd() * ****************************************************************/ uint8_t procRachInd(fapi_rach_indication_t *fapiRachInd) { -/* TODO : Remove the following #ifndef TEMP_INTG_FLAG, when testing - * RACH.indication in radio mode integration */ -#ifndef TEMP_INTG_FLAG Pst pst; uint8_t pduIdx; uint8_t prmbleIdx; RachPduInfo *rachPdu = NULLP; RachInd *rachInd = NULLP; + if(!fapiRachInd->numPdus) + { + DU_LOG("\nDEBUG --> LWR_MAC : No PDU in RACH.indication at [%d, %d]", fapiRachInd->sfn, fapiRachInd->slot); + return ROK; + } + MAC_ALLOC_SHRABL_BUF(rachInd, sizeof(RachInd)); if(!rachInd) { - DU_LOG("\nERROR --> LWR_MAC: Memory Allocation failed in procRachInd"); + DU_LOG("\nERROR --> LWR_MAC : Memory Allocation failed in procRachInd"); return RFAILED; } - rachInd->cellId = lwrMacCb.cellCb[0].cellId; rachInd->timingInfo.sfn = fapiRachInd->sfn; rachInd->timingInfo.slot = fapiRachInd->slot; @@ -220,9 +223,6 @@ uint8_t procRachInd(fapi_rach_indication_t *fapiRachInd) /* Fill post and sent to MAC */ FILL_PST_LWR_MAC_TO_MAC(pst, EVENT_RACH_IND_TO_MAC); return (*sendRachIndOpts[pst.selector])(&pst, rachInd); -#else - return ROK; -#endif }/* handleRachInd */ /******************************************************************* @@ -253,9 +253,14 @@ uint8_t procCrcInd(fapi_crc_ind_t *fapiCrcInd) MAC_ALLOC_SHRABL_BUF(crcInd, sizeof(CrcInd)); if(!crcInd) { - DU_LOG("\nERROR --> LWR_MAC: Memory Allocation failed in procCrcInd"); + DU_LOG("\nERROR --> LWR_MAC : Memory Allocation failed in procCrcInd"); return RFAILED; } + if(!fapiCrcInd->numCrcs) + { + DU_LOG("\nDEBUG --> LWR_MAC : No CRC PDUs in CRC.indication at [%d, %d]", fapiCrcInd->sfn, fapiCrcInd->slot); + return ROK; + } crcInd->cellId = lwrMacCb.cellCb[0].cellId; crcInd->timingInfo.sfn = fapiCrcInd->sfn; @@ -312,9 +317,14 @@ uint8_t procRxDataInd(fapi_rx_data_indication_t *fapiRxDataInd) MAC_ALLOC_SHRABL_BUF(rxDataInd, sizeof(RxDataInd)); if(!rxDataInd) { - DU_LOG("\nERROR --> LWR_MAC: Memory Allocation failed in procRxDataInd"); + DU_LOG("\nERROR --> LWR_MAC : Memory Allocation failed in procRxDataInd"); return RFAILED; } + if(!fapiRxDataInd->numPdus) + { + DU_LOG("\nDEBUG --> LWR_MAC : No PDU in RX_Data.indication at [%d, %d]", fapiRxDataInd->sfn, fapiRxDataInd->slot); + return ROK; + } rxDataInd->cellId = lwrMacCb.cellCb[0].cellId; rxDataInd->timingInfo.sfn = fapiRxDataInd->sfn; @@ -466,6 +476,66 @@ uint8_t procUciInd(fapi_uci_indication_t *fapiUciInd) } #endif /* FAPI */ +#ifdef CALL_FLOW_DEBUG_LOG +/******************************************************************* + * @brief Function prints src, dest, msg infor about all the msgs that + received. + * + * @details + * + * Function :callFlowFromPhyToLwrMac + * + * Function call Flow From Phy To LwrMac + * + * @param[in] Pst *pst, Post structure of the primitive. + * + * @return void + * ****************************************************************/ +void callFlowFromPhyToLwrMac(uint16_t msgId) +{ + char message[100]; + switch(msgId) + { +#ifdef INTEL_TIMER_MODE + case FAPI_VENDOR_EXT_UL_IQ_SAMPLES: + strcpy(message,"FAPI_VENDOR_EXT_UL_IQ_SAMPLES"); + break; +#endif + case FAPI_PARAM_RESPONSE: + strcpy(message,"FAPI_PARAM_RESPONSE"); + break; + case FAPI_CONFIG_RESPONSE: + strcpy(message,"FAPI_CONFIG_RESPONSE"); + break; + case FAPI_SLOT_INDICATION: + strcpy(message,"FAPI_SLOT_INDICATION"); + break; + case FAPI_ERROR_INDICATION: + strcpy(message,"FAPI_ERROR_INDICATION"); + break; + case FAPI_RX_DATA_INDICATION: + strcpy(message,"FAPI_RX_DATA_INDICATION"); + break; + case FAPI_CRC_INDICATION: + strcpy(message,"FAPI_CRC_INDICATION"); + break; + case FAPI_UCI_INDICATION: + strcpy(message,"FAPI_UCI_INDICATION"); + break; + case FAPI_SRS_INDICATION: + strcpy(message,"FAPI_SRS_INDICATION"); + break; + case FAPI_RACH_INDICATION: + strcpy(message,"FAPI_RACH_INDICATION"); + break; + case FAPI_STOP_INDICATION: + strcpy(message,"FAPI_STOP_INDICATION"); + break; + } + DU_LOG("\nCall Flow: PHY -> ENTLWRMAC : %s\n",message); +} +#endif + /******************************************************************* * * @brief Processes message from PHY @@ -488,6 +558,10 @@ void procPhyMessages(uint16_t msgType, uint32_t msgSize, void *msg) fapi_msg_t *header = NULLP; header = (fapi_msg_t *)msg; +#ifdef CALL_FLOW_DEBUG_LOG + callFlowFromPhyToLwrMac(header->msg_id); +#endif + switch(header->msg_id) { #ifdef INTEL_TIMER_MODE