DPDK  24.07.0
rte_ethdev_core.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2017 Intel Corporation
3  */
4 
5 #ifndef _RTE_ETHDEV_CORE_H_
6 #define _RTE_ETHDEV_CORE_H_
7 
19 struct rte_eth_dev_callback;
21 RTE_TAILQ_HEAD(rte_eth_dev_cb_list, rte_eth_dev_callback);
22 
23 struct rte_eth_dev;
24 
28 typedef uint16_t (*eth_rx_burst_t)(void *rxq,
29  struct rte_mbuf **rx_pkts,
30  uint16_t nb_pkts);
31 
35 typedef uint16_t (*eth_tx_burst_t)(void *txq,
36  struct rte_mbuf **tx_pkts,
37  uint16_t nb_pkts);
38 
42 typedef uint16_t (*eth_tx_prep_t)(void *txq,
43  struct rte_mbuf **tx_pkts,
44  uint16_t nb_pkts);
45 
46 
48 typedef uint32_t (*eth_rx_queue_count_t)(void *rxq);
49 
51 typedef int (*eth_rx_descriptor_status_t)(void *rxq, uint16_t offset);
52 
54 typedef int (*eth_tx_queue_count_t)(void *txq);
55 
57 typedef int (*eth_tx_descriptor_status_t)(void *txq, uint16_t offset);
58 
60 typedef uint16_t (*eth_recycle_tx_mbufs_reuse_t)(void *txq,
61  struct rte_eth_recycle_rxq_info *recycle_rxq_info);
62 
64 typedef void (*eth_recycle_rx_descriptors_refill_t)(void *rxq, uint16_t nb);
65 
73 struct rte_ethdev_qdata {
75  void **data;
77  RTE_ATOMIC(void *) *clbk;
78 };
79 
87 struct __rte_cache_aligned rte_eth_fp_ops {
88 
95  struct rte_ethdev_qdata rxq;
97  eth_rx_burst_t rx_pkt_burst;
99  eth_rx_queue_count_t rx_queue_count;
101  eth_rx_descriptor_status_t rx_descriptor_status;
103  eth_recycle_rx_descriptors_refill_t recycle_rx_descriptors_refill;
104  uintptr_t reserved1[2];
113  struct rte_ethdev_qdata txq;
115  eth_tx_burst_t tx_pkt_burst;
117  eth_tx_prep_t tx_pkt_prepare;
119  eth_tx_descriptor_status_t tx_descriptor_status;
121  eth_recycle_tx_mbufs_reuse_t recycle_tx_mbufs_reuse;
123  eth_tx_queue_count_t tx_queue_count;
124  uintptr_t reserved2[1];
127 };
128 
129 extern struct rte_eth_fp_ops rte_eth_fp_ops[RTE_MAX_ETHPORTS];
130 
131 #endif /* _RTE_ETHDEV_CORE_H_ */
uint16_t txq
#define __rte_cache_aligned
Definition: rte_common.h:568
RTE_TAILQ_HEAD(rte_class_list, rte_class)