+ uint32_t xran_port_id;
+ char ring_name[32] = "";
+ struct rte_ring *ring = NULL;
+ ssize_t r_size;
+
+ if(pHandle){
+ xran_port_id = pXranCc->nXranPort;
+ *ppRing = NULL;
+ snprintf(ring_name, RTE_DIM(ring_name), "%srb%dp%dcc%dant%dsym%d", rng_name_prefix, buff_id, xran_port_id, cc_id, ant_id, symb_id);
+ print_dbg("%s\n", ring_name);
+ r_size = rte_ring_get_memsize(XRAN_MAX_MEM_IF_RING_SIZE);
+ ring = (struct rte_ring *)xran_malloc(r_size);
+ if(ring == NULL) {
+ print_err("[%srb%dp%dcc%dant%dsym%d] ring alloc failed \n", rng_name_prefix, buff_id, xran_port_id, cc_id, ant_id, symb_id);
+ return -1;
+ }
+ ret = rte_ring_init(ring, ring_name, XRAN_MAX_MEM_IF_RING_SIZE, /*RING_F_SC_DEQ*/0);
+ if(ret != 0){
+ print_err("[%srb%dp%dcc%dant%dsym%d] rte_ring_init failed \n", rng_name_prefix, buff_id, xran_port_id, cc_id, ant_id, symb_id);
+ return -1;
+ }
+
+ if(ring) {
+ *ppRing = (void *)ring;
+ }else {
+ print_err("[%srb%dp%dcc%dant%dsym%d] ring alloc failed \n", rng_name_prefix, buff_id, xran_port_id, cc_id, ant_id, symb_id);
+ return -1;
+ }
+ } else {
+ print_err("pHandle failed \n");
+ return -1;
+ }
+
+ return 0;
+}
+
+int32_t
+xran_bm_free_buffer(void * pHandle, void *pData, void *pCtrl)
+{
+ //XranSectorHandleInfo* pXranCc = (XranSectorHandleInfo*) pHandle;