X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2F5gnrmac%2Flwr_mac_fsm.c;h=494d6a532eef47889547e9d4483ea5624b1d9d4c;hb=refs%2Fchanges%2F77%2F4377%2F11;hp=355c98ba1cc4164cf521f2bdba2f5f1a9a5f8935;hpb=746426865b5742eb3d79ae2457081c47c1c2c4c1;p=o-du%2Fl2.git diff --git a/src/5gnrmac/lwr_mac_fsm.c b/src/5gnrmac/lwr_mac_fsm.c index 355c98ba1..494d6a532 100644 --- a/src/5gnrmac/lwr_mac_fsm.c +++ b/src/5gnrmac/lwr_mac_fsm.c @@ -16,21 +16,9 @@ ################################################################################ *******************************************************************************/ -#include -#include -#include /* header include files -- defines (.h) */ -#include "envopt.h" /* environment options */ -#include "envdep.h" /* environment dependent */ -#include "envind.h" /* environment independent */ -#include "gen.h" /* general layer */ -#include "ssi.h" /* system service interface */ -#include "cm_hash.h" /* common hash list */ -#include "cm_mblk.h" /* common memory link list library */ -#include "cm_llist.h" /* common linked list library */ -#include "cm_err.h" /* common error */ -#include "cm_lte.h" /* common LTE */ +#include "common_def.h" #include "lrg.h" /* Layer manager interface includes*/ #include "crg.h" /* CRG interface includes*/ #include "rgu.h" /* RGU interface includes*/ @@ -44,15 +32,6 @@ #include "lwr_mac_fsm.h" /* header/extern include files (.x) */ -#include "gen.x" /* general layer typedefs */ -#include "ssi.x" /* system services typedefs */ -#include "cm5.x" /* common timers */ -#include "cm_hash.x" /* common hash list */ -#include "cm_lib.x" /* common library */ -#include "cm_llist.x" /* common linked list */ -#include "cm_mblk.x" /* memory management */ -#include "cm_tkns.x" /* common tokens */ -#include "cm_lte.x" /* common tokens */ #include "rgu.x" /* RGU types */ #include "tfu.x" /* RGU types */ #include "lrg.x" /* layer management typedefs for MAC */ @@ -63,8 +42,6 @@ #include "mac.h" #include "rg.x" /* typedefs for MAC */ #include "lwr_mac_phy.h" -#include "common_def.h" -#include "math.h" #define MIB_SFN_BITMASK 0xFC #define PDCCH_PDU_TYPE 0 @@ -72,6 +49,7 @@ #define SSB_PDU_TYPE 3 #define PRACH_PDU_TYPE 0 #define PUSCH_PDU_TYPE 1 +#define PUCCH_PDU_TYPE 2 #define PDU_PRESENT 1 #define SET_MSG_LEN(x, size) x += size @@ -118,7 +96,7 @@ S16 lwr_mac_handleInvalidEvt(void *msg) RETVALUE(ROK); } -#ifdef FAPI +#ifdef INTEL_FAPI /******************************************************************* * * @brief Fills FAPI message header @@ -1320,7 +1298,7 @@ uint32_t getParamValue(fapi_uint16_tlv_t *tlv, uint16_t type) S16 lwr_mac_handleParamReqEvt(void *msg) { -#ifdef FAPI +#ifdef INTEL_FAPI /* startGuardTimer(); */ uint32_t msgLen = 0; //Length of message Body fapi_param_req_t *paramReq = NULL; @@ -1362,7 +1340,7 @@ S16 lwr_mac_handleParamReqEvt(void *msg) S16 lwr_mac_handleParamRspEvt(void *msg) { -#ifdef FAPI +#ifdef INTEL_FAPI /* stopGuardTimer(); */ uint8_t index; uint32_t encodedVal; @@ -1899,7 +1877,7 @@ S16 lwr_mac_handleParamRspEvt(void *msg) S16 lwr_mac_handleConfigReqEvt(void *msg) { -#ifdef FAPI +#ifdef INTEL_FAPI Inst inst = 0; uint8_t idx = 0; uint8_t index = 0; @@ -2069,7 +2047,7 @@ S16 lwr_mac_handleConfigReqEvt(void *msg) S16 lwr_mac_handleConfigRspEvt(void *msg) { -#ifdef FAPI +#ifdef INTEL_FAPI fapi_config_resp_t *configRsp; configRsp = (fapi_config_resp_t *)msg; @@ -2122,7 +2100,7 @@ S16 lwr_mac_handleConfigRspEvt(void *msg) * ****************************************************************/ S16 lwr_mac_handleStartReqEvt(void *msg) { -#ifdef FAPI +#ifdef INTEL_FAPI uint32_t msgLen = 0; fapi_start_req_t *startReq; @@ -2163,7 +2141,7 @@ S16 lwr_mac_handleStartReqEvt(void *msg) S16 lwr_mac_handleStopReqEvt(void *msg) { -#ifdef FAPI +#ifdef INTEL_FAPI uint32_t msgLen = 0; fapi_stop_req_t *stopReq = NULLP; LWR_MAC_ALLOC(stopReq, sizeof(fapi_stop_req_t)); @@ -2205,7 +2183,7 @@ PUBLIC void setMibPdu(uint8_t *mibPdu, uint32_t *val, uint16_t sfn) DU_LOG("\nLWR_MAC: MIB PDU %x", *val); } -#ifdef FAPI +#ifdef INTEL_FAPI /******************************************************************* * * @brief fills SSB PDU required for DL TTI info in MAC @@ -3126,7 +3104,7 @@ uint8_t fillMsg4TxDataReq(fapi_tx_pdu_desc_t *pduDesc, Msg4Info *msg4Info, * ****************************************************************/ uint16_t handleDlTtiReq(SlotIndInfo currTimingInfo) { -#ifdef FAPI +#ifdef INTEL_FAPI uint8_t idx; uint8_t nPdu = 0; uint8_t numPduEncoded = 0; @@ -3319,7 +3297,7 @@ uint16_t handleDlTtiReq(SlotIndInfo currTimingInfo) * ****************************************************************/ uint16_t sendTxDataReq(SlotIndInfo currTimingInfo, DlSchedInfo *dlInfo) { -#ifdef FAPI +#ifdef INTEL_FAPI uint8_t nPdu = 0; uint32_t msgLen = 0; uint16_t pduIndex = 0; @@ -3409,7 +3387,7 @@ uint16_t sendTxDataReq(SlotIndInfo currTimingInfo, DlSchedInfo *dlInfo) * Pointer to CurrUlSlot * @return count * ********************************************************************/ -#ifdef FAPI +#ifdef INTEL_FAPI uint8_t getnPdus(fapi_ul_tti_req_t *ulTtiReq, MacUlSlot *currUlSlot) { uint8_t pduCount = 0; @@ -3428,20 +3406,19 @@ uint8_t getnPdus(fapi_ul_tti_req_t *ulTtiReq, MacUlSlot *currUlSlot) } if(currUlSlot->ulInfo.dataType & SCH_DATATYPE_PUSCH_UCI) { - pduCount++; - ulTtiReq->nUlsch++; - ulTtiReq->nUlsch = PDU_PRESENT; - } - if(currUlSlot->ulInfo.dataType & SCH_DATATYPE_UCI) - { - pduCount++; - ulTtiReq->nUlcch = PDU_PRESENT; - } - if(currUlSlot->ulInfo.dataType & SCH_DATATYPE_SRS) - { - pduCount++; - } - } + pduCount++; + ulTtiReq->nUlsch = PDU_PRESENT; + } + if(currUlSlot->ulInfo.dataType & SCH_DATATYPE_UCI) + { + pduCount++; + ulTtiReq->nUlcch = PDU_PRESENT; + } + if(currUlSlot->ulInfo.dataType & SCH_DATATYPE_SRS) + { + pduCount++; + } + } return pduCount; } #endif @@ -3463,7 +3440,7 @@ uint8_t getnPdus(fapi_ul_tti_req_t *ulTtiReq, MacUlSlot *currUlSlot) void setNumCs(uint8_t *numCs, MacCellCfg *macCellCfg) { -#ifdef FAPI +#ifdef INTEL_FAPI uint8_t idx; if(macCellCfg != NULLP) { @@ -3490,7 +3467,7 @@ void setNumCs(uint8_t *numCs, MacCellCfg *macCellCfg) * Pointer to msgLen * ********************************************************************/ -#ifdef FAPI +#ifdef INTEL_FAPI void fillPrachPdu(fapi_ul_tti_req_pdu_t *ulTtiReqPdu, MacCellCfg *macCellCfg, MacUlSlot *currUlSlot, uint32_t *msgLen) { if(ulTtiReqPdu != NULLP) @@ -3576,6 +3553,56 @@ void fillPuschPdu(fapi_ul_tti_req_pdu_t *ulTtiReqPdu, MacCellCfg *macCellCfg, Ma sizeof(ulTtiReqPdu->pduSize) + sizeof(fapi_ul_pusch_pdu_t))); } } + +void fillPucchPdu(fapi_ul_tti_req_pdu_t *ulTtiReqPdu, MacCellCfg *macCellCfg,\ + MacUlSlot *currUlSlot, uint32_t *msgLen) +{ + if(ulTtiReqPdu != NULLP) + { + ulTtiReqPdu->pduType = PUCCH_PDU_TYPE; + ulTtiReqPdu->u.pucch_pdu.rnti = currUlSlot->ulInfo.schPucchInfo.rnti; + /* TODO : Fill handle in raCb when scheduling pucch and access here */ + ulTtiReqPdu->u.pucch_pdu.handle = 100; + ulTtiReqPdu->u.pucch_pdu.bwpSize = macCellCfg->initialUlBwp.bwp.numPrb; + ulTtiReqPdu->u.pucch_pdu.bwpStart = macCellCfg->initialUlBwp.bwp.firstPrb; + ulTtiReqPdu->u.pucch_pdu.subCarrierSpacing = macCellCfg->initialUlBwp.bwp.scs; + ulTtiReqPdu->u.pucch_pdu.cyclicPrefix = macCellCfg->initialUlBwp.bwp.cyclicPrefix; + ulTtiReqPdu->u.pucch_pdu.formatType = currUlSlot->ulInfo.schPucchInfo.pucchFormat; /* Supporting PUCCH Format 0 */ + ulTtiReqPdu->u.pucch_pdu.multiSlotTxIndicator = 0; /* No Multi Slot transmission */ + ulTtiReqPdu->u.pucch_pdu.pi2Bpsk = 0; /* Disabled */ + ulTtiReqPdu->u.pucch_pdu.prbStart = currUlSlot->ulInfo.schPucchInfo.fdAlloc.startPrb; + ulTtiReqPdu->u.pucch_pdu.prbSize = currUlSlot->ulInfo.schPucchInfo.fdAlloc.numPrb; + ulTtiReqPdu->u.pucch_pdu.startSymbolIndex = currUlSlot->ulInfo.schPucchInfo.tdAlloc.startSymb; + ulTtiReqPdu->u.pucch_pdu.nrOfSymbols = currUlSlot->ulInfo.schPucchInfo.tdAlloc.numSymb; + ulTtiReqPdu->u.pucch_pdu.freqHopFlag = 0; /* Disabled */ + ulTtiReqPdu->u.pucch_pdu.secondHopPrb = 0; + ulTtiReqPdu->u.pucch_pdu.groupHopFlag = 0; + ulTtiReqPdu->u.pucch_pdu.sequenceHopFlag = 0; + ulTtiReqPdu->u.pucch_pdu.hoppingId = 0; + ulTtiReqPdu->u.pucch_pdu.initialCyclicShift = 0; + ulTtiReqPdu->u.pucch_pdu.dataScramblingId = 0; /* Valid for Format 2, 3, 4 */ + ulTtiReqPdu->u.pucch_pdu.timeDomainOccIdx = 0; /* Valid for Format 1 */ + ulTtiReqPdu->u.pucch_pdu.preDftOccIdx = 0; /* Valid for Format 4 */ + ulTtiReqPdu->u.pucch_pdu.preDftOccLen = 0; /* Valid for Format 4 */ + ulTtiReqPdu->u.pucch_pdu.addDmrsFlag = 0; /* Valid for Format 3, 4 */ + ulTtiReqPdu->u.pucch_pdu.dmrsScramblingId = 0; /* Valid for Format 2 */ + ulTtiReqPdu->u.pucch_pdu.dmrsCyclicShift = 0; /* Valid for Format 4 */ + ulTtiReqPdu->u.pucch_pdu.srFlag = currUlSlot->ulInfo.schPucchInfo.srFlag; + ulTtiReqPdu->u.pucch_pdu.bitLenHarq = currUlSlot->ulInfo.schPucchInfo.numHarqBits; + ulTtiReqPdu->u.pucch_pdu.bitLenCsiPart1 = 0; /* Valid for Format 2, 3, 4 */ + ulTtiReqPdu->u.pucch_pdu.bitLenCsiPart2 = 0; /* Valid for Format 2, 3, 4 */ + ulTtiReqPdu->u.pucch_pdu.beamforming.numPrgs = 0; /* Not Supported */ + ulTtiReqPdu->u.pucch_pdu.beamforming.prgSize = 0; + ulTtiReqPdu->u.pucch_pdu.beamforming.digBfInterfaces = 0; + ulTtiReqPdu->u.pucch_pdu.beamforming.pmi_bfi[0].pmIdx = 0; + ulTtiReqPdu->u.pucch_pdu.beamforming.pmi_bfi[0].beamIdx[0].beamidx = 0; + + ulTtiReqPdu->pduSize = sizeof(fapi_ul_pucch_pdu_t); + SET_MSG_LEN(*msgLen, (sizeof(ulTtiReqPdu->pduType) + \ + sizeof(ulTtiReqPdu->pduSize) + sizeof(fapi_ul_pucch_pdu_t))); + } +} + #endif /******************************************************************* @@ -3596,7 +3623,7 @@ void fillPuschPdu(fapi_ul_tti_req_pdu_t *ulTtiReqPdu, MacCellCfg *macCellCfg, Ma ******************************************************************/ uint16_t handleUlTtiReq(SlotIndInfo currTimingInfo) { -#ifdef FAPI +#ifdef INTEL_FAPI uint8_t pduIdx = -1; uint8_t numPdu = 0; uint32_t msgLen = 0; @@ -3626,8 +3653,8 @@ uint16_t handleUlTtiReq(SlotIndInfo currTimingInfo) if(ulTtiReq != NULLP) { memset(ulTtiReq, 0, msgSize); - ulTtiReq->sfn = currTimingInfo.sfn; - ulTtiReq->slot = currTimingInfo.slot; + ulTtiReq->sfn = ulTtiReqTimingInfo.sfn; + ulTtiReq->slot = ulTtiReqTimingInfo.slot; ulTtiReq->nPdus = getnPdus(ulTtiReq, currUlSlot); ulTtiReq->nGroup = 0; if(ulTtiReq->nPdus > 0) @@ -3647,9 +3674,15 @@ uint16_t handleUlTtiReq(SlotIndInfo currTimingInfo) pduIdx++; fillPuschPdu(&ulTtiReq->pdus[pduIdx], &macCellCfg, currUlSlot, &msgLen); } - + /* Fill PUCCH PDU */ + if(currUlSlot->ulInfo.dataType & SCH_DATATYPE_UCI) + { + pduIdx++; + fillPucchPdu(&ulTtiReq->pdus[pduIdx], &macCellCfg, currUlSlot, &msgLen); + } if((currUlSlot->ulInfo.dataType & SCH_DATATYPE_PRACH) || \ - (currUlSlot->ulInfo.dataType & SCH_DATATYPE_PUSCH)) + (currUlSlot->ulInfo.dataType & SCH_DATATYPE_PUSCH)|| \ + (currUlSlot->ulInfo.dataType & SCH_DATATYPE_UCI)) { msgLen += (sizeof(fapi_ul_tti_req_t) - sizeof(fapi_msg_t)); fillMsgHeader(&ulTtiReq->header, FAPI_UL_TTI_REQUEST, msgLen); @@ -3666,13 +3699,13 @@ uint16_t handleUlTtiReq(SlotIndInfo currTimingInfo) DU_LOG("\nLWR_MAC: Sending UL TTI Request"); LwrMacSendToPhy(ulTtiReq->header.message_type_id, msgSize, (void *)ulTtiReq); } - memset(&currUlSlot, 0, sizeof(MacUlSlot)); + memset(currUlSlot, 0, sizeof(MacUlSlot)); return ROK; } else { DU_LOG("\nLWR_MAC: Failed to allocate memory for UL TTI Request"); - memset(&currUlSlot, 0, sizeof(MacUlSlot)); + memset(currUlSlot, 0, sizeof(MacUlSlot)); return RFAILED; } }