naccyde / rpms / iproute

Forked from rpms/iproute 9 months ago
Clone

Blame SOURCES/0023-Update-kernel-headers.patch

0ac2f3
From f0023a7d874697821516583c1b3be95e2f110668 Mon Sep 17 00:00:00 2001
0ac2f3
From: Andrea Claudi <aclaudi@redhat.com>
0ac2f3
Date: Thu, 4 Jun 2020 21:41:59 +0200
0ac2f3
Subject: [PATCH] Update kernel headers
0ac2f3
0ac2f3
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1830485
0ac2f3
Upstream Status: iproute2.git commit 7438afd2cc8d3
0ac2f3
Conflicts: on devlink uapi due to missing commit 9dcd8788fe6bc
0ac2f3
           ("Update kernel headers")
0ac2f3
0ac2f3
commit 7438afd2cc8d37fd7f12e29963e1d926de53dda7
0ac2f3
Author: David Ahern <dsahern@gmail.com>
0ac2f3
Date:   Mon Nov 25 23:13:09 2019 +0000
0ac2f3
0ac2f3
    Update kernel headers
0ac2f3
0ac2f3
    Update kernel headers to commit:
0ac2f3
        c431047c4efe ("enetc: add support Credit Based Shaper(CBS) for hardware offload")
0ac2f3
0ac2f3
    Signed-off-by: David Ahern <dsahern@gmail.com>
0ac2f3
---
0ac2f3
 include/uapi/linux/bpf.h                    | 130 ++++++++++++++------
0ac2f3
 include/uapi/linux/gen_stats.h              |   5 +-
0ac2f3
 include/uapi/linux/lwtunnel.h               |  41 ++++++
0ac2f3
 include/uapi/linux/netfilter/ipset/ip_set.h |   2 +
0ac2f3
 include/uapi/linux/pkt_cls.h                |  29 +++++
0ac2f3
 include/uapi/linux/pkt_sched.h              |  22 ++--
0ac2f3
 include/uapi/linux/sctp.h                   |  15 +++
0ac2f3
 include/uapi/linux/tc_act/tc_tunnel_key.h   |  29 +++++
0ac2f3
 include/uapi/linux/tipc.h                   |  21 ++++
0ac2f3
 include/uapi/linux/tipc_netlink.h           |   4 +
0ac2f3
 10 files changed, 246 insertions(+), 52 deletions(-)
0ac2f3
0ac2f3
diff --git a/include/uapi/linux/bpf.h b/include/uapi/linux/bpf.h
0ac2f3
index 94aa5a1d38215..bf3475f915cf1 100644
0ac2f3
--- a/include/uapi/linux/bpf.h
0ac2f3
+++ b/include/uapi/linux/bpf.h
0ac2f3
@@ -173,6 +173,7 @@ enum bpf_prog_type {
0ac2f3
 	BPF_PROG_TYPE_CGROUP_SYSCTL,
0ac2f3
 	BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE,
0ac2f3
 	BPF_PROG_TYPE_CGROUP_SOCKOPT,
0ac2f3
+	BPF_PROG_TYPE_TRACING,
0ac2f3
 };
0ac2f3
 
0ac2f3
 enum bpf_attach_type {
0ac2f3
@@ -199,6 +200,9 @@ enum bpf_attach_type {
0ac2f3
 	BPF_CGROUP_UDP6_RECVMSG,
0ac2f3
 	BPF_CGROUP_GETSOCKOPT,
0ac2f3
 	BPF_CGROUP_SETSOCKOPT,
0ac2f3
+	BPF_TRACE_RAW_TP,
0ac2f3
+	BPF_TRACE_FENTRY,
0ac2f3
+	BPF_TRACE_FEXIT,
0ac2f3
 	__MAX_BPF_ATTACH_TYPE
0ac2f3
 };
0ac2f3
 
0ac2f3
@@ -344,6 +348,9 @@ enum bpf_attach_type {
0ac2f3
 /* Clone map from listener for newly accepted socket */
0ac2f3
 #define BPF_F_CLONE		(1U << 9)
0ac2f3
 
0ac2f3
+/* Enable memory-mapping BPF map */
0ac2f3
+#define BPF_F_MMAPABLE		(1U << 10)
0ac2f3
+
0ac2f3
 /* flags for BPF_PROG_QUERY */
0ac2f3
 #define BPF_F_QUERY_EFFECTIVE	(1U << 0)
0ac2f3
 
0ac2f3
@@ -421,6 +428,7 @@ union bpf_attr {
0ac2f3
 		__aligned_u64	line_info;	/* line info */
0ac2f3
 		__u32		line_info_cnt;	/* number of bpf_line_info records */
0ac2f3
 		__u32		attach_btf_id;	/* in-kernel BTF type id to attach to */
0ac2f3
+		__u32		attach_prog_fd; /* 0 to attach to vmlinux */
0ac2f3
 	};
0ac2f3
 
0ac2f3
 	struct { /* anonymous struct used by BPF_OBJ_* commands */
0ac2f3
@@ -579,10 +587,13 @@ union bpf_attr {
0ac2f3
  * 	Return
0ac2f3
  * 		0 on success, or a negative error in case of failure.
0ac2f3
  *
0ac2f3
- * int bpf_probe_read(void *dst, u32 size, const void *src)
0ac2f3
+ * int bpf_probe_read(void *dst, u32 size, const void *unsafe_ptr)
0ac2f3
  * 	Description
0ac2f3
  * 		For tracing programs, safely attempt to read *size* bytes from
0ac2f3
- * 		address *src* and store the data in *dst*.
0ac2f3
+ * 		kernel space address *unsafe_ptr* and store the data in *dst*.
0ac2f3
+ *
0ac2f3
+ * 		Generally, use bpf_probe_read_user() or bpf_probe_read_kernel()
0ac2f3
+ * 		instead.
0ac2f3
  * 	Return
0ac2f3
  * 		0 on success, or a negative error in case of failure.
0ac2f3
  *
0ac2f3
@@ -1444,45 +1455,14 @@ union bpf_attr {
0ac2f3
  * 	Return
0ac2f3
  * 		0 on success, or a negative error in case of failure.
0ac2f3
  *
0ac2f3
- * int bpf_probe_read_str(void *dst, int size, const void *unsafe_ptr)
0ac2f3
+ * int bpf_probe_read_str(void *dst, u32 size, const void *unsafe_ptr)
0ac2f3
  * 	Description
0ac2f3
- * 		Copy a NUL terminated string from an unsafe address
0ac2f3
- * 		*unsafe_ptr* to *dst*. The *size* should include the
0ac2f3
- * 		terminating NUL byte. In case the string length is smaller than
0ac2f3
- * 		*size*, the target is not padded with further NUL bytes. If the
0ac2f3
- * 		string length is larger than *size*, just *size*-1 bytes are
0ac2f3
- * 		copied and the last byte is set to NUL.
0ac2f3
- *
0ac2f3
- * 		On success, the length of the copied string is returned. This
0ac2f3
- * 		makes this helper useful in tracing programs for reading
0ac2f3
- * 		strings, and more importantly to get its length at runtime. See
0ac2f3
- * 		the following snippet:
0ac2f3
- *
0ac2f3
- * 		::
0ac2f3
- *
0ac2f3
- * 			SEC("kprobe/sys_open")
0ac2f3
- * 			void bpf_sys_open(struct pt_regs *ctx)
0ac2f3
- * 			{
0ac2f3
- * 			        char buf[PATHLEN]; // PATHLEN is defined to 256
0ac2f3
- * 			        int res = bpf_probe_read_str(buf, sizeof(buf),
0ac2f3
- * 				                             ctx->di);
0ac2f3
- *
0ac2f3
- * 				// Consume buf, for example push it to
0ac2f3
- * 				// userspace via bpf_perf_event_output(); we
0ac2f3
- * 				// can use res (the string length) as event
0ac2f3
- * 				// size, after checking its boundaries.
0ac2f3
- * 			}
0ac2f3
+ * 		Copy a NUL terminated string from an unsafe kernel address
0ac2f3
+ * 		*unsafe_ptr* to *dst*. See bpf_probe_read_kernel_str() for
0ac2f3
+ * 		more details.
0ac2f3
  *
0ac2f3
- * 		In comparison, using **bpf_probe_read()** helper here instead
0ac2f3
- * 		to read the string would require to estimate the length at
0ac2f3
- * 		compile time, and would often result in copying more memory
0ac2f3
- * 		than necessary.
0ac2f3
- *
0ac2f3
- * 		Another useful use case is when parsing individual process
0ac2f3
- * 		arguments or individual environment variables navigating
0ac2f3
- * 		*current*\ **->mm->arg_start** and *current*\
0ac2f3
- * 		**->mm->env_start**: using this helper and the return value,
0ac2f3
- * 		one can quickly iterate at the right offset of the memory area.
0ac2f3
+ * 		Generally, use bpf_probe_read_user_str() or bpf_probe_read_kernel_str()
0ac2f3
+ * 		instead.
0ac2f3
  * 	Return
0ac2f3
  * 		On success, the strictly positive length of the string,
0ac2f3
  * 		including the trailing NUL character. On error, a negative
0ac2f3
@@ -2793,6 +2773,72 @@ union bpf_attr {
0ac2f3
  * 		restricted to raw_tracepoint bpf programs.
0ac2f3
  * 	Return
0ac2f3
  * 		0 on success, or a negative error in case of failure.
0ac2f3
+ *
0ac2f3
+ * int bpf_probe_read_user(void *dst, u32 size, const void *unsafe_ptr)
0ac2f3
+ * 	Description
0ac2f3
+ * 		Safely attempt to read *size* bytes from user space address
0ac2f3
+ * 		*unsafe_ptr* and store the data in *dst*.
0ac2f3
+ * 	Return
0ac2f3
+ * 		0 on success, or a negative error in case of failure.
0ac2f3
+ *
0ac2f3
+ * int bpf_probe_read_kernel(void *dst, u32 size, const void *unsafe_ptr)
0ac2f3
+ * 	Description
0ac2f3
+ * 		Safely attempt to read *size* bytes from kernel space address
0ac2f3
+ * 		*unsafe_ptr* and store the data in *dst*.
0ac2f3
+ * 	Return
0ac2f3
+ * 		0 on success, or a negative error in case of failure.
0ac2f3
+ *
0ac2f3
+ * int bpf_probe_read_user_str(void *dst, u32 size, const void *unsafe_ptr)
0ac2f3
+ * 	Description
0ac2f3
+ * 		Copy a NUL terminated string from an unsafe user address
0ac2f3
+ * 		*unsafe_ptr* to *dst*. The *size* should include the
0ac2f3
+ * 		terminating NUL byte. In case the string length is smaller than
0ac2f3
+ * 		*size*, the target is not padded with further NUL bytes. If the
0ac2f3
+ * 		string length is larger than *size*, just *size*-1 bytes are
0ac2f3
+ * 		copied and the last byte is set to NUL.
0ac2f3
+ *
0ac2f3
+ * 		On success, the length of the copied string is returned. This
0ac2f3
+ * 		makes this helper useful in tracing programs for reading
0ac2f3
+ * 		strings, and more importantly to get its length at runtime. See
0ac2f3
+ * 		the following snippet:
0ac2f3
+ *
0ac2f3
+ * 		::
0ac2f3
+ *
0ac2f3
+ * 			SEC("kprobe/sys_open")
0ac2f3
+ * 			void bpf_sys_open(struct pt_regs *ctx)
0ac2f3
+ * 			{
0ac2f3
+ * 			        char buf[PATHLEN]; // PATHLEN is defined to 256
0ac2f3
+ * 			        int res = bpf_probe_read_user_str(buf, sizeof(buf),
0ac2f3
+ * 				                                  ctx->di);
0ac2f3
+ *
0ac2f3
+ * 				// Consume buf, for example push it to
0ac2f3
+ * 				// userspace via bpf_perf_event_output(); we
0ac2f3
+ * 				// can use res (the string length) as event
0ac2f3
+ * 				// size, after checking its boundaries.
0ac2f3
+ * 			}
0ac2f3
+ *
0ac2f3
+ * 		In comparison, using **bpf_probe_read_user()** helper here
0ac2f3
+ * 		instead to read the string would require to estimate the length
0ac2f3
+ * 		at compile time, and would often result in copying more memory
0ac2f3
+ * 		than necessary.
0ac2f3
+ *
0ac2f3
+ * 		Another useful use case is when parsing individual process
0ac2f3
+ * 		arguments or individual environment variables navigating
0ac2f3
+ * 		*current*\ **->mm->arg_start** and *current*\
0ac2f3
+ * 		**->mm->env_start**: using this helper and the return value,
0ac2f3
+ * 		one can quickly iterate at the right offset of the memory area.
0ac2f3
+ * 	Return
0ac2f3
+ * 		On success, the strictly positive length of the string,
0ac2f3
+ * 		including the trailing NUL character. On error, a negative
0ac2f3
+ * 		value.
0ac2f3
+ *
0ac2f3
+ * int bpf_probe_read_kernel_str(void *dst, u32 size, const void *unsafe_ptr)
0ac2f3
+ * 	Description
0ac2f3
+ * 		Copy a NUL terminated string from an unsafe kernel address *unsafe_ptr*
0ac2f3
+ * 		to *dst*. Same semantics as with bpf_probe_read_user_str() apply.
0ac2f3
+ * 	Return
0ac2f3
+ * 		On success, the strictly positive length of the string,	including
0ac2f3
+ * 		the trailing NUL character. On error, a negative value.
0ac2f3
  */
0ac2f3
 #define __BPF_FUNC_MAPPER(FN)		\
0ac2f3
 	FN(unspec),			\
0ac2f3
@@ -2906,7 +2952,11 @@ union bpf_attr {
0ac2f3
 	FN(sk_storage_delete),		\
0ac2f3
 	FN(send_signal),		\
0ac2f3
 	FN(tcp_gen_syncookie),		\
0ac2f3
-	FN(skb_output),
0ac2f3
+	FN(skb_output),			\
0ac2f3
+	FN(probe_read_user),		\
0ac2f3
+	FN(probe_read_kernel),		\
0ac2f3
+	FN(probe_read_user_str),	\
0ac2f3
+	FN(probe_read_kernel_str),
0ac2f3
 
0ac2f3
 /* integer value in 'imm' field of BPF_CALL instruction selects which helper
0ac2f3
  * function eBPF program intends to call
0ac2f3
diff --git a/include/uapi/linux/gen_stats.h b/include/uapi/linux/gen_stats.h
0ac2f3
index 065408e16a807..852f234f1fd63 100644
0ac2f3
--- a/include/uapi/linux/gen_stats.h
0ac2f3
+++ b/include/uapi/linux/gen_stats.h
0ac2f3
@@ -13,6 +13,7 @@ enum {
0ac2f3
 	TCA_STATS_RATE_EST64,
0ac2f3
 	TCA_STATS_PAD,
0ac2f3
 	TCA_STATS_BASIC_HW,
0ac2f3
+	TCA_STATS_PKT64,
0ac2f3
 	__TCA_STATS_MAX,
0ac2f3
 };
0ac2f3
 #define TCA_STATS_MAX (__TCA_STATS_MAX - 1)
0ac2f3
@@ -26,10 +27,6 @@ struct gnet_stats_basic {
0ac2f3
 	__u64	bytes;
0ac2f3
 	__u32	packets;
0ac2f3
 };
0ac2f3
-struct gnet_stats_basic_packed {
0ac2f3
-	__u64	bytes;
0ac2f3
-	__u32	packets;
0ac2f3
-} __attribute__ ((packed));
0ac2f3
 
0ac2f3
 /**
0ac2f3
  * struct gnet_stats_rate_est - rate estimator
0ac2f3
diff --git a/include/uapi/linux/lwtunnel.h b/include/uapi/linux/lwtunnel.h
0ac2f3
index 0ba94063c1809..b7c0191fd1b5f 100644
0ac2f3
--- a/include/uapi/linux/lwtunnel.h
0ac2f3
+++ b/include/uapi/linux/lwtunnel.h
0ac2f3
@@ -28,6 +28,7 @@ enum lwtunnel_ip_t {
0ac2f3
 	LWTUNNEL_IP_TOS,
0ac2f3
 	LWTUNNEL_IP_FLAGS,
0ac2f3
 	LWTUNNEL_IP_PAD,
0ac2f3
+	LWTUNNEL_IP_OPTS,
0ac2f3
 	__LWTUNNEL_IP_MAX,
0ac2f3
 };
0ac2f3
 
0ac2f3
@@ -42,11 +43,51 @@ enum lwtunnel_ip6_t {
0ac2f3
 	LWTUNNEL_IP6_TC,
0ac2f3
 	LWTUNNEL_IP6_FLAGS,
0ac2f3
 	LWTUNNEL_IP6_PAD,
0ac2f3
+	LWTUNNEL_IP6_OPTS,
0ac2f3
 	__LWTUNNEL_IP6_MAX,
0ac2f3
 };
0ac2f3
 
0ac2f3
 #define LWTUNNEL_IP6_MAX (__LWTUNNEL_IP6_MAX - 1)
0ac2f3
 
0ac2f3
+enum {
0ac2f3
+	LWTUNNEL_IP_OPTS_UNSPEC,
0ac2f3
+	LWTUNNEL_IP_OPTS_GENEVE,
0ac2f3
+	LWTUNNEL_IP_OPTS_VXLAN,
0ac2f3
+	LWTUNNEL_IP_OPTS_ERSPAN,
0ac2f3
+	__LWTUNNEL_IP_OPTS_MAX,
0ac2f3
+};
0ac2f3
+
0ac2f3
+#define LWTUNNEL_IP_OPTS_MAX (__LWTUNNEL_IP_OPTS_MAX - 1)
0ac2f3
+
0ac2f3
+enum {
0ac2f3
+	LWTUNNEL_IP_OPT_GENEVE_UNSPEC,
0ac2f3
+	LWTUNNEL_IP_OPT_GENEVE_CLASS,
0ac2f3
+	LWTUNNEL_IP_OPT_GENEVE_TYPE,
0ac2f3
+	LWTUNNEL_IP_OPT_GENEVE_DATA,
0ac2f3
+	__LWTUNNEL_IP_OPT_GENEVE_MAX,
0ac2f3
+};
0ac2f3
+
0ac2f3
+#define LWTUNNEL_IP_OPT_GENEVE_MAX (__LWTUNNEL_IP_OPT_GENEVE_MAX - 1)
0ac2f3
+
0ac2f3
+enum {
0ac2f3
+	LWTUNNEL_IP_OPT_VXLAN_UNSPEC,
0ac2f3
+	LWTUNNEL_IP_OPT_VXLAN_GBP,
0ac2f3
+	__LWTUNNEL_IP_OPT_VXLAN_MAX,
0ac2f3
+};
0ac2f3
+
0ac2f3
+#define LWTUNNEL_IP_OPT_VXLAN_MAX (__LWTUNNEL_IP_OPT_VXLAN_MAX - 1)
0ac2f3
+
0ac2f3
+enum {
0ac2f3
+	LWTUNNEL_IP_OPT_ERSPAN_UNSPEC,
0ac2f3
+	LWTUNNEL_IP_OPT_ERSPAN_VER,
0ac2f3
+	LWTUNNEL_IP_OPT_ERSPAN_INDEX,
0ac2f3
+	LWTUNNEL_IP_OPT_ERSPAN_DIR,
0ac2f3
+	LWTUNNEL_IP_OPT_ERSPAN_HWID,
0ac2f3
+	__LWTUNNEL_IP_OPT_ERSPAN_MAX,
0ac2f3
+};
0ac2f3
+
0ac2f3
+#define LWTUNNEL_IP_OPT_ERSPAN_MAX (__LWTUNNEL_IP_OPT_ERSPAN_MAX - 1)
0ac2f3
+
0ac2f3
 enum {
0ac2f3
 	LWT_BPF_PROG_UNSPEC,
0ac2f3
 	LWT_BPF_PROG_FD,
0ac2f3
diff --git a/include/uapi/linux/netfilter/ipset/ip_set.h b/include/uapi/linux/netfilter/ipset/ip_set.h
0ac2f3
index c512003dba6ba..4b372f46f0d04 100644
0ac2f3
--- a/include/uapi/linux/netfilter/ipset/ip_set.h
0ac2f3
+++ b/include/uapi/linux/netfilter/ipset/ip_set.h
0ac2f3
@@ -205,6 +205,8 @@ enum ipset_cadt_flags {
0ac2f3
 	IPSET_FLAG_WITH_FORCEADD = (1 << IPSET_FLAG_BIT_WITH_FORCEADD),
0ac2f3
 	IPSET_FLAG_BIT_WITH_SKBINFO = 6,
0ac2f3
 	IPSET_FLAG_WITH_SKBINFO = (1 << IPSET_FLAG_BIT_WITH_SKBINFO),
0ac2f3
+	IPSET_FLAG_BIT_IFACE_WILDCARD = 7,
0ac2f3
+	IPSET_FLAG_IFACE_WILDCARD = (1 << IPSET_FLAG_BIT_IFACE_WILDCARD),
0ac2f3
 	IPSET_FLAG_CADT_MAX	= 15,
0ac2f3
 };
0ac2f3
 
0ac2f3
diff --git a/include/uapi/linux/pkt_cls.h b/include/uapi/linux/pkt_cls.h
0ac2f3
index c6ad22f76edee..449a63971451f 100644
0ac2f3
--- a/include/uapi/linux/pkt_cls.h
0ac2f3
+++ b/include/uapi/linux/pkt_cls.h
0ac2f3
@@ -571,6 +571,14 @@ enum {
0ac2f3
 					 * TCA_FLOWER_KEY_ENC_OPT_GENEVE_
0ac2f3
 					 * attributes
0ac2f3
 					 */
0ac2f3
+	TCA_FLOWER_KEY_ENC_OPTS_VXLAN,	/* Nested
0ac2f3
+					 * TCA_FLOWER_KEY_ENC_OPT_VXLAN_
0ac2f3
+					 * attributes
0ac2f3
+					 */
0ac2f3
+	TCA_FLOWER_KEY_ENC_OPTS_ERSPAN,	/* Nested
0ac2f3
+					 * TCA_FLOWER_KEY_ENC_OPT_ERSPAN_
0ac2f3
+					 * attributes
0ac2f3
+					 */
0ac2f3
 	__TCA_FLOWER_KEY_ENC_OPTS_MAX,
0ac2f3
 };
0ac2f3
 
0ac2f3
@@ -588,6 +596,27 @@ enum {
0ac2f3
 #define TCA_FLOWER_KEY_ENC_OPT_GENEVE_MAX \
0ac2f3
 		(__TCA_FLOWER_KEY_ENC_OPT_GENEVE_MAX - 1)
0ac2f3
 
0ac2f3
+enum {
0ac2f3
+	TCA_FLOWER_KEY_ENC_OPT_VXLAN_UNSPEC,
0ac2f3
+	TCA_FLOWER_KEY_ENC_OPT_VXLAN_GBP,		/* u32 */
0ac2f3
+	__TCA_FLOWER_KEY_ENC_OPT_VXLAN_MAX,
0ac2f3
+};
0ac2f3
+
0ac2f3
+#define TCA_FLOWER_KEY_ENC_OPT_VXLAN_MAX \
0ac2f3
+		(__TCA_FLOWER_KEY_ENC_OPT_VXLAN_MAX - 1)
0ac2f3
+
0ac2f3
+enum {
0ac2f3
+	TCA_FLOWER_KEY_ENC_OPT_ERSPAN_UNSPEC,
0ac2f3
+	TCA_FLOWER_KEY_ENC_OPT_ERSPAN_VER,              /* u8 */
0ac2f3
+	TCA_FLOWER_KEY_ENC_OPT_ERSPAN_INDEX,            /* be32 */
0ac2f3
+	TCA_FLOWER_KEY_ENC_OPT_ERSPAN_DIR,              /* u8 */
0ac2f3
+	TCA_FLOWER_KEY_ENC_OPT_ERSPAN_HWID,             /* u8 */
0ac2f3
+	__TCA_FLOWER_KEY_ENC_OPT_ERSPAN_MAX,
0ac2f3
+};
0ac2f3
+
0ac2f3
+#define TCA_FLOWER_KEY_ENC_OPT_ERSPAN_MAX \
0ac2f3
+		(__TCA_FLOWER_KEY_ENC_OPT_ERSPAN_MAX - 1)
0ac2f3
+
0ac2f3
 enum {
0ac2f3
 	TCA_FLOWER_KEY_FLAGS_IS_FRAGMENT = (1 << 0),
0ac2f3
 	TCA_FLOWER_KEY_FLAGS_FRAG_IS_FIRST = (1 << 1),
0ac2f3
diff --git a/include/uapi/linux/pkt_sched.h b/include/uapi/linux/pkt_sched.h
0ac2f3
index 18f185299f472..dab60bd8f0f4a 100644
0ac2f3
--- a/include/uapi/linux/pkt_sched.h
0ac2f3
+++ b/include/uapi/linux/pkt_sched.h
0ac2f3
@@ -950,19 +950,25 @@ enum {
0ac2f3
 	TCA_PIE_BETA,
0ac2f3
 	TCA_PIE_ECN,
0ac2f3
 	TCA_PIE_BYTEMODE,
0ac2f3
+	TCA_PIE_DQ_RATE_ESTIMATOR,
0ac2f3
 	__TCA_PIE_MAX
0ac2f3
 };
0ac2f3
 #define TCA_PIE_MAX   (__TCA_PIE_MAX - 1)
0ac2f3
 
0ac2f3
 struct tc_pie_xstats {
0ac2f3
-	__u64 prob;             /* current probability */
0ac2f3
-	__u32 delay;            /* current delay in ms */
0ac2f3
-	__u32 avg_dq_rate;      /* current average dq_rate in bits/pie_time */
0ac2f3
-	__u32 packets_in;       /* total number of packets enqueued */
0ac2f3
-	__u32 dropped;          /* packets dropped due to pie_action */
0ac2f3
-	__u32 overlimit;        /* dropped due to lack of space in queue */
0ac2f3
-	__u32 maxq;             /* maximum queue size */
0ac2f3
-	__u32 ecn_mark;         /* packets marked with ecn*/
0ac2f3
+	__u64 prob;			/* current probability */
0ac2f3
+	__u32 delay;			/* current delay in ms */
0ac2f3
+	__u32 avg_dq_rate;		/* current average dq_rate in
0ac2f3
+					 * bits/pie_time
0ac2f3
+					 */
0ac2f3
+	__u32 dq_rate_estimating;	/* is avg_dq_rate being calculated? */
0ac2f3
+	__u32 packets_in;		/* total number of packets enqueued */
0ac2f3
+	__u32 dropped;			/* packets dropped due to pie_action */
0ac2f3
+	__u32 overlimit;		/* dropped due to lack of space
0ac2f3
+					 * in queue
0ac2f3
+					 */
0ac2f3
+	__u32 maxq;			/* maximum queue size */
0ac2f3
+	__u32 ecn_mark;			/* packets marked with ecn*/
0ac2f3
 };
0ac2f3
 
0ac2f3
 /* CBS */
0ac2f3
diff --git a/include/uapi/linux/sctp.h b/include/uapi/linux/sctp.h
0ac2f3
index 0d4c1507a169d..f8f218b16c280 100644
0ac2f3
--- a/include/uapi/linux/sctp.h
0ac2f3
+++ b/include/uapi/linux/sctp.h
0ac2f3
@@ -105,6 +105,7 @@ typedef __s32 sctp_assoc_t;
0ac2f3
 #define SCTP_DEFAULT_SNDINFO	34
0ac2f3
 #define SCTP_AUTH_DEACTIVATE_KEY	35
0ac2f3
 #define SCTP_REUSE_PORT		36
0ac2f3
+#define SCTP_PEER_ADDR_THLDS_V2	37
0ac2f3
 
0ac2f3
 /* Internal Socket Options. Some of the sctp library functions are
0ac2f3
  * implemented using these socket options.
0ac2f3
@@ -137,6 +138,8 @@ typedef __s32 sctp_assoc_t;
0ac2f3
 #define SCTP_ASCONF_SUPPORTED	128
0ac2f3
 #define SCTP_AUTH_SUPPORTED	129
0ac2f3
 #define SCTP_ECN_SUPPORTED	130
0ac2f3
+#define SCTP_EXPOSE_POTENTIALLY_FAILED_STATE	131
0ac2f3
+#define SCTP_EXPOSE_PF_STATE	SCTP_EXPOSE_POTENTIALLY_FAILED_STATE
0ac2f3
 
0ac2f3
 /* PR-SCTP policies */
0ac2f3
 #define SCTP_PR_SCTP_NONE	0x0000
0ac2f3
@@ -410,6 +413,8 @@ enum sctp_spc_state {
0ac2f3
 	SCTP_ADDR_ADDED,
0ac2f3
 	SCTP_ADDR_MADE_PRIM,
0ac2f3
 	SCTP_ADDR_CONFIRMED,
0ac2f3
+	SCTP_ADDR_POTENTIALLY_FAILED,
0ac2f3
+#define SCTP_ADDR_PF	SCTP_ADDR_POTENTIALLY_FAILED
0ac2f3
 };
0ac2f3
 
0ac2f3
 
0ac2f3
@@ -917,6 +922,7 @@ struct sctp_paddrinfo {
0ac2f3
 enum sctp_spinfo_state {
0ac2f3
 	SCTP_INACTIVE,
0ac2f3
 	SCTP_PF,
0ac2f3
+#define	SCTP_POTENTIALLY_FAILED		SCTP_PF
0ac2f3
 	SCTP_ACTIVE,
0ac2f3
 	SCTP_UNCONFIRMED,
0ac2f3
 	SCTP_UNKNOWN = 0xffff  /* Value used for transport state unknown */
0ac2f3
@@ -1062,6 +1068,15 @@ struct sctp_paddrthlds {
0ac2f3
 	__u16 spt_pathpfthld;
0ac2f3
 };
0ac2f3
 
0ac2f3
+/* Use a new structure with spt_pathcpthld for back compatibility */
0ac2f3
+struct sctp_paddrthlds_v2 {
0ac2f3
+	sctp_assoc_t spt_assoc_id;
0ac2f3
+	struct sockaddr_storage spt_address;
0ac2f3
+	__u16 spt_pathmaxrxt;
0ac2f3
+	__u16 spt_pathpfthld;
0ac2f3
+	__u16 spt_pathcpthld;
0ac2f3
+};
0ac2f3
+
0ac2f3
 /*
0ac2f3
  * Socket Option for Getting the Association/Stream-Specific PR-SCTP Status
0ac2f3
  */
0ac2f3
diff --git a/include/uapi/linux/tc_act/tc_tunnel_key.h b/include/uapi/linux/tc_act/tc_tunnel_key.h
0ac2f3
index 41c8b462c177c..3f10dc4e7a4bb 100644
0ac2f3
--- a/include/uapi/linux/tc_act/tc_tunnel_key.h
0ac2f3
+++ b/include/uapi/linux/tc_act/tc_tunnel_key.h
0ac2f3
@@ -50,6 +50,14 @@ enum {
0ac2f3
 						 * TCA_TUNNEL_KEY_ENC_OPTS_
0ac2f3
 						 * attributes
0ac2f3
 						 */
0ac2f3
+	TCA_TUNNEL_KEY_ENC_OPTS_VXLAN,		/* Nested
0ac2f3
+						 * TCA_TUNNEL_KEY_ENC_OPTS_
0ac2f3
+						 * attributes
0ac2f3
+						 */
0ac2f3
+	TCA_TUNNEL_KEY_ENC_OPTS_ERSPAN,		/* Nested
0ac2f3
+						 * TCA_TUNNEL_KEY_ENC_OPTS_
0ac2f3
+						 * attributes
0ac2f3
+						 */
0ac2f3
 	__TCA_TUNNEL_KEY_ENC_OPTS_MAX,
0ac2f3
 };
0ac2f3
 
0ac2f3
@@ -67,4 +75,25 @@ enum {
0ac2f3
 #define TCA_TUNNEL_KEY_ENC_OPT_GENEVE_MAX \
0ac2f3
 	(__TCA_TUNNEL_KEY_ENC_OPT_GENEVE_MAX - 1)
0ac2f3
 
0ac2f3
+enum {
0ac2f3
+	TCA_TUNNEL_KEY_ENC_OPT_VXLAN_UNSPEC,
0ac2f3
+	TCA_TUNNEL_KEY_ENC_OPT_VXLAN_GBP,		/* u32 */
0ac2f3
+	__TCA_TUNNEL_KEY_ENC_OPT_VXLAN_MAX,
0ac2f3
+};
0ac2f3
+
0ac2f3
+#define TCA_TUNNEL_KEY_ENC_OPT_VXLAN_MAX \
0ac2f3
+	(__TCA_TUNNEL_KEY_ENC_OPT_VXLAN_MAX - 1)
0ac2f3
+
0ac2f3
+enum {
0ac2f3
+	TCA_TUNNEL_KEY_ENC_OPT_ERSPAN_UNSPEC,
0ac2f3
+	TCA_TUNNEL_KEY_ENC_OPT_ERSPAN_VER,		/* u8 */
0ac2f3
+	TCA_TUNNEL_KEY_ENC_OPT_ERSPAN_INDEX,		/* be32 */
0ac2f3
+	TCA_TUNNEL_KEY_ENC_OPT_ERSPAN_DIR,		/* u8 */
0ac2f3
+	TCA_TUNNEL_KEY_ENC_OPT_ERSPAN_HWID,		/* u8 */
0ac2f3
+	__TCA_TUNNEL_KEY_ENC_OPT_ERSPAN_MAX,
0ac2f3
+};
0ac2f3
+
0ac2f3
+#define TCA_TUNNEL_KEY_ENC_OPT_ERSPAN_MAX \
0ac2f3
+	(__TCA_TUNNEL_KEY_ENC_OPT_ERSPAN_MAX - 1)
0ac2f3
+
0ac2f3
 #endif
0ac2f3
diff --git a/include/uapi/linux/tipc.h b/include/uapi/linux/tipc.h
0ac2f3
index 0f6f28b2e3010..de5bcd2a09fae 100644
0ac2f3
--- a/include/uapi/linux/tipc.h
0ac2f3
+++ b/include/uapi/linux/tipc.h
0ac2f3
@@ -233,6 +233,27 @@ struct tipc_sioc_nodeid_req {
0ac2f3
 	char node_id[TIPC_NODEID_LEN];
0ac2f3
 };
0ac2f3
 
0ac2f3
+/*
0ac2f3
+ * TIPC Crypto, AEAD
0ac2f3
+ */
0ac2f3
+#define TIPC_AEAD_ALG_NAME		(32)
0ac2f3
+
0ac2f3
+struct tipc_aead_key {
0ac2f3
+	char alg_name[TIPC_AEAD_ALG_NAME];
0ac2f3
+	unsigned int keylen;	/* in bytes */
0ac2f3
+	char key[];
0ac2f3
+};
0ac2f3
+
0ac2f3
+#define TIPC_AEAD_KEYLEN_MIN		(16 + 4)
0ac2f3
+#define TIPC_AEAD_KEYLEN_MAX		(32 + 4)
0ac2f3
+#define TIPC_AEAD_KEY_SIZE_MAX		(sizeof(struct tipc_aead_key) + \
0ac2f3
+							TIPC_AEAD_KEYLEN_MAX)
0ac2f3
+
0ac2f3
+static __inline__ int tipc_aead_key_size(struct tipc_aead_key *key)
0ac2f3
+{
0ac2f3
+	return sizeof(*key) + key->keylen;
0ac2f3
+}
0ac2f3
+
0ac2f3
 /* The macros and functions below are deprecated:
0ac2f3
  */
0ac2f3
 
0ac2f3
diff --git a/include/uapi/linux/tipc_netlink.h b/include/uapi/linux/tipc_netlink.h
0ac2f3
index efb958fd167d0..6c2194ab745bd 100644
0ac2f3
--- a/include/uapi/linux/tipc_netlink.h
0ac2f3
+++ b/include/uapi/linux/tipc_netlink.h
0ac2f3
@@ -63,6 +63,8 @@ enum {
0ac2f3
 	TIPC_NL_PEER_REMOVE,
0ac2f3
 	TIPC_NL_BEARER_ADD,
0ac2f3
 	TIPC_NL_UDP_GET_REMOTEIP,
0ac2f3
+	TIPC_NL_KEY_SET,
0ac2f3
+	TIPC_NL_KEY_FLUSH,
0ac2f3
 
0ac2f3
 	__TIPC_NL_CMD_MAX,
0ac2f3
 	TIPC_NL_CMD_MAX = __TIPC_NL_CMD_MAX - 1
0ac2f3
@@ -160,6 +162,8 @@ enum {
0ac2f3
 	TIPC_NLA_NODE_UNSPEC,
0ac2f3
 	TIPC_NLA_NODE_ADDR,		/* u32 */
0ac2f3
 	TIPC_NLA_NODE_UP,		/* flag */
0ac2f3
+	TIPC_NLA_NODE_ID,		/* data */
0ac2f3
+	TIPC_NLA_NODE_KEY,		/* data */
0ac2f3
 
0ac2f3
 	__TIPC_NLA_NODE_MAX,
0ac2f3
 	TIPC_NLA_NODE_MAX = __TIPC_NLA_NODE_MAX - 1
0ac2f3
-- 
0ac2f3
2.26.2
0ac2f3