1655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng/**************************************************************************** 2655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng **************************************************************************** 3655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng *** 4655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng *** This header was automatically generated from a Linux kernel header 5655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng *** of the same name, to make information necessary for userspace to 6655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng *** call into the kernel available to libc. It contains only constants, 7655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng *** structures, and macros generated from the original header, and thus, 8655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng *** contains no copyrightable information. 9655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng *** 10655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng *** To edit the content of this header, modify the corresponding 11655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng *** source file (e.g. under external/kernel-headers/original/) then 12655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng *** run bionic/libc/kernel/tools/update_all.py 13655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng *** 14655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng *** Any manual change here will be lost the next time this script will 15655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng *** be run. You've been warned! 16655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng *** 17655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng **************************************************************************** 18655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ****************************************************************************/ 1949f525c47bd383cd6a87db8f067cddb3ab620d17Christopher Ferris#ifndef _UAPI_LINUX_VIRTIO_NET_H 2049f525c47bd383cd6a87db8f067cddb3ab620d17Christopher Ferris#define _UAPI_LINUX_VIRTIO_NET_H 21655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#include <linux/types.h> 22655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#include <linux/virtio_ids.h> 23655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#include <linux/virtio_config.h> 2405d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#include <linux/virtio_types.h> 25655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#include <linux/if_ether.h> 26655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define VIRTIO_NET_F_CSUM 0 2705d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#define VIRTIO_NET_F_GUEST_CSUM 1 2805d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#define VIRTIO_NET_F_CTRL_GUEST_OFFLOADS 2 2949f525c47bd383cd6a87db8f067cddb3ab620d17Christopher Ferris#define VIRTIO_NET_F_MTU 3 30655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define VIRTIO_NET_F_MAC 5 3149f525c47bd383cd6a87db8f067cddb3ab620d17Christopher Ferris#define VIRTIO_NET_F_GUEST_TSO4 7 3205d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#define VIRTIO_NET_F_GUEST_TSO6 8 33655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define VIRTIO_NET_F_GUEST_ECN 9 34655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define VIRTIO_NET_F_GUEST_UFO 10 3549f525c47bd383cd6a87db8f067cddb3ab620d17Christopher Ferris#define VIRTIO_NET_F_HOST_TSO4 11 3605d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#define VIRTIO_NET_F_HOST_TSO6 12 37655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define VIRTIO_NET_F_HOST_ECN 13 38655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define VIRTIO_NET_F_HOST_UFO 14 3949f525c47bd383cd6a87db8f067cddb3ab620d17Christopher Ferris#define VIRTIO_NET_F_MRG_RXBUF 15 4005d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#define VIRTIO_NET_F_STATUS 16 41655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define VIRTIO_NET_F_CTRL_VQ 17 42655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define VIRTIO_NET_F_CTRL_RX 18 4349f525c47bd383cd6a87db8f067cddb3ab620d17Christopher Ferris#define VIRTIO_NET_F_CTRL_VLAN 19 4405d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#define VIRTIO_NET_F_CTRL_RX_EXTRA 20 45655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define VIRTIO_NET_F_GUEST_ANNOUNCE 21 46655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define VIRTIO_NET_F_MQ 22 4749f525c47bd383cd6a87db8f067cddb3ab620d17Christopher Ferris#define VIRTIO_NET_F_CTRL_MAC_ADDR 23 4805d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#ifndef VIRTIO_NET_NO_LEGACY 4905d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#define VIRTIO_NET_F_GSO 6 5005d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#endif 5149f525c47bd383cd6a87db8f067cddb3ab620d17Christopher Ferris#define VIRTIO_NET_S_LINK_UP 1 52655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define VIRTIO_NET_S_ANNOUNCE 2 53655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct virtio_net_config { 54d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao __u8 mac[ETH_ALEN]; 5549f525c47bd383cd6a87db8f067cddb3ab620d17Christopher Ferris __u16 status; 56d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao __u16 max_virtqueue_pairs; 5749f525c47bd383cd6a87db8f067cddb3ab620d17Christopher Ferris __u16 mtu; 58655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng} __attribute__((packed)); 5905d08e9716b5974d6ed08973f44930804890b902Christopher Ferrisstruct virtio_net_hdr_v1 { 60655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define VIRTIO_NET_HDR_F_NEEDS_CSUM 1 61655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define VIRTIO_NET_HDR_F_DATA_VALID 2 62d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao __u8 flags; 63655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define VIRTIO_NET_HDR_GSO_NONE 0 64655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define VIRTIO_NET_HDR_GSO_TCPV4 1 65655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define VIRTIO_NET_HDR_GSO_UDP 3 66655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define VIRTIO_NET_HDR_GSO_TCPV6 4 67655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define VIRTIO_NET_HDR_GSO_ECN 0x80 68d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao __u8 gso_type; 6905d08e9716b5974d6ed08973f44930804890b902Christopher Ferris __virtio16 hdr_len; 7005d08e9716b5974d6ed08973f44930804890b902Christopher Ferris __virtio16 gso_size; 7105d08e9716b5974d6ed08973f44930804890b902Christopher Ferris __virtio16 csum_start; 7205d08e9716b5974d6ed08973f44930804890b902Christopher Ferris __virtio16 csum_offset; 7305d08e9716b5974d6ed08973f44930804890b902Christopher Ferris __virtio16 num_buffers; 7405d08e9716b5974d6ed08973f44930804890b902Christopher Ferris}; 7505d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#ifndef VIRTIO_NET_NO_LEGACY 7605d08e9716b5974d6ed08973f44930804890b902Christopher Ferrisstruct virtio_net_hdr { 7705d08e9716b5974d6ed08973f44930804890b902Christopher Ferris __u8 flags; 7805d08e9716b5974d6ed08973f44930804890b902Christopher Ferris __u8 gso_type; 7905d08e9716b5974d6ed08973f44930804890b902Christopher Ferris __virtio16 hdr_len; 8005d08e9716b5974d6ed08973f44930804890b902Christopher Ferris __virtio16 gso_size; 8105d08e9716b5974d6ed08973f44930804890b902Christopher Ferris __virtio16 csum_start; 8205d08e9716b5974d6ed08973f44930804890b902Christopher Ferris __virtio16 csum_offset; 83655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng}; 84655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct virtio_net_hdr_mrg_rxbuf { 8505d08e9716b5974d6ed08973f44930804890b902Christopher Ferris struct virtio_net_hdr hdr; 8605d08e9716b5974d6ed08973f44930804890b902Christopher Ferris __virtio16 num_buffers; 87655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng}; 8805d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#endif 89655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct virtio_net_ctrl_hdr { 90d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao __u8 class; 91d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao __u8 cmd; 92655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng} __attribute__((packed)); 93655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengtypedef __u8 virtio_net_ctrl_ack; 94655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define VIRTIO_NET_OK 0 95655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define VIRTIO_NET_ERR 1 96655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define VIRTIO_NET_CTRL_RX 0 97655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define VIRTIO_NET_CTRL_RX_PROMISC 0 98655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define VIRTIO_NET_CTRL_RX_ALLMULTI 1 99655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define VIRTIO_NET_CTRL_RX_ALLUNI 2 100655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define VIRTIO_NET_CTRL_RX_NOMULTI 3 101655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define VIRTIO_NET_CTRL_RX_NOUNI 4 102655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define VIRTIO_NET_CTRL_RX_NOBCAST 5 103655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct virtio_net_ctrl_mac { 10405d08e9716b5974d6ed08973f44930804890b902Christopher Ferris __virtio32 entries; 105d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao __u8 macs[][ETH_ALEN]; 106655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng} __attribute__((packed)); 107655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define VIRTIO_NET_CTRL_MAC 1 108655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define VIRTIO_NET_CTRL_MAC_TABLE_SET 0 109655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define VIRTIO_NET_CTRL_MAC_ADDR_SET 1 110655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define VIRTIO_NET_CTRL_VLAN 2 111655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define VIRTIO_NET_CTRL_VLAN_ADD 0 112655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define VIRTIO_NET_CTRL_VLAN_DEL 1 113655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define VIRTIO_NET_CTRL_ANNOUNCE 3 114655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define VIRTIO_NET_CTRL_ANNOUNCE_ACK 0 115655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct virtio_net_ctrl_mq { 11605d08e9716b5974d6ed08973f44930804890b902Christopher Ferris __virtio16 virtqueue_pairs; 117655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng}; 118655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define VIRTIO_NET_CTRL_MQ 4 119655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define VIRTIO_NET_CTRL_MQ_VQ_PAIRS_SET 0 120655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MIN 1 121655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MAX 0x8000 12205d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#define VIRTIO_NET_CTRL_GUEST_OFFLOADS 5 12305d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#define VIRTIO_NET_CTRL_GUEST_OFFLOADS_SET 0 124655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#endif 125