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

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