xref: /aosp_15_r20/external/crosvm/virtio_sys/src/virtio_net.rs (revision bb4ee6a4ae7042d18b07a98463b9c8b875e44b39)
1*bb4ee6a4SAndroid Build Coastguard Worker /* automatically generated by tools/bindgen-all-the-things */
2*bb4ee6a4SAndroid Build Coastguard Worker 
3*bb4ee6a4SAndroid Build Coastguard Worker #![allow(clippy::missing_safety_doc)]
4*bb4ee6a4SAndroid Build Coastguard Worker #![allow(clippy::undocumented_unsafe_blocks)]
5*bb4ee6a4SAndroid Build Coastguard Worker #![allow(clippy::upper_case_acronyms)]
6*bb4ee6a4SAndroid Build Coastguard Worker #![allow(non_upper_case_globals)]
7*bb4ee6a4SAndroid Build Coastguard Worker #![allow(non_camel_case_types)]
8*bb4ee6a4SAndroid Build Coastguard Worker #![allow(non_snake_case)]
9*bb4ee6a4SAndroid Build Coastguard Worker #![allow(dead_code)]
10*bb4ee6a4SAndroid Build Coastguard Worker 
11*bb4ee6a4SAndroid Build Coastguard Worker // Added by virtio_sys/bindgen.sh
12*bb4ee6a4SAndroid Build Coastguard Worker use zerocopy::AsBytes;
13*bb4ee6a4SAndroid Build Coastguard Worker use zerocopy::FromBytes;
14*bb4ee6a4SAndroid Build Coastguard Worker use zerocopy::FromZeroes;
15*bb4ee6a4SAndroid Build Coastguard Worker 
16*bb4ee6a4SAndroid Build Coastguard Worker #[repr(C)]
17*bb4ee6a4SAndroid Build Coastguard Worker #[derive(Default)]
18*bb4ee6a4SAndroid Build Coastguard Worker pub struct __IncompleteArrayField<T>(::std::marker::PhantomData<T>, [T; 0]);
19*bb4ee6a4SAndroid Build Coastguard Worker impl<T> __IncompleteArrayField<T> {
20*bb4ee6a4SAndroid Build Coastguard Worker     #[inline]
new() -> Self21*bb4ee6a4SAndroid Build Coastguard Worker     pub const fn new() -> Self {
22*bb4ee6a4SAndroid Build Coastguard Worker         __IncompleteArrayField(::std::marker::PhantomData, [])
23*bb4ee6a4SAndroid Build Coastguard Worker     }
24*bb4ee6a4SAndroid Build Coastguard Worker     #[inline]
as_ptr(&self) -> *const T25*bb4ee6a4SAndroid Build Coastguard Worker     pub fn as_ptr(&self) -> *const T {
26*bb4ee6a4SAndroid Build Coastguard Worker         self as *const _ as *const T
27*bb4ee6a4SAndroid Build Coastguard Worker     }
28*bb4ee6a4SAndroid Build Coastguard Worker     #[inline]
as_mut_ptr(&mut self) -> *mut T29*bb4ee6a4SAndroid Build Coastguard Worker     pub fn as_mut_ptr(&mut self) -> *mut T {
30*bb4ee6a4SAndroid Build Coastguard Worker         self as *mut _ as *mut T
31*bb4ee6a4SAndroid Build Coastguard Worker     }
32*bb4ee6a4SAndroid Build Coastguard Worker     #[inline]
as_slice(&self, len: usize) -> &[T]33*bb4ee6a4SAndroid Build Coastguard Worker     pub unsafe fn as_slice(&self, len: usize) -> &[T] {
34*bb4ee6a4SAndroid Build Coastguard Worker         ::std::slice::from_raw_parts(self.as_ptr(), len)
35*bb4ee6a4SAndroid Build Coastguard Worker     }
36*bb4ee6a4SAndroid Build Coastguard Worker     #[inline]
as_mut_slice(&mut self, len: usize) -> &mut [T]37*bb4ee6a4SAndroid Build Coastguard Worker     pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] {
38*bb4ee6a4SAndroid Build Coastguard Worker         ::std::slice::from_raw_parts_mut(self.as_mut_ptr(), len)
39*bb4ee6a4SAndroid Build Coastguard Worker     }
40*bb4ee6a4SAndroid Build Coastguard Worker }
41*bb4ee6a4SAndroid Build Coastguard Worker impl<T> ::std::fmt::Debug for __IncompleteArrayField<T> {
fmt(&self, fmt: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result42*bb4ee6a4SAndroid Build Coastguard Worker     fn fmt(&self, fmt: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
43*bb4ee6a4SAndroid Build Coastguard Worker         fmt.write_str("__IncompleteArrayField")
44*bb4ee6a4SAndroid Build Coastguard Worker     }
45*bb4ee6a4SAndroid Build Coastguard Worker }
46*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_F_CSUM: u32 = 0;
47*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_F_GUEST_CSUM: u32 = 1;
48*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_F_CTRL_GUEST_OFFLOADS: u32 = 2;
49*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_F_MTU: u32 = 3;
50*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_F_MAC: u32 = 5;
51*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_F_GUEST_TSO4: u32 = 7;
52*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_F_GUEST_TSO6: u32 = 8;
53*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_F_GUEST_ECN: u32 = 9;
54*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_F_GUEST_UFO: u32 = 10;
55*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_F_HOST_TSO4: u32 = 11;
56*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_F_HOST_TSO6: u32 = 12;
57*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_F_HOST_ECN: u32 = 13;
58*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_F_HOST_UFO: u32 = 14;
59*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_F_MRG_RXBUF: u32 = 15;
60*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_F_STATUS: u32 = 16;
61*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_F_CTRL_VQ: u32 = 17;
62*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_F_CTRL_RX: u32 = 18;
63*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_F_CTRL_VLAN: u32 = 19;
64*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_F_CTRL_RX_EXTRA: u32 = 20;
65*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_F_GUEST_ANNOUNCE: u32 = 21;
66*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_F_MQ: u32 = 22;
67*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_F_CTRL_MAC_ADDR: u32 = 23;
68*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_F_VQ_NOTF_COAL: u32 = 52;
69*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_F_NOTF_COAL: u32 = 53;
70*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_F_GUEST_USO4: u32 = 54;
71*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_F_GUEST_USO6: u32 = 55;
72*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_F_HOST_USO: u32 = 56;
73*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_F_HASH_REPORT: u32 = 57;
74*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_F_GUEST_HDRLEN: u32 = 59;
75*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_F_RSS: u32 = 60;
76*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_F_RSC_EXT: u32 = 61;
77*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_F_STANDBY: u32 = 62;
78*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_F_SPEED_DUPLEX: u32 = 63;
79*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_F_GSO: u32 = 6;
80*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_S_LINK_UP: u32 = 1;
81*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_S_ANNOUNCE: u32 = 2;
82*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_RSS_HASH_TYPE_IPv4: u32 = 1;
83*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_RSS_HASH_TYPE_TCPv4: u32 = 2;
84*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_RSS_HASH_TYPE_UDPv4: u32 = 4;
85*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_RSS_HASH_TYPE_IPv6: u32 = 8;
86*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_RSS_HASH_TYPE_TCPv6: u32 = 16;
87*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_RSS_HASH_TYPE_UDPv6: u32 = 32;
88*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_RSS_HASH_TYPE_IP_EX: u32 = 64;
89*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_RSS_HASH_TYPE_TCP_EX: u32 = 128;
90*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_RSS_HASH_TYPE_UDP_EX: u32 = 256;
91*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_HDR_F_NEEDS_CSUM: u32 = 1;
92*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_HDR_F_DATA_VALID: u32 = 2;
93*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_HDR_F_RSC_INFO: u32 = 4;
94*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_HDR_GSO_NONE: u32 = 0;
95*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_HDR_GSO_TCPV4: u32 = 1;
96*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_HDR_GSO_UDP: u32 = 3;
97*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_HDR_GSO_TCPV6: u32 = 4;
98*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_HDR_GSO_UDP_L4: u32 = 5;
99*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_HDR_GSO_ECN: u32 = 128;
100*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_HASH_REPORT_NONE: u32 = 0;
101*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_HASH_REPORT_IPv4: u32 = 1;
102*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_HASH_REPORT_TCPv4: u32 = 2;
103*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_HASH_REPORT_UDPv4: u32 = 3;
104*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_HASH_REPORT_IPv6: u32 = 4;
105*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_HASH_REPORT_TCPv6: u32 = 5;
106*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_HASH_REPORT_UDPv6: u32 = 6;
107*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_HASH_REPORT_IPv6_EX: u32 = 7;
108*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_HASH_REPORT_TCPv6_EX: u32 = 8;
109*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_HASH_REPORT_UDPv6_EX: u32 = 9;
110*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_OK: u32 = 0;
111*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_ERR: u32 = 1;
112*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_CTRL_RX: u32 = 0;
113*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_CTRL_RX_PROMISC: u32 = 0;
114*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_CTRL_RX_ALLMULTI: u32 = 1;
115*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_CTRL_RX_ALLUNI: u32 = 2;
116*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_CTRL_RX_NOMULTI: u32 = 3;
117*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_CTRL_RX_NOUNI: u32 = 4;
118*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_CTRL_RX_NOBCAST: u32 = 5;
119*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_CTRL_MAC: u32 = 1;
120*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_CTRL_MAC_TABLE_SET: u32 = 0;
121*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_CTRL_MAC_ADDR_SET: u32 = 1;
122*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_CTRL_VLAN: u32 = 2;
123*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_CTRL_VLAN_ADD: u32 = 0;
124*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_CTRL_VLAN_DEL: u32 = 1;
125*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_CTRL_ANNOUNCE: u32 = 3;
126*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_CTRL_ANNOUNCE_ACK: u32 = 0;
127*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_CTRL_MQ: u32 = 4;
128*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_CTRL_MQ_VQ_PAIRS_SET: u32 = 0;
129*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MIN: u32 = 1;
130*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MAX: u32 = 32768;
131*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_CTRL_MQ_RSS_CONFIG: u32 = 1;
132*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_CTRL_MQ_HASH_CONFIG: u32 = 2;
133*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_CTRL_GUEST_OFFLOADS: u32 = 5;
134*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_CTRL_GUEST_OFFLOADS_SET: u32 = 0;
135*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_CTRL_NOTF_COAL: u32 = 6;
136*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_CTRL_NOTF_COAL_TX_SET: u32 = 0;
137*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_CTRL_NOTF_COAL_RX_SET: u32 = 1;
138*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_CTRL_NOTF_COAL_VQ_SET: u32 = 2;
139*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_NET_CTRL_NOTF_COAL_VQ_GET: u32 = 3;
140*bb4ee6a4SAndroid Build Coastguard Worker pub type __le16 = u16;
141*bb4ee6a4SAndroid Build Coastguard Worker pub type __le32 = u32;
142*bb4ee6a4SAndroid Build Coastguard Worker pub type __virtio16 = u16;
143*bb4ee6a4SAndroid Build Coastguard Worker pub type __virtio32 = u32;
144*bb4ee6a4SAndroid Build Coastguard Worker #[repr(C, packed)]
145*bb4ee6a4SAndroid Build Coastguard Worker #[derive(Debug, Default, Copy, Clone)]
146*bb4ee6a4SAndroid Build Coastguard Worker pub struct virtio_net_config {
147*bb4ee6a4SAndroid Build Coastguard Worker     pub mac: [u8; 6usize],
148*bb4ee6a4SAndroid Build Coastguard Worker     pub status: __virtio16,
149*bb4ee6a4SAndroid Build Coastguard Worker     pub max_virtqueue_pairs: __virtio16,
150*bb4ee6a4SAndroid Build Coastguard Worker     pub mtu: __virtio16,
151*bb4ee6a4SAndroid Build Coastguard Worker     pub speed: __le32,
152*bb4ee6a4SAndroid Build Coastguard Worker     pub duplex: u8,
153*bb4ee6a4SAndroid Build Coastguard Worker     pub rss_max_key_size: u8,
154*bb4ee6a4SAndroid Build Coastguard Worker     pub rss_max_indirection_table_length: __le16,
155*bb4ee6a4SAndroid Build Coastguard Worker     pub supported_hash_types: __le32,
156*bb4ee6a4SAndroid Build Coastguard Worker }
157*bb4ee6a4SAndroid Build Coastguard Worker #[repr(C)]
158*bb4ee6a4SAndroid Build Coastguard Worker #[derive(Copy, Clone)]
159*bb4ee6a4SAndroid Build Coastguard Worker pub struct virtio_net_hdr_v1 {
160*bb4ee6a4SAndroid Build Coastguard Worker     pub flags: u8,
161*bb4ee6a4SAndroid Build Coastguard Worker     pub gso_type: u8,
162*bb4ee6a4SAndroid Build Coastguard Worker     pub hdr_len: __virtio16,
163*bb4ee6a4SAndroid Build Coastguard Worker     pub gso_size: __virtio16,
164*bb4ee6a4SAndroid Build Coastguard Worker     pub __bindgen_anon_1: virtio_net_hdr_v1__bindgen_ty_1,
165*bb4ee6a4SAndroid Build Coastguard Worker     pub num_buffers: __virtio16,
166*bb4ee6a4SAndroid Build Coastguard Worker }
167*bb4ee6a4SAndroid Build Coastguard Worker #[repr(C)]
168*bb4ee6a4SAndroid Build Coastguard Worker #[derive(Copy, Clone)]
169*bb4ee6a4SAndroid Build Coastguard Worker pub union virtio_net_hdr_v1__bindgen_ty_1 {
170*bb4ee6a4SAndroid Build Coastguard Worker     pub __bindgen_anon_1: virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_1,
171*bb4ee6a4SAndroid Build Coastguard Worker     pub csum: virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_2,
172*bb4ee6a4SAndroid Build Coastguard Worker     pub rsc: virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_3,
173*bb4ee6a4SAndroid Build Coastguard Worker }
174*bb4ee6a4SAndroid Build Coastguard Worker #[repr(C)]
175*bb4ee6a4SAndroid Build Coastguard Worker #[derive(Debug, Default, Copy, Clone)]
176*bb4ee6a4SAndroid Build Coastguard Worker pub struct virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_1 {
177*bb4ee6a4SAndroid Build Coastguard Worker     pub csum_start: __virtio16,
178*bb4ee6a4SAndroid Build Coastguard Worker     pub csum_offset: __virtio16,
179*bb4ee6a4SAndroid Build Coastguard Worker }
180*bb4ee6a4SAndroid Build Coastguard Worker #[repr(C)]
181*bb4ee6a4SAndroid Build Coastguard Worker #[derive(Debug, Default, Copy, Clone)]
182*bb4ee6a4SAndroid Build Coastguard Worker pub struct virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_2 {
183*bb4ee6a4SAndroid Build Coastguard Worker     pub start: __virtio16,
184*bb4ee6a4SAndroid Build Coastguard Worker     pub offset: __virtio16,
185*bb4ee6a4SAndroid Build Coastguard Worker }
186*bb4ee6a4SAndroid Build Coastguard Worker #[repr(C)]
187*bb4ee6a4SAndroid Build Coastguard Worker #[derive(Debug, Default, Copy, Clone)]
188*bb4ee6a4SAndroid Build Coastguard Worker pub struct virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_3 {
189*bb4ee6a4SAndroid Build Coastguard Worker     pub segments: __le16,
190*bb4ee6a4SAndroid Build Coastguard Worker     pub dup_acks: __le16,
191*bb4ee6a4SAndroid Build Coastguard Worker }
192*bb4ee6a4SAndroid Build Coastguard Worker impl Default for virtio_net_hdr_v1__bindgen_ty_1 {
default() -> Self193*bb4ee6a4SAndroid Build Coastguard Worker     fn default() -> Self {
194*bb4ee6a4SAndroid Build Coastguard Worker         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
195*bb4ee6a4SAndroid Build Coastguard Worker         unsafe {
196*bb4ee6a4SAndroid Build Coastguard Worker             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
197*bb4ee6a4SAndroid Build Coastguard Worker             s.assume_init()
198*bb4ee6a4SAndroid Build Coastguard Worker         }
199*bb4ee6a4SAndroid Build Coastguard Worker     }
200*bb4ee6a4SAndroid Build Coastguard Worker }
201*bb4ee6a4SAndroid Build Coastguard Worker impl Default for virtio_net_hdr_v1 {
default() -> Self202*bb4ee6a4SAndroid Build Coastguard Worker     fn default() -> Self {
203*bb4ee6a4SAndroid Build Coastguard Worker         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
204*bb4ee6a4SAndroid Build Coastguard Worker         unsafe {
205*bb4ee6a4SAndroid Build Coastguard Worker             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
206*bb4ee6a4SAndroid Build Coastguard Worker             s.assume_init()
207*bb4ee6a4SAndroid Build Coastguard Worker         }
208*bb4ee6a4SAndroid Build Coastguard Worker     }
209*bb4ee6a4SAndroid Build Coastguard Worker }
210*bb4ee6a4SAndroid Build Coastguard Worker #[repr(C)]
211*bb4ee6a4SAndroid Build Coastguard Worker #[derive(Copy, Clone)]
212*bb4ee6a4SAndroid Build Coastguard Worker pub struct virtio_net_hdr_v1_hash {
213*bb4ee6a4SAndroid Build Coastguard Worker     pub hdr: virtio_net_hdr_v1,
214*bb4ee6a4SAndroid Build Coastguard Worker     pub hash_value: __le32,
215*bb4ee6a4SAndroid Build Coastguard Worker     pub hash_report: __le16,
216*bb4ee6a4SAndroid Build Coastguard Worker     pub padding: __le16,
217*bb4ee6a4SAndroid Build Coastguard Worker }
218*bb4ee6a4SAndroid Build Coastguard Worker impl Default for virtio_net_hdr_v1_hash {
default() -> Self219*bb4ee6a4SAndroid Build Coastguard Worker     fn default() -> Self {
220*bb4ee6a4SAndroid Build Coastguard Worker         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
221*bb4ee6a4SAndroid Build Coastguard Worker         unsafe {
222*bb4ee6a4SAndroid Build Coastguard Worker             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
223*bb4ee6a4SAndroid Build Coastguard Worker             s.assume_init()
224*bb4ee6a4SAndroid Build Coastguard Worker         }
225*bb4ee6a4SAndroid Build Coastguard Worker     }
226*bb4ee6a4SAndroid Build Coastguard Worker }
227*bb4ee6a4SAndroid Build Coastguard Worker #[repr(C)]
228*bb4ee6a4SAndroid Build Coastguard Worker #[derive(Debug, Default, Copy, Clone, FromZeroes, FromBytes, AsBytes)]
229*bb4ee6a4SAndroid Build Coastguard Worker pub struct virtio_net_hdr {
230*bb4ee6a4SAndroid Build Coastguard Worker     pub flags: u8,
231*bb4ee6a4SAndroid Build Coastguard Worker     pub gso_type: u8,
232*bb4ee6a4SAndroid Build Coastguard Worker     pub hdr_len: __virtio16,
233*bb4ee6a4SAndroid Build Coastguard Worker     pub gso_size: __virtio16,
234*bb4ee6a4SAndroid Build Coastguard Worker     pub csum_start: __virtio16,
235*bb4ee6a4SAndroid Build Coastguard Worker     pub csum_offset: __virtio16,
236*bb4ee6a4SAndroid Build Coastguard Worker }
237*bb4ee6a4SAndroid Build Coastguard Worker #[repr(C)]
238*bb4ee6a4SAndroid Build Coastguard Worker #[derive(Debug, Default, Copy, Clone, FromZeroes, FromBytes, AsBytes)]
239*bb4ee6a4SAndroid Build Coastguard Worker pub struct virtio_net_hdr_mrg_rxbuf {
240*bb4ee6a4SAndroid Build Coastguard Worker     pub hdr: virtio_net_hdr,
241*bb4ee6a4SAndroid Build Coastguard Worker     pub num_buffers: __virtio16,
242*bb4ee6a4SAndroid Build Coastguard Worker }
243*bb4ee6a4SAndroid Build Coastguard Worker #[repr(C, packed)]
244*bb4ee6a4SAndroid Build Coastguard Worker #[derive(Debug, Default, Copy, Clone)]
245*bb4ee6a4SAndroid Build Coastguard Worker pub struct virtio_net_ctrl_hdr {
246*bb4ee6a4SAndroid Build Coastguard Worker     pub class: u8,
247*bb4ee6a4SAndroid Build Coastguard Worker     pub cmd: u8,
248*bb4ee6a4SAndroid Build Coastguard Worker }
249*bb4ee6a4SAndroid Build Coastguard Worker pub type virtio_net_ctrl_ack = u8;
250*bb4ee6a4SAndroid Build Coastguard Worker #[repr(C)]
251*bb4ee6a4SAndroid Build Coastguard Worker #[derive(Debug, Default, Copy, Clone)]
252*bb4ee6a4SAndroid Build Coastguard Worker pub struct virtio_net_ctrl_mq {
253*bb4ee6a4SAndroid Build Coastguard Worker     pub virtqueue_pairs: __virtio16,
254*bb4ee6a4SAndroid Build Coastguard Worker }
255*bb4ee6a4SAndroid Build Coastguard Worker #[repr(C)]
256*bb4ee6a4SAndroid Build Coastguard Worker #[derive(Debug, Default)]
257*bb4ee6a4SAndroid Build Coastguard Worker pub struct virtio_net_rss_config {
258*bb4ee6a4SAndroid Build Coastguard Worker     pub hash_types: __le32,
259*bb4ee6a4SAndroid Build Coastguard Worker     pub indirection_table_mask: __le16,
260*bb4ee6a4SAndroid Build Coastguard Worker     pub unclassified_queue: __le16,
261*bb4ee6a4SAndroid Build Coastguard Worker     pub indirection_table: [__le16; 1usize],
262*bb4ee6a4SAndroid Build Coastguard Worker     pub max_tx_vq: __le16,
263*bb4ee6a4SAndroid Build Coastguard Worker     pub hash_key_length: u8,
264*bb4ee6a4SAndroid Build Coastguard Worker     pub hash_key_data: __IncompleteArrayField<u8>,
265*bb4ee6a4SAndroid Build Coastguard Worker }
266*bb4ee6a4SAndroid Build Coastguard Worker #[repr(C)]
267*bb4ee6a4SAndroid Build Coastguard Worker #[derive(Debug, Default)]
268*bb4ee6a4SAndroid Build Coastguard Worker pub struct virtio_net_hash_config {
269*bb4ee6a4SAndroid Build Coastguard Worker     pub hash_types: __le32,
270*bb4ee6a4SAndroid Build Coastguard Worker     pub reserved: [__le16; 4usize],
271*bb4ee6a4SAndroid Build Coastguard Worker     pub hash_key_length: u8,
272*bb4ee6a4SAndroid Build Coastguard Worker     pub hash_key_data: __IncompleteArrayField<u8>,
273*bb4ee6a4SAndroid Build Coastguard Worker }
274*bb4ee6a4SAndroid Build Coastguard Worker #[repr(C)]
275*bb4ee6a4SAndroid Build Coastguard Worker #[derive(Debug, Default, Copy, Clone)]
276*bb4ee6a4SAndroid Build Coastguard Worker pub struct virtio_net_ctrl_coal_tx {
277*bb4ee6a4SAndroid Build Coastguard Worker     pub tx_max_packets: __le32,
278*bb4ee6a4SAndroid Build Coastguard Worker     pub tx_usecs: __le32,
279*bb4ee6a4SAndroid Build Coastguard Worker }
280*bb4ee6a4SAndroid Build Coastguard Worker #[repr(C)]
281*bb4ee6a4SAndroid Build Coastguard Worker #[derive(Debug, Default, Copy, Clone)]
282*bb4ee6a4SAndroid Build Coastguard Worker pub struct virtio_net_ctrl_coal_rx {
283*bb4ee6a4SAndroid Build Coastguard Worker     pub rx_max_packets: __le32,
284*bb4ee6a4SAndroid Build Coastguard Worker     pub rx_usecs: __le32,
285*bb4ee6a4SAndroid Build Coastguard Worker }
286*bb4ee6a4SAndroid Build Coastguard Worker #[repr(C)]
287*bb4ee6a4SAndroid Build Coastguard Worker #[derive(Debug, Default, Copy, Clone)]
288*bb4ee6a4SAndroid Build Coastguard Worker pub struct virtio_net_ctrl_coal {
289*bb4ee6a4SAndroid Build Coastguard Worker     pub max_packets: __le32,
290*bb4ee6a4SAndroid Build Coastguard Worker     pub max_usecs: __le32,
291*bb4ee6a4SAndroid Build Coastguard Worker }
292*bb4ee6a4SAndroid Build Coastguard Worker #[repr(C)]
293*bb4ee6a4SAndroid Build Coastguard Worker #[derive(Debug, Default, Copy, Clone)]
294*bb4ee6a4SAndroid Build Coastguard Worker pub struct virtio_net_ctrl_coal_vq {
295*bb4ee6a4SAndroid Build Coastguard Worker     pub vqn: __le16,
296*bb4ee6a4SAndroid Build Coastguard Worker     pub reserved: __le16,
297*bb4ee6a4SAndroid Build Coastguard Worker     pub coal: virtio_net_ctrl_coal,
298*bb4ee6a4SAndroid Build Coastguard Worker }
299