1 /* SPDX-License-Identifier: BSD-3-Clause 2 * Copyright(c) 2014-2018 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 34 struct bnxt *bp; 35 int index; 36 struct bnxt_vnic_info *vnic; 37 38 uint32_t rx_buf_size; 39 struct bnxt_rx_ring_info *rx_ring; 40 struct bnxt_cp_ring_info *cp_ring; 41 struct rte_mbuf fake_mbuf; 42 rte_atomic64_t rx_mbuf_alloc_fail; 43 const struct rte_memzone *mz; 44 }; 45 46 void bnxt_free_rxq_stats(struct bnxt_rx_queue *rxq); 47 int bnxt_mq_rx_configure(struct bnxt *bp); 48 void bnxt_rx_queue_release_op(void *rx_queue); 49 int bnxt_rx_queue_setup_op(struct rte_eth_dev *eth_dev, 50 uint16_t queue_idx, 51 uint16_t nb_desc, 52 unsigned int socket_id, 53 const struct rte_eth_rxconf *rx_conf, 54 struct rte_mempool *mp); 55 void bnxt_free_rx_mbufs(struct bnxt *bp); 56 int bnxt_rx_queue_intr_enable_op(struct rte_eth_dev *eth_dev, 57 uint16_t queue_id); 58 int bnxt_rx_queue_intr_disable_op(struct rte_eth_dev *eth_dev, 59 uint16_t queue_id); 60 int bnxt_rx_queue_start(struct rte_eth_dev *dev, 61 uint16_t rx_queue_id); 62 int bnxt_rx_queue_stop(struct rte_eth_dev *dev, 63 uint16_t rx_queue_id); 64 void bnxt_rx_queue_release_mbufs(struct bnxt_rx_queue *rxq); 65 #endif 66