diff options
Diffstat (limited to 'include/linux/tcp.h')
-rw-r--r-- | include/linux/tcp.h | 36 |
1 files changed, 34 insertions, 2 deletions
diff --git a/include/linux/tcp.h b/include/linux/tcp.h index 5f359dbfcdce..eb125a4c30b3 100644 --- a/include/linux/tcp.h +++ b/include/linux/tcp.h | |||
@@ -243,6 +243,16 @@ static inline unsigned int tcp_optlen(const struct sk_buff *skb) | |||
243 | return (tcp_hdr(skb)->doff - 5) * 4; | 243 | return (tcp_hdr(skb)->doff - 5) * 4; |
244 | } | 244 | } |
245 | 245 | ||
246 | /* TCP Fast Open */ | ||
247 | #define TCP_FASTOPEN_COOKIE_MIN 4 /* Min Fast Open Cookie size in bytes */ | ||
248 | #define TCP_FASTOPEN_COOKIE_MAX 16 /* Max Fast Open Cookie size in bytes */ | ||
249 | |||
250 | /* TCP Fast Open Cookie as stored in memory */ | ||
251 | struct tcp_fastopen_cookie { | ||
252 | s8 len; | ||
253 | u8 val[TCP_FASTOPEN_COOKIE_MAX]; | ||
254 | }; | ||
255 | |||
246 | /* This defines a selective acknowledgement block. */ | 256 | /* This defines a selective acknowledgement block. */ |
247 | struct tcp_sack_block_wire { | 257 | struct tcp_sack_block_wire { |
248 | __be32 start_seq; | 258 | __be32 start_seq; |
@@ -339,6 +349,9 @@ struct tcp_sock { | |||
339 | u32 rcv_tstamp; /* timestamp of last received ACK (for keepalives) */ | 349 | u32 rcv_tstamp; /* timestamp of last received ACK (for keepalives) */ |
340 | u32 lsndtime; /* timestamp of last sent data packet (for restart window) */ | 350 | u32 lsndtime; /* timestamp of last sent data packet (for restart window) */ |
341 | 351 | ||
352 | struct list_head tsq_node; /* anchor in tsq_tasklet.head list */ | ||
353 | unsigned long tsq_flags; | ||
354 | |||
342 | /* Data for direct copy to user */ | 355 | /* Data for direct copy to user */ |
343 | struct { | 356 | struct { |
344 | struct sk_buff_head prequeue; | 357 | struct sk_buff_head prequeue; |
@@ -373,7 +386,9 @@ struct tcp_sock { | |||
373 | unused : 1; | 386 | unused : 1; |
374 | u8 repair_queue; | 387 | u8 repair_queue; |
375 | u8 do_early_retrans:1,/* Enable RFC5827 early-retransmit */ | 388 | u8 do_early_retrans:1,/* Enable RFC5827 early-retransmit */ |
376 | early_retrans_delayed:1; /* Delayed ER timer installed */ | 389 | early_retrans_delayed:1, /* Delayed ER timer installed */ |
390 | syn_data:1, /* SYN includes data */ | ||
391 | syn_fastopen:1; /* SYN includes Fast Open option */ | ||
377 | 392 | ||
378 | /* RTT measurement */ | 393 | /* RTT measurement */ |
379 | u32 srtt; /* smoothed round trip time << 3 */ | 394 | u32 srtt; /* smoothed round trip time << 3 */ |
@@ -478,6 +493,9 @@ struct tcp_sock { | |||
478 | u32 probe_seq_start; | 493 | u32 probe_seq_start; |
479 | u32 probe_seq_end; | 494 | u32 probe_seq_end; |
480 | } mtu_probe; | 495 | } mtu_probe; |
496 | u32 mtu_info; /* We received an ICMP_FRAG_NEEDED / ICMPV6_PKT_TOOBIG | ||
497 | * while socket was owned by user. | ||
498 | */ | ||
481 | 499 | ||
482 | #ifdef CONFIG_TCP_MD5SIG | 500 | #ifdef CONFIG_TCP_MD5SIG |
483 | /* TCP AF-Specific parts; only used by MD5 Signature support so far */ | 501 | /* TCP AF-Specific parts; only used by MD5 Signature support so far */ |
@@ -487,6 +505,9 @@ struct tcp_sock { | |||
487 | struct tcp_md5sig_info __rcu *md5sig_info; | 505 | struct tcp_md5sig_info __rcu *md5sig_info; |
488 | #endif | 506 | #endif |
489 | 507 | ||
508 | /* TCP fastopen related information */ | ||
509 | struct tcp_fastopen_request *fastopen_req; | ||
510 | |||
490 | /* When the cookie options are generated and exchanged, then this | 511 | /* When the cookie options are generated and exchanged, then this |
491 | * object holds a reference to them (cookie_values->kref). Also | 512 | * object holds a reference to them (cookie_values->kref). Also |
492 | * contains related tcp_cookie_transactions fields. | 513 | * contains related tcp_cookie_transactions fields. |
@@ -494,6 +515,17 @@ struct tcp_sock { | |||
494 | struct tcp_cookie_values *cookie_values; | 515 | struct tcp_cookie_values *cookie_values; |
495 | }; | 516 | }; |
496 | 517 | ||
518 | enum tsq_flags { | ||
519 | TSQ_THROTTLED, | ||
520 | TSQ_QUEUED, | ||
521 | TCP_TSQ_DEFERRED, /* tcp_tasklet_func() found socket was owned */ | ||
522 | TCP_WRITE_TIMER_DEFERRED, /* tcp_write_timer() found socket was owned */ | ||
523 | TCP_DELACK_TIMER_DEFERRED, /* tcp_delack_timer() found socket was owned */ | ||
524 | TCP_MTU_REDUCED_DEFERRED, /* tcp_v{4|6}_err() could not call | ||
525 | * tcp_v{4|6}_mtu_reduced() | ||
526 | */ | ||
527 | }; | ||
528 | |||
497 | static inline struct tcp_sock *tcp_sk(const struct sock *sk) | 529 | static inline struct tcp_sock *tcp_sk(const struct sock *sk) |
498 | { | 530 | { |
499 | return (struct tcp_sock *)sk; | 531 | return (struct tcp_sock *)sk; |
@@ -507,7 +539,7 @@ struct tcp_timewait_sock { | |||
507 | u32 tw_ts_recent; | 539 | u32 tw_ts_recent; |
508 | long tw_ts_recent_stamp; | 540 | long tw_ts_recent_stamp; |
509 | #ifdef CONFIG_TCP_MD5SIG | 541 | #ifdef CONFIG_TCP_MD5SIG |
510 | struct tcp_md5sig_key *tw_md5_key; | 542 | struct tcp_md5sig_key *tw_md5_key; |
511 | #endif | 543 | #endif |
512 | /* Few sockets in timewait have cookies; in that case, then this | 544 | /* Few sockets in timewait have cookies; in that case, then this |
513 | * object holds a reference to them (tw_cookie_values->kref). | 545 | * object holds a reference to them (tw_cookie_values->kref). |