xref: /aosp_15_r20/bionic/libc/kernel/uapi/linux/virtio_net.h (revision 8d67ca893c1523eb926b9080dbe4e2ffd2a27ba1)
1*8d67ca89SAndroid Build Coastguard Worker /*
2*8d67ca89SAndroid Build Coastguard Worker  * This file is auto-generated. Modifications will be lost.
3*8d67ca89SAndroid Build Coastguard Worker  *
4*8d67ca89SAndroid Build Coastguard Worker  * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/
5*8d67ca89SAndroid Build Coastguard Worker  * for more information.
6*8d67ca89SAndroid Build Coastguard Worker  */
7*8d67ca89SAndroid Build Coastguard Worker #ifndef _UAPI_LINUX_VIRTIO_NET_H
8*8d67ca89SAndroid Build Coastguard Worker #define _UAPI_LINUX_VIRTIO_NET_H
9*8d67ca89SAndroid Build Coastguard Worker #include <linux/types.h>
10*8d67ca89SAndroid Build Coastguard Worker #include <linux/virtio_ids.h>
11*8d67ca89SAndroid Build Coastguard Worker #include <linux/virtio_config.h>
12*8d67ca89SAndroid Build Coastguard Worker #include <linux/virtio_types.h>
13*8d67ca89SAndroid Build Coastguard Worker #include <linux/if_ether.h>
14*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_F_CSUM 0
15*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_F_GUEST_CSUM 1
16*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_F_CTRL_GUEST_OFFLOADS 2
17*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_F_MTU 3
18*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_F_MAC 5
19*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_F_GUEST_TSO4 7
20*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_F_GUEST_TSO6 8
21*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_F_GUEST_ECN 9
22*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_F_GUEST_UFO 10
23*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_F_HOST_TSO4 11
24*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_F_HOST_TSO6 12
25*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_F_HOST_ECN 13
26*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_F_HOST_UFO 14
27*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_F_MRG_RXBUF 15
28*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_F_STATUS 16
29*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_F_CTRL_VQ 17
30*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_F_CTRL_RX 18
31*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_F_CTRL_VLAN 19
32*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_F_CTRL_RX_EXTRA 20
33*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_F_GUEST_ANNOUNCE 21
34*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_F_MQ 22
35*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_F_CTRL_MAC_ADDR 23
36*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_F_DEVICE_STATS 50
37*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_F_VQ_NOTF_COAL 52
38*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_F_NOTF_COAL 53
39*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_F_GUEST_USO4 54
40*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_F_GUEST_USO6 55
41*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_F_HOST_USO 56
42*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_F_HASH_REPORT 57
43*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_F_GUEST_HDRLEN 59
44*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_F_RSS 60
45*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_F_RSC_EXT 61
46*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_F_STANDBY 62
47*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_F_SPEED_DUPLEX 63
48*8d67ca89SAndroid Build Coastguard Worker #ifndef VIRTIO_NET_NO_LEGACY
49*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_F_GSO 6
50*8d67ca89SAndroid Build Coastguard Worker #endif
51*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_S_LINK_UP 1
52*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_S_ANNOUNCE 2
53*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_RSS_HASH_TYPE_IPv4 (1 << 0)
54*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_RSS_HASH_TYPE_TCPv4 (1 << 1)
55*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_RSS_HASH_TYPE_UDPv4 (1 << 2)
56*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_RSS_HASH_TYPE_IPv6 (1 << 3)
57*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_RSS_HASH_TYPE_TCPv6 (1 << 4)
58*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_RSS_HASH_TYPE_UDPv6 (1 << 5)
59*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_RSS_HASH_TYPE_IP_EX (1 << 6)
60*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_RSS_HASH_TYPE_TCP_EX (1 << 7)
61*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_RSS_HASH_TYPE_UDP_EX (1 << 8)
62*8d67ca89SAndroid Build Coastguard Worker struct virtio_net_config {
63*8d67ca89SAndroid Build Coastguard Worker   __u8 mac[ETH_ALEN];
64*8d67ca89SAndroid Build Coastguard Worker   __virtio16 status;
65*8d67ca89SAndroid Build Coastguard Worker   __virtio16 max_virtqueue_pairs;
66*8d67ca89SAndroid Build Coastguard Worker   __virtio16 mtu;
67*8d67ca89SAndroid Build Coastguard Worker   __le32 speed;
68*8d67ca89SAndroid Build Coastguard Worker   __u8 duplex;
69*8d67ca89SAndroid Build Coastguard Worker   __u8 rss_max_key_size;
70*8d67ca89SAndroid Build Coastguard Worker   __le16 rss_max_indirection_table_length;
71*8d67ca89SAndroid Build Coastguard Worker   __le32 supported_hash_types;
72*8d67ca89SAndroid Build Coastguard Worker } __attribute__((packed));
73*8d67ca89SAndroid Build Coastguard Worker struct virtio_net_hdr_v1 {
74*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_HDR_F_NEEDS_CSUM 1
75*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_HDR_F_DATA_VALID 2
76*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_HDR_F_RSC_INFO 4
77*8d67ca89SAndroid Build Coastguard Worker   __u8 flags;
78*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_HDR_GSO_NONE 0
79*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_HDR_GSO_TCPV4 1
80*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_HDR_GSO_UDP 3
81*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_HDR_GSO_TCPV6 4
82*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_HDR_GSO_UDP_L4 5
83*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_HDR_GSO_ECN 0x80
84*8d67ca89SAndroid Build Coastguard Worker   __u8 gso_type;
85*8d67ca89SAndroid Build Coastguard Worker   __virtio16 hdr_len;
86*8d67ca89SAndroid Build Coastguard Worker   __virtio16 gso_size;
87*8d67ca89SAndroid Build Coastguard Worker   union {
88*8d67ca89SAndroid Build Coastguard Worker     struct {
89*8d67ca89SAndroid Build Coastguard Worker       __virtio16 csum_start;
90*8d67ca89SAndroid Build Coastguard Worker       __virtio16 csum_offset;
91*8d67ca89SAndroid Build Coastguard Worker     };
92*8d67ca89SAndroid Build Coastguard Worker     struct {
93*8d67ca89SAndroid Build Coastguard Worker       __virtio16 start;
94*8d67ca89SAndroid Build Coastguard Worker       __virtio16 offset;
95*8d67ca89SAndroid Build Coastguard Worker     } csum;
96*8d67ca89SAndroid Build Coastguard Worker     struct {
97*8d67ca89SAndroid Build Coastguard Worker       __le16 segments;
98*8d67ca89SAndroid Build Coastguard Worker       __le16 dup_acks;
99*8d67ca89SAndroid Build Coastguard Worker     } rsc;
100*8d67ca89SAndroid Build Coastguard Worker   };
101*8d67ca89SAndroid Build Coastguard Worker   __virtio16 num_buffers;
102*8d67ca89SAndroid Build Coastguard Worker };
103*8d67ca89SAndroid Build Coastguard Worker struct virtio_net_hdr_v1_hash {
104*8d67ca89SAndroid Build Coastguard Worker   struct virtio_net_hdr_v1 hdr;
105*8d67ca89SAndroid Build Coastguard Worker   __le32 hash_value;
106*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_HASH_REPORT_NONE 0
107*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_HASH_REPORT_IPv4 1
108*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_HASH_REPORT_TCPv4 2
109*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_HASH_REPORT_UDPv4 3
110*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_HASH_REPORT_IPv6 4
111*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_HASH_REPORT_TCPv6 5
112*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_HASH_REPORT_UDPv6 6
113*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_HASH_REPORT_IPv6_EX 7
114*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_HASH_REPORT_TCPv6_EX 8
115*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_HASH_REPORT_UDPv6_EX 9
116*8d67ca89SAndroid Build Coastguard Worker   __le16 hash_report;
117*8d67ca89SAndroid Build Coastguard Worker   __le16 padding;
118*8d67ca89SAndroid Build Coastguard Worker };
119*8d67ca89SAndroid Build Coastguard Worker #ifndef VIRTIO_NET_NO_LEGACY
120*8d67ca89SAndroid Build Coastguard Worker struct virtio_net_hdr {
121*8d67ca89SAndroid Build Coastguard Worker   __u8 flags;
122*8d67ca89SAndroid Build Coastguard Worker   __u8 gso_type;
123*8d67ca89SAndroid Build Coastguard Worker   __virtio16 hdr_len;
124*8d67ca89SAndroid Build Coastguard Worker   __virtio16 gso_size;
125*8d67ca89SAndroid Build Coastguard Worker   __virtio16 csum_start;
126*8d67ca89SAndroid Build Coastguard Worker   __virtio16 csum_offset;
127*8d67ca89SAndroid Build Coastguard Worker };
128*8d67ca89SAndroid Build Coastguard Worker struct virtio_net_hdr_mrg_rxbuf {
129*8d67ca89SAndroid Build Coastguard Worker   struct virtio_net_hdr hdr;
130*8d67ca89SAndroid Build Coastguard Worker   __virtio16 num_buffers;
131*8d67ca89SAndroid Build Coastguard Worker };
132*8d67ca89SAndroid Build Coastguard Worker #endif
133*8d67ca89SAndroid Build Coastguard Worker struct virtio_net_ctrl_hdr {
134*8d67ca89SAndroid Build Coastguard Worker   __u8 __linux_class;
135*8d67ca89SAndroid Build Coastguard Worker   __u8 cmd;
136*8d67ca89SAndroid Build Coastguard Worker } __attribute__((packed));
137*8d67ca89SAndroid Build Coastguard Worker typedef __u8 virtio_net_ctrl_ack;
138*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_OK 0
139*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_ERR 1
140*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_CTRL_RX 0
141*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_CTRL_RX_PROMISC 0
142*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_CTRL_RX_ALLMULTI 1
143*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_CTRL_RX_ALLUNI 2
144*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_CTRL_RX_NOMULTI 3
145*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_CTRL_RX_NOUNI 4
146*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_CTRL_RX_NOBCAST 5
147*8d67ca89SAndroid Build Coastguard Worker struct virtio_net_ctrl_mac {
148*8d67ca89SAndroid Build Coastguard Worker   __virtio32 entries;
149*8d67ca89SAndroid Build Coastguard Worker   __u8 macs[][ETH_ALEN];
150*8d67ca89SAndroid Build Coastguard Worker } __attribute__((packed));
151*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_CTRL_MAC 1
152*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_CTRL_MAC_TABLE_SET 0
153*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_CTRL_MAC_ADDR_SET 1
154*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_CTRL_VLAN 2
155*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_CTRL_VLAN_ADD 0
156*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_CTRL_VLAN_DEL 1
157*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_CTRL_ANNOUNCE 3
158*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_CTRL_ANNOUNCE_ACK 0
159*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_CTRL_MQ 4
160*8d67ca89SAndroid Build Coastguard Worker struct virtio_net_ctrl_mq {
161*8d67ca89SAndroid Build Coastguard Worker   __virtio16 virtqueue_pairs;
162*8d67ca89SAndroid Build Coastguard Worker };
163*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_CTRL_MQ_VQ_PAIRS_SET 0
164*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MIN 1
165*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MAX 0x8000
166*8d67ca89SAndroid Build Coastguard Worker struct virtio_net_rss_config {
167*8d67ca89SAndroid Build Coastguard Worker   __le32 hash_types;
168*8d67ca89SAndroid Build Coastguard Worker   __le16 indirection_table_mask;
169*8d67ca89SAndroid Build Coastguard Worker   __le16 unclassified_queue;
170*8d67ca89SAndroid Build Coastguard Worker   __le16 indirection_table[1];
171*8d67ca89SAndroid Build Coastguard Worker   __le16 max_tx_vq;
172*8d67ca89SAndroid Build Coastguard Worker   __u8 hash_key_length;
173*8d67ca89SAndroid Build Coastguard Worker   __u8 hash_key_data[];
174*8d67ca89SAndroid Build Coastguard Worker };
175*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_CTRL_MQ_RSS_CONFIG 1
176*8d67ca89SAndroid Build Coastguard Worker struct virtio_net_hash_config {
177*8d67ca89SAndroid Build Coastguard Worker   __le32 hash_types;
178*8d67ca89SAndroid Build Coastguard Worker   __le16 reserved[4];
179*8d67ca89SAndroid Build Coastguard Worker   __u8 hash_key_length;
180*8d67ca89SAndroid Build Coastguard Worker   __u8 hash_key_data[];
181*8d67ca89SAndroid Build Coastguard Worker };
182*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_CTRL_MQ_HASH_CONFIG 2
183*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_CTRL_GUEST_OFFLOADS 5
184*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_CTRL_GUEST_OFFLOADS_SET 0
185*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_CTRL_NOTF_COAL 6
186*8d67ca89SAndroid Build Coastguard Worker struct virtio_net_ctrl_coal_tx {
187*8d67ca89SAndroid Build Coastguard Worker   __le32 tx_max_packets;
188*8d67ca89SAndroid Build Coastguard Worker   __le32 tx_usecs;
189*8d67ca89SAndroid Build Coastguard Worker };
190*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_CTRL_NOTF_COAL_TX_SET 0
191*8d67ca89SAndroid Build Coastguard Worker struct virtio_net_ctrl_coal_rx {
192*8d67ca89SAndroid Build Coastguard Worker   __le32 rx_max_packets;
193*8d67ca89SAndroid Build Coastguard Worker   __le32 rx_usecs;
194*8d67ca89SAndroid Build Coastguard Worker };
195*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_CTRL_NOTF_COAL_RX_SET 1
196*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_CTRL_NOTF_COAL_VQ_SET 2
197*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_CTRL_NOTF_COAL_VQ_GET 3
198*8d67ca89SAndroid Build Coastguard Worker struct virtio_net_ctrl_coal {
199*8d67ca89SAndroid Build Coastguard Worker   __le32 max_packets;
200*8d67ca89SAndroid Build Coastguard Worker   __le32 max_usecs;
201*8d67ca89SAndroid Build Coastguard Worker };
202*8d67ca89SAndroid Build Coastguard Worker struct virtio_net_ctrl_coal_vq {
203*8d67ca89SAndroid Build Coastguard Worker   __le16 vqn;
204*8d67ca89SAndroid Build Coastguard Worker   __le16 reserved;
205*8d67ca89SAndroid Build Coastguard Worker   struct virtio_net_ctrl_coal coal;
206*8d67ca89SAndroid Build Coastguard Worker };
207*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_CTRL_STATS 8
208*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_CTRL_STATS_QUERY 0
209*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_CTRL_STATS_GET 1
210*8d67ca89SAndroid Build Coastguard Worker struct virtio_net_stats_capabilities {
211*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_STATS_TYPE_CVQ (1ULL << 32)
212*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_STATS_TYPE_RX_BASIC (1ULL << 0)
213*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_STATS_TYPE_RX_CSUM (1ULL << 1)
214*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_STATS_TYPE_RX_GSO (1ULL << 2)
215*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_STATS_TYPE_RX_SPEED (1ULL << 3)
216*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_STATS_TYPE_TX_BASIC (1ULL << 16)
217*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_STATS_TYPE_TX_CSUM (1ULL << 17)
218*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_STATS_TYPE_TX_GSO (1ULL << 18)
219*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_STATS_TYPE_TX_SPEED (1ULL << 19)
220*8d67ca89SAndroid Build Coastguard Worker   __le64 supported_stats_types[1];
221*8d67ca89SAndroid Build Coastguard Worker };
222*8d67ca89SAndroid Build Coastguard Worker struct virtio_net_ctrl_queue_stats {
223*8d67ca89SAndroid Build Coastguard Worker   struct {
224*8d67ca89SAndroid Build Coastguard Worker     __le16 vq_index;
225*8d67ca89SAndroid Build Coastguard Worker     __le16 reserved[3];
226*8d67ca89SAndroid Build Coastguard Worker     __le64 types_bitmap[1];
227*8d67ca89SAndroid Build Coastguard Worker   } stats[1];
228*8d67ca89SAndroid Build Coastguard Worker };
229*8d67ca89SAndroid Build Coastguard Worker struct virtio_net_stats_reply_hdr {
230*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_STATS_TYPE_REPLY_CVQ 32
231*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_STATS_TYPE_REPLY_RX_BASIC 0
232*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_STATS_TYPE_REPLY_RX_CSUM 1
233*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_STATS_TYPE_REPLY_RX_GSO 2
234*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_STATS_TYPE_REPLY_RX_SPEED 3
235*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_STATS_TYPE_REPLY_TX_BASIC 16
236*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_STATS_TYPE_REPLY_TX_CSUM 17
237*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_STATS_TYPE_REPLY_TX_GSO 18
238*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_NET_STATS_TYPE_REPLY_TX_SPEED 19
239*8d67ca89SAndroid Build Coastguard Worker   __u8 type;
240*8d67ca89SAndroid Build Coastguard Worker   __u8 reserved;
241*8d67ca89SAndroid Build Coastguard Worker   __le16 vq_index;
242*8d67ca89SAndroid Build Coastguard Worker   __le16 reserved1;
243*8d67ca89SAndroid Build Coastguard Worker   __le16 size;
244*8d67ca89SAndroid Build Coastguard Worker };
245*8d67ca89SAndroid Build Coastguard Worker struct virtio_net_stats_cvq {
246*8d67ca89SAndroid Build Coastguard Worker   struct virtio_net_stats_reply_hdr hdr;
247*8d67ca89SAndroid Build Coastguard Worker   __le64 command_num;
248*8d67ca89SAndroid Build Coastguard Worker   __le64 ok_num;
249*8d67ca89SAndroid Build Coastguard Worker };
250*8d67ca89SAndroid Build Coastguard Worker struct virtio_net_stats_rx_basic {
251*8d67ca89SAndroid Build Coastguard Worker   struct virtio_net_stats_reply_hdr hdr;
252*8d67ca89SAndroid Build Coastguard Worker   __le64 rx_notifications;
253*8d67ca89SAndroid Build Coastguard Worker   __le64 rx_packets;
254*8d67ca89SAndroid Build Coastguard Worker   __le64 rx_bytes;
255*8d67ca89SAndroid Build Coastguard Worker   __le64 rx_interrupts;
256*8d67ca89SAndroid Build Coastguard Worker   __le64 rx_drops;
257*8d67ca89SAndroid Build Coastguard Worker   __le64 rx_drop_overruns;
258*8d67ca89SAndroid Build Coastguard Worker };
259*8d67ca89SAndroid Build Coastguard Worker struct virtio_net_stats_tx_basic {
260*8d67ca89SAndroid Build Coastguard Worker   struct virtio_net_stats_reply_hdr hdr;
261*8d67ca89SAndroid Build Coastguard Worker   __le64 tx_notifications;
262*8d67ca89SAndroid Build Coastguard Worker   __le64 tx_packets;
263*8d67ca89SAndroid Build Coastguard Worker   __le64 tx_bytes;
264*8d67ca89SAndroid Build Coastguard Worker   __le64 tx_interrupts;
265*8d67ca89SAndroid Build Coastguard Worker   __le64 tx_drops;
266*8d67ca89SAndroid Build Coastguard Worker   __le64 tx_drop_malformed;
267*8d67ca89SAndroid Build Coastguard Worker };
268*8d67ca89SAndroid Build Coastguard Worker struct virtio_net_stats_rx_csum {
269*8d67ca89SAndroid Build Coastguard Worker   struct virtio_net_stats_reply_hdr hdr;
270*8d67ca89SAndroid Build Coastguard Worker   __le64 rx_csum_valid;
271*8d67ca89SAndroid Build Coastguard Worker   __le64 rx_needs_csum;
272*8d67ca89SAndroid Build Coastguard Worker   __le64 rx_csum_none;
273*8d67ca89SAndroid Build Coastguard Worker   __le64 rx_csum_bad;
274*8d67ca89SAndroid Build Coastguard Worker };
275*8d67ca89SAndroid Build Coastguard Worker struct virtio_net_stats_tx_csum {
276*8d67ca89SAndroid Build Coastguard Worker   struct virtio_net_stats_reply_hdr hdr;
277*8d67ca89SAndroid Build Coastguard Worker   __le64 tx_csum_none;
278*8d67ca89SAndroid Build Coastguard Worker   __le64 tx_needs_csum;
279*8d67ca89SAndroid Build Coastguard Worker };
280*8d67ca89SAndroid Build Coastguard Worker struct virtio_net_stats_rx_gso {
281*8d67ca89SAndroid Build Coastguard Worker   struct virtio_net_stats_reply_hdr hdr;
282*8d67ca89SAndroid Build Coastguard Worker   __le64 rx_gso_packets;
283*8d67ca89SAndroid Build Coastguard Worker   __le64 rx_gso_bytes;
284*8d67ca89SAndroid Build Coastguard Worker   __le64 rx_gso_packets_coalesced;
285*8d67ca89SAndroid Build Coastguard Worker   __le64 rx_gso_bytes_coalesced;
286*8d67ca89SAndroid Build Coastguard Worker };
287*8d67ca89SAndroid Build Coastguard Worker struct virtio_net_stats_tx_gso {
288*8d67ca89SAndroid Build Coastguard Worker   struct virtio_net_stats_reply_hdr hdr;
289*8d67ca89SAndroid Build Coastguard Worker   __le64 tx_gso_packets;
290*8d67ca89SAndroid Build Coastguard Worker   __le64 tx_gso_bytes;
291*8d67ca89SAndroid Build Coastguard Worker   __le64 tx_gso_segments;
292*8d67ca89SAndroid Build Coastguard Worker   __le64 tx_gso_segments_bytes;
293*8d67ca89SAndroid Build Coastguard Worker   __le64 tx_gso_packets_noseg;
294*8d67ca89SAndroid Build Coastguard Worker   __le64 tx_gso_bytes_noseg;
295*8d67ca89SAndroid Build Coastguard Worker };
296*8d67ca89SAndroid Build Coastguard Worker struct virtio_net_stats_rx_speed {
297*8d67ca89SAndroid Build Coastguard Worker   struct virtio_net_stats_reply_hdr hdr;
298*8d67ca89SAndroid Build Coastguard Worker   __le64 rx_ratelimit_packets;
299*8d67ca89SAndroid Build Coastguard Worker   __le64 rx_ratelimit_bytes;
300*8d67ca89SAndroid Build Coastguard Worker };
301*8d67ca89SAndroid Build Coastguard Worker struct virtio_net_stats_tx_speed {
302*8d67ca89SAndroid Build Coastguard Worker   struct virtio_net_stats_reply_hdr hdr;
303*8d67ca89SAndroid Build Coastguard Worker   __le64 tx_ratelimit_packets;
304*8d67ca89SAndroid Build Coastguard Worker   __le64 tx_ratelimit_bytes;
305*8d67ca89SAndroid Build Coastguard Worker };
306*8d67ca89SAndroid Build Coastguard Worker #endif
307