-/* PRACH configuration table defines */
-#define XRAN_PRACH_CANDIDATE_PREAMBLE (2)
-#define XRAN_PRACH_CANDIDATE_Y (2)
-#define XRAN_PRACH_CANDIDATE_SLOT (40)
-#define XRAN_PRACH_CONFIG_TABLE_SIZE (256)
-#define XRAN_PRACH_PREAMBLE_FORMAT_OF_ABC (9)
-typedef enum
-{
- FORMAT_0 = 0,
- FORMAT_1,
- FORMAT_2,
- FORMAT_3,
- FORMAT_A1,
- FORMAT_A2,
- FORMAT_A3,
- FORMAT_B1,
- FORMAT_B2,
- FORMAT_B3,
- FORMAT_B4,
- FORMAT_C0,
- FORMAT_C2,
- FORMAT_LAST
-}PreambleFormatEnum;
-
-/* add PRACH used config table, same structure as used in refPHY */
-typedef struct
-{
- uint8_t prachConfigIdx;
- uint8_t preambleFmrt[XRAN_PRACH_CANDIDATE_PREAMBLE];
- uint8_t x;
- uint8_t y[XRAN_PRACH_CANDIDATE_Y];
- uint8_t slotNr[XRAN_PRACH_CANDIDATE_SLOT];
- uint8_t slotNrNum;
- uint8_t startingSym;
- uint8_t nrofPrachInSlot;
- uint8_t occassionsInPrachSlot;
- uint8_t duration;
-} xRANPrachConfigTableStruct;
-
-typedef struct
-{
- uint8_t preambleFmrt;
- uint16_t lRALen;
- uint8_t fRA;
- uint32_t nu;
- uint16_t nRaCp;
-}xRANPrachPreambleLRAStruct;
-
-struct xran_prach_cp_config
-{
- uint8_t filterIdx;
- uint8_t startSymId;
- uint16_t startPrbc;
- uint8_t numPrbc;
- uint8_t numSymbol;
- uint16_t timeOffset;
- int32_t freqOffset;
- uint8_t nrofPrachInSlot;
- uint8_t occassionsInPrachSlot;
- uint8_t x;
- uint8_t y[XRAN_PRACH_CANDIDATE_Y];
- uint8_t isPRACHslot[XRAN_PRACH_CANDIDATE_SLOT];
- uint8_t eAxC_offset; /**< starting eAxC for PRACH stream */
-};
-
-#define XRAN_MAX_POOLS_PER_SECTOR_NR 8 /**< 2x(TX_OUT, RX_IN, PRACH_IN, SRS_IN) with C-plane */
-
-typedef struct sectorHandleInfo
-{
- /**< Structure that contains the information to describe the
- * instance i.e service type, virtual function, package Id etc..*/
- uint16_t nIndex;
- uint16_t nXranPort;
- /* Unique ID of an handle shared between phy layer and library */
- /**< number of antennas supported per link*/
- uint32_t nBufferPoolIndex;
- /**< Buffer poolIndex*/
- struct rte_mempool * p_bufferPool[XRAN_MAX_POOLS_PER_SECTOR_NR];
- uint32_t bufferPoolElmSz[XRAN_MAX_POOLS_PER_SECTOR_NR];
- uint32_t bufferPoolNumElm[XRAN_MAX_POOLS_PER_SECTOR_NR];
-
-}XranSectorHandleInfo, *PXranSectorHandleInfo;
-
-typedef void (*XranSymCallbackFn)(struct rte_timer *tim, void* arg);
-
-struct cb_elem_entry{
- XranSymCallbackFn pSymCallback;
- void *pSymCallbackTag;
- LIST_ENTRY(cb_elem_entry) pointers;
-};
-
-/* Callback function to send mbuf to the ring */
-typedef int (*xran_ethdi_mbuf_send_fn)(struct rte_mbuf *mb, uint16_t ethertype);
-
-/*
- * manage one cell's all Ethernet frames for one DL or UL LTE subframe
- */
-typedef struct {
- /* -1-this subframe is not used in current frame format
- 0-this subframe can be transmitted, i.e., data is ready
- 1-this subframe is waiting transmission, i.e., data is not ready
- 10 - DL transmission missing deadline. When FE needs this subframe data but bValid is still 1,
- set bValid to 10.
- */
- int32_t bValid ; // when UL rx, it is subframe index.
- int32_t nSegToBeGen;
- int32_t nSegGenerated; // how many date segment are generated by DL LTE processing or received from FE
- // -1 means that DL packet to be transmitted is not ready in BS
- int32_t nSegTransferred; // number of data segments has been transmitted or received
- struct rte_mbuf *pData[XRAN_N_MAX_BUFFER_SEGMENT]; // point to DPDK allocated memory pool
- struct xran_buffer_list sBufferList;
-} BbuIoBufCtrlStruct;
-
-
-#define XranIncrementJob(i) ((i >= (XRAN_SYM_JOB_SIZE-1)) ? 0 : (i+1))
-
-#define XRAN_MAX_PKT_BURST_PER_SYM 32
-#define XRAN_MAX_PACKET_FRAG 9
-
-#define MBUF_TABLE_SIZE (2 * MAX(XRAN_MAX_PKT_BURST_PER_SYM, XRAN_MAX_PACKET_FRAG))
-
-struct mbuf_table {
- uint16_t len;
- struct rte_mbuf *m_table[MBUF_TABLE_SIZE];
-};
-
-struct xran_device_ctx
-{
- uint8_t sector_id;
- uint8_t xran_port_id;
- struct xran_eaxcid_config eAxc_id_cfg;
- struct xran_fh_init fh_init;
- struct xran_fh_config fh_cfg;
- struct xran_prach_cp_config PrachCPConfig;
-
- uint32_t enablePrach;
- uint32_t enableCP;
-
- int32_t DynamicSectionEna;
- int64_t offset_sec;
- int64_t offset_nsec; //offset to GPS time calcuated based on alpha and beta
-
- uint32_t enableSrs;
- struct xran_srs_config srs_cfg; /** configuration of SRS */
-
- BbuIoBufCtrlStruct sFrontHaulTxBbuIoBufCtrl[XRAN_N_FE_BUF_LEN][XRAN_MAX_SECTOR_NR][XRAN_MAX_ANTENNA_NR];
- BbuIoBufCtrlStruct sFrontHaulTxPrbMapBbuIoBufCtrl[XRAN_N_FE_BUF_LEN][XRAN_MAX_SECTOR_NR][XRAN_MAX_ANTENNA_NR];
- BbuIoBufCtrlStruct sFrontHaulRxBbuIoBufCtrl[XRAN_N_FE_BUF_LEN][XRAN_MAX_SECTOR_NR][XRAN_MAX_ANTENNA_NR];
- BbuIoBufCtrlStruct sFrontHaulRxPrbMapBbuIoBufCtrl[XRAN_N_FE_BUF_LEN][XRAN_MAX_SECTOR_NR][XRAN_MAX_ANTENNA_NR];
- BbuIoBufCtrlStruct sFHPrachRxBbuIoBufCtrl[XRAN_N_FE_BUF_LEN][XRAN_MAX_SECTOR_NR][XRAN_MAX_ANTENNA_NR];
- BbuIoBufCtrlStruct sFHSrsRxBbuIoBufCtrl[XRAN_N_FE_BUF_LEN][XRAN_MAX_SECTOR_NR][XRAN_MAX_ANT_ARRAY_ELM_NR];
-
- /* buffers lists */
- struct xran_flat_buffer sFrontHaulTxBuffers[XRAN_N_FE_BUF_LEN][XRAN_MAX_SECTOR_NR][XRAN_MAX_ANTENNA_NR][XRAN_NUM_OF_SYMBOL_PER_SLOT];
- struct xran_flat_buffer sFrontHaulTxPrbMapBuffers[XRAN_N_FE_BUF_LEN][XRAN_MAX_SECTOR_NR][XRAN_MAX_ANTENNA_NR][XRAN_NUM_OF_SYMBOL_PER_SLOT];
- struct xran_flat_buffer sFrontHaulRxBuffers[XRAN_N_FE_BUF_LEN][XRAN_MAX_SECTOR_NR][XRAN_MAX_ANTENNA_NR][XRAN_NUM_OF_SYMBOL_PER_SLOT];
- struct xran_flat_buffer sFrontHaulRxPrbMapBuffers[XRAN_N_FE_BUF_LEN][XRAN_MAX_SECTOR_NR][XRAN_MAX_ANTENNA_NR][XRAN_NUM_OF_SYMBOL_PER_SLOT];
- struct xran_flat_buffer sFHPrachRxBuffers[XRAN_N_FE_BUF_LEN][XRAN_MAX_SECTOR_NR][XRAN_MAX_ANTENNA_NR][XRAN_NUM_OF_SYMBOL_PER_SLOT];
-
- struct xran_flat_buffer sFHSrsRxBuffers[XRAN_N_FE_BUF_LEN][XRAN_MAX_SECTOR_NR][XRAN_MAX_ANT_ARRAY_ELM_NR][XRAN_MAX_NUM_OF_SRS_SYMBOL_PER_SLOT];
-
- xran_transport_callback_fn pCallback[XRAN_MAX_SECTOR_NR];
- void *pCallbackTag[XRAN_MAX_SECTOR_NR];