From 14773be6c17582744586b1b9e644f4db33b3e63d Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Sat, 31 May 2014 08:37:28 +0200 Subject: allow to disable tcp fastopen, so that AES is not required to builtin in the kernel --- target/arm/Makefile | 2 +- target/linux/config/Config.in.crypto | 39 ++-- target/linux/config/Config.in.network | 7 + target/linux/patches/3.10.40/tcp-fastopen.patch | 254 +++++++++++++++++++++++ target/linux/patches/3.12.20/tcp-fastopen.patch | 254 +++++++++++++++++++++++ target/linux/patches/3.14.4/tcp-fastopen.patch | 253 ++++++++++++++++++++++ target/linux/patches/3.15-rc7/tcp-fastopen.patch | 253 ++++++++++++++++++++++ 7 files changed, 1042 insertions(+), 20 deletions(-) create mode 100644 target/linux/patches/3.10.40/tcp-fastopen.patch create mode 100644 target/linux/patches/3.12.20/tcp-fastopen.patch create mode 100644 target/linux/patches/3.14.4/tcp-fastopen.patch create mode 100644 target/linux/patches/3.15-rc7/tcp-fastopen.patch (limited to 'target') diff --git a/target/arm/Makefile b/target/arm/Makefile index 85c657007..24ffce9ae 100644 --- a/target/arm/Makefile +++ b/target/arm/Makefile @@ -79,7 +79,7 @@ kernel-strip: @cp $(KERNEL) $(BUILD_DIR)/$(TARGET_KERNEL) kernel-install: kernel-strip - @cp $(BUILD_DIR) $(FW_DIR)/$(TARGET_KERNEL) + @cp $(BUILD_DIR)/$(TARGET_KERNEL) $(FW_DIR)/$(TARGET_KERNEL) dtb-install: env $(KERNEL_MAKE_ENV) $(MAKE) -C $(LINUX_DIR) $(KERNEL_MAKE_OPTS) \ diff --git a/target/linux/config/Config.in.crypto b/target/linux/config/Config.in.crypto index a6fff2804..a476679d8 100644 --- a/target/linux/config/Config.in.crypto +++ b/target/linux/config/Config.in.crypto @@ -1,7 +1,7 @@ menu "Crypto support" config ADK_KERNEL_CRYPTO - boolean + tristate config ADK_KERNEL_CRYPTO_HW tristate @@ -43,55 +43,56 @@ comment "Software cryptography support" menu "Crypto core / Block and Hash modes" config ADK_KERNEL_CRYPTO_PCOMP - boolean + tristate select ADK_KERNEL_CRYPTO_PCOMP2 select ADK_KERNEL_CRYPTO_ALGAPI config ADK_KERNEL_CRYPTO_PCOMP2 - boolean + tristate config ADK_KERNEL_CRYPTO_ALGAPI - boolean + tristate + select ADK_KERNEL_CRYPTO select ADK_KERNEL_CRYPTO_ALGAPI2 config ADK_KERNEL_CRYPTO_ALGAPI2 - boolean + tristate config ADK_KERNEL_CRYPTO_AEAD - boolean + tristate select ADK_KERNEL_CRYPTO_AEAD2 select ADK_KERNEL_CRYPTO_ALGAPI config ADK_KERNEL_CRYPTO_AEAD2 - boolean + tristate config ADK_KERNEL_CRYPTO_HASH - boolean + tristate select ADK_KERNEL_CRYPTO_HASH2 select ADK_KERNEL_CRYPTO_ALGAPI config ADK_KERNEL_CRYPTO_HASH2 - boolean + tristate config ADK_KERNEL_CRYPTO_BLKCIPHER - boolean + tristate select ADK_KERNEL_CRYPTO_BLKCIPHER2 select ADK_KERNEL_CRYPTO_ALGAPI select ADK_KERNEL_CRYPTO_RNG select ADK_KERNEL_CRYPTO_WORKQUEUE config ADK_KERNEL_CRYPTO_BLKCIPHER2 - boolean + tristate config ADK_KERNEL_CRYPTO_WORKQUEUE - boolean + tristate config ADK_KERNEL_CRYPTO_MANAGER - boolean + tristate select ADK_KERNEL_CRYPTO_MANAGER2 config ADK_KERNEL_CRYPTO_MANAGER2 - boolean + tristate select ADK_KERNEL_CRYPTO_AEAD2 select ADK_KERNEL_CRYPTO_HASH2 select ADK_KERNEL_CRYPTO_BLKCIPHER2 @@ -105,7 +106,6 @@ config ADK_KERNEL_CRYPTO_AUTHENC select ADK_KERNEL_CRYPTO_MANAGER select ADK_KERNEL_CRYPTO_HASH default n - help config ADK_KERNEL_CRYPTO_SEQIV prompt "Sequence Number IV Generator" @@ -113,6 +113,7 @@ config ADK_KERNEL_CRYPTO_SEQIV select ADK_KERNEL_CRYPTO_AEAD select ADK_KERNEL_CRYPTO_BLKCIPHER select ADK_KERNEL_CRYPTO_RNG + default n help This IV generator generates an IV based on a sequence number by xoring it with a salt. This algorithm is mainly useful for CTR @@ -208,11 +209,11 @@ config ADK_KERNEL_CRYPTO_XCBC XCBC: Keyed-Hashing with encryption algorithm config ADK_KERNEL_CRYPTO_RNG - boolean + tristate select ADK_KERNEL_CRYPTO_RNG2 config ADK_KERNEL_CRYPTO_RNG2 - boolean + tristate endmenu @@ -306,9 +307,9 @@ menu "Cipher algoritms" config ADK_KERNEL_CRYPTO_AES prompt "AES cipher algorithms" - boolean + tristate select ADK_KERNEL_CRYPTO_ALGAPI - default y + default n help AES cipher algorithms (FIPS-197). AES uses the Rijndael algorithm. diff --git a/target/linux/config/Config.in.network b/target/linux/config/Config.in.network index ad979ce0f..edfd8caa1 100644 --- a/target/linux/config/Config.in.network +++ b/target/linux/config/Config.in.network @@ -40,6 +40,13 @@ config ADK_KERNEL_LLC tristate default n +config ADK_KERNEL_TCP_FASTOPEN + prompt "Enable TCP Fastopen" + select ADK_KERNEL_CRYPTO + select ADK_KERNEL_CRYPTO_AES + boolean + default n + config ADK_KERNEL_IP_MULTICAST prompt "Enable IP Multicasting" boolean diff --git a/target/linux/patches/3.10.40/tcp-fastopen.patch b/target/linux/patches/3.10.40/tcp-fastopen.patch new file mode 100644 index 000000000..c0bddbc4f --- /dev/null +++ b/target/linux/patches/3.10.40/tcp-fastopen.patch @@ -0,0 +1,254 @@ +https://lkml.org/lkml/2014/5/5/674 +Andi Kleen + +diff -Nur linux-3.10.40.orig/include/linux/tcp.h linux-3.10.40/include/linux/tcp.h +--- linux-3.10.40.orig/include/linux/tcp.h 2014-05-13 14:00:04.000000000 +0200 ++++ linux-3.10.40/include/linux/tcp.h 2014-05-30 15:41:44.000000000 +0200 +@@ -357,6 +357,9 @@ + return (struct tcp_timewait_sock *)sk; + } + ++extern void tcp_sock_destruct(struct sock *sk); ++ ++#ifdef CONFIG_TCP_FASTOPEN + static inline bool tcp_passive_fastopen(const struct sock *sk) + { + return (sk->sk_state == TCP_SYN_RECV && +@@ -368,8 +371,6 @@ + return foc->len != -1; + } + +-extern void tcp_sock_destruct(struct sock *sk); +- + static inline int fastopen_init_queue(struct sock *sk, int backlog) + { + struct request_sock_queue *queue = +@@ -389,4 +390,13 @@ + return 0; + } + ++#else ++static inline bool tcp_passive_fastopen(const struct sock *sk) ++{ return false; } ++static inline bool fastopen_cookie_present(struct tcp_fastopen_cookie *foc) ++{ return false; } ++static inline int fastopen_init_queue(struct sock *sk, int backlog) ++{ return 0; } ++#endif ++ + #endif /* _LINUX_TCP_H */ +diff -Nur linux-3.10.40.orig/include/net/request_sock.h linux-3.10.40/include/net/request_sock.h +--- linux-3.10.40.orig/include/net/request_sock.h 2014-05-13 14:00:04.000000000 +0200 ++++ linux-3.10.40/include/net/request_sock.h 2014-05-30 15:41:44.000000000 +0200 +@@ -167,8 +167,14 @@ + + extern void __reqsk_queue_destroy(struct request_sock_queue *queue); + extern void reqsk_queue_destroy(struct request_sock_queue *queue); ++#ifdef CONFIG_TCP_FASTOPEN + extern void reqsk_fastopen_remove(struct sock *sk, + struct request_sock *req, bool reset); ++#else ++static inline void reqsk_fastopen_remove(struct sock *sk, struct request_sock *req, ++ bool reset) {} ++#endif ++ + + static inline struct request_sock * + reqsk_queue_yank_acceptq(struct request_sock_queue *queue) +diff -Nur linux-3.10.40.orig/include/net/tcp.h linux-3.10.40/include/net/tcp.h +--- linux-3.10.40.orig/include/net/tcp.h 2014-05-13 14:00:04.000000000 +0200 ++++ linux-3.10.40/include/net/tcp.h 2014-05-30 15:41:44.000000000 +0200 +@@ -257,7 +257,11 @@ + extern int sysctl_tcp_retries2; + extern int sysctl_tcp_orphan_retries; + extern int sysctl_tcp_syncookies; ++#ifdef CONFIG_TCP_FASTOPEN + extern int sysctl_tcp_fastopen; ++#else ++#define sysctl_tcp_fastopen 0 ++#endif + extern int sysctl_tcp_retrans_collapse; + extern int sysctl_tcp_stdurg; + extern int sysctl_tcp_rfc1337; +@@ -1311,7 +1315,12 @@ + size_t size; + int copied; /* queued in tcp_connect() */ + }; ++ ++#ifdef CONFIG_TCP_FASTOPEN + void tcp_free_fastopen_req(struct tcp_sock *tp); ++#else ++static inline void tcp_free_fastopen_req(struct tcp_sock *tp) {} ++#endif + + extern struct tcp_fastopen_context __rcu *tcp_fastopen_ctx; + int tcp_fastopen_reset_cipher(void *key, unsigned int len); +diff -Nur linux-3.10.40.orig/net/Kconfig linux-3.10.40/net/Kconfig +--- linux-3.10.40.orig/net/Kconfig 2014-05-13 14:00:04.000000000 +0200 ++++ linux-3.10.40/net/Kconfig 2014-05-30 15:41:44.000000000 +0200 +@@ -52,8 +52,8 @@ + + config INET + bool "TCP/IP networking" +- select CRYPTO +- select CRYPTO_AES ++ select CRYPTO if TCP_FASTOPEN ++ select CRYPTO_AES if TCP_FASTOPEN + ---help--- + These are the protocols used on the Internet and on most local + Ethernets. It is highly recommended to say Y here (this will enlarge +diff -Nur linux-3.10.40.orig/net/core/request_sock.c linux-3.10.40/net/core/request_sock.c +--- linux-3.10.40.orig/net/core/request_sock.c 2014-05-13 14:00:04.000000000 +0200 ++++ linux-3.10.40/net/core/request_sock.c 2014-05-30 15:41:44.000000000 +0200 +@@ -131,6 +131,7 @@ + kfree(lopt); + } + ++#ifdef CONFIG_TCP_FASTOPEN + /* + * This function is called to set a Fast Open socket's "fastopen_rsk" field + * to NULL when a TFO socket no longer needs to access the request_sock. +@@ -223,3 +224,4 @@ + sock_put(lsk); + return; + } ++#endif +diff -Nur linux-3.10.40.orig/net/ipv4/Kconfig linux-3.10.40/net/ipv4/Kconfig +--- linux-3.10.40.orig/net/ipv4/Kconfig 2014-05-13 14:00:04.000000000 +0200 ++++ linux-3.10.40/net/ipv4/Kconfig 2014-05-30 15:41:44.000000000 +0200 +@@ -328,6 +328,10 @@ + the notion of a secure tunnel for IPSEC and then use routing protocol + on top. + ++config TCP_FASTOPEN ++ bool "Enable TCP fastopen" ++ default n ++ + config INET_AH + tristate "IP: AH transformation" + select XFRM_ALGO +diff -Nur linux-3.10.40.orig/net/ipv4/Makefile linux-3.10.40/net/ipv4/Makefile +--- linux-3.10.40.orig/net/ipv4/Makefile 2014-05-13 14:00:04.000000000 +0200 ++++ linux-3.10.40/net/ipv4/Makefile 2014-05-30 16:58:49.000000000 +0200 +@@ -7,7 +7,7 @@ + ip_output.o ip_sockglue.o inet_hashtables.o \ + inet_timewait_sock.o inet_connection_sock.o \ + tcp.o tcp_input.o tcp_output.o tcp_timer.o tcp_ipv4.o \ +- tcp_minisocks.o tcp_cong.o tcp_metrics.o tcp_fastopen.o \ ++ tcp_minisocks.o tcp_cong.o tcp_metrics.o \ + datagram.o raw.o udp.o udplite.o \ + arp.o icmp.o devinet.o af_inet.o igmp.o \ + fib_frontend.o fib_semantics.o fib_trie.o \ +@@ -50,6 +50,7 @@ + obj-$(CONFIG_TCP_CONG_LP) += tcp_lp.o + obj-$(CONFIG_TCP_CONG_YEAH) += tcp_yeah.o + obj-$(CONFIG_TCP_CONG_ILLINOIS) += tcp_illinois.o ++obj-$(CONFIG_TCP_FASTOPEN) += tcp_fastopen.o + obj-$(CONFIG_MEMCG_KMEM) += tcp_memcontrol.o + obj-$(CONFIG_NETLABEL) += cipso_ipv4.o + +diff -Nur linux-3.10.40.orig/net/ipv4/sysctl_net_ipv4.c linux-3.10.40/net/ipv4/sysctl_net_ipv4.c +--- linux-3.10.40.orig/net/ipv4/sysctl_net_ipv4.c 2014-05-13 14:00:04.000000000 +0200 ++++ linux-3.10.40/net/ipv4/sysctl_net_ipv4.c 2014-05-30 17:00:16.000000000 +0200 +@@ -236,6 +236,7 @@ + return 0; + } + ++#ifdef CONFIG_TCP_FASTOPEN + static int proc_tcp_fastopen_key(ctl_table *ctl, int write, void __user *buffer, + size_t *lenp, loff_t *ppos) + { +@@ -276,6 +277,7 @@ + kfree(tbl.data); + return ret; + } ++#endif + + static struct ctl_table ipv4_table[] = { + { +@@ -425,6 +427,7 @@ + .proc_handler = proc_dointvec + }, + #endif ++#ifdef CONFIG_TCP_FASTOPEN + { + .procname = "tcp_fastopen", + .data = &sysctl_tcp_fastopen, +@@ -438,6 +441,7 @@ + .maxlen = ((TCP_FASTOPEN_KEY_LENGTH * 2) + 10), + .proc_handler = proc_tcp_fastopen_key, + }, ++#endif + { + .procname = "tcp_tw_recycle", + .data = &tcp_death_row.sysctl_tw_recycle, +diff -Nur linux-3.10.40.orig/net/ipv4/tcp.c linux-3.10.40/net/ipv4/tcp.c +--- linux-3.10.40.orig/net/ipv4/tcp.c 2014-05-13 14:00:04.000000000 +0200 ++++ linux-3.10.40/net/ipv4/tcp.c 2014-05-30 15:41:44.000000000 +0200 +@@ -993,6 +993,7 @@ + return tmp; + } + ++#ifdef CONFIG_TCP_FASTOPEN + void tcp_free_fastopen_req(struct tcp_sock *tp) + { + if (tp->fastopen_req != NULL) { +@@ -1026,6 +1027,7 @@ + tcp_free_fastopen_req(tp); + return err; + } ++#endif + + int tcp_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, + size_t size) +@@ -1041,6 +1043,7 @@ + lock_sock(sk); + + flags = msg->msg_flags; ++#ifdef CONFIG_TCP_FASTOPEN + if (flags & MSG_FASTOPEN) { + err = tcp_sendmsg_fastopen(sk, msg, &copied_syn, size); + if (err == -EINPROGRESS && copied_syn > 0) +@@ -1049,6 +1052,7 @@ + goto out_err; + offset = copied_syn; + } ++#endif + + timeo = sock_sndtimeo(sk, flags & MSG_DONTWAIT); + +diff -Nur linux-3.10.40.orig/net/ipv4/tcp_ipv4.c linux-3.10.40/net/ipv4/tcp_ipv4.c +--- linux-3.10.40.orig/net/ipv4/tcp_ipv4.c 2014-05-13 14:00:04.000000000 +0200 ++++ linux-3.10.40/net/ipv4/tcp_ipv4.c 2014-05-30 15:41:44.000000000 +0200 +@@ -1285,6 +1285,7 @@ + }; + #endif + ++#ifdef CONFIG_TCP_FASTOPEN + static bool tcp_fastopen_check(struct sock *sk, struct sk_buff *skb, + struct request_sock *req, + struct tcp_fastopen_cookie *foc, +@@ -1461,6 +1462,23 @@ + WARN_ON(req->sk == NULL); + return 0; + } ++#else ++static bool tcp_fastopen_check(struct sock *sk, struct sk_buff *skb, ++ struct request_sock *req, ++ struct tcp_fastopen_cookie *foc, ++ struct tcp_fastopen_cookie *valid_foc) ++{ ++ return false; ++} ++ ++static int tcp_v4_conn_req_fastopen(struct sock *sk, ++ struct sk_buff *skb, ++ struct sk_buff *skb_synack, ++ struct request_sock *req) ++{ ++ return 0; ++} ++#endif + + int tcp_v4_conn_request(struct sock *sk, struct sk_buff *skb) + { diff --git a/target/linux/patches/3.12.20/tcp-fastopen.patch b/target/linux/patches/3.12.20/tcp-fastopen.patch new file mode 100644 index 000000000..c1ff7209c --- /dev/null +++ b/target/linux/patches/3.12.20/tcp-fastopen.patch @@ -0,0 +1,254 @@ +https://lkml.org/lkml/2014/5/5/674 +Andi Kleen + +diff -Nur linux-3.12.20.orig/include/linux/tcp.h linux-3.12.20/include/linux/tcp.h +--- linux-3.12.20.orig/include/linux/tcp.h 2014-05-15 09:56:19.000000000 +0200 ++++ linux-3.12.20/include/linux/tcp.h 2014-05-30 14:41:11.000000000 +0200 +@@ -356,6 +356,9 @@ + return (struct tcp_timewait_sock *)sk; + } + ++extern void tcp_sock_destruct(struct sock *sk); ++ ++#ifdef CONFIG_TCP_FASTOPEN + static inline bool tcp_passive_fastopen(const struct sock *sk) + { + return (sk->sk_state == TCP_SYN_RECV && +@@ -367,8 +370,6 @@ + return foc->len != -1; + } + +-extern void tcp_sock_destruct(struct sock *sk); +- + static inline int fastopen_init_queue(struct sock *sk, int backlog) + { + struct request_sock_queue *queue = +@@ -388,4 +389,13 @@ + return 0; + } + ++#else ++static inline bool tcp_passive_fastopen(const struct sock *sk) ++{ return false; } ++static inline bool fastopen_cookie_present(struct tcp_fastopen_cookie *foc) ++{ return false; } ++static inline int fastopen_init_queue(struct sock *sk, int backlog) ++{ return 0; } ++#endif ++ + #endif /* _LINUX_TCP_H */ +diff -Nur linux-3.12.20.orig/include/net/request_sock.h linux-3.12.20/include/net/request_sock.h +--- linux-3.12.20.orig/include/net/request_sock.h 2014-05-15 09:56:19.000000000 +0200 ++++ linux-3.12.20/include/net/request_sock.h 2014-05-30 14:42:55.000000000 +0200 +@@ -167,8 +167,14 @@ + + extern void __reqsk_queue_destroy(struct request_sock_queue *queue); + extern void reqsk_queue_destroy(struct request_sock_queue *queue); ++#ifdef CONFIG_TCP_FASTOPEN + extern void reqsk_fastopen_remove(struct sock *sk, + struct request_sock *req, bool reset); ++#else ++static inline void reqsk_fastopen_remove(struct sock *sk, struct request_sock *req, ++ bool reset) {} ++#endif ++ + + static inline struct request_sock * + reqsk_queue_yank_acceptq(struct request_sock_queue *queue) +diff -Nur linux-3.12.20.orig/include/net/tcp.h linux-3.12.20/include/net/tcp.h +--- linux-3.12.20.orig/include/net/tcp.h 2014-05-15 09:56:19.000000000 +0200 ++++ linux-3.12.20/include/net/tcp.h 2014-05-30 14:41:11.000000000 +0200 +@@ -250,7 +250,11 @@ + extern int sysctl_tcp_retries2; + extern int sysctl_tcp_orphan_retries; + extern int sysctl_tcp_syncookies; ++#ifdef CONFIG_TCP_FASTOPEN + extern int sysctl_tcp_fastopen; ++#else ++#define sysctl_tcp_fastopen 0 ++#endif + extern int sysctl_tcp_retrans_collapse; + extern int sysctl_tcp_stdurg; + extern int sysctl_tcp_rfc1337; +@@ -1325,7 +1329,12 @@ + size_t size; + int copied; /* queued in tcp_connect() */ + }; ++ ++#ifdef CONFIG_TCP_FASTOPEN + void tcp_free_fastopen_req(struct tcp_sock *tp); ++#else ++static inline void tcp_free_fastopen_req(struct tcp_sock *tp) {} ++#endif + + extern struct tcp_fastopen_context __rcu *tcp_fastopen_ctx; + int tcp_fastopen_reset_cipher(void *key, unsigned int len); +diff -Nur linux-3.12.20.orig/net/Kconfig linux-3.12.20/net/Kconfig +--- linux-3.12.20.orig/net/Kconfig 2014-05-15 09:56:19.000000000 +0200 ++++ linux-3.12.20/net/Kconfig 2014-05-30 14:41:11.000000000 +0200 +@@ -53,8 +53,8 @@ + + config INET + bool "TCP/IP networking" +- select CRYPTO +- select CRYPTO_AES ++ select CRYPTO if TCP_FASTOPEN ++ select CRYPTO_AES if TCP_FASTOPEN + ---help--- + These are the protocols used on the Internet and on most local + Ethernets. It is highly recommended to say Y here (this will enlarge +diff -Nur linux-3.12.20.orig/net/core/request_sock.c linux-3.12.20/net/core/request_sock.c +--- linux-3.12.20.orig/net/core/request_sock.c 2014-05-15 09:56:19.000000000 +0200 ++++ linux-3.12.20/net/core/request_sock.c 2014-05-30 14:41:11.000000000 +0200 +@@ -131,6 +131,7 @@ + kfree(lopt); + } + ++#ifdef CONFIG_TCP_FASTOPEN + /* + * This function is called to set a Fast Open socket's "fastopen_rsk" field + * to NULL when a TFO socket no longer needs to access the request_sock. +@@ -223,3 +224,4 @@ + sock_put(lsk); + return; + } ++#endif +diff -Nur linux-3.12.20.orig/net/ipv4/Kconfig linux-3.12.20/net/ipv4/Kconfig +--- linux-3.12.20.orig/net/ipv4/Kconfig 2014-05-15 09:56:19.000000000 +0200 ++++ linux-3.12.20/net/ipv4/Kconfig 2014-05-30 14:41:11.000000000 +0200 +@@ -307,6 +307,10 @@ + the notion of a secure tunnel for IPSEC and then use routing protocol + on top. + ++config TCP_FASTOPEN ++ bool "Enable TCP fastopen" ++ default n ++ + config INET_AH + tristate "IP: AH transformation" + select XFRM_ALGO +diff -Nur linux-3.12.20.orig/net/ipv4/Makefile linux-3.12.20/net/ipv4/Makefile +--- linux-3.12.20.orig/net/ipv4/Makefile 2014-05-15 09:56:19.000000000 +0200 ++++ linux-3.12.20/net/ipv4/Makefile 2014-05-30 14:41:11.000000000 +0200 +@@ -7,7 +7,7 @@ + ip_output.o ip_sockglue.o inet_hashtables.o \ + inet_timewait_sock.o inet_connection_sock.o \ + tcp.o tcp_input.o tcp_output.o tcp_timer.o tcp_ipv4.o \ +- tcp_minisocks.o tcp_cong.o tcp_metrics.o tcp_fastopen.o \ ++ tcp_minisocks.o tcp_cong.o tcp_metrics.o \ + tcp_offload.o datagram.o raw.o udp.o udplite.o \ + udp_offload.o arp.o icmp.o devinet.o af_inet.o igmp.o \ + fib_frontend.o fib_semantics.o fib_trie.o \ +@@ -51,6 +51,7 @@ + obj-$(CONFIG_TCP_CONG_LP) += tcp_lp.o + obj-$(CONFIG_TCP_CONG_YEAH) += tcp_yeah.o + obj-$(CONFIG_TCP_CONG_ILLINOIS) += tcp_illinois.o ++obj-$(CONFIG_TCP_FASTOPEN) += tcp_fastopen.o + obj-$(CONFIG_MEMCG_KMEM) += tcp_memcontrol.o + obj-$(CONFIG_NETLABEL) += cipso_ipv4.o + +diff -Nur linux-3.12.20.orig/net/ipv4/sysctl_net_ipv4.c linux-3.12.20/net/ipv4/sysctl_net_ipv4.c +--- linux-3.12.20.orig/net/ipv4/sysctl_net_ipv4.c 2014-05-15 09:56:19.000000000 +0200 ++++ linux-3.12.20/net/ipv4/sysctl_net_ipv4.c 2014-05-30 14:41:11.000000000 +0200 +@@ -236,6 +236,7 @@ + return 0; + } + ++#ifdef CONFIG_TCP_FASTOPEN + static int proc_tcp_fastopen_key(struct ctl_table *ctl, int write, + void __user *buffer, size_t *lenp, + loff_t *ppos) +@@ -277,6 +278,7 @@ + kfree(tbl.data); + return ret; + } ++#endif + + static struct ctl_table ipv4_table[] = { + { +@@ -426,6 +428,7 @@ + .proc_handler = proc_dointvec + }, + #endif ++#ifdef CONFIG_TCP_FASTOPEN + { + .procname = "tcp_fastopen", + .data = &sysctl_tcp_fastopen, +@@ -439,6 +442,7 @@ + .maxlen = ((TCP_FASTOPEN_KEY_LENGTH * 2) + 10), + .proc_handler = proc_tcp_fastopen_key, + }, ++#endif + { + .procname = "tcp_tw_recycle", + .data = &tcp_death_row.sysctl_tw_recycle, +diff -Nur linux-3.12.20.orig/net/ipv4/tcp.c linux-3.12.20/net/ipv4/tcp.c +--- linux-3.12.20.orig/net/ipv4/tcp.c 2014-05-15 09:56:19.000000000 +0200 ++++ linux-3.12.20/net/ipv4/tcp.c 2014-05-30 14:41:11.000000000 +0200 +@@ -992,6 +992,7 @@ + return tmp; + } + ++#ifdef CONFIG_TCP_FASTOPEN + void tcp_free_fastopen_req(struct tcp_sock *tp) + { + if (tp->fastopen_req != NULL) { +@@ -1025,6 +1026,7 @@ + tcp_free_fastopen_req(tp); + return err; + } ++#endif + + int tcp_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, + size_t size) +@@ -1040,6 +1042,7 @@ + lock_sock(sk); + + flags = msg->msg_flags; ++#ifdef CONFIG_TCP_FASTOPEN + if (flags & MSG_FASTOPEN) { + err = tcp_sendmsg_fastopen(sk, msg, &copied_syn, size); + if (err == -EINPROGRESS && copied_syn > 0) +@@ -1048,6 +1051,7 @@ + goto out_err; + offset = copied_syn; + } ++#endif + + timeo = sock_sndtimeo(sk, flags & MSG_DONTWAIT); + +diff -Nur linux-3.12.20.orig/net/ipv4/tcp_ipv4.c linux-3.12.20/net/ipv4/tcp_ipv4.c +--- linux-3.12.20.orig/net/ipv4/tcp_ipv4.c 2014-05-15 09:56:19.000000000 +0200 ++++ linux-3.12.20/net/ipv4/tcp_ipv4.c 2014-05-30 14:41:11.000000000 +0200 +@@ -1259,6 +1259,7 @@ + }; + #endif + ++#ifdef CONFIG_TCP_FASTOPEN + static bool tcp_fastopen_check(struct sock *sk, struct sk_buff *skb, + struct request_sock *req, + struct tcp_fastopen_cookie *foc, +@@ -1439,6 +1440,23 @@ + WARN_ON(req->sk == NULL); + return 0; + } ++#else ++static bool tcp_fastopen_check(struct sock *sk, struct sk_buff *skb, ++ struct request_sock *req, ++ struct tcp_fastopen_cookie *foc, ++ struct tcp_fastopen_cookie *valid_foc) ++{ ++ return false; ++} ++ ++static int tcp_v4_conn_req_fastopen(struct sock *sk, ++ struct sk_buff *skb, ++ struct sk_buff *skb_synack, ++ struct request_sock *req) ++{ ++ return 0; ++} ++#endif + + int tcp_v4_conn_request(struct sock *sk, struct sk_buff *skb) + { diff --git a/target/linux/patches/3.14.4/tcp-fastopen.patch b/target/linux/patches/3.14.4/tcp-fastopen.patch new file mode 100644 index 000000000..43e685972 --- /dev/null +++ b/target/linux/patches/3.14.4/tcp-fastopen.patch @@ -0,0 +1,253 @@ +https://lkml.org/lkml/2014/5/5/674 +Andi Kleen + +diff -Nur linux-3.14.4.orig/include/linux/tcp.h linux-3.14.4/include/linux/tcp.h +--- linux-3.14.4.orig/include/linux/tcp.h 2014-05-13 13:33:14.000000000 +0200 ++++ linux-3.14.4/include/linux/tcp.h 2014-05-29 21:30:07.000000000 +0200 +@@ -359,6 +359,9 @@ + return (struct tcp_timewait_sock *)sk; + } + ++extern void tcp_sock_destruct(struct sock *sk); ++ ++#ifdef CONFIG_TCP_FASTOPEN + static inline bool tcp_passive_fastopen(const struct sock *sk) + { + return (sk->sk_state == TCP_SYN_RECV && +@@ -370,8 +373,6 @@ + return foc->len != -1; + } + +-extern void tcp_sock_destruct(struct sock *sk); +- + static inline int fastopen_init_queue(struct sock *sk, int backlog) + { + struct request_sock_queue *queue = +@@ -391,4 +392,13 @@ + return 0; + } + ++#else ++static inline bool tcp_passive_fastopen(const struct sock *sk) ++{ return false; } ++static inline bool fastopen_cookie_present(struct tcp_fastopen_cookie *foc) ++{ return false; } ++static inline int fastopen_init_queue(struct sock *sk, int backlog) ++{ return 0; } ++#endif ++ + #endif /* _LINUX_TCP_H */ +diff -Nur linux-3.14.4.orig/include/net/request_sock.h linux-3.14.4/include/net/request_sock.h +--- linux-3.14.4.orig/include/net/request_sock.h 2014-05-13 13:33:14.000000000 +0200 ++++ linux-3.14.4/include/net/request_sock.h 2014-05-29 21:30:07.000000000 +0200 +@@ -168,8 +168,13 @@ + + void __reqsk_queue_destroy(struct request_sock_queue *queue); + void reqsk_queue_destroy(struct request_sock_queue *queue); ++#ifdef CONFIG_TCP_FASTOPEN + void reqsk_fastopen_remove(struct sock *sk, struct request_sock *req, + bool reset); ++#else ++static inline void reqsk_fastopen_remove(struct sock *sk, struct request_sock *req, ++ bool reset) {} ++#endif + + static inline struct request_sock * + reqsk_queue_yank_acceptq(struct request_sock_queue *queue) +diff -Nur linux-3.14.4.orig/include/net/tcp.h linux-3.14.4/include/net/tcp.h +--- linux-3.14.4.orig/include/net/tcp.h 2014-05-13 13:33:14.000000000 +0200 ++++ linux-3.14.4/include/net/tcp.h 2014-05-29 21:30:07.000000000 +0200 +@@ -250,7 +250,11 @@ + extern int sysctl_tcp_retries2; + extern int sysctl_tcp_orphan_retries; + extern int sysctl_tcp_syncookies; ++#ifdef CONFIG_TCP_FASTOPEN + extern int sysctl_tcp_fastopen; ++#else ++#define sysctl_tcp_fastopen 0 ++#endif + extern int sysctl_tcp_retrans_collapse; + extern int sysctl_tcp_stdurg; + extern int sysctl_tcp_rfc1337; +@@ -1307,7 +1311,12 @@ + size_t size; + int copied; /* queued in tcp_connect() */ + }; ++ ++#ifdef CONFIG_TCP_FASTOPEN + void tcp_free_fastopen_req(struct tcp_sock *tp); ++#else ++static inline void tcp_free_fastopen_req(struct tcp_sock *tp) {} ++#endif + + extern struct tcp_fastopen_context __rcu *tcp_fastopen_ctx; + int tcp_fastopen_reset_cipher(void *key, unsigned int len); +diff -Nur linux-3.14.4.orig/net/Kconfig linux-3.14.4/net/Kconfig +--- linux-3.14.4.orig/net/Kconfig 2014-05-13 13:33:14.000000000 +0200 ++++ linux-3.14.4/net/Kconfig 2014-05-29 21:30:07.000000000 +0200 +@@ -53,8 +53,8 @@ + + config INET + bool "TCP/IP networking" +- select CRYPTO +- select CRYPTO_AES ++ select CRYPTO if TCP_FASTOPEN ++ select CRYPTO_AES if TCP_FASTOPEN + ---help--- + These are the protocols used on the Internet and on most local + Ethernets. It is highly recommended to say Y here (this will enlarge +diff -Nur linux-3.14.4.orig/net/core/request_sock.c linux-3.14.4/net/core/request_sock.c +--- linux-3.14.4.orig/net/core/request_sock.c 2014-05-13 13:33:14.000000000 +0200 ++++ linux-3.14.4/net/core/request_sock.c 2014-05-29 21:30:07.000000000 +0200 +@@ -131,6 +131,7 @@ + kfree(lopt); + } + ++#ifdef CONFIG_TCP_FASTOPEN + /* + * This function is called to set a Fast Open socket's "fastopen_rsk" field + * to NULL when a TFO socket no longer needs to access the request_sock. +@@ -223,3 +224,4 @@ + sock_put(lsk); + return; + } ++#endif +diff -Nur linux-3.14.4.orig/net/ipv4/Kconfig linux-3.14.4/net/ipv4/Kconfig +--- linux-3.14.4.orig/net/ipv4/Kconfig 2014-05-13 13:33:14.000000000 +0200 ++++ linux-3.14.4/net/ipv4/Kconfig 2014-05-29 21:30:07.000000000 +0200 +@@ -307,6 +307,10 @@ + the notion of a secure tunnel for IPSEC and then use routing protocol + on top. + ++config TCP_FASTOPEN ++ bool "Enable TCP fastopen" ++ default n ++ + config INET_AH + tristate "IP: AH transformation" + select XFRM_ALGO +diff -Nur linux-3.14.4.orig/net/ipv4/Makefile linux-3.14.4/net/ipv4/Makefile +--- linux-3.14.4.orig/net/ipv4/Makefile 2014-05-13 13:33:14.000000000 +0200 ++++ linux-3.14.4/net/ipv4/Makefile 2014-05-29 21:30:51.000000000 +0200 +@@ -7,7 +7,7 @@ + ip_output.o ip_sockglue.o inet_hashtables.o \ + inet_timewait_sock.o inet_connection_sock.o \ + tcp.o tcp_input.o tcp_output.o tcp_timer.o tcp_ipv4.o \ +- tcp_minisocks.o tcp_cong.o tcp_metrics.o tcp_fastopen.o \ ++ tcp_minisocks.o tcp_cong.o tcp_metrics.o \ + tcp_offload.o datagram.o raw.o udp.o udplite.o \ + udp_offload.o arp.o icmp.o devinet.o af_inet.o igmp.o \ + fib_frontend.o fib_semantics.o fib_trie.o \ +@@ -51,6 +51,7 @@ + obj-$(CONFIG_TCP_CONG_LP) += tcp_lp.o + obj-$(CONFIG_TCP_CONG_YEAH) += tcp_yeah.o + obj-$(CONFIG_TCP_CONG_ILLINOIS) += tcp_illinois.o ++obj-$(CONFIG_TCP_FASTOPEN) += tcp_fastopen.o + obj-$(CONFIG_MEMCG_KMEM) += tcp_memcontrol.o + obj-$(CONFIG_NETLABEL) += cipso_ipv4.o + +diff -Nur linux-3.14.4.orig/net/ipv4/sysctl_net_ipv4.c linux-3.14.4/net/ipv4/sysctl_net_ipv4.c +--- linux-3.14.4.orig/net/ipv4/sysctl_net_ipv4.c 2014-05-13 13:33:14.000000000 +0200 ++++ linux-3.14.4/net/ipv4/sysctl_net_ipv4.c 2014-05-29 21:30:07.000000000 +0200 +@@ -200,6 +200,7 @@ + return ret; + } + ++#ifdef CONFIG_TCP_FASTOPEN + static int proc_tcp_fastopen_key(struct ctl_table *ctl, int write, + void __user *buffer, size_t *lenp, + loff_t *ppos) +@@ -246,6 +247,7 @@ + kfree(tbl.data); + return ret; + } ++#endif + + static struct ctl_table ipv4_table[] = { + { +@@ -388,6 +390,7 @@ + .proc_handler = proc_dointvec + }, + #endif ++#ifdef CONFIG_TCP_FASTOPEN + { + .procname = "tcp_fastopen", + .data = &sysctl_tcp_fastopen, +@@ -401,6 +404,7 @@ + .maxlen = ((TCP_FASTOPEN_KEY_LENGTH * 2) + 10), + .proc_handler = proc_tcp_fastopen_key, + }, ++#endif + { + .procname = "tcp_tw_recycle", + .data = &tcp_death_row.sysctl_tw_recycle, +diff -Nur linux-3.14.4.orig/net/ipv4/tcp.c linux-3.14.4/net/ipv4/tcp.c +--- linux-3.14.4.orig/net/ipv4/tcp.c 2014-05-13 13:33:14.000000000 +0200 ++++ linux-3.14.4/net/ipv4/tcp.c 2014-05-29 21:30:07.000000000 +0200 +@@ -1036,6 +1036,7 @@ + return tmp; + } + ++#ifdef CONFIG_TCP_FASTOPEN + void tcp_free_fastopen_req(struct tcp_sock *tp) + { + if (tp->fastopen_req != NULL) { +@@ -1069,6 +1070,7 @@ + tcp_free_fastopen_req(tp); + return err; + } ++#endif + + int tcp_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, + size_t size) +@@ -1084,6 +1086,7 @@ + lock_sock(sk); + + flags = msg->msg_flags; ++#ifdef CONFIG_TCP_FASTOPEN + if (flags & MSG_FASTOPEN) { + err = tcp_sendmsg_fastopen(sk, msg, &copied_syn, size); + if (err == -EINPROGRESS && copied_syn > 0) +@@ -1092,6 +1095,7 @@ + goto out_err; + offset = copied_syn; + } ++#endif + + timeo = sock_sndtimeo(sk, flags & MSG_DONTWAIT); + +diff -Nur linux-3.14.4.orig/net/ipv4/tcp_ipv4.c linux-3.14.4/net/ipv4/tcp_ipv4.c +--- linux-3.14.4.orig/net/ipv4/tcp_ipv4.c 2014-05-13 13:33:14.000000000 +0200 ++++ linux-3.14.4/net/ipv4/tcp_ipv4.c 2014-05-29 21:30:07.000000000 +0200 +@@ -1260,6 +1260,7 @@ + }; + #endif + ++#ifdef CONFIG_TCP_FASTOPEN + static bool tcp_fastopen_check(struct sock *sk, struct sk_buff *skb, + struct request_sock *req, + struct tcp_fastopen_cookie *foc, +@@ -1440,6 +1441,23 @@ + WARN_ON(req->sk == NULL); + return 0; + } ++#else ++static bool tcp_fastopen_check(struct sock *sk, struct sk_buff *skb, ++ struct request_sock *req, ++ struct tcp_fastopen_cookie *foc, ++ struct tcp_fastopen_cookie *valid_foc) ++{ ++ return false; ++} ++ ++static int tcp_v4_conn_req_fastopen(struct sock *sk, ++ struct sk_buff *skb, ++ struct sk_buff *skb_synack, ++ struct request_sock *req) ++{ ++ return 0; ++} ++#endif + + int tcp_v4_conn_request(struct sock *sk, struct sk_buff *skb) + { diff --git a/target/linux/patches/3.15-rc7/tcp-fastopen.patch b/target/linux/patches/3.15-rc7/tcp-fastopen.patch new file mode 100644 index 000000000..19e1ee2a4 --- /dev/null +++ b/target/linux/patches/3.15-rc7/tcp-fastopen.patch @@ -0,0 +1,253 @@ +https://lkml.org/lkml/2014/5/5/674 +Andi Kleen + +diff -Nur linux-3.15-rc7/include/linux/tcp.h linux-3.15-rc7.orig/include/linux/tcp.h +--- linux-3.15-rc7/include/linux/tcp.h 2014-05-30 10:01:47.000000000 +0200 ++++ linux-3.15-rc7.orig/include/linux/tcp.h 2014-05-26 01:06:00.000000000 +0200 +@@ -359,9 +359,6 @@ + return (struct tcp_timewait_sock *)sk; + } + +-extern void tcp_sock_destruct(struct sock *sk); +- +-#ifdef CONFIG_TCP_FASTOPEN + static inline bool tcp_passive_fastopen(const struct sock *sk) + { + return (sk->sk_state == TCP_SYN_RECV && +@@ -373,6 +370,8 @@ + return foc->len != -1; + } + ++extern void tcp_sock_destruct(struct sock *sk); ++ + static inline int fastopen_init_queue(struct sock *sk, int backlog) + { + struct request_sock_queue *queue = +@@ -392,13 +391,4 @@ + return 0; + } + +-#else +-static inline bool tcp_passive_fastopen(const struct sock *sk) +-{ return false; } +-static inline bool fastopen_cookie_present(struct tcp_fastopen_cookie *foc) +-{ return false; } +-static inline int fastopen_init_queue(struct sock *sk, int backlog) +-{ return 0; } +-#endif +- + #endif /* _LINUX_TCP_H */ +diff -Nur linux-3.15-rc7/include/net/request_sock.h linux-3.15-rc7.orig/include/net/request_sock.h +--- linux-3.15-rc7/include/net/request_sock.h 2014-05-30 10:01:47.000000000 +0200 ++++ linux-3.15-rc7.orig/include/net/request_sock.h 2014-05-26 01:06:00.000000000 +0200 +@@ -168,13 +168,8 @@ + + void __reqsk_queue_destroy(struct request_sock_queue *queue); + void reqsk_queue_destroy(struct request_sock_queue *queue); +-#ifdef CONFIG_TCP_FASTOPEN + void reqsk_fastopen_remove(struct sock *sk, struct request_sock *req, + bool reset); +-#else +-static inline void reqsk_fastopen_remove(struct sock *sk, struct request_sock *req, +- bool reset) {} +-#endif + + static inline struct request_sock * + reqsk_queue_yank_acceptq(struct request_sock_queue *queue) +diff -Nur linux-3.15-rc7/include/net/tcp.h linux-3.15-rc7.orig/include/net/tcp.h +--- linux-3.15-rc7/include/net/tcp.h 2014-05-30 10:01:47.000000000 +0200 ++++ linux-3.15-rc7.orig/include/net/tcp.h 2014-05-26 01:06:00.000000000 +0200 +@@ -251,11 +251,7 @@ + extern int sysctl_tcp_retries2; + extern int sysctl_tcp_orphan_retries; + extern int sysctl_tcp_syncookies; +-#ifdef CONFIG_TCP_FASTOPEN + extern int sysctl_tcp_fastopen; +-#else +-#define sysctl_tcp_fastopen 0 +-#endif + extern int sysctl_tcp_retrans_collapse; + extern int sysctl_tcp_stdurg; + extern int sysctl_tcp_rfc1337; +@@ -1312,12 +1308,7 @@ + size_t size; + int copied; /* queued in tcp_connect() */ + }; +- +-#ifdef CONFIG_TCP_FASTOPEN + void tcp_free_fastopen_req(struct tcp_sock *tp); +-#else +-static inline void tcp_free_fastopen_req(struct tcp_sock *tp) {} +-#endif + + extern struct tcp_fastopen_context __rcu *tcp_fastopen_ctx; + int tcp_fastopen_reset_cipher(void *key, unsigned int len); +diff -Nur linux-3.15-rc7/net/Kconfig linux-3.15-rc7.orig/net/Kconfig +--- linux-3.15-rc7/net/Kconfig 2014-05-30 10:01:47.000000000 +0200 ++++ linux-3.15-rc7.orig/net/Kconfig 2014-05-26 01:06:00.000000000 +0200 +@@ -53,8 +53,8 @@ + + config INET + bool "TCP/IP networking" +- select CRYPTO if TCP_FASTOPEN +- select CRYPTO_AES if TCP_FASTOPEN ++ select CRYPTO ++ select CRYPTO_AES + ---help--- + These are the protocols used on the Internet and on most local + Ethernets. It is highly recommended to say Y here (this will enlarge +diff -Nur linux-3.15-rc7/net/core/request_sock.c linux-3.15-rc7.orig/net/core/request_sock.c +--- linux-3.15-rc7/net/core/request_sock.c 2014-05-30 10:01:47.000000000 +0200 ++++ linux-3.15-rc7.orig/net/core/request_sock.c 2014-05-26 01:06:00.000000000 +0200 +@@ -131,7 +131,6 @@ + kfree(lopt); + } + +-#ifdef CONFIG_TCP_FASTOPEN + /* + * This function is called to set a Fast Open socket's "fastopen_rsk" field + * to NULL when a TFO socket no longer needs to access the request_sock. +@@ -223,4 +222,3 @@ + spin_unlock_bh(&fastopenq->lock); + sock_put(lsk); + } +-#endif +diff -Nur linux-3.15-rc7/net/ipv4/Kconfig linux-3.15-rc7.orig/net/ipv4/Kconfig +--- linux-3.15-rc7/net/ipv4/Kconfig 2014-05-30 10:01:47.000000000 +0200 ++++ linux-3.15-rc7.orig/net/ipv4/Kconfig 2014-05-26 01:06:00.000000000 +0200 +@@ -307,10 +307,6 @@ + the notion of a secure tunnel for IPSEC and then use routing protocol + on top. + +-config TCP_FASTOPEN +- bool "Enable TCP fastopen" +- default n +- + config INET_AH + tristate "IP: AH transformation" + select XFRM_ALGO +diff -Nur linux-3.15-rc7/net/ipv4/Makefile linux-3.15-rc7.orig/net/ipv4/Makefile +--- linux-3.15-rc7/net/ipv4/Makefile 2014-05-30 10:01:47.000000000 +0200 ++++ linux-3.15-rc7.orig/net/ipv4/Makefile 2014-05-26 01:06:00.000000000 +0200 +@@ -7,7 +7,7 @@ + ip_output.o ip_sockglue.o inet_hashtables.o \ + inet_timewait_sock.o inet_connection_sock.o \ + tcp.o tcp_input.o tcp_output.o tcp_timer.o tcp_ipv4.o \ +- tcp_minisocks.o tcp_cong.o tcp_metrics.o \ ++ tcp_minisocks.o tcp_cong.o tcp_metrics.o tcp_fastopen.o \ + tcp_offload.o datagram.o raw.o udp.o udplite.o \ + udp_offload.o arp.o icmp.o devinet.o af_inet.o igmp.o \ + fib_frontend.o fib_semantics.o fib_trie.o \ +@@ -51,7 +51,6 @@ + obj-$(CONFIG_TCP_CONG_LP) += tcp_lp.o + obj-$(CONFIG_TCP_CONG_YEAH) += tcp_yeah.o + obj-$(CONFIG_TCP_CONG_ILLINOIS) += tcp_illinois.o +-obj-$(CONFIG_TCP_FASTOPEN) += tcp_fastopen.o + obj-$(CONFIG_MEMCG_KMEM) += tcp_memcontrol.o + obj-$(CONFIG_NETLABEL) += cipso_ipv4.o + +diff -Nur linux-3.15-rc7/net/ipv4/sysctl_net_ipv4.c linux-3.15-rc7.orig/net/ipv4/sysctl_net_ipv4.c +--- linux-3.15-rc7/net/ipv4/sysctl_net_ipv4.c 2014-05-30 10:01:48.000000000 +0200 ++++ linux-3.15-rc7.orig/net/ipv4/sysctl_net_ipv4.c 2014-05-26 01:06:00.000000000 +0200 +@@ -200,7 +200,6 @@ + return ret; + } + +-#ifdef CONFIG_TCP_FASTOPEN + static int proc_tcp_fastopen_key(struct ctl_table *ctl, int write, + void __user *buffer, size_t *lenp, + loff_t *ppos) +@@ -247,7 +246,6 @@ + kfree(tbl.data); + return ret; + } +-#endif + + static struct ctl_table ipv4_table[] = { + { +@@ -390,7 +388,6 @@ + .proc_handler = proc_dointvec + }, + #endif +-#ifdef CONFIG_TCP_FASTOPEN + { + .procname = "tcp_fastopen", + .data = &sysctl_tcp_fastopen, +@@ -404,7 +401,6 @@ + .maxlen = ((TCP_FASTOPEN_KEY_LENGTH * 2) + 10), + .proc_handler = proc_tcp_fastopen_key, + }, +-#endif + { + .procname = "tcp_tw_recycle", + .data = &tcp_death_row.sysctl_tw_recycle, +diff -Nur linux-3.15-rc7/net/ipv4/tcp.c linux-3.15-rc7.orig/net/ipv4/tcp.c +--- linux-3.15-rc7/net/ipv4/tcp.c 2014-05-30 10:01:48.000000000 +0200 ++++ linux-3.15-rc7.orig/net/ipv4/tcp.c 2014-05-26 01:06:00.000000000 +0200 +@@ -1036,7 +1036,6 @@ + return tmp; + } + +-#ifdef CONFIG_TCP_FASTOPEN + void tcp_free_fastopen_req(struct tcp_sock *tp) + { + if (tp->fastopen_req != NULL) { +@@ -1070,7 +1069,6 @@ + tcp_free_fastopen_req(tp); + return err; + } +-#endif + + int tcp_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, + size_t size) +@@ -1086,7 +1084,6 @@ + lock_sock(sk); + + flags = msg->msg_flags; +-#ifdef CONFIG_TCP_FASTOPEN + if (flags & MSG_FASTOPEN) { + err = tcp_sendmsg_fastopen(sk, msg, &copied_syn, size); + if (err == -EINPROGRESS && copied_syn > 0) +@@ -1095,7 +1092,6 @@ + goto out_err; + offset = copied_syn; + } +-#endif + + timeo = sock_sndtimeo(sk, flags & MSG_DONTWAIT); + +diff -Nur linux-3.15-rc7/net/ipv4/tcp_ipv4.c linux-3.15-rc7.orig/net/ipv4/tcp_ipv4.c +--- linux-3.15-rc7/net/ipv4/tcp_ipv4.c 2014-05-30 10:01:48.000000000 +0200 ++++ linux-3.15-rc7.orig/net/ipv4/tcp_ipv4.c 2014-05-26 01:06:00.000000000 +0200 +@@ -1260,7 +1260,6 @@ + }; + #endif + +-#ifdef CONFIG_TCP_FASTOPEN + static bool tcp_fastopen_check(struct sock *sk, struct sk_buff *skb, + struct request_sock *req, + struct tcp_fastopen_cookie *foc, +@@ -1441,23 +1440,6 @@ + WARN_ON(req->sk == NULL); + return 0; + } +-#else +-static bool tcp_fastopen_check(struct sock *sk, struct sk_buff *skb, +- struct request_sock *req, +- struct tcp_fastopen_cookie *foc, +- struct tcp_fastopen_cookie *valid_foc) +-{ +- return false; +-} +- +-static int tcp_v4_conn_req_fastopen(struct sock *sk, +- struct sk_buff *skb, +- struct sk_buff *skb_synack, +- struct request_sock *req) +-{ +- return 0; +-} +-#endif + + int tcp_v4_conn_request(struct sock *sk, struct sk_buff *skb) + { -- cgit v1.2.3