X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?p=o-du%2Fphy.git;a=blobdiff_plain;f=fhi_lib%2Flib%2Fsrc%2Fxran_rx_proc.c;fp=fhi_lib%2Flib%2Fsrc%2Fxran_rx_proc.c;h=e7056f4da8a99bbdf3ad75c83375728843d76567;hp=36bd72c6d7db2955a6875364226a3324f362ae36;hb=892daba4c616407f16506415d5a69549519ef11d;hpb=76b4495d593ccf45d712db1a3ec96fa9d2d8f5f5 diff --git a/fhi_lib/lib/src/xran_rx_proc.c b/fhi_lib/lib/src/xran_rx_proc.c index 36bd72c..e7056f4 100644 --- a/fhi_lib/lib/src/xran_rx_proc.c +++ b/fhi_lib/lib/src/xran_rx_proc.c @@ -60,7 +60,6 @@ #include "xran_dev.h" #include "xran_frame_struct.h" #include "xran_printf.h" -#include "xran_app_frag.h" #include "xran_rx_proc.h" #include "xran_cp_proc.h" @@ -87,8 +86,8 @@ int xran_process_prach_sym(void *arg, struct xran_device_ctx * p_xran_dev_ctx = (struct xran_device_ctx *)arg; uint8_t symb_id_offset; uint32_t tti = 0; - xran_status_t status; - void *pHandle = NULL; + uint32_t ttt_det = 0; + //xran_status_t status; struct rte_mbuf *mb; uint32_t interval = p_xran_dev_ctx->interval_us_local; @@ -97,13 +96,92 @@ int xran_process_prach_sym(void *arg, tti = frame_id * SLOTS_PER_SYSTEMFRAME(interval) + subframe_id * SLOTNUM_PER_SUBFRAME(interval) + slot_id; - status = tti << 16 | symb_id; + //status = tti << 16 | symb_id; + + + struct xran_prach_cp_config *pPrachCPConfig; + uint32_t StartUsedFirstSym; + if(p_xran_dev_ctx->dssEnable){ + int i = tti % p_xran_dev_ctx->dssPeriod; + if(p_xran_dev_ctx->technology[i]==1) { + pPrachCPConfig = &(p_xran_dev_ctx->PrachCPConfig); + } + else{ + pPrachCPConfig = &(p_xran_dev_ctx->PrachCPConfigLTE); + } + } + else{ + pPrachCPConfig = &(p_xran_dev_ctx->PrachCPConfig); + } + + + if (1500 == p_xran_dev_ctx->fh_init.mtu && pPrachCPConfig->filterIdx == XRAN_FILTERINDEX_PRACH_012) + { + /*one prach for more then one pkg*/ + StartUsedFirstSym = 1; + } + else{ + StartUsedFirstSym = 0; + } + if(CC_ID < XRAN_MAX_SECTOR_NR && Ant_ID < XRAN_MAX_ANTENNA_NR && symb_id < XRAN_NUM_OF_SYMBOL_PER_SLOT){ + uint8_t numerology = xran_get_conf_numerology(p_xran_dev_ctx); + if (numerology > 0 && pPrachCPConfig->filterIdx == XRAN_FILTERINDEX_PRACH_012) ttt_det = (1<fh_cfg.ru_conf.compMeth; + uint8_t iqWidth = p_xran_dev_ctx->fh_cfg.ru_conf.iqWidth; + uint32_t iqLenPrePrb,dataOffset,dataLen; + uint8_t * pdata; + symb_id_offset = 0; + if (XRAN_COMPMETHOD_NONE == compMeth) + { + iqLenPrePrb = 48; + } + else + { + iqLenPrePrb = 3*iqWidth+1; + } + dataOffset = start_prbu*iqLenPrePrb; + dataLen = num_prbu*iqLenPrePrb; + + if(iq_data_start && size) { + pdata = p_xran_dev_ctx->sFHPrachRxBbuIoBufCtrlDecomp[(tti + ttt_det)% XRAN_N_FE_BUF_LEN][CC_ID][Ant_ID].sBufferList.pBuffers[symb_id_offset].pData + dataOffset; + mb = p_xran_dev_ctx->sFHPrachRxBbuIoBufCtrlDecomp[(tti + ttt_det)% XRAN_N_FE_BUF_LEN][CC_ID][Ant_ID].sBufferList.pBuffers[symb_id_offset].pCtrl; + if(mb) + rte_pktmbuf_free(mb); + + if(p_xran_dev_ctx->fh_cfg.ru_conf.byteOrder == XRAN_CPU_LE_BYTE_ORDER) { + int idx = 0; + uint16_t *psrc = (uint16_t *)iq_data_start; + uint16_t *pdst = (uint16_t *)pdata; + for (idx = 0; idx < dataLen; idx++){ + pdst[idx] = (psrc[idx]>>8) | (psrc[idx]<<8); //rte_be_to_cpu_16(psrc[idx]); + } + //*mb_free = MBUF_FREE; + } + else{ + memcpy(pdata,iq_data_start,dataLen); + } + + p_xran_dev_ctx->sFHPrachRxBbuIoBufCtrlDecomp[(tti + ttt_det) % XRAN_N_FE_BUF_LEN][CC_ID][Ant_ID].sBufferList.pBuffers[symb_id_offset].pCtrl = mbuf; + *mb_free = MBUF_KEEP; + } + else { + //print_err("pos %p iq_data_start %p size %d\n",pos, iq_data_start, size); + print_err("iq_data_start %p size %d\n", iq_data_start, size); + } + + } + else + { symb_id_offset = symb_id - p_xran_dev_ctx->prach_start_symbol[CC_ID]; //make the storing of prach packets to start from 0 for easy of processing within PHY // pos = (char*) p_xran_dev_ctx->sFHPrachRxBbuIoBufCtrl[tti % XRAN_N_FE_BUF_LEN][CC_ID][Ant_ID].sBufferList.pBuffers[symb_id_offset].pData; if(iq_data_start && size) { - mb = p_xran_dev_ctx->sFHPrachRxBbuIoBufCtrl[tti % XRAN_N_FE_BUF_LEN][CC_ID][Ant_ID].sBufferList.pBuffers[symb_id_offset].pCtrl; + mb = p_xran_dev_ctx->sFHPrachRxBbuIoBufCtrlDecomp[(tti + ttt_det) % XRAN_N_FE_BUF_LEN][CC_ID][Ant_ID].sBufferList.pBuffers[symb_id_offset].pCtrl; if(mb) rte_pktmbuf_free(mb); @@ -117,15 +195,17 @@ int xran_process_prach_sym(void *arg, //*mb_free = MBUF_FREE; } - p_xran_dev_ctx->sFHPrachRxBbuIoBufCtrlDecomp[tti % XRAN_N_FE_BUF_LEN][CC_ID][Ant_ID].sBufferList.pBuffers[symb_id_offset].pData = iq_data_start; - p_xran_dev_ctx->sFHPrachRxBbuIoBufCtrlDecomp[tti % XRAN_N_FE_BUF_LEN][CC_ID][Ant_ID].sBufferList.pBuffers[symb_id_offset].pCtrl = mbuf; - + p_xran_dev_ctx->sFHPrachRxBbuIoBufCtrlDecomp[(tti + ttt_det) % XRAN_N_FE_BUF_LEN][CC_ID][Ant_ID].sBufferList.pBuffers[symb_id_offset].pData = iq_data_start; + p_xran_dev_ctx->sFHPrachRxBbuIoBufCtrlDecomp[(tti + ttt_det) % XRAN_N_FE_BUF_LEN][CC_ID][Ant_ID].sBufferList.pBuffers[symb_id_offset].pCtrl = mbuf; *mb_free = MBUF_KEEP; } else { //print_err("pos %p iq_data_start %p size %d\n",pos, iq_data_start, size); print_err("iq_data_start %p size %d\n", iq_data_start, size); } + + } + } else { print_err("TTI %d(f_%d sf_%d slot_%d) CC %d Ant_ID %d symb_id %d\n",tti, frame_id, subframe_id, slot_id, CC_ID, Ant_ID, symb_id); } @@ -156,8 +236,6 @@ int32_t xran_process_srs_sym(void *arg, char *pos = NULL; struct xran_device_ctx * p_xran_dev_ctx = (struct xran_device_ctx *)arg; uint32_t tti = 0; - xran_status_t status; - void *pHandle = NULL; struct rte_mbuf *mb = NULL; struct xran_prb_map * pRbMap = NULL; struct xran_prb_elm * prbMapElm = NULL; @@ -173,39 +251,128 @@ int32_t xran_process_srs_sym(void *arg, tti = frame_id * SLOTS_PER_SYSTEMFRAME(interval) + subframe_id * SLOTNUM_PER_SUBFRAME(interval) + slot_id; - status = tti << 16 | symb_id; - if(CC_ID != 0) rte_panic("CC_ID != 0"); - if(CC_ID < XRAN_MAX_SECTOR_NR && Ant_ID < p_xran_dev_ctx->fh_cfg.nAntElmTRx && symb_id < XRAN_NUM_OF_SYMBOL_PER_SLOT) { + + if(CC_ID < XRAN_MAX_SECTOR_NR + && Ant_ID < p_xran_dev_ctx->fh_cfg.nAntElmTRx + && symb_id < XRAN_NUM_OF_SYMBOL_PER_SLOT) + { + if (0 == p_xran_dev_ctx->enableSrsCp) + { + + struct xran_section_desc *p_sec_desc = NULL; pos = (char*) p_xran_dev_ctx->sFHSrsRxBbuIoBufCtrl[tti % XRAN_N_FE_BUF_LEN][CC_ID][Ant_ID].sBufferList.pBuffers[symb_id].pData; pRbMap = (struct xran_prb_map *) p_xran_dev_ctx->sFHSrsRxPrbMapBbuIoBufCtrl[tti % XRAN_N_FE_BUF_LEN][CC_ID][Ant_ID].sBufferList.pBuffers->pData; - if(pRbMap){ + + + if(pRbMap && pRbMap->nPrbElm > 0) + { + prbMapElm = &pRbMap->prbMap[0]; + if (symb_id < prbMapElm->nStartSymb || symb_id >= (prbMapElm->nStartSymb + prbMapElm->numSymb)) + { + print_err("%dnot srs symbole, srs sym start is %d,num is %d\n", symb_id,prbMapElm->nStartSymb,prbMapElm->numSymb); + *mb_free = MBUF_FREE; + return size; + } + sec_desc_idx = prbMapElm->nSecDesc[0]; + p_sec_desc = &(prbMapElm->sec_desc[0][0]); + if(sec_desc_idx >= XRAN_NUM_OF_SYMBOL_PER_SLOT*XRAN_MAX_FRAGMENT) + { + print_err("sec_desc_idx %d is more then %d\n", sec_desc_idx,XRAN_NUM_OF_SYMBOL_PER_SLOT*XRAN_MAX_FRAGMENT); + *mb_free = MBUF_FREE; + return size; + } + + pos += start_prbu * XRAN_PAYLOAD_1_RB_SZ(iq_sample_size_bits); + if(pos && iq_data_start && size) + { + if (p_xran_dev_ctx->fh_cfg.ru_conf.byteOrder == XRAN_CPU_LE_BYTE_ORDER) + { + rte_panic("XRAN_CPU_LE_BYTE_ORDER is not supported 0x16%lx\n", (long)mb); + } + else if (likely(p_xran_dev_ctx->fh_cfg.ru_conf.byteOrder == XRAN_NE_BE_BYTE_ORDER)) + { + p_sec_desc += sec_desc_idx; + if(p_sec_desc) + { + mb = p_sec_desc->pCtrl; + if(mb) + { + rte_pktmbuf_free(mb); + } + p_sec_desc->pData = iq_data_start; + p_sec_desc->pCtrl = mbuf; + p_sec_desc->start_prbu = start_prbu; + p_sec_desc->num_prbu = num_prbu; + p_sec_desc->iq_buffer_len = size; + p_sec_desc->iq_buffer_offset = RTE_PTR_DIFF(iq_data_start, mbuf); + prbMapElm->nSecDesc[0] += 1; + } + else + { + print_err("p_sec_desc==NULL tti %u ant %d symb_id %d sec_desc_idx %d\n", tti, Ant_ID, symb_id, sec_desc_idx); + *mb_free = MBUF_FREE; + return size; + } + *mb_free = MBUF_KEEP; + } /* else if (likely(p_xran_dev_ctx->fh_cfg.ru_conf.byteOrder == XRAN_NE_BE_BYTE_ORDER)) */ + } /* if(pos && iq_data_start && size) */ + else + { + print_err("pos %p iq_data_start %p size %d\n",pos, iq_data_start, size); + } + + } + else + { + print_err("pRbMap==NULL\n"); + *mb_free = MBUF_FREE; + return size; + } + + } + else + { + pos = (char*) p_xran_dev_ctx->sFHSrsRxBbuIoBufCtrl[tti % XRAN_N_FE_BUF_LEN][CC_ID][Ant_ID].sBufferList.pBuffers[symb_id].pData; + pRbMap = (struct xran_prb_map *) p_xran_dev_ctx->sFHSrsRxPrbMapBbuIoBufCtrl[tti % XRAN_N_FE_BUF_LEN][CC_ID][Ant_ID].sBufferList.pBuffers->pData; + if(pRbMap) + { prbMapElm = &pRbMap->prbMap[sect_id]; - if(sect_id >= pRbMap->nPrbElm) { + if(sect_id >= pRbMap->nPrbElm) + { print_err("sect_id %d !=pRbMap->nPrbElm %d\n", sect_id,pRbMap->nPrbElm); *mb_free = MBUF_FREE; return size; } - } else { + } + else + { print_err("pRbMap==NULL\n"); *mb_free = MBUF_FREE; return size; } + pos += start_prbu * XRAN_PAYLOAD_1_RB_SZ(iq_sample_size_bits); - if(pos && iq_data_start && size){ - if (p_xran_dev_ctx->fh_cfg.ru_conf.byteOrder == XRAN_CPU_LE_BYTE_ORDER) { + if(pos && iq_data_start && size) + { + if (p_xran_dev_ctx->fh_cfg.ru_conf.byteOrder == XRAN_CPU_LE_BYTE_ORDER) + { int idx = 0; uint16_t *psrc = (uint16_t *)iq_data_start; uint16_t *pdst = (uint16_t *)pos; rte_panic("XRAN_CPU_LE_BYTE_ORDER is not supported 0x16%lx\n", (long)mb); /* network byte (be) order of IQ to CPU byte order (le) */ - for (idx = 0; idx < size/sizeof(int16_t); idx++){ + for (idx = 0; idx < size/sizeof(int16_t); idx++) + { pdst[idx] = (psrc[idx]>>8) | (psrc[idx]<<8); //rte_be_to_cpu_16(psrc[idx]); } - } else if (likely(p_xran_dev_ctx->fh_cfg.ru_conf.byteOrder == XRAN_NE_BE_BYTE_ORDER)){ - /*if (pRbMap->nPrbElm == 1){ + } + else if (likely(p_xran_dev_ctx->fh_cfg.ru_conf.byteOrder == XRAN_NE_BE_BYTE_ORDER)) + { + /*if (pRbMap->nPrbElm == 1) + { if (likely (p_xran_dev_ctx->fh_init.mtu >= p_xran_dev_ctx->fh_cfg.nULRBs * XRAN_PAYLOAD_1_RB_SZ(iq_sample_size_bits))) { @@ -219,28 +386,38 @@ int32_t xran_process_srs_sym(void *arg, p_xran_dev_ctx->sFHSrsRxBbuIoBufCtrl[tti % XRAN_N_FE_BUF_LEN][CC_ID][Ant_ID].sBufferList.pBuffers[symb_id].pData = iq_data_start; p_xran_dev_ctx->sFHSrsRxBbuIoBufCtrl[tti % XRAN_N_FE_BUF_LEN][CC_ID][Ant_ID].sBufferList.pBuffers[symb_id].pCtrl = mbuf; *mb_free = MBUF_KEEP; - } else { + } + else + { // packet can be fragmented copy RBs memcpy(pos, iq_data_start, size); *mb_free = MBUF_FREE; } - } else */{ + } + else */ + { struct xran_section_desc *p_sec_desc = NULL; prbMapElm = &pRbMap->prbMap[sect_id]; - sec_desc_idx = 0;//prbMapElm->nSecDesc[symb_id]; + // sec_desc_idx = 0;//prbMapElm->nSecDesc[symb_id]; + sec_desc_idx = prbMapElm->nSecDesc[symb_id]; - if (sec_desc_idx < XRAN_MAX_FRAGMENT) { - p_sec_desc = prbMapElm->p_sec_desc[symb_id][sec_desc_idx]; - } else { - print_err("sect_id %d: sec_desc_idx %d tti %u ant %d symb_id %d sec_desc_idx %d\n", sect_id, sec_desc_idx, tti, Ant_ID, symb_id, sec_desc_idx); + if (sec_desc_idx < XRAN_MAX_FRAGMENT) + { + p_sec_desc = &prbMapElm->sec_desc[symb_id][sec_desc_idx]; + } + else + { + print_err("[p %d]sect_id %d: sec_desc_idx %d tti %u ant %d symb_id %d sec_desc_idx %d\n", p_xran_dev_ctx->xran_port_id, sect_id, sec_desc_idx, tti, Ant_ID, symb_id, sec_desc_idx); prbMapElm->nSecDesc[symb_id] = 0; *mb_free = MBUF_FREE; return size; } - if(p_sec_desc){ + if(p_sec_desc) + { mb = p_sec_desc->pCtrl; - if(mb){ + if(mb) + { rte_pktmbuf_free(mb); } p_sec_desc->pData = iq_data_start; @@ -249,19 +426,26 @@ int32_t xran_process_srs_sym(void *arg, p_sec_desc->num_prbu = num_prbu; p_sec_desc->iq_buffer_len = size; p_sec_desc->iq_buffer_offset = RTE_PTR_DIFF(iq_data_start, mbuf); - //prbMapElm->nSecDesc[symb_id] += 1; - } else { + prbMapElm->nSecDesc[symb_id] += 1; + } + else + { print_err("p_sec_desc==NULL tti %u ant %d symb_id %d sec_desc_idx %d\n", tti, Ant_ID, symb_id, sec_desc_idx); *mb_free = MBUF_FREE; return size; } *mb_free = MBUF_KEEP; } - } - } else { + } /* else if (likely(p_xran_dev_ctx->fh_cfg.ru_conf.byteOrder == XRAN_NE_BE_BYTE_ORDER)) */ + } /* if(pos && iq_data_start && size) */ + else + { print_err("pos %p iq_data_start %p size %d\n",pos, iq_data_start, size); } - } else { + } + } /* if(CC_ID < XRAN_MAX_SECTOR_NR && Ant_ID < p_xran_dev_ctx->fh_cfg.nAntElmTRx && symb_id < XRAN_NUM_OF_SYMBOL_PER_SLOT) */ + else + { print_err("o-xu%d: TTI %d(f_%d sf_%d slot_%d) CC %d Ant_ID %d symb_id %d\n",p_xran_dev_ctx->xran_port_id, tti, frame_id, subframe_id, slot_id, CC_ID, Ant_ID, symb_id); } @@ -333,29 +517,48 @@ int32_t xran_process_rx_sym(void *arg, char *pos = NULL; struct xran_device_ctx * p_xran_dev_ctx = (struct xran_device_ctx *)arg; uint32_t tti = 0; - xran_status_t status; - void *pHandle = NULL; + //xran_status_t status; struct rte_mbuf *mb = NULL; struct xran_prb_map * pRbMap = NULL; struct xran_prb_elm * prbMapElm = NULL; uint16_t iq_sample_size_bits = 16; - uint16_t sec_desc_idx; + uint16_t sec_desc_idx, prb_elem_id=0; uint32_t interval = p_xran_dev_ctx->interval_us_local; + uint16_t i=0, total_sections=0; if(expect_comp) iq_sample_size_bits = iqWidth; tti = frame_id * SLOTS_PER_SYSTEMFRAME(interval) + subframe_id * SLOTNUM_PER_SUBFRAME(interval) + slot_id; - status = tti << 16 | symb_id; + //status = tti << 16 | symb_id; if(CC_ID < XRAN_MAX_SECTOR_NR && Ant_ID < XRAN_MAX_ANTENNA_NR && symb_id < XRAN_NUM_OF_SYMBOL_PER_SLOT){ pos = (char*) p_xran_dev_ctx->sFrontHaulRxBbuIoBufCtrl[tti % XRAN_N_FE_BUF_LEN][CC_ID][Ant_ID].sBufferList.pBuffers[symb_id].pData; pRbMap = (struct xran_prb_map *) p_xran_dev_ctx->sFrontHaulRxPrbMapBbuIoBufCtrl[tti % XRAN_N_FE_BUF_LEN][CC_ID][Ant_ID].sBufferList.pBuffers->pData; if(pRbMap){ - prbMapElm = &pRbMap->prbMap[sect_id]; - if(sect_id >= pRbMap->nPrbElm) { - print_err("sect_id %d !=pRbMap->nPrbElm %d\n", sect_id,pRbMap->nPrbElm); + /** Get the prb_elem_id */ + total_sections=0; + if(pRbMap->prbMap[0].bf_weight.extType == 1) + { + for(i=0 ; i < pRbMap->nPrbElm ; i++) + { + total_sections += pRbMap->prbMap[i].bf_weight.numSetBFWs; + if(total_sections >= (sect_id + 1)) + { + prb_elem_id = i; + break; + } + } + } + else + { + prb_elem_id = sect_id; + } + + prbMapElm = &pRbMap->prbMap[prb_elem_id]; + if(prb_elem_id >= pRbMap->nPrbElm) { + print_err("sect id %d prb_elem_id %d !=pRbMap->nPrbElm %d\n",sect_id, prb_elem_id,pRbMap->nPrbElm); *mb_free = MBUF_FREE; return size; } @@ -377,47 +580,15 @@ int32_t xran_process_rx_sym(void *arg, pdst[idx] = (psrc[idx]>>8) | (psrc[idx]<<8); //rte_be_to_cpu_16(psrc[idx]); } } else if (likely(p_xran_dev_ctx->fh_cfg.ru_conf.byteOrder == XRAN_NE_BE_BYTE_ORDER)){ - if (pRbMap->nPrbElm == 1){ - prbMapElm = &pRbMap->prbMap[0]; - if (likely (p_xran_dev_ctx->fh_init.mtu >= - prbMapElm->nRBSize * XRAN_PAYLOAD_1_RB_SZ(iq_sample_size_bits))) - { - /* no fragmentation */ - struct xran_section_desc *p_sec_desc = NULL; - sec_desc_idx = 0;//prbMapElm->nSecDesc[symb_id]; - p_sec_desc = prbMapElm->p_sec_desc[symb_id][sec_desc_idx]; - - if(p_sec_desc){ - mb = p_sec_desc->pCtrl; - if(mb){ - rte_pktmbuf_free(mb); - } - p_sec_desc->pData = iq_data_start; - p_sec_desc->pCtrl = mbuf; - p_sec_desc->start_prbu = start_prbu; - p_sec_desc->num_prbu = num_prbu; - p_sec_desc->iq_buffer_len = size; - p_sec_desc->iq_buffer_offset = RTE_PTR_DIFF(iq_data_start, mbuf); - } else { - print_err("p_sec_desc==NULL tti %u ant %d symb_id %d sec_desc_idx %d\n", tti, Ant_ID, symb_id, sec_desc_idx); - *mb_free = MBUF_FREE; - return size; - } - *mb_free = MBUF_KEEP; - } else { - /* packet can be fragmented copy RBs */ - memcpy(pos, iq_data_start, size); - *mb_free = MBUF_FREE; - } - } else { struct xran_section_desc *p_sec_desc = NULL; - prbMapElm = &pRbMap->prbMap[sect_id]; - sec_desc_idx = 0;//prbMapElm->nSecDesc[symb_id]; + prbMapElm = &pRbMap->prbMap[prb_elem_id]; + sec_desc_idx = prbMapElm->nSecDesc[symb_id]; if (sec_desc_idx < XRAN_MAX_FRAGMENT) { - p_sec_desc = prbMapElm->p_sec_desc[symb_id][sec_desc_idx]; + p_sec_desc = &prbMapElm->sec_desc[symb_id][sec_desc_idx]; } else { - print_err("sect_id %d: sec_desc_idx %d tti %u ant %d symb_id %d sec_desc_idx %d\n", sect_id, sec_desc_idx, tti, Ant_ID, symb_id, sec_desc_idx); + print_err("[p: %d] sect_id %d: sec_desc_idx %d tti %u ant %d symb_id %d sec_desc_idx %d\n",p_xran_dev_ctx->xran_port_id, + sect_id, sec_desc_idx, tti, Ant_ID, symb_id, sec_desc_idx); prbMapElm->nSecDesc[symb_id] = 0; *mb_free = MBUF_FREE; return size; @@ -434,14 +605,14 @@ int32_t xran_process_rx_sym(void *arg, p_sec_desc->num_prbu = num_prbu; p_sec_desc->iq_buffer_len = size; p_sec_desc->iq_buffer_offset = RTE_PTR_DIFF(iq_data_start, mbuf); - //prbMapElm->nSecDesc[symb_id] += 1; + prbMapElm->nSecDesc[symb_id] += 1; } else { print_err("p_sec_desc==NULL tti %u ant %d symb_id %d sec_desc_idx %d\n", tti, Ant_ID, symb_id, sec_desc_idx); *mb_free = MBUF_FREE; return size; } *mb_free = MBUF_KEEP; - } + } } else { print_err("pos %p iq_data_start %p size %d\n",pos, iq_data_start, size); @@ -449,6 +620,5 @@ int32_t xran_process_rx_sym(void *arg, } else { print_err("o-xu%d: TTI %d(f_%d sf_%d slot_%d) CC %d Ant_ID %d symb_id %d\n",p_xran_dev_ctx->xran_port_id, tti, frame_id, subframe_id, slot_id, CC_ID, Ant_ID, symb_id); } - return size; }