virtio_bindings/bindings/x86_64/
virtio_net.rs

1/* automatically generated by rust-bindgen 0.71.1 */
2
3#[repr(C)]
4#[derive(Default)]
5pub struct __IncompleteArrayField<T>(::std::marker::PhantomData<T>, [T; 0]);
6impl<T> __IncompleteArrayField<T> {
7    #[inline]
8    pub const fn new() -> Self {
9        __IncompleteArrayField(::std::marker::PhantomData, [])
10    }
11    #[inline]
12    pub fn as_ptr(&self) -> *const T {
13        self as *const _ as *const T
14    }
15    #[inline]
16    pub fn as_mut_ptr(&mut self) -> *mut T {
17        self as *mut _ as *mut T
18    }
19    #[inline]
20    pub unsafe fn as_slice(&self, len: usize) -> &[T] {
21        ::std::slice::from_raw_parts(self.as_ptr(), len)
22    }
23    #[inline]
24    pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] {
25        ::std::slice::from_raw_parts_mut(self.as_mut_ptr(), len)
26    }
27}
28impl<T> ::std::fmt::Debug for __IncompleteArrayField<T> {
29    fn fmt(&self, fmt: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
30        fmt.write_str("__IncompleteArrayField")
31    }
32}
33pub const VIRTIO_NET_F_CSUM: u32 = 0;
34pub const VIRTIO_NET_F_GUEST_CSUM: u32 = 1;
35pub const VIRTIO_NET_F_CTRL_GUEST_OFFLOADS: u32 = 2;
36pub const VIRTIO_NET_F_MTU: u32 = 3;
37pub const VIRTIO_NET_F_MAC: u32 = 5;
38pub const VIRTIO_NET_F_GUEST_TSO4: u32 = 7;
39pub const VIRTIO_NET_F_GUEST_TSO6: u32 = 8;
40pub const VIRTIO_NET_F_GUEST_ECN: u32 = 9;
41pub const VIRTIO_NET_F_GUEST_UFO: u32 = 10;
42pub const VIRTIO_NET_F_HOST_TSO4: u32 = 11;
43pub const VIRTIO_NET_F_HOST_TSO6: u32 = 12;
44pub const VIRTIO_NET_F_HOST_ECN: u32 = 13;
45pub const VIRTIO_NET_F_HOST_UFO: u32 = 14;
46pub const VIRTIO_NET_F_MRG_RXBUF: u32 = 15;
47pub const VIRTIO_NET_F_STATUS: u32 = 16;
48pub const VIRTIO_NET_F_CTRL_VQ: u32 = 17;
49pub const VIRTIO_NET_F_CTRL_RX: u32 = 18;
50pub const VIRTIO_NET_F_CTRL_VLAN: u32 = 19;
51pub const VIRTIO_NET_F_CTRL_RX_EXTRA: u32 = 20;
52pub const VIRTIO_NET_F_GUEST_ANNOUNCE: u32 = 21;
53pub const VIRTIO_NET_F_MQ: u32 = 22;
54pub const VIRTIO_NET_F_CTRL_MAC_ADDR: u32 = 23;
55pub const VIRTIO_NET_F_DEVICE_STATS: u32 = 50;
56pub const VIRTIO_NET_F_VQ_NOTF_COAL: u32 = 52;
57pub const VIRTIO_NET_F_NOTF_COAL: u32 = 53;
58pub const VIRTIO_NET_F_GUEST_USO4: u32 = 54;
59pub const VIRTIO_NET_F_GUEST_USO6: u32 = 55;
60pub const VIRTIO_NET_F_HOST_USO: u32 = 56;
61pub const VIRTIO_NET_F_HASH_REPORT: u32 = 57;
62pub const VIRTIO_NET_F_GUEST_HDRLEN: u32 = 59;
63pub const VIRTIO_NET_F_RSS: u32 = 60;
64pub const VIRTIO_NET_F_RSC_EXT: u32 = 61;
65pub const VIRTIO_NET_F_STANDBY: u32 = 62;
66pub const VIRTIO_NET_F_SPEED_DUPLEX: u32 = 63;
67pub const VIRTIO_NET_F_GSO: u32 = 6;
68pub const VIRTIO_NET_S_LINK_UP: u32 = 1;
69pub const VIRTIO_NET_S_ANNOUNCE: u32 = 2;
70pub const VIRTIO_NET_RSS_HASH_TYPE_IPv4: u32 = 1;
71pub const VIRTIO_NET_RSS_HASH_TYPE_TCPv4: u32 = 2;
72pub const VIRTIO_NET_RSS_HASH_TYPE_UDPv4: u32 = 4;
73pub const VIRTIO_NET_RSS_HASH_TYPE_IPv6: u32 = 8;
74pub const VIRTIO_NET_RSS_HASH_TYPE_TCPv6: u32 = 16;
75pub const VIRTIO_NET_RSS_HASH_TYPE_UDPv6: u32 = 32;
76pub const VIRTIO_NET_RSS_HASH_TYPE_IP_EX: u32 = 64;
77pub const VIRTIO_NET_RSS_HASH_TYPE_TCP_EX: u32 = 128;
78pub const VIRTIO_NET_RSS_HASH_TYPE_UDP_EX: u32 = 256;
79pub const VIRTIO_NET_HDR_F_NEEDS_CSUM: u32 = 1;
80pub const VIRTIO_NET_HDR_F_DATA_VALID: u32 = 2;
81pub const VIRTIO_NET_HDR_F_RSC_INFO: u32 = 4;
82pub const VIRTIO_NET_HDR_GSO_NONE: u32 = 0;
83pub const VIRTIO_NET_HDR_GSO_TCPV4: u32 = 1;
84pub const VIRTIO_NET_HDR_GSO_UDP: u32 = 3;
85pub const VIRTIO_NET_HDR_GSO_TCPV6: u32 = 4;
86pub const VIRTIO_NET_HDR_GSO_UDP_L4: u32 = 5;
87pub const VIRTIO_NET_HDR_GSO_ECN: u32 = 128;
88pub const VIRTIO_NET_HASH_REPORT_NONE: u32 = 0;
89pub const VIRTIO_NET_HASH_REPORT_IPv4: u32 = 1;
90pub const VIRTIO_NET_HASH_REPORT_TCPv4: u32 = 2;
91pub const VIRTIO_NET_HASH_REPORT_UDPv4: u32 = 3;
92pub const VIRTIO_NET_HASH_REPORT_IPv6: u32 = 4;
93pub const VIRTIO_NET_HASH_REPORT_TCPv6: u32 = 5;
94pub const VIRTIO_NET_HASH_REPORT_UDPv6: u32 = 6;
95pub const VIRTIO_NET_HASH_REPORT_IPv6_EX: u32 = 7;
96pub const VIRTIO_NET_HASH_REPORT_TCPv6_EX: u32 = 8;
97pub const VIRTIO_NET_HASH_REPORT_UDPv6_EX: u32 = 9;
98pub const VIRTIO_NET_OK: u32 = 0;
99pub const VIRTIO_NET_ERR: u32 = 1;
100pub const VIRTIO_NET_CTRL_RX: u32 = 0;
101pub const VIRTIO_NET_CTRL_RX_PROMISC: u32 = 0;
102pub const VIRTIO_NET_CTRL_RX_ALLMULTI: u32 = 1;
103pub const VIRTIO_NET_CTRL_RX_ALLUNI: u32 = 2;
104pub const VIRTIO_NET_CTRL_RX_NOMULTI: u32 = 3;
105pub const VIRTIO_NET_CTRL_RX_NOUNI: u32 = 4;
106pub const VIRTIO_NET_CTRL_RX_NOBCAST: u32 = 5;
107pub const VIRTIO_NET_CTRL_MAC: u32 = 1;
108pub const VIRTIO_NET_CTRL_MAC_TABLE_SET: u32 = 0;
109pub const VIRTIO_NET_CTRL_MAC_ADDR_SET: u32 = 1;
110pub const VIRTIO_NET_CTRL_VLAN: u32 = 2;
111pub const VIRTIO_NET_CTRL_VLAN_ADD: u32 = 0;
112pub const VIRTIO_NET_CTRL_VLAN_DEL: u32 = 1;
113pub const VIRTIO_NET_CTRL_ANNOUNCE: u32 = 3;
114pub const VIRTIO_NET_CTRL_ANNOUNCE_ACK: u32 = 0;
115pub const VIRTIO_NET_CTRL_MQ: u32 = 4;
116pub const VIRTIO_NET_CTRL_MQ_VQ_PAIRS_SET: u32 = 0;
117pub const VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MIN: u32 = 1;
118pub const VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MAX: u32 = 32768;
119pub const VIRTIO_NET_CTRL_MQ_RSS_CONFIG: u32 = 1;
120pub const VIRTIO_NET_CTRL_MQ_HASH_CONFIG: u32 = 2;
121pub const VIRTIO_NET_CTRL_GUEST_OFFLOADS: u32 = 5;
122pub const VIRTIO_NET_CTRL_GUEST_OFFLOADS_SET: u32 = 0;
123pub const VIRTIO_NET_CTRL_NOTF_COAL: u32 = 6;
124pub const VIRTIO_NET_CTRL_NOTF_COAL_TX_SET: u32 = 0;
125pub const VIRTIO_NET_CTRL_NOTF_COAL_RX_SET: u32 = 1;
126pub const VIRTIO_NET_CTRL_NOTF_COAL_VQ_SET: u32 = 2;
127pub const VIRTIO_NET_CTRL_NOTF_COAL_VQ_GET: u32 = 3;
128pub const VIRTIO_NET_CTRL_STATS: u32 = 8;
129pub const VIRTIO_NET_CTRL_STATS_QUERY: u32 = 0;
130pub const VIRTIO_NET_CTRL_STATS_GET: u32 = 1;
131pub const VIRTIO_NET_STATS_TYPE_CVQ: u64 = 4294967296;
132pub const VIRTIO_NET_STATS_TYPE_RX_BASIC: u32 = 1;
133pub const VIRTIO_NET_STATS_TYPE_RX_CSUM: u32 = 2;
134pub const VIRTIO_NET_STATS_TYPE_RX_GSO: u32 = 4;
135pub const VIRTIO_NET_STATS_TYPE_RX_SPEED: u32 = 8;
136pub const VIRTIO_NET_STATS_TYPE_TX_BASIC: u32 = 65536;
137pub const VIRTIO_NET_STATS_TYPE_TX_CSUM: u32 = 131072;
138pub const VIRTIO_NET_STATS_TYPE_TX_GSO: u32 = 262144;
139pub const VIRTIO_NET_STATS_TYPE_TX_SPEED: u32 = 524288;
140pub const VIRTIO_NET_STATS_TYPE_REPLY_CVQ: u32 = 32;
141pub const VIRTIO_NET_STATS_TYPE_REPLY_RX_BASIC: u32 = 0;
142pub const VIRTIO_NET_STATS_TYPE_REPLY_RX_CSUM: u32 = 1;
143pub const VIRTIO_NET_STATS_TYPE_REPLY_RX_GSO: u32 = 2;
144pub const VIRTIO_NET_STATS_TYPE_REPLY_RX_SPEED: u32 = 3;
145pub const VIRTIO_NET_STATS_TYPE_REPLY_TX_BASIC: u32 = 16;
146pub const VIRTIO_NET_STATS_TYPE_REPLY_TX_CSUM: u32 = 17;
147pub const VIRTIO_NET_STATS_TYPE_REPLY_TX_GSO: u32 = 18;
148pub const VIRTIO_NET_STATS_TYPE_REPLY_TX_SPEED: u32 = 19;
149pub type __u8 = ::std::os::raw::c_uchar;
150pub type __u16 = ::std::os::raw::c_ushort;
151pub type __u32 = ::std::os::raw::c_uint;
152pub type __u64 = ::std::os::raw::c_ulonglong;
153pub type __le16 = __u16;
154pub type __le32 = __u32;
155pub type __le64 = __u64;
156pub type __virtio16 = __u16;
157pub type __virtio32 = __u32;
158#[repr(C, packed)]
159#[derive(Debug, Default, Copy, Clone, PartialEq)]
160pub struct virtio_net_config {
161    pub mac: [__u8; 6usize],
162    pub status: __virtio16,
163    pub max_virtqueue_pairs: __virtio16,
164    pub mtu: __virtio16,
165    pub speed: __le32,
166    pub duplex: __u8,
167    pub rss_max_key_size: __u8,
168    pub rss_max_indirection_table_length: __le16,
169    pub supported_hash_types: __le32,
170}
171#[allow(clippy::unnecessary_operation, clippy::identity_op)]
172const _: () = {
173    ["Size of virtio_net_config"][::std::mem::size_of::<virtio_net_config>() - 24usize];
174    ["Alignment of virtio_net_config"][::std::mem::align_of::<virtio_net_config>() - 1usize];
175    ["Offset of field: virtio_net_config::mac"]
176        [::std::mem::offset_of!(virtio_net_config, mac) - 0usize];
177    ["Offset of field: virtio_net_config::status"]
178        [::std::mem::offset_of!(virtio_net_config, status) - 6usize];
179    ["Offset of field: virtio_net_config::max_virtqueue_pairs"]
180        [::std::mem::offset_of!(virtio_net_config, max_virtqueue_pairs) - 8usize];
181    ["Offset of field: virtio_net_config::mtu"]
182        [::std::mem::offset_of!(virtio_net_config, mtu) - 10usize];
183    ["Offset of field: virtio_net_config::speed"]
184        [::std::mem::offset_of!(virtio_net_config, speed) - 12usize];
185    ["Offset of field: virtio_net_config::duplex"]
186        [::std::mem::offset_of!(virtio_net_config, duplex) - 16usize];
187    ["Offset of field: virtio_net_config::rss_max_key_size"]
188        [::std::mem::offset_of!(virtio_net_config, rss_max_key_size) - 17usize];
189    ["Offset of field: virtio_net_config::rss_max_indirection_table_length"]
190        [::std::mem::offset_of!(virtio_net_config, rss_max_indirection_table_length) - 18usize];
191    ["Offset of field: virtio_net_config::supported_hash_types"]
192        [::std::mem::offset_of!(virtio_net_config, supported_hash_types) - 20usize];
193};
194#[repr(C)]
195#[derive(Copy, Clone)]
196pub struct virtio_net_hdr_v1 {
197    pub flags: __u8,
198    pub gso_type: __u8,
199    pub hdr_len: __virtio16,
200    pub gso_size: __virtio16,
201    pub __bindgen_anon_1: virtio_net_hdr_v1__bindgen_ty_1,
202    pub num_buffers: __virtio16,
203}
204#[repr(C)]
205#[derive(Copy, Clone)]
206pub union virtio_net_hdr_v1__bindgen_ty_1 {
207    pub __bindgen_anon_1: virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_1,
208    pub csum: virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_2,
209    pub rsc: virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_3,
210}
211#[repr(C)]
212#[derive(Debug, Default, Copy, Clone, PartialEq)]
213pub struct virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_1 {
214    pub csum_start: __virtio16,
215    pub csum_offset: __virtio16,
216}
217#[allow(clippy::unnecessary_operation, clippy::identity_op)]
218const _: () = {
219    ["Size of virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_1"]
220        [::std::mem::size_of::<virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_1>() - 4usize];
221    ["Alignment of virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_1"]
222        [::std::mem::align_of::<virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_1>() - 2usize];
223    ["Offset of field: virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_1::csum_start"][::std::mem::offset_of!(
224        virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_1,
225        csum_start
226    ) - 0usize];
227    ["Offset of field: virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_1::csum_offset"][::std::mem::offset_of!(
228        virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_1,
229        csum_offset
230    ) - 2usize];
231};
232#[repr(C)]
233#[derive(Debug, Default, Copy, Clone, PartialEq)]
234pub struct virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_2 {
235    pub start: __virtio16,
236    pub offset: __virtio16,
237}
238#[allow(clippy::unnecessary_operation, clippy::identity_op)]
239const _: () = {
240    ["Size of virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_2"]
241        [::std::mem::size_of::<virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_2>() - 4usize];
242    ["Alignment of virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_2"]
243        [::std::mem::align_of::<virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_2>() - 2usize];
244    ["Offset of field: virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_2::start"]
245        [::std::mem::offset_of!(virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_2, start) - 0usize];
246    ["Offset of field: virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_2::offset"]
247        [::std::mem::offset_of!(virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_2, offset) - 2usize];
248};
249#[repr(C)]
250#[derive(Debug, Default, Copy, Clone, PartialEq)]
251pub struct virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_3 {
252    pub segments: __le16,
253    pub dup_acks: __le16,
254}
255#[allow(clippy::unnecessary_operation, clippy::identity_op)]
256const _: () = {
257    ["Size of virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_3"]
258        [::std::mem::size_of::<virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_3>() - 4usize];
259    ["Alignment of virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_3"]
260        [::std::mem::align_of::<virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_3>() - 2usize];
261    ["Offset of field: virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_3::segments"]
262        [::std::mem::offset_of!(virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_3, segments) - 0usize];
263    ["Offset of field: virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_3::dup_acks"]
264        [::std::mem::offset_of!(virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_3, dup_acks) - 2usize];
265};
266#[allow(clippy::unnecessary_operation, clippy::identity_op)]
267const _: () = {
268    ["Size of virtio_net_hdr_v1__bindgen_ty_1"]
269        [::std::mem::size_of::<virtio_net_hdr_v1__bindgen_ty_1>() - 4usize];
270    ["Alignment of virtio_net_hdr_v1__bindgen_ty_1"]
271        [::std::mem::align_of::<virtio_net_hdr_v1__bindgen_ty_1>() - 2usize];
272    ["Offset of field: virtio_net_hdr_v1__bindgen_ty_1::csum"]
273        [::std::mem::offset_of!(virtio_net_hdr_v1__bindgen_ty_1, csum) - 0usize];
274    ["Offset of field: virtio_net_hdr_v1__bindgen_ty_1::rsc"]
275        [::std::mem::offset_of!(virtio_net_hdr_v1__bindgen_ty_1, rsc) - 0usize];
276};
277impl Default for virtio_net_hdr_v1__bindgen_ty_1 {
278    fn default() -> Self {
279        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
280        unsafe {
281            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
282            s.assume_init()
283        }
284    }
285}
286#[allow(clippy::unnecessary_operation, clippy::identity_op)]
287const _: () = {
288    ["Size of virtio_net_hdr_v1"][::std::mem::size_of::<virtio_net_hdr_v1>() - 12usize];
289    ["Alignment of virtio_net_hdr_v1"][::std::mem::align_of::<virtio_net_hdr_v1>() - 2usize];
290    ["Offset of field: virtio_net_hdr_v1::flags"]
291        [::std::mem::offset_of!(virtio_net_hdr_v1, flags) - 0usize];
292    ["Offset of field: virtio_net_hdr_v1::gso_type"]
293        [::std::mem::offset_of!(virtio_net_hdr_v1, gso_type) - 1usize];
294    ["Offset of field: virtio_net_hdr_v1::hdr_len"]
295        [::std::mem::offset_of!(virtio_net_hdr_v1, hdr_len) - 2usize];
296    ["Offset of field: virtio_net_hdr_v1::gso_size"]
297        [::std::mem::offset_of!(virtio_net_hdr_v1, gso_size) - 4usize];
298    ["Offset of field: virtio_net_hdr_v1::num_buffers"]
299        [::std::mem::offset_of!(virtio_net_hdr_v1, num_buffers) - 10usize];
300};
301impl Default for virtio_net_hdr_v1 {
302    fn default() -> Self {
303        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
304        unsafe {
305            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
306            s.assume_init()
307        }
308    }
309}
310#[repr(C)]
311#[derive(Copy, Clone)]
312pub struct virtio_net_hdr_v1_hash {
313    pub hdr: virtio_net_hdr_v1,
314    pub hash_value: __le32,
315    pub hash_report: __le16,
316    pub padding: __le16,
317}
318#[allow(clippy::unnecessary_operation, clippy::identity_op)]
319const _: () = {
320    ["Size of virtio_net_hdr_v1_hash"][::std::mem::size_of::<virtio_net_hdr_v1_hash>() - 20usize];
321    ["Alignment of virtio_net_hdr_v1_hash"]
322        [::std::mem::align_of::<virtio_net_hdr_v1_hash>() - 4usize];
323    ["Offset of field: virtio_net_hdr_v1_hash::hdr"]
324        [::std::mem::offset_of!(virtio_net_hdr_v1_hash, hdr) - 0usize];
325    ["Offset of field: virtio_net_hdr_v1_hash::hash_value"]
326        [::std::mem::offset_of!(virtio_net_hdr_v1_hash, hash_value) - 12usize];
327    ["Offset of field: virtio_net_hdr_v1_hash::hash_report"]
328        [::std::mem::offset_of!(virtio_net_hdr_v1_hash, hash_report) - 16usize];
329    ["Offset of field: virtio_net_hdr_v1_hash::padding"]
330        [::std::mem::offset_of!(virtio_net_hdr_v1_hash, padding) - 18usize];
331};
332impl Default for virtio_net_hdr_v1_hash {
333    fn default() -> Self {
334        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
335        unsafe {
336            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
337            s.assume_init()
338        }
339    }
340}
341#[repr(C)]
342#[derive(Debug, Default, Copy, Clone, PartialEq)]
343pub struct virtio_net_hdr {
344    pub flags: __u8,
345    pub gso_type: __u8,
346    pub hdr_len: __virtio16,
347    pub gso_size: __virtio16,
348    pub csum_start: __virtio16,
349    pub csum_offset: __virtio16,
350}
351#[allow(clippy::unnecessary_operation, clippy::identity_op)]
352const _: () = {
353    ["Size of virtio_net_hdr"][::std::mem::size_of::<virtio_net_hdr>() - 10usize];
354    ["Alignment of virtio_net_hdr"][::std::mem::align_of::<virtio_net_hdr>() - 2usize];
355    ["Offset of field: virtio_net_hdr::flags"]
356        [::std::mem::offset_of!(virtio_net_hdr, flags) - 0usize];
357    ["Offset of field: virtio_net_hdr::gso_type"]
358        [::std::mem::offset_of!(virtio_net_hdr, gso_type) - 1usize];
359    ["Offset of field: virtio_net_hdr::hdr_len"]
360        [::std::mem::offset_of!(virtio_net_hdr, hdr_len) - 2usize];
361    ["Offset of field: virtio_net_hdr::gso_size"]
362        [::std::mem::offset_of!(virtio_net_hdr, gso_size) - 4usize];
363    ["Offset of field: virtio_net_hdr::csum_start"]
364        [::std::mem::offset_of!(virtio_net_hdr, csum_start) - 6usize];
365    ["Offset of field: virtio_net_hdr::csum_offset"]
366        [::std::mem::offset_of!(virtio_net_hdr, csum_offset) - 8usize];
367};
368#[repr(C)]
369#[derive(Debug, Default, Copy, Clone, PartialEq)]
370pub struct virtio_net_hdr_mrg_rxbuf {
371    pub hdr: virtio_net_hdr,
372    pub num_buffers: __virtio16,
373}
374#[allow(clippy::unnecessary_operation, clippy::identity_op)]
375const _: () = {
376    ["Size of virtio_net_hdr_mrg_rxbuf"]
377        [::std::mem::size_of::<virtio_net_hdr_mrg_rxbuf>() - 12usize];
378    ["Alignment of virtio_net_hdr_mrg_rxbuf"]
379        [::std::mem::align_of::<virtio_net_hdr_mrg_rxbuf>() - 2usize];
380    ["Offset of field: virtio_net_hdr_mrg_rxbuf::hdr"]
381        [::std::mem::offset_of!(virtio_net_hdr_mrg_rxbuf, hdr) - 0usize];
382    ["Offset of field: virtio_net_hdr_mrg_rxbuf::num_buffers"]
383        [::std::mem::offset_of!(virtio_net_hdr_mrg_rxbuf, num_buffers) - 10usize];
384};
385#[repr(C, packed)]
386#[derive(Debug, Default, Copy, Clone, PartialEq)]
387pub struct virtio_net_ctrl_hdr {
388    pub class: __u8,
389    pub cmd: __u8,
390}
391#[allow(clippy::unnecessary_operation, clippy::identity_op)]
392const _: () = {
393    ["Size of virtio_net_ctrl_hdr"][::std::mem::size_of::<virtio_net_ctrl_hdr>() - 2usize];
394    ["Alignment of virtio_net_ctrl_hdr"][::std::mem::align_of::<virtio_net_ctrl_hdr>() - 1usize];
395    ["Offset of field: virtio_net_ctrl_hdr::class"]
396        [::std::mem::offset_of!(virtio_net_ctrl_hdr, class) - 0usize];
397    ["Offset of field: virtio_net_ctrl_hdr::cmd"]
398        [::std::mem::offset_of!(virtio_net_ctrl_hdr, cmd) - 1usize];
399};
400pub type virtio_net_ctrl_ack = __u8;
401#[repr(C, packed)]
402pub struct virtio_net_ctrl_mac {
403    pub entries: __virtio32,
404    pub macs: __IncompleteArrayField<[__u8; 6usize]>,
405}
406#[allow(clippy::unnecessary_operation, clippy::identity_op)]
407const _: () = {
408    ["Size of virtio_net_ctrl_mac"][::std::mem::size_of::<virtio_net_ctrl_mac>() - 4usize];
409    ["Alignment of virtio_net_ctrl_mac"][::std::mem::align_of::<virtio_net_ctrl_mac>() - 1usize];
410    ["Offset of field: virtio_net_ctrl_mac::entries"]
411        [::std::mem::offset_of!(virtio_net_ctrl_mac, entries) - 0usize];
412    ["Offset of field: virtio_net_ctrl_mac::macs"]
413        [::std::mem::offset_of!(virtio_net_ctrl_mac, macs) - 4usize];
414};
415impl Default for virtio_net_ctrl_mac {
416    fn default() -> Self {
417        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
418        unsafe {
419            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
420            s.assume_init()
421        }
422    }
423}
424#[repr(C)]
425#[derive(Debug, Default, Copy, Clone, PartialEq)]
426pub struct virtio_net_ctrl_mq {
427    pub virtqueue_pairs: __virtio16,
428}
429#[allow(clippy::unnecessary_operation, clippy::identity_op)]
430const _: () = {
431    ["Size of virtio_net_ctrl_mq"][::std::mem::size_of::<virtio_net_ctrl_mq>() - 2usize];
432    ["Alignment of virtio_net_ctrl_mq"][::std::mem::align_of::<virtio_net_ctrl_mq>() - 2usize];
433    ["Offset of field: virtio_net_ctrl_mq::virtqueue_pairs"]
434        [::std::mem::offset_of!(virtio_net_ctrl_mq, virtqueue_pairs) - 0usize];
435};
436#[repr(C)]
437#[derive(Debug, Default)]
438pub struct virtio_net_rss_config {
439    pub hash_types: __le32,
440    pub indirection_table_mask: __le16,
441    pub unclassified_queue: __le16,
442    pub indirection_table: [__le16; 1usize],
443    pub max_tx_vq: __le16,
444    pub hash_key_length: __u8,
445    pub hash_key_data: __IncompleteArrayField<__u8>,
446}
447#[allow(clippy::unnecessary_operation, clippy::identity_op)]
448const _: () = {
449    ["Size of virtio_net_rss_config"][::std::mem::size_of::<virtio_net_rss_config>() - 16usize];
450    ["Alignment of virtio_net_rss_config"]
451        [::std::mem::align_of::<virtio_net_rss_config>() - 4usize];
452    ["Offset of field: virtio_net_rss_config::hash_types"]
453        [::std::mem::offset_of!(virtio_net_rss_config, hash_types) - 0usize];
454    ["Offset of field: virtio_net_rss_config::indirection_table_mask"]
455        [::std::mem::offset_of!(virtio_net_rss_config, indirection_table_mask) - 4usize];
456    ["Offset of field: virtio_net_rss_config::unclassified_queue"]
457        [::std::mem::offset_of!(virtio_net_rss_config, unclassified_queue) - 6usize];
458    ["Offset of field: virtio_net_rss_config::indirection_table"]
459        [::std::mem::offset_of!(virtio_net_rss_config, indirection_table) - 8usize];
460    ["Offset of field: virtio_net_rss_config::max_tx_vq"]
461        [::std::mem::offset_of!(virtio_net_rss_config, max_tx_vq) - 10usize];
462    ["Offset of field: virtio_net_rss_config::hash_key_length"]
463        [::std::mem::offset_of!(virtio_net_rss_config, hash_key_length) - 12usize];
464    ["Offset of field: virtio_net_rss_config::hash_key_data"]
465        [::std::mem::offset_of!(virtio_net_rss_config, hash_key_data) - 13usize];
466};
467#[repr(C)]
468#[derive(Debug, Default)]
469pub struct virtio_net_rss_config_hdr {
470    pub hash_types: __le32,
471    pub indirection_table_mask: __le16,
472    pub unclassified_queue: __le16,
473    pub indirection_table: __IncompleteArrayField<__le16>,
474}
475#[allow(clippy::unnecessary_operation, clippy::identity_op)]
476const _: () = {
477    ["Size of virtio_net_rss_config_hdr"]
478        [::std::mem::size_of::<virtio_net_rss_config_hdr>() - 8usize];
479    ["Alignment of virtio_net_rss_config_hdr"]
480        [::std::mem::align_of::<virtio_net_rss_config_hdr>() - 4usize];
481    ["Offset of field: virtio_net_rss_config_hdr::hash_types"]
482        [::std::mem::offset_of!(virtio_net_rss_config_hdr, hash_types) - 0usize];
483    ["Offset of field: virtio_net_rss_config_hdr::indirection_table_mask"]
484        [::std::mem::offset_of!(virtio_net_rss_config_hdr, indirection_table_mask) - 4usize];
485    ["Offset of field: virtio_net_rss_config_hdr::unclassified_queue"]
486        [::std::mem::offset_of!(virtio_net_rss_config_hdr, unclassified_queue) - 6usize];
487    ["Offset of field: virtio_net_rss_config_hdr::indirection_table"]
488        [::std::mem::offset_of!(virtio_net_rss_config_hdr, indirection_table) - 8usize];
489};
490#[repr(C)]
491#[derive(Debug, Default)]
492pub struct virtio_net_rss_config_trailer {
493    pub max_tx_vq: __le16,
494    pub hash_key_length: __u8,
495    pub hash_key_data: __IncompleteArrayField<__u8>,
496}
497#[allow(clippy::unnecessary_operation, clippy::identity_op)]
498const _: () = {
499    ["Size of virtio_net_rss_config_trailer"]
500        [::std::mem::size_of::<virtio_net_rss_config_trailer>() - 4usize];
501    ["Alignment of virtio_net_rss_config_trailer"]
502        [::std::mem::align_of::<virtio_net_rss_config_trailer>() - 2usize];
503    ["Offset of field: virtio_net_rss_config_trailer::max_tx_vq"]
504        [::std::mem::offset_of!(virtio_net_rss_config_trailer, max_tx_vq) - 0usize];
505    ["Offset of field: virtio_net_rss_config_trailer::hash_key_length"]
506        [::std::mem::offset_of!(virtio_net_rss_config_trailer, hash_key_length) - 2usize];
507    ["Offset of field: virtio_net_rss_config_trailer::hash_key_data"]
508        [::std::mem::offset_of!(virtio_net_rss_config_trailer, hash_key_data) - 3usize];
509};
510#[repr(C)]
511#[derive(Debug, Default)]
512pub struct virtio_net_hash_config {
513    pub hash_types: __le32,
514    pub reserved: [__le16; 4usize],
515    pub hash_key_length: __u8,
516    pub hash_key_data: __IncompleteArrayField<__u8>,
517}
518#[allow(clippy::unnecessary_operation, clippy::identity_op)]
519const _: () = {
520    ["Size of virtio_net_hash_config"][::std::mem::size_of::<virtio_net_hash_config>() - 16usize];
521    ["Alignment of virtio_net_hash_config"]
522        [::std::mem::align_of::<virtio_net_hash_config>() - 4usize];
523    ["Offset of field: virtio_net_hash_config::hash_types"]
524        [::std::mem::offset_of!(virtio_net_hash_config, hash_types) - 0usize];
525    ["Offset of field: virtio_net_hash_config::reserved"]
526        [::std::mem::offset_of!(virtio_net_hash_config, reserved) - 4usize];
527    ["Offset of field: virtio_net_hash_config::hash_key_length"]
528        [::std::mem::offset_of!(virtio_net_hash_config, hash_key_length) - 12usize];
529    ["Offset of field: virtio_net_hash_config::hash_key_data"]
530        [::std::mem::offset_of!(virtio_net_hash_config, hash_key_data) - 13usize];
531};
532#[repr(C)]
533#[derive(Debug, Default, Copy, Clone, PartialEq)]
534pub struct virtio_net_ctrl_coal_tx {
535    pub tx_max_packets: __le32,
536    pub tx_usecs: __le32,
537}
538#[allow(clippy::unnecessary_operation, clippy::identity_op)]
539const _: () = {
540    ["Size of virtio_net_ctrl_coal_tx"][::std::mem::size_of::<virtio_net_ctrl_coal_tx>() - 8usize];
541    ["Alignment of virtio_net_ctrl_coal_tx"]
542        [::std::mem::align_of::<virtio_net_ctrl_coal_tx>() - 4usize];
543    ["Offset of field: virtio_net_ctrl_coal_tx::tx_max_packets"]
544        [::std::mem::offset_of!(virtio_net_ctrl_coal_tx, tx_max_packets) - 0usize];
545    ["Offset of field: virtio_net_ctrl_coal_tx::tx_usecs"]
546        [::std::mem::offset_of!(virtio_net_ctrl_coal_tx, tx_usecs) - 4usize];
547};
548#[repr(C)]
549#[derive(Debug, Default, Copy, Clone, PartialEq)]
550pub struct virtio_net_ctrl_coal_rx {
551    pub rx_max_packets: __le32,
552    pub rx_usecs: __le32,
553}
554#[allow(clippy::unnecessary_operation, clippy::identity_op)]
555const _: () = {
556    ["Size of virtio_net_ctrl_coal_rx"][::std::mem::size_of::<virtio_net_ctrl_coal_rx>() - 8usize];
557    ["Alignment of virtio_net_ctrl_coal_rx"]
558        [::std::mem::align_of::<virtio_net_ctrl_coal_rx>() - 4usize];
559    ["Offset of field: virtio_net_ctrl_coal_rx::rx_max_packets"]
560        [::std::mem::offset_of!(virtio_net_ctrl_coal_rx, rx_max_packets) - 0usize];
561    ["Offset of field: virtio_net_ctrl_coal_rx::rx_usecs"]
562        [::std::mem::offset_of!(virtio_net_ctrl_coal_rx, rx_usecs) - 4usize];
563};
564#[repr(C)]
565#[derive(Debug, Default, Copy, Clone, PartialEq)]
566pub struct virtio_net_ctrl_coal {
567    pub max_packets: __le32,
568    pub max_usecs: __le32,
569}
570#[allow(clippy::unnecessary_operation, clippy::identity_op)]
571const _: () = {
572    ["Size of virtio_net_ctrl_coal"][::std::mem::size_of::<virtio_net_ctrl_coal>() - 8usize];
573    ["Alignment of virtio_net_ctrl_coal"][::std::mem::align_of::<virtio_net_ctrl_coal>() - 4usize];
574    ["Offset of field: virtio_net_ctrl_coal::max_packets"]
575        [::std::mem::offset_of!(virtio_net_ctrl_coal, max_packets) - 0usize];
576    ["Offset of field: virtio_net_ctrl_coal::max_usecs"]
577        [::std::mem::offset_of!(virtio_net_ctrl_coal, max_usecs) - 4usize];
578};
579#[repr(C)]
580#[derive(Debug, Default, Copy, Clone, PartialEq)]
581pub struct virtio_net_ctrl_coal_vq {
582    pub vqn: __le16,
583    pub reserved: __le16,
584    pub coal: virtio_net_ctrl_coal,
585}
586#[allow(clippy::unnecessary_operation, clippy::identity_op)]
587const _: () = {
588    ["Size of virtio_net_ctrl_coal_vq"][::std::mem::size_of::<virtio_net_ctrl_coal_vq>() - 12usize];
589    ["Alignment of virtio_net_ctrl_coal_vq"]
590        [::std::mem::align_of::<virtio_net_ctrl_coal_vq>() - 4usize];
591    ["Offset of field: virtio_net_ctrl_coal_vq::vqn"]
592        [::std::mem::offset_of!(virtio_net_ctrl_coal_vq, vqn) - 0usize];
593    ["Offset of field: virtio_net_ctrl_coal_vq::reserved"]
594        [::std::mem::offset_of!(virtio_net_ctrl_coal_vq, reserved) - 2usize];
595    ["Offset of field: virtio_net_ctrl_coal_vq::coal"]
596        [::std::mem::offset_of!(virtio_net_ctrl_coal_vq, coal) - 4usize];
597};
598#[repr(C)]
599#[derive(Debug, Default, Copy, Clone, PartialEq)]
600pub struct virtio_net_stats_capabilities {
601    pub supported_stats_types: [__le64; 1usize],
602}
603#[allow(clippy::unnecessary_operation, clippy::identity_op)]
604const _: () = {
605    ["Size of virtio_net_stats_capabilities"]
606        [::std::mem::size_of::<virtio_net_stats_capabilities>() - 8usize];
607    ["Alignment of virtio_net_stats_capabilities"]
608        [::std::mem::align_of::<virtio_net_stats_capabilities>() - 8usize];
609    ["Offset of field: virtio_net_stats_capabilities::supported_stats_types"]
610        [::std::mem::offset_of!(virtio_net_stats_capabilities, supported_stats_types) - 0usize];
611};
612#[repr(C)]
613#[derive(Debug, Default, Copy, Clone, PartialEq)]
614pub struct virtio_net_ctrl_queue_stats {
615    pub stats: [virtio_net_ctrl_queue_stats__bindgen_ty_1; 1usize],
616}
617#[repr(C)]
618#[derive(Debug, Default, Copy, Clone, PartialEq)]
619pub struct virtio_net_ctrl_queue_stats__bindgen_ty_1 {
620    pub vq_index: __le16,
621    pub reserved: [__le16; 3usize],
622    pub types_bitmap: [__le64; 1usize],
623}
624#[allow(clippy::unnecessary_operation, clippy::identity_op)]
625const _: () = {
626    ["Size of virtio_net_ctrl_queue_stats__bindgen_ty_1"]
627        [::std::mem::size_of::<virtio_net_ctrl_queue_stats__bindgen_ty_1>() - 16usize];
628    ["Alignment of virtio_net_ctrl_queue_stats__bindgen_ty_1"]
629        [::std::mem::align_of::<virtio_net_ctrl_queue_stats__bindgen_ty_1>() - 8usize];
630    ["Offset of field: virtio_net_ctrl_queue_stats__bindgen_ty_1::vq_index"]
631        [::std::mem::offset_of!(virtio_net_ctrl_queue_stats__bindgen_ty_1, vq_index) - 0usize];
632    ["Offset of field: virtio_net_ctrl_queue_stats__bindgen_ty_1::reserved"]
633        [::std::mem::offset_of!(virtio_net_ctrl_queue_stats__bindgen_ty_1, reserved) - 2usize];
634    ["Offset of field: virtio_net_ctrl_queue_stats__bindgen_ty_1::types_bitmap"]
635        [::std::mem::offset_of!(virtio_net_ctrl_queue_stats__bindgen_ty_1, types_bitmap) - 8usize];
636};
637#[allow(clippy::unnecessary_operation, clippy::identity_op)]
638const _: () = {
639    ["Size of virtio_net_ctrl_queue_stats"]
640        [::std::mem::size_of::<virtio_net_ctrl_queue_stats>() - 16usize];
641    ["Alignment of virtio_net_ctrl_queue_stats"]
642        [::std::mem::align_of::<virtio_net_ctrl_queue_stats>() - 8usize];
643    ["Offset of field: virtio_net_ctrl_queue_stats::stats"]
644        [::std::mem::offset_of!(virtio_net_ctrl_queue_stats, stats) - 0usize];
645};
646#[repr(C)]
647#[derive(Debug, Default, Copy, Clone, PartialEq)]
648pub struct virtio_net_stats_reply_hdr {
649    pub type_: __u8,
650    pub reserved: __u8,
651    pub vq_index: __le16,
652    pub reserved1: __le16,
653    pub size: __le16,
654}
655#[allow(clippy::unnecessary_operation, clippy::identity_op)]
656const _: () = {
657    ["Size of virtio_net_stats_reply_hdr"]
658        [::std::mem::size_of::<virtio_net_stats_reply_hdr>() - 8usize];
659    ["Alignment of virtio_net_stats_reply_hdr"]
660        [::std::mem::align_of::<virtio_net_stats_reply_hdr>() - 2usize];
661    ["Offset of field: virtio_net_stats_reply_hdr::type_"]
662        [::std::mem::offset_of!(virtio_net_stats_reply_hdr, type_) - 0usize];
663    ["Offset of field: virtio_net_stats_reply_hdr::reserved"]
664        [::std::mem::offset_of!(virtio_net_stats_reply_hdr, reserved) - 1usize];
665    ["Offset of field: virtio_net_stats_reply_hdr::vq_index"]
666        [::std::mem::offset_of!(virtio_net_stats_reply_hdr, vq_index) - 2usize];
667    ["Offset of field: virtio_net_stats_reply_hdr::reserved1"]
668        [::std::mem::offset_of!(virtio_net_stats_reply_hdr, reserved1) - 4usize];
669    ["Offset of field: virtio_net_stats_reply_hdr::size"]
670        [::std::mem::offset_of!(virtio_net_stats_reply_hdr, size) - 6usize];
671};
672#[repr(C)]
673#[derive(Debug, Default, Copy, Clone, PartialEq)]
674pub struct virtio_net_stats_cvq {
675    pub hdr: virtio_net_stats_reply_hdr,
676    pub command_num: __le64,
677    pub ok_num: __le64,
678}
679#[allow(clippy::unnecessary_operation, clippy::identity_op)]
680const _: () = {
681    ["Size of virtio_net_stats_cvq"][::std::mem::size_of::<virtio_net_stats_cvq>() - 24usize];
682    ["Alignment of virtio_net_stats_cvq"][::std::mem::align_of::<virtio_net_stats_cvq>() - 8usize];
683    ["Offset of field: virtio_net_stats_cvq::hdr"]
684        [::std::mem::offset_of!(virtio_net_stats_cvq, hdr) - 0usize];
685    ["Offset of field: virtio_net_stats_cvq::command_num"]
686        [::std::mem::offset_of!(virtio_net_stats_cvq, command_num) - 8usize];
687    ["Offset of field: virtio_net_stats_cvq::ok_num"]
688        [::std::mem::offset_of!(virtio_net_stats_cvq, ok_num) - 16usize];
689};
690#[repr(C)]
691#[derive(Debug, Default, Copy, Clone, PartialEq)]
692pub struct virtio_net_stats_rx_basic {
693    pub hdr: virtio_net_stats_reply_hdr,
694    pub rx_notifications: __le64,
695    pub rx_packets: __le64,
696    pub rx_bytes: __le64,
697    pub rx_interrupts: __le64,
698    pub rx_drops: __le64,
699    pub rx_drop_overruns: __le64,
700}
701#[allow(clippy::unnecessary_operation, clippy::identity_op)]
702const _: () = {
703    ["Size of virtio_net_stats_rx_basic"]
704        [::std::mem::size_of::<virtio_net_stats_rx_basic>() - 56usize];
705    ["Alignment of virtio_net_stats_rx_basic"]
706        [::std::mem::align_of::<virtio_net_stats_rx_basic>() - 8usize];
707    ["Offset of field: virtio_net_stats_rx_basic::hdr"]
708        [::std::mem::offset_of!(virtio_net_stats_rx_basic, hdr) - 0usize];
709    ["Offset of field: virtio_net_stats_rx_basic::rx_notifications"]
710        [::std::mem::offset_of!(virtio_net_stats_rx_basic, rx_notifications) - 8usize];
711    ["Offset of field: virtio_net_stats_rx_basic::rx_packets"]
712        [::std::mem::offset_of!(virtio_net_stats_rx_basic, rx_packets) - 16usize];
713    ["Offset of field: virtio_net_stats_rx_basic::rx_bytes"]
714        [::std::mem::offset_of!(virtio_net_stats_rx_basic, rx_bytes) - 24usize];
715    ["Offset of field: virtio_net_stats_rx_basic::rx_interrupts"]
716        [::std::mem::offset_of!(virtio_net_stats_rx_basic, rx_interrupts) - 32usize];
717    ["Offset of field: virtio_net_stats_rx_basic::rx_drops"]
718        [::std::mem::offset_of!(virtio_net_stats_rx_basic, rx_drops) - 40usize];
719    ["Offset of field: virtio_net_stats_rx_basic::rx_drop_overruns"]
720        [::std::mem::offset_of!(virtio_net_stats_rx_basic, rx_drop_overruns) - 48usize];
721};
722#[repr(C)]
723#[derive(Debug, Default, Copy, Clone, PartialEq)]
724pub struct virtio_net_stats_tx_basic {
725    pub hdr: virtio_net_stats_reply_hdr,
726    pub tx_notifications: __le64,
727    pub tx_packets: __le64,
728    pub tx_bytes: __le64,
729    pub tx_interrupts: __le64,
730    pub tx_drops: __le64,
731    pub tx_drop_malformed: __le64,
732}
733#[allow(clippy::unnecessary_operation, clippy::identity_op)]
734const _: () = {
735    ["Size of virtio_net_stats_tx_basic"]
736        [::std::mem::size_of::<virtio_net_stats_tx_basic>() - 56usize];
737    ["Alignment of virtio_net_stats_tx_basic"]
738        [::std::mem::align_of::<virtio_net_stats_tx_basic>() - 8usize];
739    ["Offset of field: virtio_net_stats_tx_basic::hdr"]
740        [::std::mem::offset_of!(virtio_net_stats_tx_basic, hdr) - 0usize];
741    ["Offset of field: virtio_net_stats_tx_basic::tx_notifications"]
742        [::std::mem::offset_of!(virtio_net_stats_tx_basic, tx_notifications) - 8usize];
743    ["Offset of field: virtio_net_stats_tx_basic::tx_packets"]
744        [::std::mem::offset_of!(virtio_net_stats_tx_basic, tx_packets) - 16usize];
745    ["Offset of field: virtio_net_stats_tx_basic::tx_bytes"]
746        [::std::mem::offset_of!(virtio_net_stats_tx_basic, tx_bytes) - 24usize];
747    ["Offset of field: virtio_net_stats_tx_basic::tx_interrupts"]
748        [::std::mem::offset_of!(virtio_net_stats_tx_basic, tx_interrupts) - 32usize];
749    ["Offset of field: virtio_net_stats_tx_basic::tx_drops"]
750        [::std::mem::offset_of!(virtio_net_stats_tx_basic, tx_drops) - 40usize];
751    ["Offset of field: virtio_net_stats_tx_basic::tx_drop_malformed"]
752        [::std::mem::offset_of!(virtio_net_stats_tx_basic, tx_drop_malformed) - 48usize];
753};
754#[repr(C)]
755#[derive(Debug, Default, Copy, Clone, PartialEq)]
756pub struct virtio_net_stats_rx_csum {
757    pub hdr: virtio_net_stats_reply_hdr,
758    pub rx_csum_valid: __le64,
759    pub rx_needs_csum: __le64,
760    pub rx_csum_none: __le64,
761    pub rx_csum_bad: __le64,
762}
763#[allow(clippy::unnecessary_operation, clippy::identity_op)]
764const _: () = {
765    ["Size of virtio_net_stats_rx_csum"]
766        [::std::mem::size_of::<virtio_net_stats_rx_csum>() - 40usize];
767    ["Alignment of virtio_net_stats_rx_csum"]
768        [::std::mem::align_of::<virtio_net_stats_rx_csum>() - 8usize];
769    ["Offset of field: virtio_net_stats_rx_csum::hdr"]
770        [::std::mem::offset_of!(virtio_net_stats_rx_csum, hdr) - 0usize];
771    ["Offset of field: virtio_net_stats_rx_csum::rx_csum_valid"]
772        [::std::mem::offset_of!(virtio_net_stats_rx_csum, rx_csum_valid) - 8usize];
773    ["Offset of field: virtio_net_stats_rx_csum::rx_needs_csum"]
774        [::std::mem::offset_of!(virtio_net_stats_rx_csum, rx_needs_csum) - 16usize];
775    ["Offset of field: virtio_net_stats_rx_csum::rx_csum_none"]
776        [::std::mem::offset_of!(virtio_net_stats_rx_csum, rx_csum_none) - 24usize];
777    ["Offset of field: virtio_net_stats_rx_csum::rx_csum_bad"]
778        [::std::mem::offset_of!(virtio_net_stats_rx_csum, rx_csum_bad) - 32usize];
779};
780#[repr(C)]
781#[derive(Debug, Default, Copy, Clone, PartialEq)]
782pub struct virtio_net_stats_tx_csum {
783    pub hdr: virtio_net_stats_reply_hdr,
784    pub tx_csum_none: __le64,
785    pub tx_needs_csum: __le64,
786}
787#[allow(clippy::unnecessary_operation, clippy::identity_op)]
788const _: () = {
789    ["Size of virtio_net_stats_tx_csum"]
790        [::std::mem::size_of::<virtio_net_stats_tx_csum>() - 24usize];
791    ["Alignment of virtio_net_stats_tx_csum"]
792        [::std::mem::align_of::<virtio_net_stats_tx_csum>() - 8usize];
793    ["Offset of field: virtio_net_stats_tx_csum::hdr"]
794        [::std::mem::offset_of!(virtio_net_stats_tx_csum, hdr) - 0usize];
795    ["Offset of field: virtio_net_stats_tx_csum::tx_csum_none"]
796        [::std::mem::offset_of!(virtio_net_stats_tx_csum, tx_csum_none) - 8usize];
797    ["Offset of field: virtio_net_stats_tx_csum::tx_needs_csum"]
798        [::std::mem::offset_of!(virtio_net_stats_tx_csum, tx_needs_csum) - 16usize];
799};
800#[repr(C)]
801#[derive(Debug, Default, Copy, Clone, PartialEq)]
802pub struct virtio_net_stats_rx_gso {
803    pub hdr: virtio_net_stats_reply_hdr,
804    pub rx_gso_packets: __le64,
805    pub rx_gso_bytes: __le64,
806    pub rx_gso_packets_coalesced: __le64,
807    pub rx_gso_bytes_coalesced: __le64,
808}
809#[allow(clippy::unnecessary_operation, clippy::identity_op)]
810const _: () = {
811    ["Size of virtio_net_stats_rx_gso"][::std::mem::size_of::<virtio_net_stats_rx_gso>() - 40usize];
812    ["Alignment of virtio_net_stats_rx_gso"]
813        [::std::mem::align_of::<virtio_net_stats_rx_gso>() - 8usize];
814    ["Offset of field: virtio_net_stats_rx_gso::hdr"]
815        [::std::mem::offset_of!(virtio_net_stats_rx_gso, hdr) - 0usize];
816    ["Offset of field: virtio_net_stats_rx_gso::rx_gso_packets"]
817        [::std::mem::offset_of!(virtio_net_stats_rx_gso, rx_gso_packets) - 8usize];
818    ["Offset of field: virtio_net_stats_rx_gso::rx_gso_bytes"]
819        [::std::mem::offset_of!(virtio_net_stats_rx_gso, rx_gso_bytes) - 16usize];
820    ["Offset of field: virtio_net_stats_rx_gso::rx_gso_packets_coalesced"]
821        [::std::mem::offset_of!(virtio_net_stats_rx_gso, rx_gso_packets_coalesced) - 24usize];
822    ["Offset of field: virtio_net_stats_rx_gso::rx_gso_bytes_coalesced"]
823        [::std::mem::offset_of!(virtio_net_stats_rx_gso, rx_gso_bytes_coalesced) - 32usize];
824};
825#[repr(C)]
826#[derive(Debug, Default, Copy, Clone, PartialEq)]
827pub struct virtio_net_stats_tx_gso {
828    pub hdr: virtio_net_stats_reply_hdr,
829    pub tx_gso_packets: __le64,
830    pub tx_gso_bytes: __le64,
831    pub tx_gso_segments: __le64,
832    pub tx_gso_segments_bytes: __le64,
833    pub tx_gso_packets_noseg: __le64,
834    pub tx_gso_bytes_noseg: __le64,
835}
836#[allow(clippy::unnecessary_operation, clippy::identity_op)]
837const _: () = {
838    ["Size of virtio_net_stats_tx_gso"][::std::mem::size_of::<virtio_net_stats_tx_gso>() - 56usize];
839    ["Alignment of virtio_net_stats_tx_gso"]
840        [::std::mem::align_of::<virtio_net_stats_tx_gso>() - 8usize];
841    ["Offset of field: virtio_net_stats_tx_gso::hdr"]
842        [::std::mem::offset_of!(virtio_net_stats_tx_gso, hdr) - 0usize];
843    ["Offset of field: virtio_net_stats_tx_gso::tx_gso_packets"]
844        [::std::mem::offset_of!(virtio_net_stats_tx_gso, tx_gso_packets) - 8usize];
845    ["Offset of field: virtio_net_stats_tx_gso::tx_gso_bytes"]
846        [::std::mem::offset_of!(virtio_net_stats_tx_gso, tx_gso_bytes) - 16usize];
847    ["Offset of field: virtio_net_stats_tx_gso::tx_gso_segments"]
848        [::std::mem::offset_of!(virtio_net_stats_tx_gso, tx_gso_segments) - 24usize];
849    ["Offset of field: virtio_net_stats_tx_gso::tx_gso_segments_bytes"]
850        [::std::mem::offset_of!(virtio_net_stats_tx_gso, tx_gso_segments_bytes) - 32usize];
851    ["Offset of field: virtio_net_stats_tx_gso::tx_gso_packets_noseg"]
852        [::std::mem::offset_of!(virtio_net_stats_tx_gso, tx_gso_packets_noseg) - 40usize];
853    ["Offset of field: virtio_net_stats_tx_gso::tx_gso_bytes_noseg"]
854        [::std::mem::offset_of!(virtio_net_stats_tx_gso, tx_gso_bytes_noseg) - 48usize];
855};
856#[repr(C)]
857#[derive(Debug, Default, Copy, Clone, PartialEq)]
858pub struct virtio_net_stats_rx_speed {
859    pub hdr: virtio_net_stats_reply_hdr,
860    pub rx_ratelimit_packets: __le64,
861    pub rx_ratelimit_bytes: __le64,
862}
863#[allow(clippy::unnecessary_operation, clippy::identity_op)]
864const _: () = {
865    ["Size of virtio_net_stats_rx_speed"]
866        [::std::mem::size_of::<virtio_net_stats_rx_speed>() - 24usize];
867    ["Alignment of virtio_net_stats_rx_speed"]
868        [::std::mem::align_of::<virtio_net_stats_rx_speed>() - 8usize];
869    ["Offset of field: virtio_net_stats_rx_speed::hdr"]
870        [::std::mem::offset_of!(virtio_net_stats_rx_speed, hdr) - 0usize];
871    ["Offset of field: virtio_net_stats_rx_speed::rx_ratelimit_packets"]
872        [::std::mem::offset_of!(virtio_net_stats_rx_speed, rx_ratelimit_packets) - 8usize];
873    ["Offset of field: virtio_net_stats_rx_speed::rx_ratelimit_bytes"]
874        [::std::mem::offset_of!(virtio_net_stats_rx_speed, rx_ratelimit_bytes) - 16usize];
875};
876#[repr(C)]
877#[derive(Debug, Default, Copy, Clone, PartialEq)]
878pub struct virtio_net_stats_tx_speed {
879    pub hdr: virtio_net_stats_reply_hdr,
880    pub tx_ratelimit_packets: __le64,
881    pub tx_ratelimit_bytes: __le64,
882}
883#[allow(clippy::unnecessary_operation, clippy::identity_op)]
884const _: () = {
885    ["Size of virtio_net_stats_tx_speed"]
886        [::std::mem::size_of::<virtio_net_stats_tx_speed>() - 24usize];
887    ["Alignment of virtio_net_stats_tx_speed"]
888        [::std::mem::align_of::<virtio_net_stats_tx_speed>() - 8usize];
889    ["Offset of field: virtio_net_stats_tx_speed::hdr"]
890        [::std::mem::offset_of!(virtio_net_stats_tx_speed, hdr) - 0usize];
891    ["Offset of field: virtio_net_stats_tx_speed::tx_ratelimit_packets"]
892        [::std::mem::offset_of!(virtio_net_stats_tx_speed, tx_ratelimit_packets) - 8usize];
893    ["Offset of field: virtio_net_stats_tx_speed::tx_ratelimit_bytes"]
894        [::std::mem::offset_of!(virtio_net_stats_tx_speed, tx_ratelimit_bytes) - 16usize];
895};