27 #ifndef _XRAN_COMMON_H_ 28 #define _XRAN_COMMON_H_ 36 #include <sys/param.h> 37 #include <sys/queue.h> 39 #include <rte_common.h> 41 #include <rte_timer.h> 50 #define N_SC_PER_PRB 12 51 #define MAX_N_FULLBAND_SC 273 52 #define N_SYM_PER_SLOT 14 53 #define SUBFRAME_DURATION_US 1000 54 #define SLOTNUM_PER_SUBFRAME (SUBFRAME_DURATION_US/interval_us) 55 #define SUBFRAMES_PER_SYSTEMFRAME 10 56 #define SLOTS_PER_SYSTEMFRAME (SLOTNUM_PER_SUBFRAME*SUBFRAMES_PER_SYSTEMFRAME) 59 #define PRACH_PLAYBACK_BUFFER_BYTES (144*14*4L) 61 #define PRACH_SRS_BUFFER_BYTES (144*14*4L) 64 #define XRAN_MAX_NUM_SECTIONS (N_SYM_PER_SLOT* (XRAN_MAX_ANTENNA_NR*2) + XRAN_MAX_ANT_ARRAY_ELM_NR) 66 #define XRAN_MAX_MBUF_LEN 9600 67 #define NSEC_PER_SEC 1000000000L 68 #define TIMER_RESOLUTION_CYCLES 1596*1 69 #define XRAN_RING_SIZE 512 70 #define XRAN_NAME_MAX_LEN (64) 71 #define XRAN_RING_NUM (3) 73 #define XranDiffSymIdx(prevSymIdx, currSymIdx, numTotalSymIdx) ((prevSymIdx > currSymIdx) ? ((currSymIdx + numTotalSymIdx) - prevSymIdx) : (currSymIdx - prevSymIdx)) 75 #define XRAN_MLOG_VAR 0 78 #define XRAN_PRACH_CANDIDATE_PREAMBLE (2) 79 #define XRAN_PRACH_CANDIDATE_Y (2) 80 #define XRAN_PRACH_CANDIDATE_SLOT (40) 81 #define XRAN_PRACH_CONFIG_TABLE_SIZE (256) 82 #define XRAN_PRACH_PREAMBLE_FORMAT_OF_ABC (9) 142 #define XRAN_MAX_POOLS_PER_SECTOR_NR 8 144 typedef struct sectorHandleInfo 183 int32_t nSegGenerated;
185 int32_t nSegTransferred;
191 #define XranIncrementJob(i) ((i >= (XRAN_SYM_JOB_SIZE-1)) ? 0 : (i+1)) 193 #define XRAN_MAX_PKT_BURST_PER_SYM 32 194 #define XRAN_MAX_PACKET_FRAG 9 196 #define MBUF_TABLE_SIZE (2 * MAX(XRAN_MAX_PKT_BURST_PER_SYM, XRAN_MAX_PACKET_FRAG)) 335 enum xran_pkt_dir dir, uint8_t frame_id, uint8_t subframe_id, uint8_t slot_id,
336 uint8_t startsym, uint8_t numsym, uint16_t prb_start, uint16_t prb_num,int16_t iq_buffer_offset, int16_t iq_buffer_len,
337 uint16_t beam_id, uint8_t cc_id, uint8_t ru_port_id, uint8_t comp_method, uint8_t iqWidth, uint8_t seq_id, uint8_t
symInc);
340 uint8_t frame_id, uint8_t subframe_id, uint8_t slot_id,
341 uint16_t beam_id, uint8_t cc_id, uint8_t prach_port_id, uint8_t seq_id);
361 uint16_t
xran_alloc_sectionid(
void *pHandle, uint8_t dir, uint8_t cc_id, uint8_t ant_id, uint8_t slot_id);
362 uint8_t
xran_get_seqid(
void *pHandle, uint8_t dir, uint8_t cc_id, uint8_t ant_id, uint8_t slot_id);
const xRANPrachConfigTableStruct gxranPrachDataTable_sub6_fdd[XRAN_PRACH_CONFIG_TABLE_SIZE]
uint16_t xran_alloc_sectionid(void *pHandle, uint8_t dir, uint8_t cc_id, uint8_t ant_id, uint8_t slot_id)
uint8_t xran_get_conf_fftsize(void *pHandle)
Get the configuration of FFT size for RU.
uint8_t xran_get_conf_numerology(void *pHandle)
Get the configuration of nummerology.
int xran_register_cb_mbuf2ring(xran_ethdi_mbuf_send_fn mbuf_send_cp, xran_ethdi_mbuf_send_fn mbuf_send_up)
const xRANPrachConfigTableStruct gxranPrachDataTable_sub6_tdd[XRAN_PRACH_CONFIG_TABLE_SIZE]
#define XRAN_MAX_ANT_ARRAY_ELM_NR
int process_mbuf(struct rte_mbuf *pkt)
uint8_t xran_get_num_eAxc(void *pHandle)
Get the configuration of the number of antenna for UL.
#define XRAN_N_FE_BUF_LEN
uint8_t xran_get_seqid(void *pHandle, uint8_t dir, uint8_t cc_id, uint8_t ant_id, uint8_t slot_id)
uint8_t y[XRAN_PRACH_CANDIDATE_Y]
int16_t(* phy_decoder_poll_fn)(void)
xran_ethdi_mbuf_send_fn send_upmbuf2ring
int xran_destroy_cb(struct cb_elem_entry *cb_elm)
#define XRAN_MAX_SECTOR_NR
#define XRAN_PRACH_CONFIG_TABLE_SIZE
const xRANPrachConfigTableStruct gxranPrachDataTable_mmw[XRAN_PRACH_CONFIG_TABLE_SIZE]
uint8_t xran_get_num_eAxcUl(void *pHandle)
Get the configuration of the number of antenna.
xran_ethdi_mbuf_send_fn send_cpmbuf2ring
struct rte_mempool * indirect_pool
struct xran_eaxcid_config * xran_get_conf_eAxC(void *pHandle)
Get the configuration of eAxC ID.
#define XRAN_MAX_POOLS_PER_SECTOR_NR
#define XRAN_N_MAX_BUFFER_SEGMENT
#define XRAN_MAX_ANTENNA_NR
int ring_processing_thread(void *args)
uint8_t xran_get_conf_prach_scs(void *pHandle)
Get the configuration of subcarrier spacing for PRACH.
uint8_t occassionsInPrachSlot
uint8_t occassionsInPrachSlot
struct cb_elem_entry * xran_create_cb(XranSymCallbackFn cb_fn, void *cb_data)
#define XRAN_PRACH_CANDIDATE_PREAMBLE
int xran_init_prach(struct xran_fh_config *pConf, struct xran_device_ctx *p_xran_dev_ctx)
#define XRAN_PRACH_CANDIDATE_SLOT
int32_t DynamicSectionEna
struct xran_device_ctx * xran_dev_get_ctx(void)
phy_decoder_poll_fn bbdev_dec
int send_cpmsg(void *pHandle, struct rte_mbuf *mbuf, struct xran_cp_gen_params *params, struct xran_section_gen_info *sect_geninfo, uint8_t cc_id, uint8_t ru_port_id, uint8_t seq_id)
uint8_t xran_get_conf_num_bfweights(void *pHandle)
Get the configuration of the total number of beamforming weights on RU.
int32_t ring_processing_func(void)
uint8_t xran_get_num_ant_elm(void *pHandle)
Get the configuration of the number of antenna elements.
void(* XranSymCallbackFn)(struct rte_timer *tim, void *arg)
uint8_t xran_get_num_cc(void *pHandle)
Get the configuration of the number of component carriers.
int32_t prepare_symbol_ex(enum xran_pkt_dir direction, uint16_t section_id, struct rte_mbuf *mb, struct rb_map *data, uint8_t compMeth, uint8_t iqWidth, const enum xran_input_byte_order iq_buf_byte_order, uint8_t frame_id, uint8_t subframe_id, uint8_t slot_id, uint8_t symbol_no, int prb_start, int prb_num, uint8_t CC_ID, uint8_t RU_Port_ID, uint8_t seq_id, uint32_t do_copy)
#define XRAN_PRACH_CANDIDATE_Y
const xRANPrachPreambleLRAStruct gxranPreambleforLRA[13]
struct sectorHandleInfo XranSectorHandleInfo
uint8_t xran_get_conf_compmethod(void *pHandle)
Get the configuration of compression method for RU.
enum xran_category xran_get_ru_category(void *pHandle)
Get configuration of O-RU (Cat A or Cat B)
int(* xran_fh_tti_callback_fn)(void *)
#define XRAN_MAX_NUM_OF_SRS_SYMBOL_PER_SLOT
#define XRAN_NUM_OF_SYMBOL_PER_SLOT
void xran_updateSfnSecStart(void)
uint8_t isPRACHslot[XRAN_PRACH_CANDIDATE_SLOT]
uint8_t xran_get_conf_iqwidth(void *pHandle)
Get the configuration of IQ bit width for RU.
This file provides public interface to xRAN Front Haul layer implementation as defined in the ORAN-WG...
Definitions and support functions to process XRAN packet.
struct rte_mempool * direct_pool
int packets_dump_thread(void *args)
XranSymCallbackFn pSymCallback
int16_t(* phy_encoder_poll_fn)(void)
int send_symbol_ex(enum xran_pkt_dir direction, uint16_t section_id, struct rte_mbuf *mb, struct rb_map *data, const enum xran_input_byte_order iq_buf_byte_order, uint8_t frame_id, uint8_t subframe_id, uint8_t slot_id, uint8_t symbol_no, int prb_start, int prb_num, uint8_t CC_ID, uint8_t RU_Port_ID, uint8_t seq_id)
int32_t 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, int16_t iq_buffer_offset, int16_t iq_buffer_len, uint16_t beam_id, uint8_t cc_id, uint8_t ru_port_id, uint8_t comp_method, uint8_t iqWidth, uint8_t seq_id, uint8_t symInc)
int process_ring(struct rte_ring *r)
int generate_cpmsg_prach(void *pHandle, struct xran_cp_gen_params *params, struct xran_section_gen_info *sect_geninfo, struct rte_mbuf *mbuf, struct xran_device_ctx *pxran_lib_ctx, uint8_t frame_id, uint8_t subframe_id, uint8_t slot_id, uint16_t beam_id, uint8_t cc_id, uint8_t prach_port_id, uint8_t seq_id)
uint32_t nBufferPoolIndex
int(* xran_ethdi_mbuf_send_fn)(struct rte_mbuf *mb, uint16_t ethertype)
void(* xran_transport_callback_fn)(void *, xran_status_t)
struct sectorHandleInfo * PXranSectorHandleInfo
This file provides the definitions for Control Plane Messages APIs.
phy_encoder_poll_fn bbdev_enc