Update to kernel headers v4.12.3.

Test: Built angler.
Change-Id: Icbcf4fac2334de8409b049ed7a3b4c24b4e98ce9
diff --git a/libc/kernel/uapi/linux/rds.h b/libc/kernel/uapi/linux/rds.h
index eef0d70..ccb3f54 100644
--- a/libc/kernel/uapi/linux/rds.h
+++ b/libc/kernel/uapi/linux/rds.h
@@ -19,6 +19,7 @@
 #ifndef _LINUX_RDS_H
 #define _LINUX_RDS_H
 #include <linux/types.h>
+#include <linux/socket.h>
 #define RDS_IB_ABI_VERSION 0x301
 #define SOL_RDS 276
 #define RDS_CANCEL_SENT_TO 1
@@ -28,6 +29,7 @@
 #define RDS_CONG_MONITOR 6
 #define RDS_GET_MR_FOR_DEST 7
 #define SO_RDS_TRANSPORT 8
+#define SO_RDS_MSG_RXPATH_LATENCY 10
 #define RDS_TRANS_IB 0
 #define RDS_TRANS_IWARP 1
 #define RDS_TRANS_TCP 2
@@ -42,6 +44,7 @@
 #define RDS_CMSG_ATOMIC_CSWP 7
 #define RDS_CMSG_MASKED_ATOMIC_FADD 8
 #define RDS_CMSG_MASKED_ATOMIC_CSWP 9
+#define RDS_CMSG_RXPATH_LATENCY 11
 #define RDS_INFO_FIRST 10000
 #define RDS_INFO_COUNTERS 10000
 #define RDS_INFO_CONNECTIONS 10001
@@ -55,124 +58,139 @@
 #define RDS_INFO_IWARP_CONNECTIONS 10010
 #define RDS_INFO_LAST 10010
 struct rds_info_counter {
-  uint8_t name[32];
-  uint64_t value;
+  __u8 name[32];
+  __u64 value;
 } __attribute__((packed));
 #define RDS_INFO_CONNECTION_FLAG_SENDING 0x01
 #define RDS_INFO_CONNECTION_FLAG_CONNECTING 0x02
 #define RDS_INFO_CONNECTION_FLAG_CONNECTED 0x04
 #define TRANSNAMSIZ 16
 struct rds_info_connection {
-  uint64_t next_tx_seq;
-  uint64_t next_rx_seq;
+  __u64 next_tx_seq;
+  __u64 next_rx_seq;
   __be32 laddr;
   __be32 faddr;
-  uint8_t transport[TRANSNAMSIZ];
-  uint8_t flags;
+  __u8 transport[TRANSNAMSIZ];
+  __u8 flags;
 } __attribute__((packed));
 #define RDS_INFO_MESSAGE_FLAG_ACK 0x01
 #define RDS_INFO_MESSAGE_FLAG_FAST_ACK 0x02
 struct rds_info_message {
-  uint64_t seq;
-  uint32_t len;
+  __u64 seq;
+  __u32 len;
   __be32 laddr;
   __be32 faddr;
   __be16 lport;
   __be16 fport;
-  uint8_t flags;
+  __u8 flags;
 } __attribute__((packed));
 struct rds_info_socket {
-  uint32_t sndbuf;
+  __u32 sndbuf;
   __be32 bound_addr;
   __be32 connected_addr;
   __be16 bound_port;
   __be16 connected_port;
-  uint32_t rcvbuf;
-  uint64_t inum;
+  __u32 rcvbuf;
+  __u64 inum;
 } __attribute__((packed));
 struct rds_info_tcp_socket {
   __be32 local_addr;
   __be16 local_port;
   __be32 peer_addr;
   __be16 peer_port;
-  uint64_t hdr_rem;
-  uint64_t data_rem;
-  uint32_t last_sent_nxt;
-  uint32_t last_expected_una;
-  uint32_t last_seen_una;
+  __u64 hdr_rem;
+  __u64 data_rem;
+  __u32 last_sent_nxt;
+  __u32 last_expected_una;
+  __u32 last_seen_una;
 } __attribute__((packed));
 #define RDS_IB_GID_LEN 16
 struct rds_info_rdma_connection {
   __be32 src_addr;
   __be32 dst_addr;
-  uint8_t src_gid[RDS_IB_GID_LEN];
-  uint8_t dst_gid[RDS_IB_GID_LEN];
-  uint32_t max_send_wr;
-  uint32_t max_recv_wr;
-  uint32_t max_send_sge;
-  uint32_t rdma_mr_max;
-  uint32_t rdma_mr_size;
+  __u8 src_gid[RDS_IB_GID_LEN];
+  __u8 dst_gid[RDS_IB_GID_LEN];
+  __u32 max_send_wr;
+  __u32 max_recv_wr;
+  __u32 max_send_sge;
+  __u32 rdma_mr_max;
+  __u32 rdma_mr_size;
+};
+enum rds_message_rxpath_latency {
+  RDS_MSG_RX_HDR_TO_DGRAM_START = 0,
+  RDS_MSG_RX_DGRAM_REASSEMBLE,
+  RDS_MSG_RX_DGRAM_DELIVERED,
+  RDS_MSG_RX_DGRAM_TRACE_MAX
+};
+struct rds_rx_trace_so {
+  __u8 rx_traces;
+  __u8 rx_trace_pos[RDS_MSG_RX_DGRAM_TRACE_MAX];
+};
+struct rds_cmsg_rx_trace {
+  __u8 rx_traces;
+  __u8 rx_trace_pos[RDS_MSG_RX_DGRAM_TRACE_MAX];
+  __u64 rx_trace[RDS_MSG_RX_DGRAM_TRACE_MAX];
 };
 #define RDS_CONG_MONITOR_SIZE 64
 #define RDS_CONG_MONITOR_BIT(port) (((unsigned int) port) % RDS_CONG_MONITOR_SIZE)
 #define RDS_CONG_MONITOR_MASK(port) (1ULL << RDS_CONG_MONITOR_BIT(port))
-typedef uint64_t rds_rdma_cookie_t;
+typedef __u64 rds_rdma_cookie_t;
 struct rds_iovec {
-  uint64_t addr;
-  uint64_t bytes;
+  __u64 addr;
+  __u64 bytes;
 };
 struct rds_get_mr_args {
   struct rds_iovec vec;
-  uint64_t cookie_addr;
-  uint64_t flags;
+  __u64 cookie_addr;
+  __u64 flags;
 };
 struct rds_get_mr_for_dest_args {
-  struct sockaddr_storage dest_addr;
+  struct __kernel_sockaddr_storage dest_addr;
   struct rds_iovec vec;
-  uint64_t cookie_addr;
-  uint64_t flags;
+  __u64 cookie_addr;
+  __u64 flags;
 };
 struct rds_free_mr_args {
   rds_rdma_cookie_t cookie;
-  uint64_t flags;
+  __u64 flags;
 };
 struct rds_rdma_args {
   rds_rdma_cookie_t cookie;
   struct rds_iovec remote_vec;
-  uint64_t local_vec_addr;
-  uint64_t nr_local;
-  uint64_t flags;
-  uint64_t user_token;
+  __u64 local_vec_addr;
+  __u64 nr_local;
+  __u64 flags;
+  __u64 user_token;
 };
 struct rds_atomic_args {
   rds_rdma_cookie_t cookie;
-  uint64_t local_addr;
-  uint64_t remote_addr;
+  __u64 local_addr;
+  __u64 remote_addr;
   union {
     struct {
-      uint64_t compare;
-      uint64_t swap;
+      __u64 compare;
+      __u64 swap;
     } cswp;
     struct {
-      uint64_t add;
+      __u64 add;
     } fadd;
     struct {
-      uint64_t compare;
-      uint64_t swap;
-      uint64_t compare_mask;
-      uint64_t swap_mask;
+      __u64 compare;
+      __u64 swap;
+      __u64 compare_mask;
+      __u64 swap_mask;
     } m_cswp;
     struct {
-      uint64_t add;
-      uint64_t nocarry_mask;
+      __u64 add;
+      __u64 nocarry_mask;
     } m_fadd;
   };
-  uint64_t flags;
-  uint64_t user_token;
+  __u64 flags;
+  __u64 user_token;
 };
 struct rds_rdma_notify {
-  uint64_t user_token;
-  int32_t status;
+  __u64 user_token;
+  __s32 status;
 };
 #define RDS_RDMA_SUCCESS 0
 #define RDS_RDMA_REMOTE_ERROR 1