Update to v5.7 kernel headers.

Kernel headers coming from:

Git: https://android.googlesource.com/kernel/common/
Branch: android-mainline
Tag: android-mainline-5.7

Update the generate_uapi_headers.sh where the types.h file is now in
the right place, but kvm.h is not.

Test: Booted cuttlefish/bonito.
Test: Ran bionic-unit-tests on cuttlefish/bonito.
Change-Id: Ice9ce370a658e320b80f564b34a4431927fcf100
diff --git a/libc/kernel/uapi/linux/virtio_net.h b/libc/kernel/uapi/linux/virtio_net.h
index 07afd06..cd53e16 100644
--- a/libc/kernel/uapi/linux/virtio_net.h
+++ b/libc/kernel/uapi/linux/virtio_net.h
@@ -45,6 +45,9 @@
 #define VIRTIO_NET_F_GUEST_ANNOUNCE 21
 #define VIRTIO_NET_F_MQ 22
 #define VIRTIO_NET_F_CTRL_MAC_ADDR 23
+#define VIRTIO_NET_F_HASH_REPORT 57
+#define VIRTIO_NET_F_RSS 60
+#define VIRTIO_NET_F_RSC_EXT 61
 #define VIRTIO_NET_F_STANDBY 62
 #define VIRTIO_NET_F_SPEED_DUPLEX 63
 #ifndef VIRTIO_NET_NO_LEGACY
@@ -52,6 +55,15 @@
 #endif
 #define VIRTIO_NET_S_LINK_UP 1
 #define VIRTIO_NET_S_ANNOUNCE 2
+#define VIRTIO_NET_RSS_HASH_TYPE_IPv4 (1 << 0)
+#define VIRTIO_NET_RSS_HASH_TYPE_TCPv4 (1 << 1)
+#define VIRTIO_NET_RSS_HASH_TYPE_UDPv4 (1 << 2)
+#define VIRTIO_NET_RSS_HASH_TYPE_IPv6 (1 << 3)
+#define VIRTIO_NET_RSS_HASH_TYPE_TCPv6 (1 << 4)
+#define VIRTIO_NET_RSS_HASH_TYPE_UDPv6 (1 << 5)
+#define VIRTIO_NET_RSS_HASH_TYPE_IP_EX (1 << 6)
+#define VIRTIO_NET_RSS_HASH_TYPE_TCP_EX (1 << 7)
+#define VIRTIO_NET_RSS_HASH_TYPE_UDP_EX (1 << 8)
 struct virtio_net_config {
   __u8 mac[ETH_ALEN];
   __u16 status;
@@ -59,10 +71,14 @@
   __u16 mtu;
   __u32 speed;
   __u8 duplex;
+  __u8 rss_max_key_size;
+  __le16 rss_max_indirection_table_length;
+  __le32 supported_hash_types;
 } __attribute__((packed));
 struct virtio_net_hdr_v1 {
 #define VIRTIO_NET_HDR_F_NEEDS_CSUM 1
 #define VIRTIO_NET_HDR_F_DATA_VALID 2
+#define VIRTIO_NET_HDR_F_RSC_INFO 4
   __u8 flags;
 #define VIRTIO_NET_HDR_GSO_NONE 0
 #define VIRTIO_NET_HDR_GSO_TCPV4 1
@@ -72,10 +88,38 @@
   __u8 gso_type;
   __virtio16 hdr_len;
   __virtio16 gso_size;
-  __virtio16 csum_start;
-  __virtio16 csum_offset;
+  union {
+    struct {
+      __virtio16 csum_start;
+      __virtio16 csum_offset;
+    };
+    struct {
+      __virtio16 start;
+      __virtio16 offset;
+    } csum;
+    struct {
+      __le16 segments;
+      __le16 dup_acks;
+    } rsc;
+  };
   __virtio16 num_buffers;
 };
+struct virtio_net_hdr_v1_hash {
+  struct virtio_net_hdr_v1 hdr;
+  __le32 hash_value;
+#define VIRTIO_NET_HASH_REPORT_NONE 0
+#define VIRTIO_NET_HASH_REPORT_IPv4 1
+#define VIRTIO_NET_HASH_REPORT_TCPv4 2
+#define VIRTIO_NET_HASH_REPORT_UDPv4 3
+#define VIRTIO_NET_HASH_REPORT_IPv6 4
+#define VIRTIO_NET_HASH_REPORT_TCPv6 5
+#define VIRTIO_NET_HASH_REPORT_UDPv6 6
+#define VIRTIO_NET_HASH_REPORT_IPv6_EX 7
+#define VIRTIO_NET_HASH_REPORT_TCPv6_EX 8
+#define VIRTIO_NET_HASH_REPORT_UDPv6_EX 9
+  __le16 hash_report;
+  __le16 padding;
+};
 #ifndef VIRTIO_NET_NO_LEGACY
 struct virtio_net_hdr {
   __u8 flags;
@@ -116,13 +160,30 @@
 #define VIRTIO_NET_CTRL_VLAN_DEL 1
 #define VIRTIO_NET_CTRL_ANNOUNCE 3
 #define VIRTIO_NET_CTRL_ANNOUNCE_ACK 0
+#define VIRTIO_NET_CTRL_MQ 4
 struct virtio_net_ctrl_mq {
   __virtio16 virtqueue_pairs;
 };
-#define VIRTIO_NET_CTRL_MQ 4
 #define VIRTIO_NET_CTRL_MQ_VQ_PAIRS_SET 0
 #define VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MIN 1
 #define VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MAX 0x8000
+struct virtio_net_rss_config {
+  __le32 hash_types;
+  __le16 indirection_table_mask;
+  __le16 unclassified_queue;
+  __le16 indirection_table[1];
+  __le16 max_tx_vq;
+  __u8 hash_key_length;
+  __u8 hash_key_data[];
+};
+#define VIRTIO_NET_CTRL_MQ_RSS_CONFIG 1
+struct virtio_net_hash_config {
+  __le32 hash_types;
+  __le16 reserved[4];
+  __u8 hash_key_length;
+  __u8 hash_key_data[];
+};
+#define VIRTIO_NET_CTRL_MQ_HASH_CONFIG 2
 #define VIRTIO_NET_CTRL_GUEST_OFFLOADS 5
 #define VIRTIO_NET_CTRL_GUEST_OFFLOADS_SET 0
 #endif