mptcp: Add MPTCP to skb extensions
authorMat Martineau <mathew.j.martineau@linux.intel.com>
Thu, 9 Jan 2020 15:59:19 +0000 (07:59 -0800)
committerDavid S. Miller <davem@davemloft.net>
Fri, 10 Jan 2020 02:41:41 +0000 (18:41 -0800)
Add enum value for MPTCP and update config dependencies

v5 -> v6:
 - fixed '__unused' field size

Co-developed-by: Matthieu Baerts <matthieu.baerts@tessares.net>
Signed-off-by: Matthieu Baerts <matthieu.baerts@tessares.net>
Co-developed-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
MAINTAINERS
include/linux/skbuff.h
include/net/mptcp.h [new file with mode: 0644]
net/core/skbuff.c

index 218089f..9dcb9ca 100644 (file)
@@ -11573,6 +11573,16 @@ F:     net/ipv6/calipso.c
 F:     net/netfilter/xt_CONNSECMARK.c
 F:     net/netfilter/xt_SECMARK.c
 
+NETWORKING [MPTCP]
+M:     Mat Martineau <mathew.j.martineau@linux.intel.com>
+M:     Matthieu Baerts <matthieu.baerts@tessares.net>
+L:     netdev@vger.kernel.org
+L:     mptcp@lists.01.org
+W:     https://github.com/multipath-tcp/mptcp_net-next/wiki
+B:     https://github.com/multipath-tcp/mptcp_net-next/issues
+S:     Maintained
+F:     include/net/mptcp.h
+
 NETWORKING [TCP]
 M:     Eric Dumazet <edumazet@google.com>
 L:     netdev@vger.kernel.org
index 64e5b1b..f5c2760 100644 (file)
@@ -4097,6 +4097,9 @@ enum skb_ext_id {
 #if IS_ENABLED(CONFIG_NET_TC_SKB_EXT)
        TC_SKB_EXT,
 #endif
+#if IS_ENABLED(CONFIG_MPTCP)
+       SKB_EXT_MPTCP,
+#endif
        SKB_EXT_NUM, /* must be last */
 };
 
diff --git a/include/net/mptcp.h b/include/net/mptcp.h
new file mode 100644 (file)
index 0000000..326043c
--- /dev/null
@@ -0,0 +1,28 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * Multipath TCP
+ *
+ * Copyright (c) 2017 - 2019, Intel Corporation.
+ */
+
+#ifndef __NET_MPTCP_H
+#define __NET_MPTCP_H
+
+#include <linux/types.h>
+
+/* MPTCP sk_buff extension data */
+struct mptcp_ext {
+       u64             data_ack;
+       u64             data_seq;
+       u32             subflow_seq;
+       u16             data_len;
+       u8              use_map:1,
+                       dsn64:1,
+                       data_fin:1,
+                       use_ack:1,
+                       ack64:1,
+                       __unused:3;
+       /* one byte hole */
+};
+
+#endif /* __NET_MPTCP_H */
index 44b0894..a4106da 100644 (file)
@@ -68,6 +68,7 @@
 #include <net/ip6_checksum.h>
 #include <net/xfrm.h>
 #include <net/mpls.h>
+#include <net/mptcp.h>
 
 #include <linux/uaccess.h>
 #include <trace/events/skb.h>
@@ -4109,6 +4110,9 @@ static const u8 skb_ext_type_len[] = {
 #if IS_ENABLED(CONFIG_NET_TC_SKB_EXT)
        [TC_SKB_EXT] = SKB_EXT_CHUNKSIZEOF(struct tc_skb_ext),
 #endif
+#if IS_ENABLED(CONFIG_MPTCP)
+       [SKB_EXT_MPTCP] = SKB_EXT_CHUNKSIZEOF(struct mptcp_ext),
+#endif
 };
 
 static __always_inline unsigned int skb_ext_total_length(void)
@@ -4123,6 +4127,9 @@ static __always_inline unsigned int skb_ext_total_length(void)
 #if IS_ENABLED(CONFIG_NET_TC_SKB_EXT)
                skb_ext_type_len[TC_SKB_EXT] +
 #endif
+#if IS_ENABLED(CONFIG_MPTCP)
+               skb_ext_type_len[SKB_EXT_MPTCP] +
+#endif
                0;
 }