1#![allow(non_upper_case_globals)]
2#![allow(non_camel_case_types)]
3#![allow(non_snake_case)]
4#![allow(unused)]
5#![allow(improper_ctypes)]
7
8include!(concat!(env!("OUT_DIR"), "/dpdk.rs"));
9
10use std::os::raw::{c_char, c_int, c_uint, c_void};
11
12#[link(name = "inlined")]
13extern "C" {
14 fn rte_pktmbuf_free_(packet: *const rte_mbuf);
15 fn rte_pktmbuf_alloc_(mp: *mut rte_mempool) -> *mut rte_mbuf;
16 fn rte_eth_tx_burst_(
17 port_id: u16,
18 queue_id: u16,
19 tx_pkts: *mut *mut rte_mbuf,
20 nb_pkts: u16,
21 ) -> u16;
22 fn rte_eth_rx_burst_(
23 port_id: u16,
24 queue_id: u16,
25 rx_pkts: *mut *mut rte_mbuf,
26 nb_pkts: u16,
27 ) -> u16;
28 fn rte_mbuf_refcnt_read_(m: *const rte_mbuf) -> u16;
29 fn rte_mbuf_refcnt_update_(m: *mut rte_mbuf, value: i16) -> u16;
30 fn rte_pktmbuf_adj_(packet: *mut rte_mbuf, len: u16) -> *mut c_char;
31 fn rte_pktmbuf_trim_(packet: *mut rte_mbuf, len: u16) -> c_int;
32 fn rte_lcore_id_() -> u16;
33 fn rte_rdtsc_() -> u64;
34 fn rte_ring_enqueue_(ring: *mut rte_ring, obj: *mut c_void) -> c_int;
35 fn rte_ring_sp_enqueue_(ring: *mut rte_ring, obj: *mut c_void) -> c_int;
36 fn rte_ring_mp_enqueue_(ring: *mut rte_ring, obj: *mut c_void) -> c_int;
37 fn rte_ring_dequeue_(ring: *mut rte_ring, obj_p: *mut *mut c_void) -> c_int;
38 fn rte_ring_sc_dequeue_(ring: *mut rte_ring, obj_p: *mut *mut c_void) -> c_int;
39 fn rte_ring_mc_dequeue_(ring: *mut rte_ring, obj_p: *mut *mut c_void) -> c_int;
40 fn rte_ring_count_(ring: *const rte_ring) -> c_uint;
41 fn rte_ring_free_count_(ring: *const rte_ring) -> c_uint;
42 fn rte_ring_full_(ring: *const rte_ring) -> c_int;
43 fn rte_ring_empty_(ring: *const rte_ring) -> c_int;
44 fn rte_ring_get_size_(ring: *const rte_ring) -> c_uint;
45 fn rte_ring_get_capacity_(ring: *const rte_ring) -> c_uint;
46}
47
48#[cfg(feature = "mlx5")]
49#[link(name = "rte_net_mlx5")]
50extern "C" {
51 fn rte_pmd_mlx5_get_dyn_flag_names();
52}
53
54#[cfg(feature = "mlx5")]
55#[inline(never)]
56pub fn load_drivers() {
57 if std::env::var("DONT_SET_THIS").is_ok() {
58 unsafe {
59 rte_pmd_mlx5_get_dyn_flag_names();
60 }
61 }
62}
63
64#[cfg(not(feature = "mlx5"))]
65#[inline(never)]
66pub fn load_drivers() {}
67
68#[inline]
69pub unsafe fn rte_pktmbuf_free(packet: *const rte_mbuf) {
70 rte_pktmbuf_free_(packet)
71}
72
73#[inline]
74pub unsafe fn rte_pktmbuf_alloc(mp: *mut rte_mempool) -> *mut rte_mbuf {
75 rte_pktmbuf_alloc_(mp)
76}
77
78#[inline]
79pub unsafe fn rte_eth_tx_burst(
80 port_id: u16,
81 queue_id: u16,
82 tx_pkts: *mut *mut rte_mbuf,
83 nb_pkts: u16,
84) -> u16 {
85 rte_eth_tx_burst_(port_id, queue_id, tx_pkts, nb_pkts)
86}
87
88#[inline]
89pub unsafe fn rte_eth_rx_burst(
90 port_id: u16,
91 queue_id: u16,
92 rx_pkts: *mut *mut rte_mbuf,
93 nb_pkts: u16,
94) -> u16 {
95 rte_eth_rx_burst_(port_id, queue_id, rx_pkts, nb_pkts)
96}
97
98#[inline]
99pub unsafe fn rte_mbuf_refcnt_read(m: *const rte_mbuf) -> u16 {
100 rte_mbuf_refcnt_read_(m)
101}
102
103#[inline]
104pub unsafe fn rte_mbuf_refcnt_update(m: *mut rte_mbuf, value: i16) -> u16 {
105 rte_mbuf_refcnt_update_(m, value)
106}
107
108#[inline]
109pub unsafe fn rte_pktmbuf_adj(packet: *mut rte_mbuf, len: u16) -> *mut c_char {
110 rte_pktmbuf_adj_(packet, len)
111}
112
113#[inline]
114pub unsafe fn rte_pktmbuf_trim(packet: *mut rte_mbuf, len: u16) -> c_int {
115 rte_pktmbuf_trim_(packet, len)
116}
117#[inline]
127pub unsafe fn rte_lcore_id() -> u16 {
128 rte_lcore_id_()
129}
130
131#[inline]
139pub unsafe fn rte_rdtsc() -> u64 {
140 rte_rdtsc_()
141}
142
143#[inline]
146pub unsafe fn rte_ring_enqueue(ring: *mut rte_ring, obj: *mut c_void) -> c_int {
147 rte_ring_enqueue_(ring, obj)
148}
149
150#[inline]
151pub unsafe fn rte_ring_sp_enqueue(ring: *mut rte_ring, obj: *mut c_void) -> c_int {
152 rte_ring_sp_enqueue_(ring, obj)
153}
154
155#[inline]
156pub unsafe fn rte_ring_mp_enqueue(ring: *mut rte_ring, obj: *mut c_void) -> c_int {
157 rte_ring_mp_enqueue_(ring, obj)
158}
159
160#[inline]
161pub unsafe fn rte_ring_dequeue(ring: *mut rte_ring, obj_p: *mut *mut c_void) -> c_int {
162 rte_ring_dequeue_(ring, obj_p)
163}
164
165#[inline]
166pub unsafe fn rte_ring_sc_dequeue(ring: *mut rte_ring, obj_p: *mut *mut c_void) -> c_int {
167 rte_ring_sc_dequeue_(ring, obj_p)
168}
169
170#[inline]
171pub unsafe fn rte_ring_mc_dequeue(ring: *mut rte_ring, obj_p: *mut *mut c_void) -> c_int {
172 rte_ring_mc_dequeue_(ring, obj_p)
173}
174
175#[inline]
176pub unsafe fn rte_ring_count(ring: *const rte_ring) -> c_uint {
177 rte_ring_count_(ring)
178}
179
180#[inline]
181pub unsafe fn rte_ring_free_count(ring: *const rte_ring) -> c_uint {
182 rte_ring_free_count_(ring)
183}
184
185#[inline]
186pub unsafe fn rte_ring_full(ring: *const rte_ring) -> c_int {
187 rte_ring_full_(ring)
188}
189
190#[inline]
191pub unsafe fn rte_ring_empty(ring: *const rte_ring) -> c_int {
192 rte_ring_empty_(ring)
193}
194
195#[inline]
196pub unsafe fn rte_ring_get_size(ring: *const rte_ring) -> c_uint {
197 rte_ring_get_size_(ring)
198}
199
200#[inline]
201pub unsafe fn rte_ring_get_capacity(ring: *const rte_ring) -> c_uint {
202 rte_ring_get_capacity_(ring)
203}