Update to kernel headers v4.12.3.

Test: Built angler.
Change-Id: Icbcf4fac2334de8409b049ed7a3b4c24b4e98ce9
diff --git a/libc/kernel/uapi/rdma/bnxt_re-abi.h b/libc/kernel/uapi/rdma/bnxt_re-abi.h
new file mode 100644
index 0000000..873c466
--- /dev/null
+++ b/libc/kernel/uapi/rdma/bnxt_re-abi.h
@@ -0,0 +1,61 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   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 __BNXT_RE_UVERBS_ABI_H__
+#define __BNXT_RE_UVERBS_ABI_H__
+#include <linux/types.h>
+#define BNXT_RE_ABI_VERSION 1
+struct bnxt_re_uctx_resp {
+  __u32 dev_id;
+  __u32 max_qp;
+  __u32 pg_size;
+  __u32 cqe_sz;
+  __u32 max_cqd;
+  __u32 rsvd;
+};
+struct bnxt_re_pd_resp {
+  __u32 pdid;
+  __u32 dpi;
+  __u64 dbr;
+};
+struct bnxt_re_cq_req {
+  __u64 cq_va;
+  __u64 cq_handle;
+};
+struct bnxt_re_cq_resp {
+  __u32 cqid;
+  __u32 tail;
+  __u32 phase;
+  __u32 rsvd;
+};
+struct bnxt_re_qp_req {
+  __u64 qpsva;
+  __u64 qprva;
+  __u64 qp_handle;
+};
+struct bnxt_re_qp_resp {
+  __u32 qpid;
+  __u32 rsvd;
+};
+enum bnxt_re_shpg_offt {
+  BNXT_RE_BEG_RESV_OFFT = 0x00,
+  BNXT_RE_AVID_OFFT = 0x10,
+  BNXT_RE_AVID_SIZE = 0x04,
+  BNXT_RE_END_RESV_OFFT = 0xFF0
+};
+#endif
diff --git a/libc/kernel/uapi/rdma/hfi/hfi1_ioctl.h b/libc/kernel/uapi/rdma/hfi/hfi1_ioctl.h
new file mode 100644
index 0000000..ea828fb
--- /dev/null
+++ b/libc/kernel/uapi/rdma/hfi/hfi1_ioctl.h
@@ -0,0 +1,72 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   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__HFI1_IOCTL_H
+#define _LINUX__HFI1_IOCTL_H
+#include <linux/types.h>
+struct hfi1_user_info {
+  __u32 userversion;
+  __u32 pad;
+  __u16 subctxt_cnt;
+  __u16 subctxt_id;
+  __u8 uuid[16];
+};
+struct hfi1_ctxt_info {
+  __u64 runtime_flags;
+  __u32 rcvegr_size;
+  __u16 num_active;
+  __u16 unit;
+  __u16 ctxt;
+  __u16 subctxt;
+  __u16 rcvtids;
+  __u16 credits;
+  __u16 numa_node;
+  __u16 rec_cpu;
+  __u16 send_ctxt;
+  __u16 egrtids;
+  __u16 rcvhdrq_cnt;
+  __u16 rcvhdrq_entsize;
+  __u16 sdma_ring_size;
+};
+struct hfi1_tid_info {
+  __u64 vaddr;
+  __u64 tidlist;
+  __u32 tidcnt;
+  __u32 length;
+};
+struct hfi1_base_info {
+  __u32 hw_version;
+  __u32 sw_version;
+  __u16 jkey;
+  __u16 padding1;
+  __u32 bthqp;
+  __u64 sc_credits_addr;
+  __u64 pio_bufbase_sop;
+  __u64 pio_bufbase;
+  __u64 rcvhdr_bufbase;
+  __u64 rcvegr_bufbase;
+  __u64 sdma_comp_bufbase;
+  __u64 user_regbase;
+  __u64 events_bufbase;
+  __u64 status_bufbase;
+  __u64 rcvhdrtail_base;
+  __u64 subctxt_uregbase;
+  __u64 subctxt_rcvegrbuf;
+  __u64 subctxt_rcvhdrbuf;
+};
+#endif
diff --git a/libc/kernel/uapi/rdma/hfi/hfi1_user.h b/libc/kernel/uapi/rdma/hfi/hfi1_user.h
index b45506d..0d840e9 100644
--- a/libc/kernel/uapi/rdma/hfi/hfi1_user.h
+++ b/libc/kernel/uapi/rdma/hfi/hfi1_user.h
@@ -19,6 +19,7 @@
 #ifndef _LINUX__HFI1_USER_H
 #define _LINUX__HFI1_USER_H
 #include <linux/types.h>
+#include <rdma/rdma_user_ioctl.h>
 #define HFI1_USER_SWMAJOR 6
 #define HFI1_USER_SWMINOR 3
 #define HFI1_SWMAJOR_SHIFT 16
@@ -42,35 +43,6 @@
 #define HFI1_RCVHDR_ENTSIZE_2 (1UL << 0)
 #define HFI1_RCVHDR_ENTSIZE_16 (1UL << 1)
 #define HFI1_RCVDHR_ENTSIZE_32 (1UL << 2)
-#define HFI1_CMD_ASSIGN_CTXT 1
-#define HFI1_CMD_CTXT_INFO 2
-#define HFI1_CMD_USER_INFO 3
-#define HFI1_CMD_TID_UPDATE 4
-#define HFI1_CMD_TID_FREE 5
-#define HFI1_CMD_CREDIT_UPD 6
-#define HFI1_CMD_RECV_CTRL 8
-#define HFI1_CMD_POLL_TYPE 9
-#define HFI1_CMD_ACK_EVENT 10
-#define HFI1_CMD_SET_PKEY 11
-#define HFI1_CMD_CTXT_RESET 12
-#define HFI1_CMD_TID_INVAL_READ 13
-#define HFI1_CMD_GET_VERS 14
-#define IB_IOCTL_MAGIC 0x1b
-#define __NUM(cmd) (HFI1_CMD_ ##cmd + 0xe0)
-struct hfi1_cmd;
-#define HFI1_IOCTL_ASSIGN_CTXT _IOWR(IB_IOCTL_MAGIC, __NUM(ASSIGN_CTXT), struct hfi1_user_info)
-#define HFI1_IOCTL_CTXT_INFO _IOW(IB_IOCTL_MAGIC, __NUM(CTXT_INFO), struct hfi1_ctxt_info)
-#define HFI1_IOCTL_USER_INFO _IOW(IB_IOCTL_MAGIC, __NUM(USER_INFO), struct hfi1_base_info)
-#define HFI1_IOCTL_TID_UPDATE _IOWR(IB_IOCTL_MAGIC, __NUM(TID_UPDATE), struct hfi1_tid_info)
-#define HFI1_IOCTL_TID_FREE _IOWR(IB_IOCTL_MAGIC, __NUM(TID_FREE), struct hfi1_tid_info)
-#define HFI1_IOCTL_CREDIT_UPD _IO(IB_IOCTL_MAGIC, __NUM(CREDIT_UPD))
-#define HFI1_IOCTL_RECV_CTRL _IOW(IB_IOCTL_MAGIC, __NUM(RECV_CTRL), int)
-#define HFI1_IOCTL_POLL_TYPE _IOW(IB_IOCTL_MAGIC, __NUM(POLL_TYPE), int)
-#define HFI1_IOCTL_ACK_EVENT _IOW(IB_IOCTL_MAGIC, __NUM(ACK_EVENT), unsigned long)
-#define HFI1_IOCTL_SET_PKEY _IOW(IB_IOCTL_MAGIC, __NUM(SET_PKEY), __u16)
-#define HFI1_IOCTL_CTXT_RESET _IO(IB_IOCTL_MAGIC, __NUM(CTXT_RESET))
-#define HFI1_IOCTL_TID_INVAL_READ _IOWR(IB_IOCTL_MAGIC, __NUM(TID_INVAL_READ), struct hfi1_tid_info)
-#define HFI1_IOCTL_GET_VERS _IOR(IB_IOCTL_MAGIC, __NUM(GET_VERS), int)
 #define _HFI1_EVENT_FROZEN_BIT 0
 #define _HFI1_EVENT_LINKDOWN_BIT 1
 #define _HFI1_EVENT_LID_CHANGE_BIT 2
@@ -92,36 +64,6 @@
 #define HFI1_MAX_SHARED_CTXTS 8
 #define HFI1_POLL_TYPE_ANYRCV 0x0
 #define HFI1_POLL_TYPE_URGENT 0x1
-struct hfi1_user_info {
-  __u32 userversion;
-  __u32 pad;
-  __u16 subctxt_cnt;
-  __u16 subctxt_id;
-  __u8 uuid[16];
-};
-struct hfi1_ctxt_info {
-  __u64 runtime_flags;
-  __u32 rcvegr_size;
-  __u16 num_active;
-  __u16 unit;
-  __u16 ctxt;
-  __u16 subctxt;
-  __u16 rcvtids;
-  __u16 credits;
-  __u16 numa_node;
-  __u16 rec_cpu;
-  __u16 send_ctxt;
-  __u16 egrtids;
-  __u16 rcvhdrq_cnt;
-  __u16 rcvhdrq_entsize;
-  __u16 sdma_ring_size;
-};
-struct hfi1_tid_info {
-  __u64 vaddr;
-  __u64 tidlist;
-  __u32 tidcnt;
-  __u32 length;
-};
 enum hfi1_sdma_comp_state {
   FREE = 0,
   QUEUED,
@@ -137,26 +79,6 @@
   __u64 port;
   char freezemsg[0];
 };
-struct hfi1_base_info {
-  __u32 hw_version;
-  __u32 sw_version;
-  __u16 jkey;
-  __u16 padding1;
-  __u32 bthqp;
-  __u64 sc_credits_addr;
-  __u64 pio_bufbase_sop;
-  __u64 pio_bufbase;
-  __u64 rcvhdr_bufbase;
-  __u64 rcvegr_bufbase;
-  __u64 sdma_comp_bufbase;
-  __u64 user_regbase;
-  __u64 events_bufbase;
-  __u64 status_bufbase;
-  __u64 rcvhdrtail_base;
-  __u64 subctxt_uregbase;
-  __u64 subctxt_rcvegrbuf;
-  __u64 subctxt_rcvhdrbuf;
-};
 enum sdma_req_opcode {
   EXPECTED = 0,
   EAGER
diff --git a/libc/kernel/uapi/rdma/ib_user_mad.h b/libc/kernel/uapi/rdma/ib_user_mad.h
index 2aacb5c..cd723bb 100644
--- a/libc/kernel/uapi/rdma/ib_user_mad.h
+++ b/libc/kernel/uapi/rdma/ib_user_mad.h
@@ -19,7 +19,7 @@
 #ifndef IB_USER_MAD_H
 #define IB_USER_MAD_H
 #include <linux/types.h>
-#include <linux/ioctl.h>
+#include <rdma/rdma_user_ioctl.h>
 #define IB_USER_MAD_ABI_VERSION 5
 struct ib_user_mad_hdr_old {
   __u32 id;
@@ -90,9 +90,4 @@
   __u8 rmpp_version;
   __u8 reserved[3];
 };
-#define IB_IOCTL_MAGIC 0x1b
-#define IB_USER_MAD_REGISTER_AGENT _IOWR(IB_IOCTL_MAGIC, 1, struct ib_user_mad_reg_req)
-#define IB_USER_MAD_UNREGISTER_AGENT _IOW(IB_IOCTL_MAGIC, 2, __u32)
-#define IB_USER_MAD_ENABLE_PKEY _IO(IB_IOCTL_MAGIC, 3)
-#define IB_USER_MAD_REGISTER_AGENT2 _IOWR(IB_IOCTL_MAGIC, 4, struct ib_user_mad_reg_req2)
 #endif
diff --git a/libc/kernel/uapi/rdma/ib_user_verbs.h b/libc/kernel/uapi/rdma/ib_user_verbs.h
index c914006..4feb031 100644
--- a/libc/kernel/uapi/rdma/ib_user_verbs.h
+++ b/libc/kernel/uapi/rdma/ib_user_verbs.h
@@ -184,7 +184,7 @@
   __u64 device_cap_flags_ex;
   struct ib_uverbs_rss_caps rss_caps;
   __u32 max_wq_type_rq;
-  __u32 reserved;
+  __u32 raw_packet_caps;
 };
 struct ib_uverbs_query_port {
   __u64 response;
@@ -775,6 +775,28 @@
   struct ib_uverbs_flow_ipv6_filter val;
   struct ib_uverbs_flow_ipv6_filter mask;
 };
+struct ib_uverbs_flow_spec_action_tag {
+  union {
+    struct ib_uverbs_flow_spec_hdr hdr;
+    struct {
+      __u32 type;
+      __u16 size;
+      __u16 reserved;
+    };
+  };
+  __u32 tag_id;
+  __u32 reserved1;
+};
+struct ib_uverbs_flow_spec_action_drop {
+  union {
+    struct ib_uverbs_flow_spec_hdr hdr;
+    struct {
+      __u32 type;
+      __u16 size;
+      __u16 reserved;
+    };
+  };
+};
 struct ib_uverbs_flow_tunnel_filter {
   __be32 tunnel_id;
 };
@@ -876,6 +898,8 @@
   __u32 cq_handle;
   __u32 max_wr;
   __u32 max_sge;
+  __u32 create_flags;
+  __u32 reserved;
 };
 struct ib_uverbs_ex_create_wq_resp {
   __u32 comp_mask;
@@ -900,6 +924,8 @@
   __u32 wq_handle;
   __u32 wq_state;
   __u32 curr_wq_state;
+  __u32 flags;
+  __u32 flags_mask;
 };
 #define IB_USER_VERBS_MAX_LOG_IND_TBL_SIZE 0x0d
 struct ib_uverbs_ex_create_rwq_ind_table {
@@ -917,4 +943,5 @@
   __u32 comp_mask;
   __u32 ind_tbl_handle;
 };
+#define IB_DEVICE_NAME_MAX 64
 #endif
diff --git a/libc/kernel/uapi/rdma/mlx5-abi.h b/libc/kernel/uapi/rdma/mlx5-abi.h
index 1a8eb0d..6e76a3d 100644
--- a/libc/kernel/uapi/rdma/mlx5-abi.h
+++ b/libc/kernel/uapi/rdma/mlx5-abi.h
@@ -19,6 +19,7 @@
 #ifndef MLX5_ABI_USER_H
 #define MLX5_ABI_USER_H
 #include <linux/types.h>
+#include <linux/if_ether.h>
 enum {
   MLX5_QP_FLAG_SIGNATURE = 1 << 0,
   MLX5_QP_FLAG_SCATTER_CQE = 1 << 1,
@@ -31,18 +32,22 @@
 };
 #define MLX5_IB_UVERBS_ABI_VERSION 1
 struct mlx5_ib_alloc_ucontext_req {
-  __u32 total_num_uuars;
-  __u32 num_low_latency_uuars;
+  __u32 total_num_bfregs;
+  __u32 num_low_latency_bfregs;
+};
+enum mlx5_lib_caps {
+  MLX5_LIB_CAP_4K_UAR = (__u64) 1 << 0,
 };
 struct mlx5_ib_alloc_ucontext_req_v2 {
-  __u32 total_num_uuars;
-  __u32 num_low_latency_uuars;
+  __u32 total_num_bfregs;
+  __u32 num_low_latency_bfregs;
   __u32 flags;
   __u32 comp_mask;
   __u8 max_cqe_version;
   __u8 reserved0;
   __u16 reserved1;
   __u32 reserved2;
+  __u64 lib_caps;
 };
 enum mlx5_ib_alloc_ucontext_resp_mask {
   MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_CORE_CLOCK_OFFSET = 1UL << 0,
@@ -51,10 +56,17 @@
   MLX5_USER_CMDS_SUPP_UHW_QUERY_DEVICE = 1 << 0,
   MLX5_USER_CMDS_SUPP_UHW_CREATE_AH = 1 << 1,
 };
+enum mlx5_user_inline_mode {
+  MLX5_USER_INLINE_MODE_NA,
+  MLX5_USER_INLINE_MODE_NONE,
+  MLX5_USER_INLINE_MODE_L2,
+  MLX5_USER_INLINE_MODE_IP,
+  MLX5_USER_INLINE_MODE_TCP_UDP,
+};
 struct mlx5_ib_alloc_ucontext_resp {
   __u32 qp_tab_size;
   __u32 bf_reg_size;
-  __u32 tot_uuars;
+  __u32 tot_bfregs;
   __u32 cache_line_size;
   __u16 max_sq_desc_sz;
   __u16 max_rq_desc_sz;
@@ -67,8 +79,11 @@
   __u32 response_length;
   __u8 cqe_version;
   __u8 cmds_supp_uhw;
-  __u16 reserved2;
+  __u8 eth_min_inline;
+  __u8 reserved2;
   __u64 hca_core_clock_offset;
+  __u32 log_uar_size;
+  __u32 num_uars_per_page;
 };
 struct mlx5_ib_alloc_pd_resp {
   __u32 pdn;
@@ -171,7 +186,7 @@
   __u32 reserved1;
 };
 struct mlx5_ib_create_qp_resp {
-  __u32 uuar_index;
+  __u32 bfreg_index;
 };
 struct mlx5_ib_alloc_mw {
   __u32 comp_mask;
diff --git a/libc/kernel/uapi/rdma/rdma_user_ioctl.h b/libc/kernel/uapi/rdma/rdma_user_ioctl.h
new file mode 100644
index 0000000..bb65c5d
--- /dev/null
+++ b/libc/kernel/uapi/rdma/rdma_user_ioctl.h
@@ -0,0 +1,44 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   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 RDMA_USER_IOCTL_H
+#define RDMA_USER_IOCTL_H
+#include <linux/types.h>
+#include <linux/ioctl.h>
+#include <rdma/ib_user_mad.h>
+#include <rdma/hfi/hfi1_ioctl.h>
+#define RDMA_IOCTL_MAGIC 0x1b
+#define IB_IOCTL_MAGIC RDMA_IOCTL_MAGIC
+#define IB_USER_MAD_REGISTER_AGENT _IOWR(RDMA_IOCTL_MAGIC, 0x01, struct ib_user_mad_reg_req)
+#define IB_USER_MAD_UNREGISTER_AGENT _IOW(RDMA_IOCTL_MAGIC, 0x02, __u32)
+#define IB_USER_MAD_ENABLE_PKEY _IO(RDMA_IOCTL_MAGIC, 0x03)
+#define IB_USER_MAD_REGISTER_AGENT2 _IOWR(RDMA_IOCTL_MAGIC, 0x04, struct ib_user_mad_reg_req2)
+#define HFI1_IOCTL_ASSIGN_CTXT _IOWR(RDMA_IOCTL_MAGIC, 0xE1, struct hfi1_user_info)
+#define HFI1_IOCTL_CTXT_INFO _IOW(RDMA_IOCTL_MAGIC, 0xE2, struct hfi1_ctxt_info)
+#define HFI1_IOCTL_USER_INFO _IOW(RDMA_IOCTL_MAGIC, 0xE3, struct hfi1_base_info)
+#define HFI1_IOCTL_TID_UPDATE _IOWR(RDMA_IOCTL_MAGIC, 0xE4, struct hfi1_tid_info)
+#define HFI1_IOCTL_TID_FREE _IOWR(RDMA_IOCTL_MAGIC, 0xE5, struct hfi1_tid_info)
+#define HFI1_IOCTL_CREDIT_UPD _IO(RDMA_IOCTL_MAGIC, 0xE6)
+#define HFI1_IOCTL_RECV_CTRL _IOW(RDMA_IOCTL_MAGIC, 0xE8, int)
+#define HFI1_IOCTL_POLL_TYPE _IOW(RDMA_IOCTL_MAGIC, 0xE9, int)
+#define HFI1_IOCTL_ACK_EVENT _IOW(RDMA_IOCTL_MAGIC, 0xEA, unsigned long)
+#define HFI1_IOCTL_SET_PKEY _IOW(RDMA_IOCTL_MAGIC, 0xEB, __u16)
+#define HFI1_IOCTL_CTXT_RESET _IO(RDMA_IOCTL_MAGIC, 0xEC)
+#define HFI1_IOCTL_TID_INVAL_READ _IOWR(RDMA_IOCTL_MAGIC, 0xED, struct hfi1_tid_info)
+#define HFI1_IOCTL_GET_VERS _IOR(RDMA_IOCTL_MAGIC, 0xEE, int)
+#endif
diff --git a/libc/kernel/uapi/rdma/vmw_pvrdma-abi.h b/libc/kernel/uapi/rdma/vmw_pvrdma-abi.h
index ab734f9..3666815 100644
--- a/libc/kernel/uapi/rdma/vmw_pvrdma-abi.h
+++ b/libc/kernel/uapi/rdma/vmw_pvrdma-abi.h
@@ -168,7 +168,7 @@
   __u32 opcode;
   __u32 send_flags;
   union {
-    __u32 imm_data;
+    __be32 imm_data;
     __u32 invalidate_rkey;
   } ex;
   __u32 reserved;
@@ -216,7 +216,7 @@
   __u32 opcode;
   __u32 status;
   __u32 byte_len;
-  __u32 imm_data;
+  __be32 imm_data;
   __u32 src_qp;
   __u32 wc_flags;
   __u32 vendor_err;