- struct xran_cp_gen_params params;
- struct xran_section_gen_info sect_geninfo[XRAN_MAX_NUM_SECTIONS];
- struct rte_mbuf *mbuf;
- int ret, nsection, i;
-
-
- params.dir = dir;
- params.sectionType = XRAN_CP_SECTIONTYPE_1; // Most DL/UL Radio Channels
- params.hdr.filterIdx = XRAN_FILTERINDEX_STANDARD;
- params.hdr.frameId = frame_id;
- params.hdr.subframeId = subframe_id;
- params.hdr.slotId = slot_id;
- params.hdr.startSymId = startsym; // start Symbol ID
- params.hdr.iqWidth = xran_get_conf_iqwidth(pHandle);
- params.hdr.compMeth = xran_get_conf_compmethod(pHandle);
+ int ret = 0, nsection, i;
+ uint8_t frame_id = params->hdr.frameId;
+ uint8_t subframe_id = params->hdr.subframeId;
+ uint8_t slot_id = params->hdr.slotId;
+ uint8_t dir = params->dir;
+
+ nsection = params->numSections;
+
+ /* add in the ethernet header */
+ struct ether_hdr *const h = (void *)rte_pktmbuf_prepend(mbuf, sizeof(*h));
+ xran_ethdi_mbuf_send_cp(mbuf, ETHER_TYPE_ECPRI);
+ tx_counter++;
+ for(i=0; i<nsection; i++)
+ xran_cp_add_section_info(pHandle, dir, cc_id, ru_port_id,
+ (slot_id + subframe_id*SLOTNUM_PER_SUBFRAME)%XRAN_MAX_SECTIONDB_CTX,
+ §_geninfo[i].info);
+
+ return (ret);
+}
+
+int generate_cpmsg_dlul(void *pHandle, struct xran_cp_gen_params *params, struct xran_section_gen_info *sect_geninfo, struct rte_mbuf *mbuf,
+ enum xran_pkt_dir dir, uint8_t frame_id, uint8_t subframe_id, uint8_t slot_id,
+ uint8_t startsym, uint8_t numsym, uint16_t prb_start, uint16_t prb_num,
+ uint16_t beam_id, uint8_t cc_id, uint8_t ru_port_id, uint8_t comp_method, uint8_t seq_id, uint8_t symInc)
+{
+ int ret = 0, nsection, i;
+
+
+ params->dir = dir;
+ params->sectionType = XRAN_CP_SECTIONTYPE_1; // Most DL/UL Radio Channels
+ params->hdr.filterIdx = XRAN_FILTERINDEX_STANDARD;
+ params->hdr.frameId = frame_id;
+ params->hdr.subframeId = subframe_id;
+ params->hdr.slotId = slot_id;
+ params->hdr.startSymId = startsym; // start Symbol ID
+ params->hdr.iqWidth = xran_get_conf_iqwidth(pHandle);
+ params->hdr.compMeth = comp_method;