diff options
Diffstat (limited to 'net/ipv4/tcp_fastopen.c')
-rw-r--r-- | net/ipv4/tcp_fastopen.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/net/ipv4/tcp_fastopen.c b/net/ipv4/tcp_fastopen.c index e3c33220c418..31b08ec38cb8 100644 --- a/net/ipv4/tcp_fastopen.c +++ b/net/ipv4/tcp_fastopen.c | |||
@@ -9,8 +9,6 @@ | |||
9 | #include <net/inetpeer.h> | 9 | #include <net/inetpeer.h> |
10 | #include <net/tcp.h> | 10 | #include <net/tcp.h> |
11 | 11 | ||
12 | int sysctl_tcp_fastopen __read_mostly = TFO_CLIENT_ENABLE; | ||
13 | |||
14 | struct tcp_fastopen_context __rcu *tcp_fastopen_ctx; | 12 | struct tcp_fastopen_context __rcu *tcp_fastopen_ctx; |
15 | 13 | ||
16 | static DEFINE_SPINLOCK(tcp_fastopen_ctx_lock); | 14 | static DEFINE_SPINLOCK(tcp_fastopen_ctx_lock); |
@@ -279,21 +277,22 @@ struct sock *tcp_try_fastopen(struct sock *sk, struct sk_buff *skb, | |||
279 | struct request_sock *req, | 277 | struct request_sock *req, |
280 | struct tcp_fastopen_cookie *foc) | 278 | struct tcp_fastopen_cookie *foc) |
281 | { | 279 | { |
282 | struct tcp_fastopen_cookie valid_foc = { .len = -1 }; | ||
283 | bool syn_data = TCP_SKB_CB(skb)->end_seq != TCP_SKB_CB(skb)->seq + 1; | 280 | bool syn_data = TCP_SKB_CB(skb)->end_seq != TCP_SKB_CB(skb)->seq + 1; |
281 | int tcp_fastopen = sock_net(sk)->ipv4.sysctl_tcp_fastopen; | ||
282 | struct tcp_fastopen_cookie valid_foc = { .len = -1 }; | ||
284 | struct sock *child; | 283 | struct sock *child; |
285 | 284 | ||
286 | if (foc->len == 0) /* Client requests a cookie */ | 285 | if (foc->len == 0) /* Client requests a cookie */ |
287 | NET_INC_STATS(sock_net(sk), LINUX_MIB_TCPFASTOPENCOOKIEREQD); | 286 | NET_INC_STATS(sock_net(sk), LINUX_MIB_TCPFASTOPENCOOKIEREQD); |
288 | 287 | ||
289 | if (!((sysctl_tcp_fastopen & TFO_SERVER_ENABLE) && | 288 | if (!((tcp_fastopen & TFO_SERVER_ENABLE) && |
290 | (syn_data || foc->len >= 0) && | 289 | (syn_data || foc->len >= 0) && |
291 | tcp_fastopen_queue_check(sk))) { | 290 | tcp_fastopen_queue_check(sk))) { |
292 | foc->len = -1; | 291 | foc->len = -1; |
293 | return NULL; | 292 | return NULL; |
294 | } | 293 | } |
295 | 294 | ||
296 | if (syn_data && (sysctl_tcp_fastopen & TFO_SERVER_COOKIE_NOT_REQD)) | 295 | if (syn_data && (tcp_fastopen & TFO_SERVER_COOKIE_NOT_REQD)) |
297 | goto fastopen; | 296 | goto fastopen; |
298 | 297 | ||
299 | if (foc->len >= 0 && /* Client presents or requests a cookie */ | 298 | if (foc->len >= 0 && /* Client presents or requests a cookie */ |
@@ -347,7 +346,7 @@ bool tcp_fastopen_cookie_check(struct sock *sk, u16 *mss, | |||
347 | return false; | 346 | return false; |
348 | } | 347 | } |
349 | 348 | ||
350 | if (sysctl_tcp_fastopen & TFO_CLIENT_NO_COOKIE) { | 349 | if (sock_net(sk)->ipv4.sysctl_tcp_fastopen & TFO_CLIENT_NO_COOKIE) { |
351 | cookie->len = -1; | 350 | cookie->len = -1; |
352 | return true; | 351 | return true; |
353 | } | 352 | } |