naccyde / rpms / iproute

Forked from rpms/iproute 9 months ago
Clone

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

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