Update to kernel headers to v5.1.3.

Test: Builds and boots taimen.
Test: Ran bionic unit tests.
Change-Id: Ieaca8709d568f075df8cac60c9da2c0ed1916963
diff --git a/libc/kernel/uapi/linux/auto_fs.h b/libc/kernel/uapi/linux/auto_fs.h
index 9a9dd65..39d1ac8 100644
--- a/libc/kernel/uapi/linux/auto_fs.h
+++ b/libc/kernel/uapi/linux/auto_fs.h
@@ -24,7 +24,7 @@
 #define AUTOFS_PROTO_VERSION 5
 #define AUTOFS_MIN_PROTO_VERSION 3
 #define AUTOFS_MAX_PROTO_VERSION 5
-#define AUTOFS_PROTO_SUBVERSION 4
+#define AUTOFS_PROTO_SUBVERSION 5
 #if defined(__ia64__) || defined(__alpha__)
 typedef unsigned long autofs_wqt_t;
 #else
diff --git a/libc/kernel/uapi/linux/batman_adv.h b/libc/kernel/uapi/linux/batman_adv.h
index efec2bb..9cad20a 100644
--- a/libc/kernel/uapi/linux/batman_adv.h
+++ b/libc/kernel/uapi/linux/batman_adv.h
@@ -19,6 +19,7 @@
 #ifndef _UAPI_LINUX_BATMAN_ADV_H_
 #define _UAPI_LINUX_BATMAN_ADV_H_
 #define BATADV_NL_NAME "batadv"
+#define BATADV_NL_MCAST_GROUP_CONFIG "config"
 #define BATADV_NL_MCAST_GROUP_TPMETER "tpmeter"
 enum batadv_tt_client_flags {
   BATADV_TT_CLIENT_DEL = (1 << 0),
@@ -37,6 +38,11 @@
   BATADV_MCAST_FLAGS_QUERIER_IPV4_SHADOWING = (1 << 3),
   BATADV_MCAST_FLAGS_QUERIER_IPV6_SHADOWING = (1 << 4),
 };
+enum batadv_gw_modes {
+  BATADV_GW_MODE_OFF,
+  BATADV_GW_MODE_CLIENT,
+  BATADV_GW_MODE_SERVER,
+};
 enum batadv_nl_attrs {
   BATADV_ATTR_UNSPEC,
   BATADV_ATTR_VERSION,
@@ -78,17 +84,39 @@
   BATADV_ATTR_DAT_CACHE_VID,
   BATADV_ATTR_MCAST_FLAGS,
   BATADV_ATTR_MCAST_FLAGS_PRIV,
+  BATADV_ATTR_VLANID,
+  BATADV_ATTR_AGGREGATED_OGMS_ENABLED,
+  BATADV_ATTR_AP_ISOLATION_ENABLED,
+  BATADV_ATTR_ISOLATION_MARK,
+  BATADV_ATTR_ISOLATION_MASK,
+  BATADV_ATTR_BONDING_ENABLED,
+  BATADV_ATTR_BRIDGE_LOOP_AVOIDANCE_ENABLED,
+  BATADV_ATTR_DISTRIBUTED_ARP_TABLE_ENABLED,
+  BATADV_ATTR_FRAGMENTATION_ENABLED,
+  BATADV_ATTR_GW_BANDWIDTH_DOWN,
+  BATADV_ATTR_GW_BANDWIDTH_UP,
+  BATADV_ATTR_GW_MODE,
+  BATADV_ATTR_GW_SEL_CLASS,
+  BATADV_ATTR_HOP_PENALTY,
+  BATADV_ATTR_LOG_LEVEL,
+  BATADV_ATTR_MULTICAST_FORCEFLOOD_ENABLED,
+  BATADV_ATTR_NETWORK_CODING_ENABLED,
+  BATADV_ATTR_ORIG_INTERVAL,
+  BATADV_ATTR_ELP_INTERVAL,
+  BATADV_ATTR_THROUGHPUT_OVERRIDE,
   __BATADV_ATTR_AFTER_LAST,
   NUM_BATADV_ATTR = __BATADV_ATTR_AFTER_LAST,
   BATADV_ATTR_MAX = __BATADV_ATTR_AFTER_LAST - 1
 };
 enum batadv_nl_commands {
   BATADV_CMD_UNSPEC,
-  BATADV_CMD_GET_MESH_INFO,
+  BATADV_CMD_GET_MESH,
+  BATADV_CMD_GET_MESH_INFO = BATADV_CMD_GET_MESH,
   BATADV_CMD_TP_METER,
   BATADV_CMD_TP_METER_CANCEL,
   BATADV_CMD_GET_ROUTING_ALGOS,
-  BATADV_CMD_GET_HARDIFS,
+  BATADV_CMD_GET_HARDIF,
+  BATADV_CMD_GET_HARDIFS = BATADV_CMD_GET_HARDIF,
   BATADV_CMD_GET_TRANSTABLE_LOCAL,
   BATADV_CMD_GET_TRANSTABLE_GLOBAL,
   BATADV_CMD_GET_ORIGINATORS,
@@ -98,6 +126,10 @@
   BATADV_CMD_GET_BLA_BACKBONE,
   BATADV_CMD_GET_DAT_CACHE,
   BATADV_CMD_GET_MCAST_FLAGS,
+  BATADV_CMD_SET_MESH,
+  BATADV_CMD_SET_HARDIF,
+  BATADV_CMD_GET_VLAN,
+  BATADV_CMD_SET_VLAN,
   __BATADV_CMD_AFTER_LAST,
   BATADV_CMD_MAX = __BATADV_CMD_AFTER_LAST - 1
 };
diff --git a/libc/kernel/uapi/linux/binfmts.h b/libc/kernel/uapi/linux/binfmts.h
index 729008e..8c4fed0 100644
--- a/libc/kernel/uapi/linux/binfmts.h
+++ b/libc/kernel/uapi/linux/binfmts.h
@@ -22,5 +22,5 @@
 struct pt_regs;
 #define MAX_ARG_STRLEN (PAGE_SIZE * 32)
 #define MAX_ARG_STRINGS 0x7FFFFFFF
-#define BINPRM_BUF_SIZE 128
+#define BINPRM_BUF_SIZE 256
 #endif
diff --git a/libc/kernel/uapi/linux/bpf.h b/libc/kernel/uapi/linux/bpf.h
index 894b9f7..edae893 100644
--- a/libc/kernel/uapi/linux/bpf.h
+++ b/libc/kernel/uapi/linux/bpf.h
@@ -20,6 +20,7 @@
 #define _UAPI__LINUX_BPF_H__
 #include <linux/types.h>
 #include <linux/bpf_common.h>
+#define BPF_JMP32 0x06
 #define BPF_ALU64 0x07
 #define BPF_DW 0x18
 #define BPF_XADD 0xc0
@@ -175,6 +176,7 @@
 #define BPF_ANY 0
 #define BPF_NOEXIST 1
 #define BPF_EXIST 2
+#define BPF_F_LOCK 4
 #define BPF_F_NO_PREALLOC (1U << 0)
 #define BPF_F_NO_COMMON_LRU (1U << 1)
 #define BPF_F_NUMA_NODE (1U << 2)
@@ -310,7 +312,7 @@
     __u64 probe_addr;
   } task_fd_query;
 } __attribute__((aligned(8)));
-#define __BPF_FUNC_MAPPER(FN) FN(unspec), FN(map_lookup_elem), FN(map_update_elem), FN(map_delete_elem), FN(probe_read), FN(ktime_get_ns), FN(trace_printk), FN(get_prandom_u32), FN(get_smp_processor_id), FN(skb_store_bytes), FN(l3_csum_replace), FN(l4_csum_replace), FN(tail_call), FN(clone_redirect), FN(get_current_pid_tgid), FN(get_current_uid_gid), FN(get_current_comm), FN(get_cgroup_classid), FN(skb_vlan_push), FN(skb_vlan_pop), FN(skb_get_tunnel_key), FN(skb_set_tunnel_key), FN(perf_event_read), FN(redirect), FN(get_route_realm), FN(perf_event_output), FN(skb_load_bytes), FN(get_stackid), FN(csum_diff), FN(skb_get_tunnel_opt), FN(skb_set_tunnel_opt), FN(skb_change_proto), FN(skb_change_type), FN(skb_under_cgroup), FN(get_hash_recalc), FN(get_current_task), FN(probe_write_user), FN(current_task_under_cgroup), FN(skb_change_tail), FN(skb_pull_data), FN(csum_update), FN(set_hash_invalid), FN(get_numa_node_id), FN(skb_change_head), FN(xdp_adjust_head), FN(probe_read_str), FN(get_socket_cookie), FN(get_socket_uid), FN(set_hash), FN(setsockopt), FN(skb_adjust_room), FN(redirect_map), FN(sk_redirect_map), FN(sock_map_update), FN(xdp_adjust_meta), FN(perf_event_read_value), FN(perf_prog_read_value), FN(getsockopt), FN(override_return), FN(sock_ops_cb_flags_set), FN(msg_redirect_map), FN(msg_apply_bytes), FN(msg_cork_bytes), FN(msg_pull_data), FN(bind), FN(xdp_adjust_tail), FN(skb_get_xfrm_state), FN(get_stack), FN(skb_load_bytes_relative), FN(fib_lookup), FN(sock_hash_update), FN(msg_redirect_hash), FN(sk_redirect_hash), FN(lwt_push_encap), FN(lwt_seg6_store_bytes), FN(lwt_seg6_adjust_srh), FN(lwt_seg6_action), FN(rc_repeat), FN(rc_keydown), FN(skb_cgroup_id), FN(get_current_cgroup_id), FN(get_local_storage), FN(sk_select_reuseport), FN(skb_ancestor_cgroup_id), FN(sk_lookup_tcp), FN(sk_lookup_udp), FN(sk_release), FN(map_push_elem), FN(map_pop_elem), FN(map_peek_elem), FN(msg_push_data), FN(msg_pop_data), FN(rc_pointer_rel),
+#define __BPF_FUNC_MAPPER(FN) FN(unspec), FN(map_lookup_elem), FN(map_update_elem), FN(map_delete_elem), FN(probe_read), FN(ktime_get_ns), FN(trace_printk), FN(get_prandom_u32), FN(get_smp_processor_id), FN(skb_store_bytes), FN(l3_csum_replace), FN(l4_csum_replace), FN(tail_call), FN(clone_redirect), FN(get_current_pid_tgid), FN(get_current_uid_gid), FN(get_current_comm), FN(get_cgroup_classid), FN(skb_vlan_push), FN(skb_vlan_pop), FN(skb_get_tunnel_key), FN(skb_set_tunnel_key), FN(perf_event_read), FN(redirect), FN(get_route_realm), FN(perf_event_output), FN(skb_load_bytes), FN(get_stackid), FN(csum_diff), FN(skb_get_tunnel_opt), FN(skb_set_tunnel_opt), FN(skb_change_proto), FN(skb_change_type), FN(skb_under_cgroup), FN(get_hash_recalc), FN(get_current_task), FN(probe_write_user), FN(current_task_under_cgroup), FN(skb_change_tail), FN(skb_pull_data), FN(csum_update), FN(set_hash_invalid), FN(get_numa_node_id), FN(skb_change_head), FN(xdp_adjust_head), FN(probe_read_str), FN(get_socket_cookie), FN(get_socket_uid), FN(set_hash), FN(setsockopt), FN(skb_adjust_room), FN(redirect_map), FN(sk_redirect_map), FN(sock_map_update), FN(xdp_adjust_meta), FN(perf_event_read_value), FN(perf_prog_read_value), FN(getsockopt), FN(override_return), FN(sock_ops_cb_flags_set), FN(msg_redirect_map), FN(msg_apply_bytes), FN(msg_cork_bytes), FN(msg_pull_data), FN(bind), FN(xdp_adjust_tail), FN(skb_get_xfrm_state), FN(get_stack), FN(skb_load_bytes_relative), FN(fib_lookup), FN(sock_hash_update), FN(msg_redirect_hash), FN(sk_redirect_hash), FN(lwt_push_encap), FN(lwt_seg6_store_bytes), FN(lwt_seg6_adjust_srh), FN(lwt_seg6_action), FN(rc_repeat), FN(rc_keydown), FN(skb_cgroup_id), FN(get_current_cgroup_id), FN(get_local_storage), FN(sk_select_reuseport), FN(skb_ancestor_cgroup_id), FN(sk_lookup_tcp), FN(sk_lookup_udp), FN(sk_release), FN(map_push_elem), FN(map_pop_elem), FN(map_peek_elem), FN(msg_push_data), FN(msg_pop_data), FN(rc_pointer_rel), FN(spin_lock), FN(spin_unlock), FN(sk_fullsock), FN(tcp_sock), FN(skb_ecn_set_ce), FN(get_listener_sock),
 #define __BPF_ENUM_FN(x) BPF_FUNC_ ##x
 enum bpf_func_id {
   __BPF_FUNC_MAPPER(__BPF_ENUM_FN) __BPF_FUNC_MAX_ID,
@@ -345,7 +347,8 @@
 };
 enum bpf_lwt_encap_mode {
   BPF_LWT_ENCAP_SEG6,
-  BPF_LWT_ENCAP_SEG6_INLINE
+  BPF_LWT_ENCAP_SEG6_INLINE,
+  BPF_LWT_ENCAP_IP,
 };
 #define __bpf_md_ptr(type,name) union { type name; __u64 : 64; \
 } __attribute__((aligned(8)))
@@ -379,6 +382,8 @@
   __bpf_md_ptr(struct bpf_flow_keys *, flow_keys);
   __u64 tstamp;
   __u32 wire_len;
+  __u32 gso_segs;
+  __bpf_md_ptr(struct bpf_sock *, sk);
 };
 struct bpf_tunnel_key {
   __u32 tunnel_id;
@@ -405,6 +410,7 @@
   BPF_OK = 0,
   BPF_DROP = 2,
   BPF_REDIRECT = 7,
+  BPF_LWT_REROUTE = 128,
 };
 struct bpf_sock {
   __u32 bound_dev_if;
@@ -416,6 +422,34 @@
   __u32 src_ip4;
   __u32 src_ip6[4];
   __u32 src_port;
+  __u32 dst_port;
+  __u32 dst_ip4;
+  __u32 dst_ip6[4];
+  __u32 state;
+};
+struct bpf_tcp_sock {
+  __u32 snd_cwnd;
+  __u32 srtt_us;
+  __u32 rtt_min;
+  __u32 snd_ssthresh;
+  __u32 rcv_nxt;
+  __u32 snd_nxt;
+  __u32 snd_una;
+  __u32 mss_cache;
+  __u32 ecn_flags;
+  __u32 rate_delivered;
+  __u32 rate_interval_us;
+  __u32 packets_out;
+  __u32 retrans_out;
+  __u32 total_retrans;
+  __u32 segs_in;
+  __u32 data_segs_in;
+  __u32 segs_out;
+  __u32 data_segs_out;
+  __u32 lost_out;
+  __u32 sacked_out;
+  __u64 bytes_received;
+  __u64 bytes_acked;
 };
 struct bpf_sock_tuple {
   union {
@@ -507,6 +541,8 @@
   __u32 jited_line_info_rec_size;
   __u32 nr_prog_tags;
   __aligned_u64 prog_tags;
+  __u64 run_time_ns;
+  __u64 run_cnt;
 } __attribute__((aligned(8)));
 struct bpf_map_info {
   __u32 type;
@@ -714,4 +750,7 @@
   __u32 line_off;
   __u32 line_col;
 };
+struct bpf_spin_lock {
+  __u32 val;
+};
 #endif
diff --git a/libc/kernel/uapi/linux/btrfs.h b/libc/kernel/uapi/linux/btrfs.h
index 0dae543..14cd6e8 100644
--- a/libc/kernel/uapi/linux/btrfs.h
+++ b/libc/kernel/uapi/linux/btrfs.h
@@ -458,6 +458,7 @@
 #define BTRFS_IOC_DEFRAG _IOW(BTRFS_IOCTL_MAGIC, 2, struct btrfs_ioctl_vol_args)
 #define BTRFS_IOC_RESIZE _IOW(BTRFS_IOCTL_MAGIC, 3, struct btrfs_ioctl_vol_args)
 #define BTRFS_IOC_SCAN_DEV _IOW(BTRFS_IOCTL_MAGIC, 4, struct btrfs_ioctl_vol_args)
+#define BTRFS_IOC_FORGET_DEV _IOW(BTRFS_IOCTL_MAGIC, 5, struct btrfs_ioctl_vol_args)
 #define BTRFS_IOC_TRANS_START _IO(BTRFS_IOCTL_MAGIC, 6)
 #define BTRFS_IOC_TRANS_END _IO(BTRFS_IOCTL_MAGIC, 7)
 #define BTRFS_IOC_SYNC _IO(BTRFS_IOCTL_MAGIC, 8)
diff --git a/libc/kernel/uapi/linux/devlink.h b/libc/kernel/uapi/linux/devlink.h
index 7c55a0a..972d8cc 100644
--- a/libc/kernel/uapi/linux/devlink.h
+++ b/libc/kernel/uapi/linux/devlink.h
@@ -71,6 +71,18 @@
   DEVLINK_CMD_REGION_NEW,
   DEVLINK_CMD_REGION_DEL,
   DEVLINK_CMD_REGION_READ,
+  DEVLINK_CMD_PORT_PARAM_GET,
+  DEVLINK_CMD_PORT_PARAM_SET,
+  DEVLINK_CMD_PORT_PARAM_NEW,
+  DEVLINK_CMD_PORT_PARAM_DEL,
+  DEVLINK_CMD_INFO_GET,
+  DEVLINK_CMD_HEALTH_REPORTER_GET,
+  DEVLINK_CMD_HEALTH_REPORTER_SET,
+  DEVLINK_CMD_HEALTH_REPORTER_RECOVER,
+  DEVLINK_CMD_HEALTH_REPORTER_DIAGNOSE,
+  DEVLINK_CMD_HEALTH_REPORTER_DUMP_GET,
+  DEVLINK_CMD_HEALTH_REPORTER_DUMP_CLEAR,
+  DEVLINK_CMD_FLASH_UPDATE,
   __DEVLINK_CMD_MAX,
   DEVLINK_CMD_MAX = __DEVLINK_CMD_MAX - 1
 };
@@ -218,6 +230,32 @@
   DEVLINK_ATTR_REGION_CHUNK_DATA,
   DEVLINK_ATTR_REGION_CHUNK_ADDR,
   DEVLINK_ATTR_REGION_CHUNK_LEN,
+  DEVLINK_ATTR_INFO_DRIVER_NAME,
+  DEVLINK_ATTR_INFO_SERIAL_NUMBER,
+  DEVLINK_ATTR_INFO_VERSION_FIXED,
+  DEVLINK_ATTR_INFO_VERSION_RUNNING,
+  DEVLINK_ATTR_INFO_VERSION_STORED,
+  DEVLINK_ATTR_INFO_VERSION_NAME,
+  DEVLINK_ATTR_INFO_VERSION_VALUE,
+  DEVLINK_ATTR_SB_POOL_CELL_SIZE,
+  DEVLINK_ATTR_FMSG,
+  DEVLINK_ATTR_FMSG_OBJ_NEST_START,
+  DEVLINK_ATTR_FMSG_PAIR_NEST_START,
+  DEVLINK_ATTR_FMSG_ARR_NEST_START,
+  DEVLINK_ATTR_FMSG_NEST_END,
+  DEVLINK_ATTR_FMSG_OBJ_NAME,
+  DEVLINK_ATTR_FMSG_OBJ_VALUE_TYPE,
+  DEVLINK_ATTR_FMSG_OBJ_VALUE_DATA,
+  DEVLINK_ATTR_HEALTH_REPORTER,
+  DEVLINK_ATTR_HEALTH_REPORTER_NAME,
+  DEVLINK_ATTR_HEALTH_REPORTER_STATE,
+  DEVLINK_ATTR_HEALTH_REPORTER_ERR_COUNT,
+  DEVLINK_ATTR_HEALTH_REPORTER_RECOVER_COUNT,
+  DEVLINK_ATTR_HEALTH_REPORTER_DUMP_TS,
+  DEVLINK_ATTR_HEALTH_REPORTER_GRACEFUL_PERIOD,
+  DEVLINK_ATTR_HEALTH_REPORTER_AUTO_RECOVER,
+  DEVLINK_ATTR_FLASH_UPDATE_FILE_NAME,
+  DEVLINK_ATTR_FLASH_UPDATE_COMPONENT,
   __DEVLINK_ATTR_MAX,
   DEVLINK_ATTR_MAX = __DEVLINK_ATTR_MAX - 1
 };
diff --git a/libc/kernel/uapi/linux/dm-ioctl.h b/libc/kernel/uapi/linux/dm-ioctl.h
index 05847a7..3aa627d 100644
--- a/libc/kernel/uapi/linux/dm-ioctl.h
+++ b/libc/kernel/uapi/linux/dm-ioctl.h
@@ -102,9 +102,9 @@
 #define DM_TARGET_MSG _IOWR(DM_IOCTL, DM_TARGET_MSG_CMD, struct dm_ioctl)
 #define DM_DEV_SET_GEOMETRY _IOWR(DM_IOCTL, DM_DEV_SET_GEOMETRY_CMD, struct dm_ioctl)
 #define DM_VERSION_MAJOR 4
-#define DM_VERSION_MINOR 39
+#define DM_VERSION_MINOR 40
 #define DM_VERSION_PATCHLEVEL 0
-#define DM_VERSION_EXTRA "-ioctl(2018-04-03)"
+#define DM_VERSION_EXTRA "-ioctl(2019-01-18)"
 #define DM_READONLY_FLAG (1 << 0)
 #define DM_SUSPEND_FLAG (1 << 1)
 #define DM_PERSISTENT_DEV_FLAG (1 << 3)
diff --git a/libc/kernel/uapi/linux/elf.h b/libc/kernel/uapi/linux/elf.h
index 9845bd3..8f2e668 100644
--- a/libc/kernel/uapi/linux/elf.h
+++ b/libc/kernel/uapi/linux/elf.h
@@ -356,6 +356,8 @@
 #define NT_ARM_SYSTEM_CALL 0x404
 #define NT_ARM_SVE 0x405
 #define NT_ARM_PAC_MASK 0x406
+#define NT_ARM_PACA_KEYS 0x407
+#define NT_ARM_PACG_KEYS 0x408
 #define NT_ARC_V2 0x600
 #define NT_VMCOREDD 0x700
 #define NT_MIPS_DSP 0x800
diff --git a/libc/kernel/uapi/linux/errqueue.h b/libc/kernel/uapi/linux/errqueue.h
index f4a244f..7959d2b 100644
--- a/libc/kernel/uapi/linux/errqueue.h
+++ b/libc/kernel/uapi/linux/errqueue.h
@@ -19,6 +19,7 @@
 #ifndef _UAPI_LINUX_ERRQUEUE_H
 #define _UAPI_LINUX_ERRQUEUE_H
 #include <linux/types.h>
+#include <linux/time_types.h>
 struct sock_extended_err {
   __u32 ee_errno;
   __u8 ee_origin;
@@ -43,6 +44,9 @@
 struct scm_timestamping {
   struct timespec ts[3];
 };
+struct scm_timestamping64 {
+  struct __kernel_timespec ts[3];
+};
 enum {
   SCM_TSTAMP_SND,
   SCM_TSTAMP_SCHED,
diff --git a/libc/kernel/uapi/linux/ethtool.h b/libc/kernel/uapi/linux/ethtool.h
index 25e1a9e..642af99 100644
--- a/libc/kernel/uapi/linux/ethtool.h
+++ b/libc/kernel/uapi/linux/ethtool.h
@@ -586,7 +586,22 @@
   ETHTOOL_LINK_MODE_FEC_NONE_BIT = 49,
   ETHTOOL_LINK_MODE_FEC_RS_BIT = 50,
   ETHTOOL_LINK_MODE_FEC_BASER_BIT = 51,
-  __ETHTOOL_LINK_MODE_LAST = ETHTOOL_LINK_MODE_FEC_BASER_BIT,
+  ETHTOOL_LINK_MODE_50000baseKR_Full_BIT = 52,
+  ETHTOOL_LINK_MODE_50000baseSR_Full_BIT = 53,
+  ETHTOOL_LINK_MODE_50000baseCR_Full_BIT = 54,
+  ETHTOOL_LINK_MODE_50000baseLR_ER_FR_Full_BIT = 55,
+  ETHTOOL_LINK_MODE_50000baseDR_Full_BIT = 56,
+  ETHTOOL_LINK_MODE_100000baseKR2_Full_BIT = 57,
+  ETHTOOL_LINK_MODE_100000baseSR2_Full_BIT = 58,
+  ETHTOOL_LINK_MODE_100000baseCR2_Full_BIT = 59,
+  ETHTOOL_LINK_MODE_100000baseLR2_ER2_FR2_Full_BIT = 60,
+  ETHTOOL_LINK_MODE_100000baseDR2_Full_BIT = 61,
+  ETHTOOL_LINK_MODE_200000baseKR4_Full_BIT = 62,
+  ETHTOOL_LINK_MODE_200000baseSR4_Full_BIT = 63,
+  ETHTOOL_LINK_MODE_200000baseLR4_ER4_FR4_Full_BIT = 64,
+  ETHTOOL_LINK_MODE_200000baseDR4_Full_BIT = 65,
+  ETHTOOL_LINK_MODE_200000baseCR4_Full_BIT = 66,
+  __ETHTOOL_LINK_MODE_MASK_NBITS
 };
 #define __ETHTOOL_LINK_MODE_LEGACY_MASK(base_name) (1UL << (ETHTOOL_LINK_MODE_ ##base_name ##_BIT))
 #define SUPPORTED_10baseT_Half __ETHTOOL_LINK_MODE_LEGACY_MASK(10baseT_Half)
@@ -664,6 +679,7 @@
 #define SPEED_50000 50000
 #define SPEED_56000 56000
 #define SPEED_100000 100000
+#define SPEED_200000 200000
 #define SPEED_UNKNOWN - 1
 #define DUPLEX_HALF 0x00
 #define DUPLEX_FULL 0x01
diff --git a/libc/kernel/uapi/linux/fanotify.h b/libc/kernel/uapi/linux/fanotify.h
index 4c33fde..8b4494f 100644
--- a/libc/kernel/uapi/linux/fanotify.h
+++ b/libc/kernel/uapi/linux/fanotify.h
@@ -21,9 +21,16 @@
 #include <linux/types.h>
 #define FAN_ACCESS 0x00000001
 #define FAN_MODIFY 0x00000002
+#define FAN_ATTRIB 0x00000004
 #define FAN_CLOSE_WRITE 0x00000008
 #define FAN_CLOSE_NOWRITE 0x00000010
 #define FAN_OPEN 0x00000020
+#define FAN_MOVED_FROM 0x00000040
+#define FAN_MOVED_TO 0x00000080
+#define FAN_CREATE 0x00000100
+#define FAN_DELETE 0x00000200
+#define FAN_DELETE_SELF 0x00000400
+#define FAN_MOVE_SELF 0x00000800
 #define FAN_OPEN_EXEC 0x00001000
 #define FAN_Q_OVERFLOW 0x00004000
 #define FAN_OPEN_PERM 0x00010000
@@ -32,6 +39,7 @@
 #define FAN_ONDIR 0x40000000
 #define FAN_EVENT_ON_CHILD 0x08000000
 #define FAN_CLOSE (FAN_CLOSE_WRITE | FAN_CLOSE_NOWRITE)
+#define FAN_MOVE (FAN_MOVED_FROM | FAN_MOVED_TO)
 #define FAN_CLOEXEC 0x00000001
 #define FAN_NONBLOCK 0x00000002
 #define FAN_CLASS_NOTIF 0x00000000
@@ -42,6 +50,7 @@
 #define FAN_UNLIMITED_MARKS 0x00000020
 #define FAN_ENABLE_AUDIT 0x00000040
 #define FAN_REPORT_TID 0x00000100
+#define FAN_REPORT_FID 0x00000200
 #define FAN_ALL_INIT_FLAGS (FAN_CLOEXEC | FAN_NONBLOCK | FAN_ALL_CLASS_BITS | FAN_UNLIMITED_QUEUE | FAN_UNLIMITED_MARKS)
 #define FAN_MARK_ADD 0x00000001
 #define FAN_MARK_REMOVE 0x00000002
@@ -67,6 +76,17 @@
   __s32 fd;
   __s32 pid;
 };
+#define FAN_EVENT_INFO_TYPE_FID 1
+struct fanotify_event_info_header {
+  __u8 info_type;
+  __u8 pad;
+  __u16 len;
+};
+struct fanotify_event_info_fid {
+  struct fanotify_event_info_header hdr;
+  __kernel_fsid_t fsid;
+  unsigned char handle[0];
+};
 struct fanotify_response {
   __s32 fd;
   __u32 response;
diff --git a/libc/kernel/uapi/linux/fcntl.h b/libc/kernel/uapi/linux/fcntl.h
index e98a67b..66f27b6 100644
--- a/libc/kernel/uapi/linux/fcntl.h
+++ b/libc/kernel/uapi/linux/fcntl.h
@@ -32,6 +32,7 @@
 #define F_SEAL_SHRINK 0x0002
 #define F_SEAL_GROW 0x0004
 #define F_SEAL_WRITE 0x0008
+#define F_SEAL_FUTURE_WRITE 0x0010
 #define F_GET_RW_HINT (F_LINUX_SPECIFIC_BASE + 11)
 #define F_SET_RW_HINT (F_LINUX_SPECIFIC_BASE + 12)
 #define F_GET_FILE_RW_HINT (F_LINUX_SPECIFIC_BASE + 13)
diff --git a/libc/kernel/uapi/linux/fuse.h b/libc/kernel/uapi/linux/fuse.h
index 3c3a124..4a76ae3 100644
--- a/libc/kernel/uapi/linux/fuse.h
+++ b/libc/kernel/uapi/linux/fuse.h
@@ -20,7 +20,7 @@
 #define _LINUX_FUSE_H
 #include <stdint.h>
 #define FUSE_KERNEL_VERSION 7
-#define FUSE_KERNEL_MINOR_VERSION 28
+#define FUSE_KERNEL_MINOR_VERSION 29
 #define FUSE_ROOT_ID 1
 struct fuse_attr {
   uint64_t ino;
@@ -97,6 +97,7 @@
 #define FUSE_ABORT_ERROR (1 << 21)
 #define FUSE_MAX_PAGES (1 << 22)
 #define FUSE_CACHE_SYMLINKS (1 << 23)
+#define FUSE_NO_OPENDIR_SUPPORT (1 << 24)
 #define CUSE_UNRESTRICTED_IOCTL (1 << 0)
 #define FUSE_RELEASE_FLUSH (1 << 0)
 #define FUSE_RELEASE_FLOCK_UNLOCK (1 << 1)
diff --git a/libc/kernel/uapi/linux/icmpv6.h b/libc/kernel/uapi/linux/icmpv6.h
index fd03585..ef73a7c 100644
--- a/libc/kernel/uapi/linux/icmpv6.h
+++ b/libc/kernel/uapi/linux/icmpv6.h
@@ -90,6 +90,7 @@
 #define ICMPV6_DHAAD_REPLY 145
 #define ICMPV6_MOBILE_PREFIX_SOL 146
 #define ICMPV6_MOBILE_PREFIX_ADV 147
+#define ICMPV6_MRDISC_ADV 151
 #define ICMPV6_NOROUTE 0
 #define ICMPV6_ADM_PROHIBITED 1
 #define ICMPV6_NOT_NEIGHBOUR 2
diff --git a/libc/kernel/uapi/linux/if_bonding.h b/libc/kernel/uapi/linux/if_bonding.h
index f77f866..a1fa959 100644
--- a/libc/kernel/uapi/linux/if_bonding.h
+++ b/libc/kernel/uapi/linux/if_bonding.h
@@ -69,4 +69,24 @@
   __u16 partner_key;
   __u8 partner_system[ETH_ALEN];
 };
+enum {
+  BOND_XSTATS_UNSPEC,
+  BOND_XSTATS_3AD,
+  __BOND_XSTATS_MAX
+};
+#define BOND_XSTATS_MAX (__BOND_XSTATS_MAX - 1)
+enum {
+  BOND_3AD_STAT_LACPDU_RX,
+  BOND_3AD_STAT_LACPDU_TX,
+  BOND_3AD_STAT_LACPDU_UNKNOWN_RX,
+  BOND_3AD_STAT_LACPDU_ILLEGAL_RX,
+  BOND_3AD_STAT_MARKER_RX,
+  BOND_3AD_STAT_MARKER_TX,
+  BOND_3AD_STAT_MARKER_RESP_RX,
+  BOND_3AD_STAT_MARKER_RESP_TX,
+  BOND_3AD_STAT_MARKER_UNKNOWN_RX,
+  BOND_3AD_STAT_PAD,
+  __BOND_3AD_STAT_MAX
+};
+#define BOND_3AD_STAT_MAX (__BOND_3AD_STAT_MAX - 1)
 #endif
diff --git a/libc/kernel/uapi/linux/if_link.h b/libc/kernel/uapi/linux/if_link.h
index 416c48b..8d0080b 100644
--- a/libc/kernel/uapi/linux/if_link.h
+++ b/libc/kernel/uapi/linux/if_link.h
@@ -726,6 +726,7 @@
 enum {
   LINK_XSTATS_TYPE_UNSPEC,
   LINK_XSTATS_TYPE_BRIDGE,
+  LINK_XSTATS_TYPE_BOND,
   __LINK_XSTATS_TYPE_MAX
 };
 #define LINK_XSTATS_TYPE_MAX (__LINK_XSTATS_TYPE_MAX - 1)
diff --git a/libc/kernel/uapi/linux/igmp.h b/libc/kernel/uapi/linux/igmp.h
index f5d1164..885b0f8 100644
--- a/libc/kernel/uapi/linux/igmp.h
+++ b/libc/kernel/uapi/linux/igmp.h
@@ -73,6 +73,7 @@
 #define IGMPV3_HOST_MEMBERSHIP_REPORT 0x22
 #define IGMP_MTRACE_RESP 0x1e
 #define IGMP_MTRACE 0x1f
+#define IGMP_MRDISC_ADV 0x30
 #define IGMP_DELAYING_MEMBER 0x01
 #define IGMP_IDLE_MEMBER 0x02
 #define IGMP_LAZY_MEMBER 0x03
diff --git a/libc/kernel/uapi/linux/iio/types.h b/libc/kernel/uapi/linux/iio/types.h
index 834a2eb..e3f3ec4 100644
--- a/libc/kernel/uapi/linux/iio/types.h
+++ b/libc/kernel/uapi/linux/iio/types.h
@@ -53,6 +53,7 @@
   IIO_GRAVITY,
   IIO_POSITIONRELATIVE,
   IIO_PHASE,
+  IIO_MASSCONCENTRATION,
 };
 enum iio_modifier {
   IIO_NO_MOD,
@@ -93,6 +94,12 @@
   IIO_MOD_VOC,
   IIO_MOD_LIGHT_UV,
   IIO_MOD_LIGHT_DUV,
+  IIO_MOD_PM1,
+  IIO_MOD_PM2P5,
+  IIO_MOD_PM4,
+  IIO_MOD_PM10,
+  IIO_MOD_ETHANOL,
+  IIO_MOD_H2,
 };
 enum iio_event_type {
   IIO_EV_TYPE_THRESH,
diff --git a/libc/kernel/uapi/linux/in.h b/libc/kernel/uapi/linux/in.h
index 9ed00b4..f1dab00 100644
--- a/libc/kernel/uapi/linux/in.h
+++ b/libc/kernel/uapi/linux/in.h
@@ -215,6 +215,7 @@
 #define INADDR_UNSPEC_GROUP 0xe0000000U
 #define INADDR_ALLHOSTS_GROUP 0xe0000001U
 #define INADDR_ALLRTRS_GROUP 0xe0000002U
+#define INADDR_ALLSNOOPERS_GROUP 0xe000006aU
 #define INADDR_MAX_LOCAL_GROUP 0xe00000ffU
 #endif
 #include <asm/byteorder.h>
diff --git a/libc/kernel/uapi/linux/in6.h b/libc/kernel/uapi/linux/in6.h
index 3627f52..2eb64d0 100644
--- a/libc/kernel/uapi/linux/in6.h
+++ b/libc/kernel/uapi/linux/in6.h
@@ -133,6 +133,7 @@
 #define IPV6_JOIN_ANYCAST 27
 #define IPV6_LEAVE_ANYCAST 28
 #define IPV6_MULTICAST_ALL 29
+#define IPV6_ROUTER_ALERT_ISOLATE 30
 #define IPV6_PMTUDISC_DONT 0
 #define IPV6_PMTUDISC_WANT 1
 #define IPV6_PMTUDISC_DO 2
diff --git a/libc/kernel/uapi/linux/input-event-codes.h b/libc/kernel/uapi/linux/input-event-codes.h
index 1ca3cb0..7bbb234 100644
--- a/libc/kernel/uapi/linux/input-event-codes.h
+++ b/libc/kernel/uapi/linux/input-event-codes.h
@@ -389,10 +389,12 @@
 #define KEY_TITLE 0x171
 #define KEY_SUBTITLE 0x172
 #define KEY_ANGLE 0x173
-#define KEY_ZOOM 0x174
+#define KEY_FULL_SCREEN 0x174
+#define KEY_ZOOM KEY_FULL_SCREEN
 #define KEY_MODE 0x175
 #define KEY_KEYBOARD 0x176
-#define KEY_SCREEN 0x177
+#define KEY_ASPECT_RATIO 0x177
+#define KEY_SCREEN KEY_ASPECT_RATIO
 #define KEY_PC 0x178
 #define KEY_TV 0x179
 #define KEY_TV2 0x17a
diff --git a/libc/kernel/uapi/linux/io_uring.h b/libc/kernel/uapi/linux/io_uring.h
new file mode 100644
index 0000000..fe2d0eb
--- /dev/null
+++ b/libc/kernel/uapi/linux/io_uring.h
@@ -0,0 +1,100 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef LINUX_IO_URING_H
+#define LINUX_IO_URING_H
+#include <linux/fs.h>
+#include <linux/types.h>
+struct io_uring_sqe {
+  __u8 opcode;
+  __u8 flags;
+  __u16 ioprio;
+  __s32 fd;
+  __u64 off;
+  __u64 addr;
+  __u32 len;
+  union {
+    __kernel_rwf_t rw_flags;
+    __u32 fsync_flags;
+    __u16 poll_events;
+  };
+  __u64 user_data;
+  union {
+    __u16 buf_index;
+    __u64 __pad2[3];
+  };
+};
+#define IOSQE_FIXED_FILE (1U << 0)
+#define IORING_SETUP_IOPOLL (1U << 0)
+#define IORING_SETUP_SQPOLL (1U << 1)
+#define IORING_SETUP_SQ_AFF (1U << 2)
+#define IORING_OP_NOP 0
+#define IORING_OP_READV 1
+#define IORING_OP_WRITEV 2
+#define IORING_OP_FSYNC 3
+#define IORING_OP_READ_FIXED 4
+#define IORING_OP_WRITE_FIXED 5
+#define IORING_OP_POLL_ADD 6
+#define IORING_OP_POLL_REMOVE 7
+#define IORING_FSYNC_DATASYNC (1U << 0)
+struct io_uring_cqe {
+  __u64 user_data;
+  __s32 res;
+  __u32 flags;
+};
+#define IORING_OFF_SQ_RING 0ULL
+#define IORING_OFF_CQ_RING 0x8000000ULL
+#define IORING_OFF_SQES 0x10000000ULL
+struct io_sqring_offsets {
+  __u32 head;
+  __u32 tail;
+  __u32 ring_mask;
+  __u32 ring_entries;
+  __u32 flags;
+  __u32 dropped;
+  __u32 array;
+  __u32 resv1;
+  __u64 resv2;
+};
+#define IORING_SQ_NEED_WAKEUP (1U << 0)
+struct io_cqring_offsets {
+  __u32 head;
+  __u32 tail;
+  __u32 ring_mask;
+  __u32 ring_entries;
+  __u32 overflow;
+  __u32 cqes;
+  __u64 resv[2];
+};
+#define IORING_ENTER_GETEVENTS (1U << 0)
+#define IORING_ENTER_SQ_WAKEUP (1U << 1)
+struct io_uring_params {
+  __u32 sq_entries;
+  __u32 cq_entries;
+  __u32 flags;
+  __u32 sq_thread_cpu;
+  __u32 sq_thread_idle;
+  __u32 resv[5];
+  struct io_sqring_offsets sq_off;
+  struct io_cqring_offsets cq_off;
+};
+#define IORING_REGISTER_BUFFERS 0
+#define IORING_UNREGISTER_BUFFERS 1
+#define IORING_REGISTER_FILES 2
+#define IORING_UNREGISTER_FILES 3
+#endif
diff --git a/libc/kernel/uapi/linux/kernel-page-flags.h b/libc/kernel/uapi/linux/kernel-page-flags.h
index afa0393..d66cd7f 100644
--- a/libc/kernel/uapi/linux/kernel-page-flags.h
+++ b/libc/kernel/uapi/linux/kernel-page-flags.h
@@ -41,7 +41,7 @@
 #define KPF_NOPAGE 20
 #define KPF_KSM 21
 #define KPF_THP 22
-#define KPF_BALLOON 23
+#define KPF_OFFLINE 23
 #define KPF_ZERO_PAGE 24
 #define KPF_IDLE 25
 #define KPF_PGTABLE 26
diff --git a/libc/kernel/uapi/linux/limits.h b/libc/kernel/uapi/linux/limits.h
index ad0e33e..101b7aa 100644
--- a/libc/kernel/uapi/linux/limits.h
+++ b/libc/kernel/uapi/linux/limits.h
@@ -16,8 +16,8 @@
  ***
  ****************************************************************************
  ****************************************************************************/
-#ifndef _LINUX_LIMITS_H
-#define _LINUX_LIMITS_H
+#ifndef _UAPI_LINUX_LIMITS_H
+#define _UAPI_LINUX_LIMITS_H
 #define NR_OPEN 1024
 #define NGROUPS_MAX 65536
 #define ARG_MAX 131072
diff --git a/libc/kernel/uapi/linux/lirc.h b/libc/kernel/uapi/linux/lirc.h
index 4a8d0ff..515d8ce 100644
--- a/libc/kernel/uapi/linux/lirc.h
+++ b/libc/kernel/uapi/linux/lirc.h
@@ -127,5 +127,8 @@
   RC_PROTO_XMP = 21,
   RC_PROTO_CEC = 22,
   RC_PROTO_IMON = 23,
+  RC_PROTO_RCMM12 = 24,
+  RC_PROTO_RCMM24 = 25,
+  RC_PROTO_RCMM32 = 26,
 };
 #endif
diff --git a/libc/kernel/uapi/linux/mdio.h b/libc/kernel/uapi/linux/mdio.h
index 2617f2e..14f1e77 100644
--- a/libc/kernel/uapi/linux/mdio.h
+++ b/libc/kernel/uapi/linux/mdio.h
@@ -47,6 +47,7 @@
 #define MDIO_AN_ADVERTISE 16
 #define MDIO_AN_LPA 19
 #define MDIO_PCS_EEE_ABLE 20
+#define MDIO_PMA_NG_EXTABLE 21
 #define MDIO_PCS_EEE_WK_ERR 22
 #define MDIO_PHYXS_LNSTAT 24
 #define MDIO_AN_EEE_ADV 60
@@ -82,6 +83,8 @@
 #define MDIO_PCS_CTRL1_CLKSTOP_EN 0x400
 #define MDIO_CTRL1_SPEED10G (MDIO_CTRL1_SPEEDSELEXT | 0x00)
 #define MDIO_CTRL1_SPEED10P2B (MDIO_CTRL1_SPEEDSELEXT | 0x04)
+#define MDIO_CTRL1_SPEED2_5G (MDIO_CTRL1_SPEEDSELEXT | 0x18)
+#define MDIO_CTRL1_SPEED5G (MDIO_CTRL1_SPEEDSELEXT | 0x1c)
 #define MDIO_STAT1_LPOWERABLE 0x0002
 #define MDIO_STAT1_LSTATUS BMSR_LSTATUS
 #define MDIO_STAT1_FAULT 0x0080
@@ -99,6 +102,7 @@
 #define MDIO_PMA_SPEED_10 0x0040
 #define MDIO_PCS_SPEED_10P2B 0x0002
 #define MDIO_DEVS_PRESENT(devad) (1 << (devad))
+#define MDIO_DEVS_C22PRESENT MDIO_DEVS_PRESENT(0)
 #define MDIO_DEVS_PMAPMD MDIO_DEVS_PRESENT(MDIO_MMD_PMAPMD)
 #define MDIO_DEVS_WIS MDIO_DEVS_PRESENT(MDIO_MMD_WIS)
 #define MDIO_DEVS_PCS MDIO_DEVS_PRESENT(MDIO_MMD_PCS)
@@ -107,6 +111,8 @@
 #define MDIO_DEVS_TC MDIO_DEVS_PRESENT(MDIO_MMD_TC)
 #define MDIO_DEVS_AN MDIO_DEVS_PRESENT(MDIO_MMD_AN)
 #define MDIO_DEVS_C22EXT MDIO_DEVS_PRESENT(MDIO_MMD_C22EXT)
+#define MDIO_DEVS_VEND1 MDIO_DEVS_PRESENT(MDIO_MMD_VEND1)
+#define MDIO_DEVS_VEND2 MDIO_DEVS_PRESENT(MDIO_MMD_VEND2)
 #define MDIO_PMA_CTRL2_TYPE 0x000f
 #define MDIO_PMA_CTRL2_10GBCX4 0x0000
 #define MDIO_PMA_CTRL2_10GBEW 0x0001
@@ -124,6 +130,8 @@
 #define MDIO_PMA_CTRL2_1000BKX 0x000d
 #define MDIO_PMA_CTRL2_100BTX 0x000e
 #define MDIO_PMA_CTRL2_10BT 0x000f
+#define MDIO_PMA_CTRL2_2_5GBT 0x0030
+#define MDIO_PMA_CTRL2_5GBT 0x0031
 #define MDIO_PCS_CTRL2_TYPE 0x0003
 #define MDIO_PCS_CTRL2_10GBR 0x0000
 #define MDIO_PCS_CTRL2_10GBX 0x0001
@@ -169,6 +177,7 @@
 #define MDIO_PMA_EXTABLE_1000BKX 0x0040
 #define MDIO_PMA_EXTABLE_100BTX 0x0080
 #define MDIO_PMA_EXTABLE_10BT 0x0100
+#define MDIO_PMA_EXTABLE_NBT 0x4000
 #define MDIO_PHYXS_LNSTAT_SYNC0 0x0001
 #define MDIO_PHYXS_LNSTAT_SYNC1 0x0002
 #define MDIO_PHYXS_LNSTAT_SYNC2 0x0004
@@ -188,7 +197,11 @@
 #define MDIO_PCS_10GBRT_STAT1_BLKLK 0x0001
 #define MDIO_PCS_10GBRT_STAT2_ERR 0x00ff
 #define MDIO_PCS_10GBRT_STAT2_BER 0x3f00
+#define MDIO_AN_10GBT_CTRL_ADV2_5G 0x0080
+#define MDIO_AN_10GBT_CTRL_ADV5G 0x0100
 #define MDIO_AN_10GBT_CTRL_ADV10G 0x1000
+#define MDIO_AN_10GBT_STAT_LP2_5G 0x0020
+#define MDIO_AN_10GBT_STAT_LP5G 0x0040
 #define MDIO_AN_10GBT_STAT_LPTRR 0x0200
 #define MDIO_AN_10GBT_STAT_LPLTABLE 0x0400
 #define MDIO_AN_10GBT_STAT_LP10G 0x0800
@@ -204,6 +217,8 @@
 #define MDIO_EEE_1000KX 0x0010
 #define MDIO_EEE_10GKX4 0x0020
 #define MDIO_EEE_10GKR 0x0040
+#define MDIO_PMA_NG_EXTABLE_2_5GBT 0x0001
+#define MDIO_PMA_NG_EXTABLE_5GBT 0x0002
 #define MDIO_PMA_LASI_RX_PHYXSLFLT 0x0001
 #define MDIO_PMA_LASI_RX_PCSLFLT 0x0008
 #define MDIO_PMA_LASI_RX_PMALFLT 0x0010
diff --git a/libc/kernel/uapi/linux/mman.h b/libc/kernel/uapi/linux/mman.h
index 0c9c397..e469374 100644
--- a/libc/kernel/uapi/linux/mman.h
+++ b/libc/kernel/uapi/linux/mman.h
@@ -25,6 +25,9 @@
 #define OVERCOMMIT_GUESS 0
 #define OVERCOMMIT_ALWAYS 1
 #define OVERCOMMIT_NEVER 2
+#define MAP_SHARED 0x01
+#define MAP_PRIVATE 0x02
+#define MAP_SHARED_VALIDATE 0x03
 #define MAP_HUGE_SHIFT HUGETLB_FLAG_ENCODE_SHIFT
 #define MAP_HUGE_MASK HUGETLB_FLAG_ENCODE_MASK
 #define MAP_HUGE_64KB HUGETLB_FLAG_ENCODE_64KB
diff --git a/libc/kernel/uapi/linux/mroute.h b/libc/kernel/uapi/linux/mroute.h
index f0cb21b..7e0078f 100644
--- a/libc/kernel/uapi/linux/mroute.h
+++ b/libc/kernel/uapi/linux/mroute.h
@@ -34,10 +34,15 @@
 #define MRT_TABLE (MRT_BASE + 9)
 #define MRT_ADD_MFC_PROXY (MRT_BASE + 10)
 #define MRT_DEL_MFC_PROXY (MRT_BASE + 11)
-#define MRT_MAX (MRT_BASE + 11)
+#define MRT_FLUSH (MRT_BASE + 12)
+#define MRT_MAX (MRT_BASE + 12)
 #define SIOCGETVIFCNT SIOCPROTOPRIVATE
 #define SIOCGETSGCNT (SIOCPROTOPRIVATE + 1)
 #define SIOCGETRPF (SIOCPROTOPRIVATE + 2)
+#define MRT_FLUSH_MFC 1
+#define MRT_FLUSH_MFC_STATIC 2
+#define MRT_FLUSH_VIFS 4
+#define MRT_FLUSH_VIFS_STATIC 8
 #define MAXVIFS 32
 typedef unsigned long vifbitmap_t;
 typedef unsigned short vifi_t;
diff --git a/libc/kernel/uapi/linux/mroute6.h b/libc/kernel/uapi/linux/mroute6.h
index ccb38d9..e6c83e9 100644
--- a/libc/kernel/uapi/linux/mroute6.h
+++ b/libc/kernel/uapi/linux/mroute6.h
@@ -35,10 +35,15 @@
 #define MRT6_TABLE (MRT6_BASE + 9)
 #define MRT6_ADD_MFC_PROXY (MRT6_BASE + 10)
 #define MRT6_DEL_MFC_PROXY (MRT6_BASE + 11)
-#define MRT6_MAX (MRT6_BASE + 11)
+#define MRT6_FLUSH (MRT6_BASE + 12)
+#define MRT6_MAX (MRT6_BASE + 12)
 #define SIOCGETMIFCNT_IN6 SIOCPROTOPRIVATE
 #define SIOCGETSGCNT_IN6 (SIOCPROTOPRIVATE + 1)
 #define SIOCGETRPF (SIOCPROTOPRIVATE + 2)
+#define MRT6_FLUSH_MFC 1
+#define MRT6_FLUSH_MFC_STATIC 2
+#define MRT6_FLUSH_MIFS 4
+#define MRT6_FLUSH_MIFS_STATIC 8
 #define MAXMIFS 32
 typedef unsigned long mifbitmap_t;
 typedef unsigned short mifi_t;
diff --git a/libc/kernel/uapi/linux/ndctl.h b/libc/kernel/uapi/linux/ndctl.h
index 742fbad..e47091f 100644
--- a/libc/kernel/uapi/linux/ndctl.h
+++ b/libc/kernel/uapi/linux/ndctl.h
@@ -157,5 +157,6 @@
 #define NVDIMM_FAMILY_HPE1 1
 #define NVDIMM_FAMILY_HPE2 2
 #define NVDIMM_FAMILY_MSFT 3
+#define NVDIMM_FAMILY_HYPERV 4
 #define ND_IOCTL_CALL _IOWR(ND_IOCTL, ND_CMD_CALL, struct nd_cmd_pkg)
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter/nf_tables.h b/libc/kernel/uapi/linux/netfilter/nf_tables.h
index 2bb7c86..1043799 100644
--- a/libc/kernel/uapi/linux/netfilter/nf_tables.h
+++ b/libc/kernel/uapi/linux/netfilter/nf_tables.h
@@ -139,6 +139,7 @@
   NFTA_RULE_USERDATA,
   NFTA_RULE_PAD,
   NFTA_RULE_ID,
+  NFTA_RULE_POSITION_ID,
   __NFTA_RULE_MAX
 };
 #define NFTA_RULE_MAX (__NFTA_RULE_MAX - 1)
@@ -413,6 +414,8 @@
   NFT_META_CGROUP,
   NFT_META_PRANDOM,
   NFT_META_SECPATH,
+  NFT_META_IIFKIND,
+  NFT_META_OIFKIND,
 };
 enum nft_rt_keys {
   NFT_RT_CLASSID,
@@ -922,10 +925,18 @@
   __NFT_TUNNEL_MAX
 };
 #define NFT_TUNNEL_MAX (__NFT_TUNNEL_MAX - 1)
+enum nft_tunnel_mode {
+  NFT_TUNNEL_MODE_NONE,
+  NFT_TUNNEL_MODE_RX,
+  NFT_TUNNEL_MODE_TX,
+  __NFT_TUNNEL_MODE_MAX
+};
+#define NFT_TUNNEL_MODE_MAX (__NFT_TUNNEL_MODE_MAX - 1)
 enum nft_tunnel_attributes {
   NFTA_TUNNEL_UNSPEC,
   NFTA_TUNNEL_KEY,
   NFTA_TUNNEL_DREG,
+  NFTA_TUNNEL_MODE,
   __NFTA_TUNNEL_MAX
 };
 #define NFTA_TUNNEL_MAX (__NFTA_TUNNEL_MAX - 1)
diff --git a/libc/kernel/uapi/linux/nl80211.h b/libc/kernel/uapi/linux/nl80211.h
index 29a7b66..a7f6309 100644
--- a/libc/kernel/uapi/linux/nl80211.h
+++ b/libc/kernel/uapi/linux/nl80211.h
@@ -458,6 +458,7 @@
   NL80211_ATTR_FTM_RESPONDER_STATS,
   NL80211_ATTR_TIMEOUT,
   NL80211_ATTR_PEER_MEASUREMENTS,
+  NL80211_ATTR_AIRTIME_WEIGHT,
   __NL80211_ATTR_AFTER_LAST,
   NUM_NL80211_ATTR = __NL80211_ATTR_AFTER_LAST,
   NL80211_ATTR_MAX = __NL80211_ATTR_AFTER_LAST - 1
@@ -628,6 +629,8 @@
   NL80211_STA_INFO_RX_MPDUS,
   NL80211_STA_INFO_FCS_ERROR_COUNT,
   NL80211_STA_INFO_CONNECTED_TO_GATE,
+  NL80211_STA_INFO_TX_DURATION,
+  NL80211_STA_INFO_AIRTIME_WEIGHT,
   __NL80211_STA_INFO_AFTER_LAST,
   NL80211_STA_INFO_MAX = __NL80211_STA_INFO_AFTER_LAST - 1
 };
@@ -675,6 +678,8 @@
   NL80211_MPATH_INFO_FLAGS,
   NL80211_MPATH_INFO_DISCOVERY_TIMEOUT,
   NL80211_MPATH_INFO_DISCOVERY_RETRIES,
+  NL80211_MPATH_INFO_HOP_COUNT,
+  NL80211_MPATH_INFO_PATH_CHANGE,
   __NL80211_MPATH_INFO_AFTER_LAST,
   NL80211_MPATH_INFO_MAX = __NL80211_MPATH_INFO_AFTER_LAST - 1
 };
@@ -1304,6 +1309,8 @@
   NL80211_EXT_FEATURE_SCAN_MIN_PREQ_CONTENT,
   NL80211_EXT_FEATURE_CAN_REPLACE_PTK0,
   NL80211_EXT_FEATURE_ENABLE_FTM_RESPONDER,
+  NL80211_EXT_FEATURE_AIRTIME_FAIRNESS,
+  NL80211_EXT_FEATURE_AP_PMKSA_CACHING,
   NUM_NL80211_EXT_FEATURES,
   MAX_NL80211_EXT_FEATURES = NUM_NL80211_EXT_FEATURES - 1
 };
@@ -1375,6 +1382,7 @@
 #define NL80211_CRIT_PROTO_MAX_DURATION 5000
 enum nl80211_rxmgmt_flags {
   NL80211_RXMGMT_FLAG_ANSWERED = 1 << 0,
+  NL80211_RXMGMT_FLAG_EXTERNAL_AUTH = 1 << 1,
 };
 #define NL80211_VENDOR_ID_IS_LINUX 0x80000000
 struct nl80211_vendor_cmd_info {
diff --git a/libc/kernel/uapi/linux/pci_regs.h b/libc/kernel/uapi/linux/pci_regs.h
index 8122fbb..d75d200 100644
--- a/libc/kernel/uapi/linux/pci_regs.h
+++ b/libc/kernel/uapi/linux/pci_regs.h
@@ -739,6 +739,7 @@
 #define PCI_ATS_CAP 0x04
 #define PCI_ATS_CAP_QDEP(x) ((x) & 0x1f)
 #define PCI_ATS_MAX_QDEP 32
+#define PCI_ATS_CAP_PAGE_ALIGNED 0x0020
 #define PCI_ATS_CTRL 0x06
 #define PCI_ATS_CTRL_ENABLE 0x8000
 #define PCI_ATS_CTRL_STU(x) ((x) & 0x1f)
@@ -751,6 +752,7 @@
 #define PCI_PRI_STATUS_RF 0x001
 #define PCI_PRI_STATUS_UPRGI 0x002
 #define PCI_PRI_STATUS_STOPPED 0x100
+#define PCI_PRI_STATUS_PASID 0x8000
 #define PCI_PRI_MAX_REQ 0x08
 #define PCI_PRI_ALLOC_REQ 0x0c
 #define PCI_EXT_CAP_PRI_SIZEOF 16
diff --git a/libc/kernel/uapi/linux/perf_event.h b/libc/kernel/uapi/linux/perf_event.h
index bf51785..9048588 100644
--- a/libc/kernel/uapi/linux/perf_event.h
+++ b/libc/kernel/uapi/linux/perf_event.h
@@ -198,7 +198,7 @@
   };
   __u64 sample_type;
   __u64 read_format;
-  __u64 disabled : 1, inherit : 1, pinned : 1, exclusive : 1, exclude_user : 1, exclude_kernel : 1, exclude_hv : 1, exclude_idle : 1, mmap : 1, comm : 1, freq : 1, inherit_stat : 1, enable_on_exec : 1, task : 1, watermark : 1, precise_ip : 2, mmap_data : 1, sample_id_all : 1, exclude_host : 1, exclude_guest : 1, exclude_callchain_kernel : 1, exclude_callchain_user : 1, mmap2 : 1, comm_exec : 1, use_clockid : 1, context_switch : 1, write_backward : 1, namespaces : 1, __reserved_1 : 35;
+  __u64 disabled : 1, inherit : 1, pinned : 1, exclusive : 1, exclude_user : 1, exclude_kernel : 1, exclude_hv : 1, exclude_idle : 1, mmap : 1, comm : 1, freq : 1, inherit_stat : 1, enable_on_exec : 1, task : 1, watermark : 1, precise_ip : 2, mmap_data : 1, sample_id_all : 1, exclude_host : 1, exclude_guest : 1, exclude_callchain_kernel : 1, exclude_callchain_user : 1, mmap2 : 1, comm_exec : 1, use_clockid : 1, context_switch : 1, write_backward : 1, namespaces : 1, ksymbol : 1, bpf_event : 1, __reserved_1 : 33;
   union {
     __u32 wakeup_events;
     __u32 wakeup_watermark;
@@ -230,7 +230,6 @@
   __u32 prog_cnt;
   __u32 ids[0];
 };
-#define perf_flags(attr) (* (& (attr)->read_format + 1))
 #define PERF_EVENT_IOC_ENABLE _IO('$', 0)
 #define PERF_EVENT_IOC_DISABLE _IO('$', 1)
 #define PERF_EVENT_IOC_REFRESH _IO('$', 2)
@@ -327,8 +326,22 @@
   PERF_RECORD_SWITCH = 14,
   PERF_RECORD_SWITCH_CPU_WIDE = 15,
   PERF_RECORD_NAMESPACES = 16,
+  PERF_RECORD_KSYMBOL = 17,
+  PERF_RECORD_BPF_EVENT = 18,
   PERF_RECORD_MAX,
 };
+enum perf_record_ksymbol_type {
+  PERF_RECORD_KSYMBOL_TYPE_UNKNOWN = 0,
+  PERF_RECORD_KSYMBOL_TYPE_BPF = 1,
+  PERF_RECORD_KSYMBOL_TYPE_MAX
+};
+#define PERF_RECORD_KSYMBOL_FLAGS_UNREGISTER (1 << 0)
+enum perf_bpf_event_type {
+  PERF_BPF_EVENT_UNKNOWN = 0,
+  PERF_BPF_EVENT_PROG_LOAD = 1,
+  PERF_BPF_EVENT_PROG_UNLOAD = 2,
+  PERF_BPF_EVENT_MAX,
+};
 #define PERF_MAX_STACK_DEPTH 127
 #define PERF_MAX_CONTEXTS_PER_STACK 8
 enum perf_callchain_context {
diff --git a/libc/kernel/uapi/linux/pkt_cls.h b/libc/kernel/uapi/linux/pkt_cls.h
index 2018f0b..6db3a6d 100644
--- a/libc/kernel/uapi/linux/pkt_cls.h
+++ b/libc/kernel/uapi/linux/pkt_cls.h
@@ -59,9 +59,41 @@
 #define TC_ACT_JUMP __TC_ACT_EXT(1)
 #define TC_ACT_GOTO_CHAIN __TC_ACT_EXT(2)
 #define TC_ACT_EXT_OPCODE_MAX TC_ACT_GOTO_CHAIN
-enum {
+#define TCA_ACT_GACT 5
+#define TCA_ACT_IPT 6
+#define TCA_ACT_PEDIT 7
+#define TCA_ACT_MIRRED 8
+#define TCA_ACT_NAT 9
+#define TCA_ACT_XT 10
+#define TCA_ACT_SKBEDIT 11
+#define TCA_ACT_VLAN 12
+#define TCA_ACT_BPF 13
+#define TCA_ACT_CONNMARK 14
+#define TCA_ACT_SKBMOD 15
+#define TCA_ACT_CSUM 16
+#define TCA_ACT_TUNNEL_KEY 17
+#define TCA_ACT_SIMP 22
+#define TCA_ACT_IFE 25
+#define TCA_ACT_SAMPLE 26
+enum tca_id {
   TCA_ID_UNSPEC = 0,
   TCA_ID_POLICE = 1,
+  TCA_ID_GACT = TCA_ACT_GACT,
+  TCA_ID_IPT = TCA_ACT_IPT,
+  TCA_ID_PEDIT = TCA_ACT_PEDIT,
+  TCA_ID_MIRRED = TCA_ACT_MIRRED,
+  TCA_ID_NAT = TCA_ACT_NAT,
+  TCA_ID_XT = TCA_ACT_XT,
+  TCA_ID_SKBEDIT = TCA_ACT_SKBEDIT,
+  TCA_ID_VLAN = TCA_ACT_VLAN,
+  TCA_ID_BPF = TCA_ACT_BPF,
+  TCA_ID_CONNMARK = TCA_ACT_CONNMARK,
+  TCA_ID_SKBMOD = TCA_ACT_SKBMOD,
+  TCA_ID_CSUM = TCA_ACT_CSUM,
+  TCA_ID_TUNNEL_KEY = TCA_ACT_TUNNEL_KEY,
+  TCA_ID_SIMP = TCA_ACT_SIMP,
+  TCA_ID_IFE = TCA_ACT_IFE,
+  TCA_ID_SAMPLE = TCA_ACT_SAMPLE,
   __TCA_ID_MAX = 255
 };
 #define TCA_ID_MAX __TCA_ID_MAX
@@ -267,12 +299,18 @@
   __TCA_FLOW_MAX
 };
 #define TCA_FLOW_MAX (__TCA_FLOW_MAX - 1)
+struct tc_basic_pcnt {
+  __u64 rcnt;
+  __u64 rhit;
+};
 enum {
   TCA_BASIC_UNSPEC,
   TCA_BASIC_CLASSID,
   TCA_BASIC_EMATCHES,
   TCA_BASIC_ACT,
   TCA_BASIC_POLICE,
+  TCA_BASIC_PCNT,
+  TCA_BASIC_PAD,
   __TCA_BASIC_MAX
 };
 #define TCA_BASIC_MAX (__TCA_BASIC_MAX - 1)
@@ -415,11 +453,16 @@
   TCA_FLOWER_KEY_FLAGS_FRAG_IS_FIRST = (1 << 1),
 };
 #define TCA_FLOWER_MASK_FLAGS_RANGE (1 << 0)
+struct tc_matchall_pcnt {
+  __u64 rhit;
+};
 enum {
   TCA_MATCHALL_UNSPEC,
   TCA_MATCHALL_CLASSID,
   TCA_MATCHALL_ACT,
   TCA_MATCHALL_FLAGS,
+  TCA_MATCHALL_PCNT,
+  TCA_MATCHALL_PAD,
   __TCA_MATCHALL_MAX,
 };
 #define TCA_MATCHALL_MAX (__TCA_MATCHALL_MAX - 1)
diff --git a/libc/kernel/uapi/linux/pkt_sched.h b/libc/kernel/uapi/linux/pkt_sched.h
index dc0cd2f..6adc013 100644
--- a/libc/kernel/uapi/linux/pkt_sched.h
+++ b/libc/kernel/uapi/linux/pkt_sched.h
@@ -713,7 +713,7 @@
 };
 #define TCA_PIE_MAX (__TCA_PIE_MAX - 1)
 struct tc_pie_xstats {
-  __u32 prob;
+  __u64 prob;
   __u32 delay;
   __u32 avg_dq_rate;
   __u32 packets_in;
@@ -768,6 +768,7 @@
   TCA_CAKE_INGRESS,
   TCA_CAKE_ACK_FILTER,
   TCA_CAKE_SPLIT_GSO,
+  TCA_CAKE_FWMARK,
   __TCA_CAKE_MAX
 };
 #define TCA_CAKE_MAX (__TCA_CAKE_MAX - 1)
diff --git a/libc/kernel/uapi/linux/pmu.h b/libc/kernel/uapi/linux/pmu.h
index 2c7ffef..d3d08b0 100644
--- a/libc/kernel/uapi/linux/pmu.h
+++ b/libc/kernel/uapi/linux/pmu.h
@@ -23,7 +23,9 @@
 #define PMU_POWER_CTRL 0x11
 #define PMU_ADB_CMD 0x20
 #define PMU_ADB_POLL_OFF 0x21
+#define PMU_WRITE_XPRAM 0x32
 #define PMU_WRITE_NVRAM 0x33
+#define PMU_READ_XPRAM 0x3a
 #define PMU_READ_NVRAM 0x3b
 #define PMU_SET_RTC 0x30
 #define PMU_READ_RTC 0x38
diff --git a/libc/kernel/uapi/linux/prctl.h b/libc/kernel/uapi/linux/prctl.h
index 5031e8d..9015e29 100644
--- a/libc/kernel/uapi/linux/prctl.h
+++ b/libc/kernel/uapi/linux/prctl.h
@@ -143,6 +143,7 @@
 #define PR_SPEC_ENABLE (1UL << 1)
 #define PR_SPEC_DISABLE (1UL << 2)
 #define PR_SPEC_FORCE_DISABLE (1UL << 3)
+#define PR_SPEC_DISABLE_NOEXEC (1UL << 4)
 #define PR_PAC_RESET_KEYS 54
 #define PR_PAC_APIAKEY (1UL << 0)
 #define PR_PAC_APIBKEY (1UL << 1)
diff --git a/libc/kernel/uapi/linux/rds.h b/libc/kernel/uapi/linux/rds.h
index 05da0cd..951427f 100644
--- a/libc/kernel/uapi/linux/rds.h
+++ b/libc/kernel/uapi/linux/rds.h
@@ -36,6 +36,9 @@
 #define RDS_TRANS_TCP 2
 #define RDS_TRANS_COUNT 3
 #define RDS_TRANS_NONE (~0)
+#define SIOCRDSSETTOS (SIOCPROTOPRIVATE)
+#define SIOCRDSGETTOS (SIOCPROTOPRIVATE + 1)
+typedef __u8 rds_tos_t;
 #define RDS_CMSG_RDMA_ARGS 1
 #define RDS_CMSG_RDMA_DEST 2
 #define RDS_CMSG_RDMA_MAP 3
@@ -82,6 +85,7 @@
   __be32 faddr;
   __u8 transport[TRANSNAMSIZ];
   __u8 flags;
+  __u8 tos;
 } __attribute__((packed));
 struct rds6_info_connection {
   __u64 next_tx_seq;
@@ -101,6 +105,7 @@
   __be16 lport;
   __be16 fport;
   __u8 flags;
+  __u8 tos;
 } __attribute__((packed));
 struct rds6_info_message {
   __u64 seq;
@@ -140,6 +145,7 @@
   __u32 last_sent_nxt;
   __u32 last_expected_una;
   __u32 last_seen_una;
+  __u8 tos;
 } __attribute__((packed));
 struct rds6_info_tcp_socket {
   struct in6_addr local_addr;
@@ -163,6 +169,7 @@
   __u32 max_send_sge;
   __u32 rdma_mr_max;
   __u32 rdma_mr_size;
+  __u8 tos;
 };
 struct rds6_info_rdma_connection {
   struct in6_addr src_addr;
@@ -174,6 +181,7 @@
   __u32 max_send_sge;
   __u32 rdma_mr_max;
   __u32 rdma_mr_size;
+  __u8 tos;
 };
 enum rds_message_rxpath_latency {
   RDS_MSG_RX_HDR_TO_DGRAM_START = 0,
diff --git a/libc/kernel/uapi/linux/sctp.h b/libc/kernel/uapi/linux/sctp.h
index 66fde70..18c5d21 100644
--- a/libc/kernel/uapi/linux/sctp.h
+++ b/libc/kernel/uapi/linux/sctp.h
@@ -21,6 +21,9 @@
 #include <linux/types.h>
 #include <linux/socket.h>
 typedef __s32 sctp_assoc_t;
+#define SCTP_FUTURE_ASSOC 0
+#define SCTP_CURRENT_ASSOC 1
+#define SCTP_ALL_ASSOC 2
 #define SCTP_RTOINFO 0
 #define SCTP_ASSOCINFO 1
 #define SCTP_INITMSG 2
diff --git a/libc/kernel/uapi/linux/serial_core.h b/libc/kernel/uapi/linux/serial_core.h
index b9af467..791f5d7 100644
--- a/libc/kernel/uapi/linux/serial_core.h
+++ b/libc/kernel/uapi/linux/serial_core.h
@@ -60,6 +60,7 @@
 #define PORT_SUNZILOG 38
 #define PORT_SUNSAB 39
 #define PORT_NPCM 40
+#define PORT_TEGRA_TCU 41
 #define PORT_PCH_8LINE 44
 #define PORT_PCH_2LINE 45
 #define PORT_DZ 46
diff --git a/libc/kernel/uapi/linux/tc_act/tc_bpf.h b/libc/kernel/uapi/linux/tc_act/tc_bpf.h
index c4963a5..48094d4 100644
--- a/libc/kernel/uapi/linux/tc_act/tc_bpf.h
+++ b/libc/kernel/uapi/linux/tc_act/tc_bpf.h
@@ -19,7 +19,6 @@
 #ifndef __LINUX_TC_BPF_H
 #define __LINUX_TC_BPF_H
 #include <linux/pkt_cls.h>
-#define TCA_ACT_BPF 13
 struct tc_act_bpf {
   tc_gen;
 };
diff --git a/libc/kernel/uapi/linux/tc_act/tc_connmark.h b/libc/kernel/uapi/linux/tc_act/tc_connmark.h
index 32cc44b..5fe979c 100644
--- a/libc/kernel/uapi/linux/tc_act/tc_connmark.h
+++ b/libc/kernel/uapi/linux/tc_act/tc_connmark.h
@@ -20,7 +20,6 @@
 #define __UAPI_TC_CONNMARK_H
 #include <linux/types.h>
 #include <linux/pkt_cls.h>
-#define TCA_ACT_CONNMARK 14
 struct tc_connmark {
   tc_gen;
   __u16 zone;
diff --git a/libc/kernel/uapi/linux/tc_act/tc_csum.h b/libc/kernel/uapi/linux/tc_act/tc_csum.h
index 7de4019..1fcd00d 100644
--- a/libc/kernel/uapi/linux/tc_act/tc_csum.h
+++ b/libc/kernel/uapi/linux/tc_act/tc_csum.h
@@ -20,7 +20,6 @@
 #define __LINUX_TC_CSUM_H
 #include <linux/types.h>
 #include <linux/pkt_cls.h>
-#define TCA_ACT_CSUM 16
 enum {
   TCA_CSUM_UNSPEC,
   TCA_CSUM_PARMS,
diff --git a/libc/kernel/uapi/linux/tc_act/tc_gact.h b/libc/kernel/uapi/linux/tc_act/tc_gact.h
index 11d8533..ac96dff 100644
--- a/libc/kernel/uapi/linux/tc_act/tc_gact.h
+++ b/libc/kernel/uapi/linux/tc_act/tc_gact.h
@@ -20,7 +20,6 @@
 #define __LINUX_TC_GACT_H
 #include <linux/types.h>
 #include <linux/pkt_cls.h>
-#define TCA_ACT_GACT 5
 struct tc_gact {
   tc_gen;
 };
diff --git a/libc/kernel/uapi/linux/tc_act/tc_ife.h b/libc/kernel/uapi/linux/tc_act/tc_ife.h
index 3193be0..346ebac 100644
--- a/libc/kernel/uapi/linux/tc_act/tc_ife.h
+++ b/libc/kernel/uapi/linux/tc_act/tc_ife.h
@@ -21,7 +21,6 @@
 #include <linux/types.h>
 #include <linux/pkt_cls.h>
 #include <linux/ife.h>
-#define TCA_ACT_IFE 25
 #define IFE_ENCODE 1
 #define IFE_DECODE 0
 struct tc_ife {
diff --git a/libc/kernel/uapi/linux/tc_act/tc_ipt.h b/libc/kernel/uapi/linux/tc_act/tc_ipt.h
index 89b0706..d578ce7 100644
--- a/libc/kernel/uapi/linux/tc_act/tc_ipt.h
+++ b/libc/kernel/uapi/linux/tc_act/tc_ipt.h
@@ -19,8 +19,6 @@
 #ifndef __LINUX_TC_IPT_H
 #define __LINUX_TC_IPT_H
 #include <linux/pkt_cls.h>
-#define TCA_ACT_IPT 6
-#define TCA_ACT_XT 10
 enum {
   TCA_IPT_UNSPEC,
   TCA_IPT_TABLE,
diff --git a/libc/kernel/uapi/linux/tc_act/tc_mirred.h b/libc/kernel/uapi/linux/tc_act/tc_mirred.h
index 2eb4f81..af04d03 100644
--- a/libc/kernel/uapi/linux/tc_act/tc_mirred.h
+++ b/libc/kernel/uapi/linux/tc_act/tc_mirred.h
@@ -20,7 +20,6 @@
 #define __LINUX_TC_MIR_H
 #include <linux/types.h>
 #include <linux/pkt_cls.h>
-#define TCA_ACT_MIRRED 8
 #define TCA_EGRESS_REDIR 1
 #define TCA_EGRESS_MIRROR 2
 #define TCA_INGRESS_REDIR 3
diff --git a/libc/kernel/uapi/linux/tc_act/tc_nat.h b/libc/kernel/uapi/linux/tc_act/tc_nat.h
index 093c7da..14aeffb 100644
--- a/libc/kernel/uapi/linux/tc_act/tc_nat.h
+++ b/libc/kernel/uapi/linux/tc_act/tc_nat.h
@@ -20,7 +20,6 @@
 #define __LINUX_TC_NAT_H
 #include <linux/pkt_cls.h>
 #include <linux/types.h>
-#define TCA_ACT_NAT 9
 enum {
   TCA_NAT_UNSPEC,
   TCA_NAT_PARMS,
diff --git a/libc/kernel/uapi/linux/tc_act/tc_pedit.h b/libc/kernel/uapi/linux/tc_act/tc_pedit.h
index 93eb1dc..cb8bd22 100644
--- a/libc/kernel/uapi/linux/tc_act/tc_pedit.h
+++ b/libc/kernel/uapi/linux/tc_act/tc_pedit.h
@@ -20,7 +20,6 @@
 #define __LINUX_TC_PED_H
 #include <linux/types.h>
 #include <linux/pkt_cls.h>
-#define TCA_ACT_PEDIT 7
 enum {
   TCA_PEDIT_UNSPEC,
   TCA_PEDIT_TM,
diff --git a/libc/kernel/uapi/linux/tc_act/tc_sample.h b/libc/kernel/uapi/linux/tc_act/tc_sample.h
index 64f5d08..7d9a32e 100644
--- a/libc/kernel/uapi/linux/tc_act/tc_sample.h
+++ b/libc/kernel/uapi/linux/tc_act/tc_sample.h
@@ -21,7 +21,6 @@
 #include <linux/types.h>
 #include <linux/pkt_cls.h>
 #include <linux/if_ether.h>
-#define TCA_ACT_SAMPLE 26
 struct tc_sample {
   tc_gen;
 };
diff --git a/libc/kernel/uapi/linux/tc_act/tc_skbedit.h b/libc/kernel/uapi/linux/tc_act/tc_skbedit.h
index 30d529a..5706d4d 100644
--- a/libc/kernel/uapi/linux/tc_act/tc_skbedit.h
+++ b/libc/kernel/uapi/linux/tc_act/tc_skbedit.h
@@ -19,7 +19,6 @@
 #ifndef __LINUX_TC_SKBEDIT_H
 #define __LINUX_TC_SKBEDIT_H
 #include <linux/pkt_cls.h>
-#define TCA_ACT_SKBEDIT 11
 #define SKBEDIT_F_PRIORITY 0x1
 #define SKBEDIT_F_QUEUE_MAPPING 0x2
 #define SKBEDIT_F_MARK 0x4
diff --git a/libc/kernel/uapi/linux/tc_act/tc_skbmod.h b/libc/kernel/uapi/linux/tc_act/tc_skbmod.h
index 5b34c28..0a53b06 100644
--- a/libc/kernel/uapi/linux/tc_act/tc_skbmod.h
+++ b/libc/kernel/uapi/linux/tc_act/tc_skbmod.h
@@ -19,7 +19,6 @@
 #ifndef __LINUX_TC_SKBMOD_H
 #define __LINUX_TC_SKBMOD_H
 #include <linux/pkt_cls.h>
-#define TCA_ACT_SKBMOD 15
 #define SKBMOD_F_DMAC 0x1
 #define SKBMOD_F_SMAC 0x2
 #define SKBMOD_F_ETYPE 0x4
diff --git a/libc/kernel/uapi/linux/tc_act/tc_tunnel_key.h b/libc/kernel/uapi/linux/tc_act/tc_tunnel_key.h
index bd5fb24..4511b18 100644
--- a/libc/kernel/uapi/linux/tc_act/tc_tunnel_key.h
+++ b/libc/kernel/uapi/linux/tc_act/tc_tunnel_key.h
@@ -19,7 +19,6 @@
 #ifndef __LINUX_TC_TUNNEL_KEY_H
 #define __LINUX_TC_TUNNEL_KEY_H
 #include <linux/pkt_cls.h>
-#define TCA_ACT_TUNNEL_KEY 17
 #define TCA_TUNNEL_KEY_ACT_SET 1
 #define TCA_TUNNEL_KEY_ACT_RELEASE 2
 struct tc_tunnel_key {
diff --git a/libc/kernel/uapi/linux/tc_act/tc_vlan.h b/libc/kernel/uapi/linux/tc_act/tc_vlan.h
index b1b8ce7..ecd445d 100644
--- a/libc/kernel/uapi/linux/tc_act/tc_vlan.h
+++ b/libc/kernel/uapi/linux/tc_act/tc_vlan.h
@@ -19,7 +19,6 @@
 #ifndef __LINUX_TC_VLAN_H
 #define __LINUX_TC_VLAN_H
 #include <linux/pkt_cls.h>
-#define TCA_ACT_VLAN 12
 #define TCA_VLAN_ACT_POP 1
 #define TCA_VLAN_ACT_PUSH 2
 #define TCA_VLAN_ACT_MODIFY 3
diff --git a/libc/kernel/uapi/linux/time.h b/libc/kernel/uapi/linux/time.h
index 96a7042..dbf105b 100644
--- a/libc/kernel/uapi/linux/time.h
+++ b/libc/kernel/uapi/linux/time.h
@@ -19,6 +19,7 @@
 #ifndef _UAPI_LINUX_TIME_H
 #define _UAPI_LINUX_TIME_H
 #include <linux/types.h>
+#include <linux/time_types.h>
 #ifndef _STRUCT_TIMESPEC
 #define _STRUCT_TIMESPEC
 struct timespec {
@@ -45,22 +46,6 @@
   struct timeval it_interval;
   struct timeval it_value;
 };
-#ifndef __kernel_timespec
-struct __kernel_timespec {
-  __kernel_time64_t tv_sec;
-  long long tv_nsec;
-};
-#endif
-#ifndef __kernel_itimerspec
-struct __kernel_itimerspec {
-  struct __kernel_timespec it_interval;
-  struct __kernel_timespec it_value;
-};
-#endif
-struct __kernel_old_timeval {
-  __kernel_long_t tv_sec;
-  __kernel_long_t tv_usec;
-};
 #define CLOCK_REALTIME 0
 #define CLOCK_MONOTONIC 1
 #define CLOCK_PROCESS_CPUTIME_ID 2
diff --git a/libc/kernel/uapi/linux/time_types.h b/libc/kernel/uapi/linux/time_types.h
new file mode 100644
index 0000000..425e6ae
--- /dev/null
+++ b/libc/kernel/uapi/linux/time_types.h
@@ -0,0 +1,40 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_TIME_TYPES_H
+#define _UAPI_LINUX_TIME_TYPES_H
+#include <linux/types.h>
+struct __kernel_timespec {
+  __kernel_time64_t tv_sec;
+  long long tv_nsec;
+};
+struct __kernel_itimerspec {
+  struct __kernel_timespec it_interval;
+  struct __kernel_timespec it_value;
+};
+#ifndef __kernel_old_timeval
+struct __kernel_old_timeval {
+  __kernel_long_t tv_sec;
+  __kernel_long_t tv_usec;
+};
+#endif
+struct __kernel_sock_timeval {
+  __s64 tv_sec;
+  __s64 tv_usec;
+};
+#endif
diff --git a/libc/kernel/uapi/linux/timex.h b/libc/kernel/uapi/linux/timex.h
index e574b4b..803eaec 100644
--- a/libc/kernel/uapi/linux/timex.h
+++ b/libc/kernel/uapi/linux/timex.h
@@ -53,6 +53,46 @@
   int : 32;
   int : 32;
 };
+struct __kernel_timex_timeval {
+  __kernel_time64_t tv_sec;
+  long long tv_usec;
+};
+struct __kernel_timex {
+  unsigned int modes;
+  int : 32;
+  long long offset;
+  long long freq;
+  long long maxerror;
+  long long esterror;
+  int status;
+  int : 32;
+  long long constant;
+  long long precision;
+  long long tolerance;
+  struct __kernel_timex_timeval time;
+  long long tick;
+  long long ppsfreq;
+  long long jitter;
+  int shift;
+  int : 32;
+  long long stabil;
+  long long jitcnt;
+  long long calcnt;
+  long long errcnt;
+  long long stbcnt;
+  int tai;
+  int : 32;
+  int : 32;
+  int : 32;
+  int : 32;
+  int : 32;
+  int : 32;
+  int : 32;
+  int : 32;
+  int : 32;
+  int : 32;
+  int : 32;
+};
 #define ADJ_OFFSET 0x0001
 #define ADJ_FREQUENCY 0x0002
 #define ADJ_MAXERROR 0x0004
diff --git a/libc/kernel/uapi/linux/tls.h b/libc/kernel/uapi/linux/tls.h
index b6910af..96bb3a5 100644
--- a/libc/kernel/uapi/linux/tls.h
+++ b/libc/kernel/uapi/linux/tls.h
@@ -27,12 +27,21 @@
 #define TLS_1_2_VERSION_MAJOR 0x3
 #define TLS_1_2_VERSION_MINOR 0x3
 #define TLS_1_2_VERSION TLS_VERSION_NUMBER(TLS_1_2)
+#define TLS_1_3_VERSION_MAJOR 0x3
+#define TLS_1_3_VERSION_MINOR 0x4
+#define TLS_1_3_VERSION TLS_VERSION_NUMBER(TLS_1_3)
 #define TLS_CIPHER_AES_GCM_128 51
 #define TLS_CIPHER_AES_GCM_128_IV_SIZE 8
 #define TLS_CIPHER_AES_GCM_128_KEY_SIZE 16
 #define TLS_CIPHER_AES_GCM_128_SALT_SIZE 4
 #define TLS_CIPHER_AES_GCM_128_TAG_SIZE 16
 #define TLS_CIPHER_AES_GCM_128_REC_SEQ_SIZE 8
+#define TLS_CIPHER_AES_GCM_256 52
+#define TLS_CIPHER_AES_GCM_256_IV_SIZE 8
+#define TLS_CIPHER_AES_GCM_256_KEY_SIZE 32
+#define TLS_CIPHER_AES_GCM_256_SALT_SIZE 4
+#define TLS_CIPHER_AES_GCM_256_TAG_SIZE 16
+#define TLS_CIPHER_AES_GCM_256_REC_SEQ_SIZE 8
 #define TLS_SET_RECORD_TYPE 1
 #define TLS_GET_RECORD_TYPE 2
 struct tls_crypto_info {
@@ -46,4 +55,11 @@
   unsigned char salt[TLS_CIPHER_AES_GCM_128_SALT_SIZE];
   unsigned char rec_seq[TLS_CIPHER_AES_GCM_128_REC_SEQ_SIZE];
 };
+struct tls12_crypto_info_aes_gcm_256 {
+  struct tls_crypto_info info;
+  unsigned char iv[TLS_CIPHER_AES_GCM_256_IV_SIZE];
+  unsigned char key[TLS_CIPHER_AES_GCM_256_KEY_SIZE];
+  unsigned char salt[TLS_CIPHER_AES_GCM_256_SALT_SIZE];
+  unsigned char rec_seq[TLS_CIPHER_AES_GCM_256_REC_SEQ_SIZE];
+};
 #endif
diff --git a/libc/kernel/uapi/linux/v4l2-controls.h b/libc/kernel/uapi/linux/v4l2-controls.h
index 3c2d2b2..e8108dd 100644
--- a/libc/kernel/uapi/linux/v4l2-controls.h
+++ b/libc/kernel/uapi/linux/v4l2-controls.h
@@ -439,6 +439,8 @@
 };
 #define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER (V4L2_CID_MPEG_BASE + 381)
 #define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER_QP (V4L2_CID_MPEG_BASE + 382)
+#define V4L2_CID_MPEG_VIDEO_H264_CONSTRAINED_INTRA_PREDICTION (V4L2_CID_MPEG_BASE + 383)
+#define V4L2_CID_MPEG_VIDEO_H264_CHROMA_QP_INDEX_OFFSET (V4L2_CID_MPEG_BASE + 384)
 #define V4L2_CID_MPEG_VIDEO_MPEG4_I_FRAME_QP (V4L2_CID_MPEG_BASE + 400)
 #define V4L2_CID_MPEG_VIDEO_MPEG4_P_FRAME_QP (V4L2_CID_MPEG_BASE + 401)
 #define V4L2_CID_MPEG_VIDEO_MPEG4_B_FRAME_QP (V4L2_CID_MPEG_BASE + 402)
diff --git a/libc/kernel/uapi/linux/vbox_vmmdev_types.h b/libc/kernel/uapi/linux/vbox_vmmdev_types.h
index 46b3486..3b27029 100644
--- a/libc/kernel/uapi/linux/vbox_vmmdev_types.h
+++ b/libc/kernel/uapi/linux/vbox_vmmdev_types.h
@@ -84,6 +84,30 @@
 #else
 #define VMMDEVREQ_HGCM_CALL VMMDEVREQ_HGCM_CALL32
 #endif
+#define VMMDEV_REQUESTOR_USR_NOT_GIVEN 0x00000000
+#define VMMDEV_REQUESTOR_USR_DRV 0x00000001
+#define VMMDEV_REQUESTOR_USR_DRV_OTHER 0x00000002
+#define VMMDEV_REQUESTOR_USR_ROOT 0x00000003
+#define VMMDEV_REQUESTOR_USR_USER 0x00000006
+#define VMMDEV_REQUESTOR_USR_MASK 0x00000007
+#define VMMDEV_REQUESTOR_KERNEL 0x00000000
+#define VMMDEV_REQUESTOR_USERMODE 0x00000008
+#define VMMDEV_REQUESTOR_MODE_MASK 0x00000008
+#define VMMDEV_REQUESTOR_CON_DONT_KNOW 0x00000000
+#define VMMDEV_REQUESTOR_CON_NO 0x00000010
+#define VMMDEV_REQUESTOR_CON_YES 0x00000020
+#define VMMDEV_REQUESTOR_CON_MASK 0x00000030
+#define VMMDEV_REQUESTOR_GRP_VBOX 0x00000080
+#define VMMDEV_REQUESTOR_TRUST_NOT_GIVEN 0x00000000
+#define VMMDEV_REQUESTOR_TRUST_UNTRUSTED 0x00001000
+#define VMMDEV_REQUESTOR_TRUST_LOW 0x00002000
+#define VMMDEV_REQUESTOR_TRUST_MEDIUM 0x00003000
+#define VMMDEV_REQUESTOR_TRUST_MEDIUM_PLUS 0x00004000
+#define VMMDEV_REQUESTOR_TRUST_HIGH 0x00005000
+#define VMMDEV_REQUESTOR_TRUST_SYSTEM 0x00006000
+#define VMMDEV_REQUESTOR_TRUST_PROTECTED 0x00007000
+#define VMMDEV_REQUESTOR_TRUST_MASK 0x00007000
+#define VMMDEV_REQUESTOR_USER_DEVICE 0x00008000
 enum vmmdev_hgcm_service_location_type {
   VMMDEV_HGCM_LOC_INVALID = 0,
   VMMDEV_HGCM_LOC_LOCALHOST = 1,
diff --git a/libc/kernel/uapi/linux/version.h b/libc/kernel/uapi/linux/version.h
index 43c04d1..5905e81 100644
--- a/libc/kernel/uapi/linux/version.h
+++ b/libc/kernel/uapi/linux/version.h
@@ -16,5 +16,5 @@
  ***
  ****************************************************************************
  ****************************************************************************/
-#define LINUX_VERSION_CODE 327683
+#define LINUX_VERSION_CODE 327939
 #define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
diff --git a/libc/kernel/uapi/linux/videodev2.h b/libc/kernel/uapi/linux/videodev2.h
index 74e591d..3bd7138 100644
--- a/libc/kernel/uapi/linux/videodev2.h
+++ b/libc/kernel/uapi/linux/videodev2.h
@@ -44,6 +44,8 @@
 #define V4L2_FIELD_HAS_BOTTOM(field) ((field) == V4L2_FIELD_BOTTOM || (field) == V4L2_FIELD_INTERLACED || (field) == V4L2_FIELD_INTERLACED_TB || (field) == V4L2_FIELD_INTERLACED_BT || (field) == V4L2_FIELD_SEQ_TB || (field) == V4L2_FIELD_SEQ_BT)
 #define V4L2_FIELD_HAS_BOTH(field) ((field) == V4L2_FIELD_INTERLACED || (field) == V4L2_FIELD_INTERLACED_TB || (field) == V4L2_FIELD_INTERLACED_BT || (field) == V4L2_FIELD_SEQ_TB || (field) == V4L2_FIELD_SEQ_BT)
 #define V4L2_FIELD_HAS_T_OR_B(field) ((field) == V4L2_FIELD_BOTTOM || (field) == V4L2_FIELD_TOP || (field) == V4L2_FIELD_ALTERNATE)
+#define V4L2_FIELD_IS_INTERLACED(field) ((field) == V4L2_FIELD_INTERLACED || (field) == V4L2_FIELD_INTERLACED_TB || (field) == V4L2_FIELD_INTERLACED_BT)
+#define V4L2_FIELD_IS_SEQUENTIAL(field) ((field) == V4L2_FIELD_SEQ_TB || (field) == V4L2_FIELD_SEQ_BT)
 enum v4l2_buf_type {
   V4L2_BUF_TYPE_VIDEO_CAPTURE = 1,
   V4L2_BUF_TYPE_VIDEO_OUTPUT = 2,
@@ -62,7 +64,7 @@
   V4L2_BUF_TYPE_PRIVATE = 0x80,
 };
 #define V4L2_TYPE_IS_MULTIPLANAR(type) ((type) == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE || (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE)
-#define V4L2_TYPE_IS_OUTPUT(type) ((type) == V4L2_BUF_TYPE_VIDEO_OUTPUT || (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE || (type) == V4L2_BUF_TYPE_VIDEO_OVERLAY || (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY || (type) == V4L2_BUF_TYPE_VBI_OUTPUT || (type) == V4L2_BUF_TYPE_SLICED_VBI_OUTPUT || (type) == V4L2_BUF_TYPE_SDR_OUTPUT)
+#define V4L2_TYPE_IS_OUTPUT(type) ((type) == V4L2_BUF_TYPE_VIDEO_OUTPUT || (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE || (type) == V4L2_BUF_TYPE_VIDEO_OVERLAY || (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY || (type) == V4L2_BUF_TYPE_VBI_OUTPUT || (type) == V4L2_BUF_TYPE_SLICED_VBI_OUTPUT || (type) == V4L2_BUF_TYPE_SDR_OUTPUT || (type) == V4L2_BUF_TYPE_META_OUTPUT)
 enum v4l2_tuner_type {
   V4L2_TUNER_RADIO = 1,
   V4L2_TUNER_ANALOG_TV = 2,
@@ -242,6 +244,10 @@
 #define V4L2_PIX_FMT_YUV555 v4l2_fourcc('Y', 'U', 'V', 'O')
 #define V4L2_PIX_FMT_YUV565 v4l2_fourcc('Y', 'U', 'V', 'P')
 #define V4L2_PIX_FMT_YUV32 v4l2_fourcc('Y', 'U', 'V', '4')
+#define V4L2_PIX_FMT_AYUV32 v4l2_fourcc('A', 'Y', 'U', 'V')
+#define V4L2_PIX_FMT_XYUV32 v4l2_fourcc('X', 'Y', 'U', 'V')
+#define V4L2_PIX_FMT_VUYA32 v4l2_fourcc('V', 'U', 'Y', 'A')
+#define V4L2_PIX_FMT_VUYX32 v4l2_fourcc('V', 'U', 'Y', 'X')
 #define V4L2_PIX_FMT_HI240 v4l2_fourcc('H', 'I', '2', '4')
 #define V4L2_PIX_FMT_HM12 v4l2_fourcc('H', 'M', '1', '2')
 #define V4L2_PIX_FMT_M420 v4l2_fourcc('M', '4', '2', '0')
diff --git a/libc/kernel/uapi/linux/xdp_diag.h b/libc/kernel/uapi/linux/xdp_diag.h
new file mode 100644
index 0000000..f7d203f
--- /dev/null
+++ b/libc/kernel/uapi/linux/xdp_diag.h
@@ -0,0 +1,73 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_XDP_DIAG_H
+#define _LINUX_XDP_DIAG_H
+#include <linux/types.h>
+struct xdp_diag_req {
+  __u8 sdiag_family;
+  __u8 sdiag_protocol;
+  __u16 pad;
+  __u32 xdiag_ino;
+  __u32 xdiag_show;
+  __u32 xdiag_cookie[2];
+};
+struct xdp_diag_msg {
+  __u8 xdiag_family;
+  __u8 xdiag_type;
+  __u16 pad;
+  __u32 xdiag_ino;
+  __u32 xdiag_cookie[2];
+};
+#define XDP_SHOW_INFO (1 << 0)
+#define XDP_SHOW_RING_CFG (1 << 1)
+#define XDP_SHOW_UMEM (1 << 2)
+#define XDP_SHOW_MEMINFO (1 << 3)
+enum {
+  XDP_DIAG_NONE,
+  XDP_DIAG_INFO,
+  XDP_DIAG_UID,
+  XDP_DIAG_RX_RING,
+  XDP_DIAG_TX_RING,
+  XDP_DIAG_UMEM,
+  XDP_DIAG_UMEM_FILL_RING,
+  XDP_DIAG_UMEM_COMPLETION_RING,
+  XDP_DIAG_MEMINFO,
+  __XDP_DIAG_MAX,
+};
+#define XDP_DIAG_MAX (__XDP_DIAG_MAX - 1)
+struct xdp_diag_info {
+  __u32 ifindex;
+  __u32 queue_id;
+};
+struct xdp_diag_ring {
+  __u32 entries;
+};
+#define XDP_DU_F_ZEROCOPY (1 << 0)
+struct xdp_diag_umem {
+  __u64 size;
+  __u32 id;
+  __u32 num_pages;
+  __u32 chunk_size;
+  __u32 headroom;
+  __u32 ifindex;
+  __u32 queue_id;
+  __u32 flags;
+  __u32 refs;
+};
+#endif