1 /* SPDX-License-Identifier: BSD-3-Clause 2 * Copyright(c) 2014-2021 Broadcom 3 * All rights reserved. 4 */ 5 6 #ifndef _BNXT_RQX_H_ 7 #define _BNXT_RQX_H_ 8 9 /* Maximum receive burst supported in vector mode. */ 10 #define RTE_BNXT_MAX_RX_BURST 64U 11 12 /* Drop by default when receive desc is not available. */ 13 #define BNXT_DEFAULT_RX_DROP_EN 1 14 15 struct bnxt; 16 struct bnxt_rx_ring_info; 17 struct bnxt_cp_ring_info; 18 struct bnxt_rx_queue { 19 struct rte_mempool *mb_pool; /* mbuf pool for RX ring */ 20 uint64_t mbuf_initializer; /* val to init mbuf */ 21 uint16_t nb_rx_desc; /* num of RX desc */ 22 uint16_t rx_free_thresh; /* max free RX desc to hold */ 23 uint16_t queue_id; /* RX queue index */ 24 #if defined(RTE_ARCH_X86) || defined(RTE_ARCH_ARM64) 25 uint16_t rxrearm_nb; /* number of descs to reinit. */ 26 uint16_t rxrearm_start; /* next desc index to reinit. */ 27 #endif 28 uint16_t port_id; /* Device port identifier */ 29 uint8_t crc_len; /* 0 if CRC stripped, 4 otherwise */ 30 uint8_t rx_deferred_start; /* not in global dev start */ 31 uint8_t rx_started; /* RX queue is started */ 32 uint8_t drop_en; /* Drop when rx desc not available. */ 33 uint8_t in_reset; /* Rx ring is scheduled for reset */ 34 35 struct bnxt *bp; 36 int index; 37 struct bnxt_vnic_info *vnic; 38 39 uint32_t rx_buf_size; 40 struct bnxt_rx_ring_info *rx_ring; 41 struct bnxt_cp_ring_info *cp_ring; 42 struct rte_mbuf fake_mbuf; 43 rte_atomic64_t rx_mbuf_alloc_fail; 44 const struct rte_memzone *mz; 45 }; 46 47 void bnxt_free_rxq_stats(struct bnxt_rx_queue *rxq); 48 int bnxt_mq_rx_configure(struct bnxt *bp); 49 void bnxt_rx_queue_release_op(struct rte_eth_dev *dev, uint16_t queue_idx); 50 int bnxt_rx_queue_setup_op(struct rte_eth_dev *eth_dev, 51 uint16_t queue_idx, 52 uint16_t nb_desc, 53 unsigned int socket_id, 54 const struct rte_eth_rxconf *rx_conf, 55 struct rte_mempool *mp); 56 void bnxt_free_rx_mbufs(struct bnxt *bp); 57 int bnxt_rx_queue_intr_enable_op(struct rte_eth_dev *eth_dev, 58 uint16_t queue_id); 59 int bnxt_rx_queue_intr_disable_op(struct rte_eth_dev *eth_dev, 60 uint16_t queue_id); 61 int bnxt_rx_queue_start(struct rte_eth_dev *dev, 62 uint16_t rx_queue_id); 63 int bnxt_rx_queue_stop(struct rte_eth_dev *dev, 64 uint16_t rx_queue_id); 65 void bnxt_rx_queue_release_mbufs(struct bnxt_rx_queue *rxq); 66 int bnxt_need_agg_ring(struct rte_eth_dev *eth_dev); 67 void bnxt_free_rxq_mem(struct bnxt_rx_queue *rxq); 68 uint64_t bnxt_get_rx_port_offloads(struct bnxt *bp); 69 #endif 70