X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2F5gnrmac%2Fmac_msg_hdl.c;h=16ade71805f8b38d62bd19f5e92ed955d677ff3c;hb=45967e320fb5747a257af75f3d2f12c0aa9daee0;hp=c1f8be21180da958d2c85c9e052533ce29e88ae4;hpb=3364273455756ae289662a274d5bcbf391ecd58e;p=o-du%2Fl2.git diff --git a/src/5gnrmac/mac_msg_hdl.c b/src/5gnrmac/mac_msg_hdl.c index c1f8be211..16ade7180 100644 --- a/src/5gnrmac/mac_msg_hdl.c +++ b/src/5gnrmac/mac_msg_hdl.c @@ -186,14 +186,26 @@ uint8_t fapiMacCrcInd(Pst *pst, CrcInd *crcInd) * ****************************************************************/ uint8_t fapiMacRxDataInd(Pst *pst, RxDataInd *rxDataInd) { - uint16_t pduIdx; + uint8_t ueId = 0; + uint16_t pduIdx, cellIdx = 0; DU_LOG("\nDEBUG --> MAC : Received Rx Data indication"); /* TODO : compare the handle received in RxDataInd with handle send in PUSCH * PDU, which is stored in raCb */ for(pduIdx = 0; pduIdx < rxDataInd->numPdus; pduIdx++) { - unpackRxData(rxDataInd->cellId, rxDataInd->timingInfo, &rxDataInd->pdus[pduIdx]); + + GET_CELL_IDX(rxDataInd->cellId, cellIdx); + GET_UE_ID(rxDataInd->pdus[pduIdx].rnti, ueId); + + if(macCb.macCell[cellIdx] && macCb.macCell[cellIdx]->ueCb[ueId -1].transmissionAction == STOP_TRANSMISSION) + { + DU_LOG("\nINFO --> MAC : UL data transmission not allowed for UE %d", macCb.macCell[cellIdx]->ueCb[ueId -1].ueId); + } + else + { + unpackRxData(rxDataInd->cellId, rxDataInd->timingInfo, &rxDataInd->pdus[pduIdx]); + } MAC_FREE_SHRABL_BUF(pst->region, pst->pool, rxDataInd->pdus[pduIdx].pduData,\ rxDataInd->pdus[pduIdx].pduLength); } @@ -234,7 +246,7 @@ uint8_t MacProcRlcDlData(Pst* pstInfo, RlcData *dlData) DU_LOG("\nDEBUG --> MAC: Received DL data for sfn=%d slot=%d numPdu= %d", \ dlData->slotInfo.sfn, dlData->slotInfo.slot, dlData->numPdu); - GET_UE_IDX(dlData->rnti, ueId); + GET_UE_ID(dlData->rnti, ueId); /* Copy the pdus to be muxed into mac Dl data */ macDlData.ueId = ueId; @@ -283,7 +295,7 @@ uint8_t MacProcRlcDlData(Pst* pstInfo, RlcData *dlData) { memset(&dlBoInfo, 0, sizeof(DlRlcBoInfo)); dlBoInfo.cellId = dlData->boStatus[lcIdx].cellId; - GET_CRNTI(dlBoInfo.crnti, dlData->boStatus[lcIdx].ueIdx); + GET_CRNTI(dlBoInfo.crnti, dlData->boStatus[lcIdx].ueId); dlBoInfo.lcId = dlData->boStatus[lcIdx].lcId; dlBoInfo.dataVolume = dlData->boStatus[lcIdx].bo; sendDlRlcBoInfoToSch(&dlBoInfo); @@ -343,10 +355,11 @@ uint8_t lcId, uint16_t pduLen, uint8_t *pdu) ulData->slotInfo.cellId = cellId; /* Filling pdu info */ - if(lcId == SRB1_LCID || lcId == SRB2_LCID) - { + if(lcId != SRB0_LCID) + ulData->pduInfo[ulData->numPdu].commCh = false; + else ulData->pduInfo[ulData->numPdu].commCh = true; - } + ulData->pduInfo[ulData->numPdu].lcId = lcId; ulData->pduInfo[ulData->numPdu].pduBuf = pdu; ulData->pduInfo[ulData->numPdu].pduLen = pduLen; @@ -383,7 +396,7 @@ uint8_t MacProcRlcBoStatus(Pst* pst, RlcBoStatus* boStatus) DlRlcBoInfo dlBoInfo; dlBoInfo.cellId = boStatus->cellId; - GET_CRNTI(dlBoInfo.crnti, boStatus->ueIdx); + GET_CRNTI(dlBoInfo.crnti, boStatus->ueId); dlBoInfo.lcId = boStatus->lcId; dlBoInfo.dataVolume = boStatus->bo; @@ -538,7 +551,7 @@ uint8_t MacProcCellStop(Pst *pst, OduCellId *cellId) * ****************************************************************/ uint8_t MacProcDlCcchInd(Pst *pst, DlCcchIndInfo *dlCcchIndInfo) { - uint8_t ueIdx = 0; + uint8_t ueId = 0, ueIdx = 0; uint16_t cellIdx; uint16_t idx; DlRlcBoInfo dlBoInfo; @@ -558,8 +571,8 @@ uint8_t MacProcDlCcchInd(Pst *pst, DlCcchIndInfo *dlCcchIndInfo) dlBoInfo.dataVolume = (dlCcchIndInfo->dlCcchMsgLen + 3) + (MAX_CRI_SIZE + 1); /* storing Msg4 Pdu in raCb */ - GET_UE_IDX(dlBoInfo.crnti, ueIdx); - ueIdx = ueIdx -1; + GET_UE_ID(dlBoInfo.crnti, ueId); + ueIdx = ueId -1; if(macCb.macCell[cellIdx]->macRaCb[ueIdx].crnti == dlCcchIndInfo->crnti) { macCb.macCell[cellIdx]->macRaCb[ueIdx].msg4PduLen = dlCcchIndInfo->dlCcchMsgLen; @@ -771,10 +784,8 @@ uint8_t buildAndSendSrInd(UciInd *macUciInd, uint8_t crnti) * ****************************************************************/ uint8_t FapiMacUciInd(Pst *pst, UciInd *macUciInd) { - uint8_t pduIdx = 0; - uint8_t ret = ROK; - uint16_t nPdus; - uint16_t crnti; + uint8_t pduIdx = 0, ret = ROK; + uint16_t nPdus = 0, crnti = 0; if(macUciInd) { @@ -789,8 +800,8 @@ uint8_t FapiMacUciInd(Pst *pst, UciInd *macUciInd) if(macUciInd->pdus[pduIdx].uci.uciPucchF0F1.srInfo.srIndPres) { DU_LOG("\nDEBUG --> MAC : Received SR UCI indication"); - crnti = macUciInd->pdus[pduIdx].uci.uciPucchF0F1.crnti; - ret = buildAndSendSrInd(macUciInd, crnti); + crnti = macUciInd->pdus[pduIdx].uci.uciPucchF0F1.crnti; + ret = buildAndSendSrInd(macUciInd, crnti); } break; case UCI_IND_PUCCH_F2F3F4: