tcp: don't use timestamp from repaired skb-s to calculate RTT (v2)
[pandora-kernel.git] / include / net / tcp.h
1 /*
2  * INET         An implementation of the TCP/IP protocol suite for the LINUX
3  *              operating system.  INET is implemented using the  BSD Socket
4  *              interface as the means of communication with the user level.
5  *
6  *              Definitions for the TCP module.
7  *
8  * Version:     @(#)tcp.h       1.0.5   05/23/93
9  *
10  * Authors:     Ross Biro
11  *              Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
12  *
13  *              This program is free software; you can redistribute it and/or
14  *              modify it under the terms of the GNU General Public License
15  *              as published by the Free Software Foundation; either version
16  *              2 of the License, or (at your option) any later version.
17  */
18 #ifndef _TCP_H
19 #define _TCP_H
20
21 #define FASTRETRANS_DEBUG 1
22
23 #include <linux/list.h>
24 #include <linux/tcp.h>
25 #include <linux/bug.h>
26 #include <linux/slab.h>
27 #include <linux/cache.h>
28 #include <linux/percpu.h>
29 #include <linux/skbuff.h>
30 #include <linux/dmaengine.h>
31 #include <linux/crypto.h>
32 #include <linux/cryptohash.h>
33 #include <linux/kref.h>
34 #include <linux/ktime.h>
35
36 #include <net/inet_connection_sock.h>
37 #include <net/inet_timewait_sock.h>
38 #include <net/inet_hashtables.h>
39 #include <net/checksum.h>
40 #include <net/request_sock.h>
41 #include <net/sock.h>
42 #include <net/snmp.h>
43 #include <net/ip.h>
44 #include <net/tcp_states.h>
45 #include <net/inet_ecn.h>
46 #include <net/dst.h>
47
48 #include <linux/seq_file.h>
49 #include <linux/memcontrol.h>
50
51 extern struct inet_hashinfo tcp_hashinfo;
52
53 extern struct percpu_counter tcp_orphan_count;
54 void tcp_time_wait(struct sock *sk, int state, int timeo);
55
56 #define MAX_TCP_HEADER  (128 + MAX_HEADER)
57 #define MAX_TCP_OPTION_SPACE 40
58
59 /* 
60  * Never offer a window over 32767 without using window scaling. Some
61  * poor stacks do signed 16bit maths! 
62  */
63 #define MAX_TCP_WINDOW          32767U
64
65 /* Minimal accepted MSS. It is (60+60+8) - (20+20). */
66 #define TCP_MIN_MSS             88U
67
68 /* The least MTU to use for probing */
69 #define TCP_BASE_MSS            512
70
71 /* After receiving this amount of duplicate ACKs fast retransmit starts. */
72 #define TCP_FASTRETRANS_THRESH 3
73
74 /* Maximal reordering. */
75 #define TCP_MAX_REORDERING      127
76
77 /* Maximal number of ACKs sent quickly to accelerate slow-start. */
78 #define TCP_MAX_QUICKACKS       16U
79
80 /* urg_data states */
81 #define TCP_URG_VALID   0x0100
82 #define TCP_URG_NOTYET  0x0200
83 #define TCP_URG_READ    0x0400
84
85 #define TCP_RETR1       3       /*
86                                  * This is how many retries it does before it
87                                  * tries to figure out if the gateway is
88                                  * down. Minimal RFC value is 3; it corresponds
89                                  * to ~3sec-8min depending on RTO.
90                                  */
91
92 #define TCP_RETR2       15      /*
93                                  * This should take at least
94                                  * 90 minutes to time out.
95                                  * RFC1122 says that the limit is 100 sec.
96                                  * 15 is ~13-30min depending on RTO.
97                                  */
98
99 #define TCP_SYN_RETRIES  6      /* This is how many retries are done
100                                  * when active opening a connection.
101                                  * RFC1122 says the minimum retry MUST
102                                  * be at least 180secs.  Nevertheless
103                                  * this value is corresponding to
104                                  * 63secs of retransmission with the
105                                  * current initial RTO.
106                                  */
107
108 #define TCP_SYNACK_RETRIES 5    /* This is how may retries are done
109                                  * when passive opening a connection.
110                                  * This is corresponding to 31secs of
111                                  * retransmission with the current
112                                  * initial RTO.
113                                  */
114
115 #define TCP_TIMEWAIT_LEN (60*HZ) /* how long to wait to destroy TIME-WAIT
116                                   * state, about 60 seconds     */
117 #define TCP_FIN_TIMEOUT TCP_TIMEWAIT_LEN
118                                  /* BSD style FIN_WAIT2 deadlock breaker.
119                                   * It used to be 3min, new value is 60sec,
120                                   * to combine FIN-WAIT-2 timeout with
121                                   * TIME-WAIT timer.
122                                   */
123
124 #define TCP_DELACK_MAX  ((unsigned)(HZ/5))      /* maximal time to delay before sending an ACK */
125 #if HZ >= 100
126 #define TCP_DELACK_MIN  ((unsigned)(HZ/25))     /* minimal time to delay before sending an ACK */
127 #define TCP_ATO_MIN     ((unsigned)(HZ/25))
128 #else
129 #define TCP_DELACK_MIN  4U
130 #define TCP_ATO_MIN     4U
131 #endif
132 #define TCP_RTO_MAX     ((unsigned)(120*HZ))
133 #define TCP_RTO_MIN     ((unsigned)(HZ/5))
134 #define TCP_TIMEOUT_INIT ((unsigned)(1*HZ))     /* RFC6298 2.1 initial RTO value        */
135 #define TCP_TIMEOUT_FALLBACK ((unsigned)(3*HZ)) /* RFC 1122 initial RTO value, now
136                                                  * used as a fallback RTO for the
137                                                  * initial data transmission if no
138                                                  * valid RTT sample has been acquired,
139                                                  * most likely due to retrans in 3WHS.
140                                                  */
141
142 #define TCP_RESOURCE_PROBE_INTERVAL ((unsigned)(HZ/2U)) /* Maximal interval between probes
143                                                          * for local resources.
144                                                          */
145
146 #define TCP_KEEPALIVE_TIME      (120*60*HZ)     /* two hours */
147 #define TCP_KEEPALIVE_PROBES    9               /* Max of 9 keepalive probes    */
148 #define TCP_KEEPALIVE_INTVL     (75*HZ)
149
150 #define MAX_TCP_KEEPIDLE        32767
151 #define MAX_TCP_KEEPINTVL       32767
152 #define MAX_TCP_KEEPCNT         127
153 #define MAX_TCP_SYNCNT          127
154
155 #define TCP_SYNQ_INTERVAL       (HZ/5)  /* Period of SYNACK timer */
156
157 #define TCP_PAWS_24DAYS (60 * 60 * 24 * 24)
158 #define TCP_PAWS_MSL    60              /* Per-host timestamps are invalidated
159                                          * after this time. It should be equal
160                                          * (or greater than) TCP_TIMEWAIT_LEN
161                                          * to provide reliability equal to one
162                                          * provided by timewait state.
163                                          */
164 #define TCP_PAWS_WINDOW 1               /* Replay window for per-host
165                                          * timestamps. It must be less than
166                                          * minimal timewait lifetime.
167                                          */
168 /*
169  *      TCP option
170  */
171  
172 #define TCPOPT_NOP              1       /* Padding */
173 #define TCPOPT_EOL              0       /* End of options */
174 #define TCPOPT_MSS              2       /* Segment size negotiating */
175 #define TCPOPT_WINDOW           3       /* Window scaling */
176 #define TCPOPT_SACK_PERM        4       /* SACK Permitted */
177 #define TCPOPT_SACK             5       /* SACK Block */
178 #define TCPOPT_TIMESTAMP        8       /* Better RTT estimations/PAWS */
179 #define TCPOPT_MD5SIG           19      /* MD5 Signature (RFC2385) */
180 #define TCPOPT_EXP              254     /* Experimental */
181 /* Magic number to be after the option value for sharing TCP
182  * experimental options. See draft-ietf-tcpm-experimental-options-00.txt
183  */
184 #define TCPOPT_FASTOPEN_MAGIC   0xF989
185
186 /*
187  *     TCP option lengths
188  */
189
190 #define TCPOLEN_MSS            4
191 #define TCPOLEN_WINDOW         3
192 #define TCPOLEN_SACK_PERM      2
193 #define TCPOLEN_TIMESTAMP      10
194 #define TCPOLEN_MD5SIG         18
195 #define TCPOLEN_EXP_FASTOPEN_BASE  4
196
197 /* But this is what stacks really send out. */
198 #define TCPOLEN_TSTAMP_ALIGNED          12
199 #define TCPOLEN_WSCALE_ALIGNED          4
200 #define TCPOLEN_SACKPERM_ALIGNED        4
201 #define TCPOLEN_SACK_BASE               2
202 #define TCPOLEN_SACK_BASE_ALIGNED       4
203 #define TCPOLEN_SACK_PERBLOCK           8
204 #define TCPOLEN_MD5SIG_ALIGNED          20
205 #define TCPOLEN_MSS_ALIGNED             4
206
207 /* Flags in tp->nonagle */
208 #define TCP_NAGLE_OFF           1       /* Nagle's algo is disabled */
209 #define TCP_NAGLE_CORK          2       /* Socket is corked         */
210 #define TCP_NAGLE_PUSH          4       /* Cork is overridden for already queued data */
211
212 /* TCP thin-stream limits */
213 #define TCP_THIN_LINEAR_RETRIES 6       /* After 6 linear retries, do exp. backoff */
214
215 /* TCP initial congestion window as per draft-hkchu-tcpm-initcwnd-01 */
216 #define TCP_INIT_CWND           10
217
218 /* Bit Flags for sysctl_tcp_fastopen */
219 #define TFO_CLIENT_ENABLE       1
220 #define TFO_SERVER_ENABLE       2
221 #define TFO_CLIENT_NO_COOKIE    4       /* Data in SYN w/o cookie option */
222
223 /* Accept SYN data w/o any cookie option */
224 #define TFO_SERVER_COOKIE_NOT_REQD      0x200
225
226 /* Force enable TFO on all listeners, i.e., not requiring the
227  * TCP_FASTOPEN socket option. SOCKOPT1/2 determine how to set max_qlen.
228  */
229 #define TFO_SERVER_WO_SOCKOPT1  0x400
230 #define TFO_SERVER_WO_SOCKOPT2  0x800
231
232 extern struct inet_timewait_death_row tcp_death_row;
233
234 /* sysctl variables for tcp */
235 extern int sysctl_tcp_timestamps;
236 extern int sysctl_tcp_window_scaling;
237 extern int sysctl_tcp_sack;
238 extern int sysctl_tcp_fin_timeout;
239 extern int sysctl_tcp_keepalive_time;
240 extern int sysctl_tcp_keepalive_probes;
241 extern int sysctl_tcp_keepalive_intvl;
242 extern int sysctl_tcp_syn_retries;
243 extern int sysctl_tcp_synack_retries;
244 extern int sysctl_tcp_retries1;
245 extern int sysctl_tcp_retries2;
246 extern int sysctl_tcp_orphan_retries;
247 extern int sysctl_tcp_syncookies;
248 extern int sysctl_tcp_fastopen;
249 extern int sysctl_tcp_retrans_collapse;
250 extern int sysctl_tcp_stdurg;
251 extern int sysctl_tcp_rfc1337;
252 extern int sysctl_tcp_abort_on_overflow;
253 extern int sysctl_tcp_max_orphans;
254 extern int sysctl_tcp_fack;
255 extern int sysctl_tcp_reordering;
256 extern int sysctl_tcp_dsack;
257 extern long sysctl_tcp_mem[3];
258 extern int sysctl_tcp_wmem[3];
259 extern int sysctl_tcp_rmem[3];
260 extern int sysctl_tcp_app_win;
261 extern int sysctl_tcp_adv_win_scale;
262 extern int sysctl_tcp_tw_reuse;
263 extern int sysctl_tcp_frto;
264 extern int sysctl_tcp_low_latency;
265 extern int sysctl_tcp_dma_copybreak;
266 extern int sysctl_tcp_nometrics_save;
267 extern int sysctl_tcp_moderate_rcvbuf;
268 extern int sysctl_tcp_tso_win_divisor;
269 extern int sysctl_tcp_mtu_probing;
270 extern int sysctl_tcp_base_mss;
271 extern int sysctl_tcp_workaround_signed_windows;
272 extern int sysctl_tcp_slow_start_after_idle;
273 extern int sysctl_tcp_thin_linear_timeouts;
274 extern int sysctl_tcp_thin_dupack;
275 extern int sysctl_tcp_early_retrans;
276 extern int sysctl_tcp_limit_output_bytes;
277 extern int sysctl_tcp_challenge_ack_limit;
278 extern unsigned int sysctl_tcp_notsent_lowat;
279 extern int sysctl_tcp_min_tso_segs;
280 extern int sysctl_tcp_autocorking;
281
282 extern atomic_long_t tcp_memory_allocated;
283 extern struct percpu_counter tcp_sockets_allocated;
284 extern int tcp_memory_pressure;
285
286 /*
287  * The next routines deal with comparing 32 bit unsigned ints
288  * and worry about wraparound (automatic with unsigned arithmetic).
289  */
290
291 static inline bool before(__u32 seq1, __u32 seq2)
292 {
293         return (__s32)(seq1-seq2) < 0;
294 }
295 #define after(seq2, seq1)       before(seq1, seq2)
296
297 /* is s2<=s1<=s3 ? */
298 static inline bool between(__u32 seq1, __u32 seq2, __u32 seq3)
299 {
300         return seq3 - seq2 >= seq1 - seq2;
301 }
302
303 static inline bool tcp_out_of_memory(struct sock *sk)
304 {
305         if (sk->sk_wmem_queued > SOCK_MIN_SNDBUF &&
306             sk_memory_allocated(sk) > sk_prot_mem_limits(sk, 2))
307                 return true;
308         return false;
309 }
310
311 static inline bool tcp_too_many_orphans(struct sock *sk, int shift)
312 {
313         struct percpu_counter *ocp = sk->sk_prot->orphan_count;
314         int orphans = percpu_counter_read_positive(ocp);
315
316         if (orphans << shift > sysctl_tcp_max_orphans) {
317                 orphans = percpu_counter_sum_positive(ocp);
318                 if (orphans << shift > sysctl_tcp_max_orphans)
319                         return true;
320         }
321         return false;
322 }
323
324 bool tcp_check_oom(struct sock *sk, int shift);
325
326 /* syncookies: remember time of last synqueue overflow */
327 static inline void tcp_synq_overflow(struct sock *sk)
328 {
329         tcp_sk(sk)->rx_opt.ts_recent_stamp = jiffies;
330 }
331
332 /* syncookies: no recent synqueue overflow on this listening socket? */
333 static inline bool tcp_synq_no_recent_overflow(const struct sock *sk)
334 {
335         unsigned long last_overflow = tcp_sk(sk)->rx_opt.ts_recent_stamp;
336         return time_after(jiffies, last_overflow + TCP_TIMEOUT_FALLBACK);
337 }
338
339 extern struct proto tcp_prot;
340
341 #define TCP_INC_STATS(net, field)       SNMP_INC_STATS((net)->mib.tcp_statistics, field)
342 #define TCP_INC_STATS_BH(net, field)    SNMP_INC_STATS_BH((net)->mib.tcp_statistics, field)
343 #define TCP_DEC_STATS(net, field)       SNMP_DEC_STATS((net)->mib.tcp_statistics, field)
344 #define TCP_ADD_STATS_USER(net, field, val) SNMP_ADD_STATS_USER((net)->mib.tcp_statistics, field, val)
345 #define TCP_ADD_STATS(net, field, val)  SNMP_ADD_STATS((net)->mib.tcp_statistics, field, val)
346
347 void tcp_tasklet_init(void);
348
349 void tcp_v4_err(struct sk_buff *skb, u32);
350
351 void tcp_shutdown(struct sock *sk, int how);
352
353 void tcp_v4_early_demux(struct sk_buff *skb);
354 int tcp_v4_rcv(struct sk_buff *skb);
355
356 int tcp_v4_tw_remember_stamp(struct inet_timewait_sock *tw);
357 int tcp_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
358                 size_t size);
359 int tcp_sendpage(struct sock *sk, struct page *page, int offset, size_t size,
360                  int flags);
361 void tcp_release_cb(struct sock *sk);
362 void tcp_wfree(struct sk_buff *skb);
363 void tcp_write_timer_handler(struct sock *sk);
364 void tcp_delack_timer_handler(struct sock *sk);
365 int tcp_ioctl(struct sock *sk, int cmd, unsigned long arg);
366 int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb,
367                           const struct tcphdr *th, unsigned int len);
368 void tcp_rcv_established(struct sock *sk, struct sk_buff *skb,
369                          const struct tcphdr *th, unsigned int len);
370 void tcp_rcv_space_adjust(struct sock *sk);
371 void tcp_cleanup_rbuf(struct sock *sk, int copied);
372 int tcp_twsk_unique(struct sock *sk, struct sock *sktw, void *twp);
373 void tcp_twsk_destructor(struct sock *sk);
374 ssize_t tcp_splice_read(struct socket *sk, loff_t *ppos,
375                         struct pipe_inode_info *pipe, size_t len,
376                         unsigned int flags);
377
378 static inline void tcp_dec_quickack_mode(struct sock *sk,
379                                          const unsigned int pkts)
380 {
381         struct inet_connection_sock *icsk = inet_csk(sk);
382
383         if (icsk->icsk_ack.quick) {
384                 if (pkts >= icsk->icsk_ack.quick) {
385                         icsk->icsk_ack.quick = 0;
386                         /* Leaving quickack mode we deflate ATO. */
387                         icsk->icsk_ack.ato   = TCP_ATO_MIN;
388                 } else
389                         icsk->icsk_ack.quick -= pkts;
390         }
391 }
392
393 #define TCP_ECN_OK              1
394 #define TCP_ECN_QUEUE_CWR       2
395 #define TCP_ECN_DEMAND_CWR      4
396 #define TCP_ECN_SEEN            8
397
398 enum tcp_tw_status {
399         TCP_TW_SUCCESS = 0,
400         TCP_TW_RST = 1,
401         TCP_TW_ACK = 2,
402         TCP_TW_SYN = 3
403 };
404
405
406 enum tcp_tw_status tcp_timewait_state_process(struct inet_timewait_sock *tw,
407                                               struct sk_buff *skb,
408                                               const struct tcphdr *th);
409 struct sock *tcp_check_req(struct sock *sk, struct sk_buff *skb,
410                            struct request_sock *req, struct request_sock **prev,
411                            bool fastopen);
412 int tcp_child_process(struct sock *parent, struct sock *child,
413                       struct sk_buff *skb);
414 void tcp_enter_loss(struct sock *sk);
415 void tcp_clear_retrans(struct tcp_sock *tp);
416 void tcp_update_metrics(struct sock *sk);
417 void tcp_init_metrics(struct sock *sk);
418 void tcp_metrics_init(void);
419 bool tcp_peer_is_proven(struct request_sock *req, struct dst_entry *dst,
420                         bool paws_check);
421 bool tcp_remember_stamp(struct sock *sk);
422 bool tcp_tw_remember_stamp(struct inet_timewait_sock *tw);
423 void tcp_fetch_timewait_stamp(struct sock *sk, struct dst_entry *dst);
424 void tcp_disable_fack(struct tcp_sock *tp);
425 void tcp_close(struct sock *sk, long timeout);
426 void tcp_init_sock(struct sock *sk);
427 unsigned int tcp_poll(struct file *file, struct socket *sock,
428                       struct poll_table_struct *wait);
429 int tcp_getsockopt(struct sock *sk, int level, int optname,
430                    char __user *optval, int __user *optlen);
431 int tcp_setsockopt(struct sock *sk, int level, int optname,
432                    char __user *optval, unsigned int optlen);
433 int compat_tcp_getsockopt(struct sock *sk, int level, int optname,
434                           char __user *optval, int __user *optlen);
435 int compat_tcp_setsockopt(struct sock *sk, int level, int optname,
436                           char __user *optval, unsigned int optlen);
437 void tcp_set_keepalive(struct sock *sk, int val);
438 void tcp_syn_ack_timeout(struct sock *sk, struct request_sock *req);
439 int tcp_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
440                 size_t len, int nonblock, int flags, int *addr_len);
441 void tcp_parse_options(const struct sk_buff *skb,
442                        struct tcp_options_received *opt_rx,
443                        int estab, struct tcp_fastopen_cookie *foc);
444 const u8 *tcp_parse_md5sig_option(const struct tcphdr *th);
445
446 /*
447  *      TCP v4 functions exported for the inet6 API
448  */
449
450 void tcp_v4_send_check(struct sock *sk, struct sk_buff *skb);
451 int tcp_v4_conn_request(struct sock *sk, struct sk_buff *skb);
452 struct sock *tcp_create_openreq_child(struct sock *sk,
453                                       struct request_sock *req,
454                                       struct sk_buff *skb);
455 struct sock *tcp_v4_syn_recv_sock(struct sock *sk, struct sk_buff *skb,
456                                   struct request_sock *req,
457                                   struct dst_entry *dst);
458 int tcp_v4_do_rcv(struct sock *sk, struct sk_buff *skb);
459 int tcp_v4_connect(struct sock *sk, struct sockaddr *uaddr, int addr_len);
460 int tcp_connect(struct sock *sk);
461 struct sk_buff *tcp_make_synack(struct sock *sk, struct dst_entry *dst,
462                                 struct request_sock *req,
463                                 struct tcp_fastopen_cookie *foc);
464 int tcp_disconnect(struct sock *sk, int flags);
465
466 void tcp_finish_connect(struct sock *sk, struct sk_buff *skb);
467 int tcp_send_rcvq(struct sock *sk, struct msghdr *msg, size_t size);
468 void inet_sk_rx_dst_set(struct sock *sk, const struct sk_buff *skb);
469
470 /* From syncookies.c */
471 int __cookie_v4_check(const struct iphdr *iph, const struct tcphdr *th,
472                       u32 cookie);
473 struct sock *cookie_v4_check(struct sock *sk, struct sk_buff *skb,
474                              struct ip_options *opt);
475 #ifdef CONFIG_SYN_COOKIES
476
477 /* Syncookies use a monotonic timer which increments every 60 seconds.
478  * This counter is used both as a hash input and partially encoded into
479  * the cookie value.  A cookie is only validated further if the delta
480  * between the current counter value and the encoded one is less than this,
481  * i.e. a sent cookie is valid only at most for 2*60 seconds (or less if
482  * the counter advances immediately after a cookie is generated).
483  */
484 #define MAX_SYNCOOKIE_AGE 2
485
486 static inline u32 tcp_cookie_time(void)
487 {
488         u64 val = get_jiffies_64();
489
490         do_div(val, 60 * HZ);
491         return val;
492 }
493
494 u32 __cookie_v4_init_sequence(const struct iphdr *iph, const struct tcphdr *th,
495                               u16 *mssp);
496 __u32 cookie_v4_init_sequence(struct sock *sk, const struct sk_buff *skb,
497                               __u16 *mss);
498 #endif
499
500 __u32 cookie_init_timestamp(struct request_sock *req);
501 bool cookie_check_timestamp(struct tcp_options_received *opt, struct net *net,
502                             bool *ecn_ok);
503
504 /* From net/ipv6/syncookies.c */
505 int __cookie_v6_check(const struct ipv6hdr *iph, const struct tcphdr *th,
506                       u32 cookie);
507 struct sock *cookie_v6_check(struct sock *sk, struct sk_buff *skb);
508 #ifdef CONFIG_SYN_COOKIES
509 u32 __cookie_v6_init_sequence(const struct ipv6hdr *iph,
510                               const struct tcphdr *th, u16 *mssp);
511 __u32 cookie_v6_init_sequence(struct sock *sk, const struct sk_buff *skb,
512                               __u16 *mss);
513 #endif
514 /* tcp_output.c */
515
516 void __tcp_push_pending_frames(struct sock *sk, unsigned int cur_mss,
517                                int nonagle);
518 bool tcp_may_send_now(struct sock *sk);
519 int __tcp_retransmit_skb(struct sock *, struct sk_buff *);
520 int tcp_retransmit_skb(struct sock *, struct sk_buff *);
521 void tcp_retransmit_timer(struct sock *sk);
522 void tcp_xmit_retransmit_queue(struct sock *);
523 void tcp_simple_retransmit(struct sock *);
524 int tcp_trim_head(struct sock *, struct sk_buff *, u32);
525 int tcp_fragment(struct sock *, struct sk_buff *, u32, unsigned int, gfp_t);
526
527 void tcp_send_probe0(struct sock *);
528 void tcp_send_partial(struct sock *);
529 int tcp_write_wakeup(struct sock *);
530 void tcp_send_fin(struct sock *sk);
531 void tcp_send_active_reset(struct sock *sk, gfp_t priority);
532 int tcp_send_synack(struct sock *);
533 bool tcp_syn_flood_action(struct sock *sk, const struct sk_buff *skb,
534                           const char *proto);
535 void tcp_push_one(struct sock *, unsigned int mss_now);
536 void tcp_send_ack(struct sock *sk);
537 void tcp_send_delayed_ack(struct sock *sk);
538 void tcp_send_loss_probe(struct sock *sk);
539 bool tcp_schedule_loss_probe(struct sock *sk);
540
541 /* tcp_input.c */
542 void tcp_resume_early_retransmit(struct sock *sk);
543 void tcp_rearm_rto(struct sock *sk);
544 void tcp_reset(struct sock *sk);
545
546 /* tcp_timer.c */
547 void tcp_init_xmit_timers(struct sock *);
548 static inline void tcp_clear_xmit_timers(struct sock *sk)
549 {
550         inet_csk_clear_xmit_timers(sk);
551 }
552
553 unsigned int tcp_sync_mss(struct sock *sk, u32 pmtu);
554 unsigned int tcp_current_mss(struct sock *sk);
555
556 /* Bound MSS / TSO packet size with the half of the window */
557 static inline int tcp_bound_to_half_wnd(struct tcp_sock *tp, int pktsize)
558 {
559         int cutoff;
560
561         /* When peer uses tiny windows, there is no use in packetizing
562          * to sub-MSS pieces for the sake of SWS or making sure there
563          * are enough packets in the pipe for fast recovery.
564          *
565          * On the other hand, for extremely large MSS devices, handling
566          * smaller than MSS windows in this way does make sense.
567          */
568         if (tp->max_window >= 512)
569                 cutoff = (tp->max_window >> 1);
570         else
571                 cutoff = tp->max_window;
572
573         if (cutoff && pktsize > cutoff)
574                 return max_t(int, cutoff, 68U - tp->tcp_header_len);
575         else
576                 return pktsize;
577 }
578
579 /* tcp.c */
580 void tcp_get_info(const struct sock *, struct tcp_info *);
581
582 /* Read 'sendfile()'-style from a TCP socket */
583 typedef int (*sk_read_actor_t)(read_descriptor_t *, struct sk_buff *,
584                                 unsigned int, size_t);
585 int tcp_read_sock(struct sock *sk, read_descriptor_t *desc,
586                   sk_read_actor_t recv_actor);
587
588 void tcp_initialize_rcv_mss(struct sock *sk);
589
590 int tcp_mtu_to_mss(struct sock *sk, int pmtu);
591 int tcp_mss_to_mtu(struct sock *sk, int mss);
592 void tcp_mtup_init(struct sock *sk);
593 void tcp_init_buffer_space(struct sock *sk);
594
595 static inline void tcp_bound_rto(const struct sock *sk)
596 {
597         if (inet_csk(sk)->icsk_rto > TCP_RTO_MAX)
598                 inet_csk(sk)->icsk_rto = TCP_RTO_MAX;
599 }
600
601 static inline u32 __tcp_set_rto(const struct tcp_sock *tp)
602 {
603         return usecs_to_jiffies((tp->srtt_us >> 3) + tp->rttvar_us);
604 }
605
606 static inline void __tcp_fast_path_on(struct tcp_sock *tp, u32 snd_wnd)
607 {
608         tp->pred_flags = htonl((tp->tcp_header_len << 26) |
609                                ntohl(TCP_FLAG_ACK) |
610                                snd_wnd);
611 }
612
613 static inline void tcp_fast_path_on(struct tcp_sock *tp)
614 {
615         __tcp_fast_path_on(tp, tp->snd_wnd >> tp->rx_opt.snd_wscale);
616 }
617
618 static inline void tcp_fast_path_check(struct sock *sk)
619 {
620         struct tcp_sock *tp = tcp_sk(sk);
621
622         if (skb_queue_empty(&tp->out_of_order_queue) &&
623             tp->rcv_wnd &&
624             atomic_read(&sk->sk_rmem_alloc) < sk->sk_rcvbuf &&
625             !tp->urg_data)
626                 tcp_fast_path_on(tp);
627 }
628
629 /* Compute the actual rto_min value */
630 static inline u32 tcp_rto_min(struct sock *sk)
631 {
632         const struct dst_entry *dst = __sk_dst_get(sk);
633         u32 rto_min = TCP_RTO_MIN;
634
635         if (dst && dst_metric_locked(dst, RTAX_RTO_MIN))
636                 rto_min = dst_metric_rtt(dst, RTAX_RTO_MIN);
637         return rto_min;
638 }
639
640 static inline u32 tcp_rto_min_us(struct sock *sk)
641 {
642         return jiffies_to_usecs(tcp_rto_min(sk));
643 }
644
645 /* Compute the actual receive window we are currently advertising.
646  * Rcv_nxt can be after the window if our peer push more data
647  * than the offered window.
648  */
649 static inline u32 tcp_receive_window(const struct tcp_sock *tp)
650 {
651         s32 win = tp->rcv_wup + tp->rcv_wnd - tp->rcv_nxt;
652
653         if (win < 0)
654                 win = 0;
655         return (u32) win;
656 }
657
658 /* Choose a new window, without checks for shrinking, and without
659  * scaling applied to the result.  The caller does these things
660  * if necessary.  This is a "raw" window selection.
661  */
662 u32 __tcp_select_window(struct sock *sk);
663
664 void tcp_send_window_probe(struct sock *sk);
665
666 /* TCP timestamps are only 32-bits, this causes a slight
667  * complication on 64-bit systems since we store a snapshot
668  * of jiffies in the buffer control blocks below.  We decided
669  * to use only the low 32-bits of jiffies and hide the ugly
670  * casts with the following macro.
671  */
672 #define tcp_time_stamp          ((__u32)(jiffies))
673
674 #define tcp_flag_byte(th) (((u_int8_t *)th)[13])
675
676 #define TCPHDR_FIN 0x01
677 #define TCPHDR_SYN 0x02
678 #define TCPHDR_RST 0x04
679 #define TCPHDR_PSH 0x08
680 #define TCPHDR_ACK 0x10
681 #define TCPHDR_URG 0x20
682 #define TCPHDR_ECE 0x40
683 #define TCPHDR_CWR 0x80
684
685 /* This is what the send packet queuing engine uses to pass
686  * TCP per-packet control information to the transmission code.
687  * We also store the host-order sequence numbers in here too.
688  * This is 44 bytes if IPV6 is enabled.
689  * If this grows please adjust skbuff.h:skbuff->cb[xxx] size appropriately.
690  */
691 struct tcp_skb_cb {
692         union {
693                 struct inet_skb_parm    h4;
694 #if IS_ENABLED(CONFIG_IPV6)
695                 struct inet6_skb_parm   h6;
696 #endif
697         } header;       /* For incoming frames          */
698         __u32           seq;            /* Starting sequence number     */
699         __u32           end_seq;        /* SEQ + FIN + SYN + datalen    */
700         __u32           when;           /* used to compute rtt's        */
701         __u8            tcp_flags;      /* TCP header flags. (tcp[13])  */
702
703         __u8            sacked;         /* State flags for SACK/FACK.   */
704 #define TCPCB_SACKED_ACKED      0x01    /* SKB ACK'd by a SACK block    */
705 #define TCPCB_SACKED_RETRANS    0x02    /* SKB retransmitted            */
706 #define TCPCB_LOST              0x04    /* SKB is lost                  */
707 #define TCPCB_TAGBITS           0x07    /* All tag bits                 */
708 #define TCPCB_REPAIRED          0x10    /* SKB repaired (no skb_mstamp) */
709 #define TCPCB_EVER_RETRANS      0x80    /* Ever retransmitted frame     */
710 #define TCPCB_RETRANS           (TCPCB_SACKED_RETRANS|TCPCB_EVER_RETRANS| \
711                                 TCPCB_REPAIRED)
712
713         __u8            ip_dsfield;     /* IPv4 tos or IPv6 dsfield     */
714         /* 1 byte hole */
715         __u32           ack_seq;        /* Sequence number ACK'd        */
716 };
717
718 #define TCP_SKB_CB(__skb)       ((struct tcp_skb_cb *)&((__skb)->cb[0]))
719
720 /* RFC3168 : 6.1.1 SYN packets must not have ECT/ECN bits set
721  *
722  * If we receive a SYN packet with these bits set, it means a network is
723  * playing bad games with TOS bits. In order to avoid possible false congestion
724  * notifications, we disable TCP ECN negociation.
725  */
726 static inline void
727 TCP_ECN_create_request(struct request_sock *req, const struct sk_buff *skb,
728                 struct net *net)
729 {
730         const struct tcphdr *th = tcp_hdr(skb);
731
732         if (net->ipv4.sysctl_tcp_ecn && th->ece && th->cwr &&
733             INET_ECN_is_not_ect(TCP_SKB_CB(skb)->ip_dsfield))
734                 inet_rsk(req)->ecn_ok = 1;
735 }
736
737 /* Due to TSO, an SKB can be composed of multiple actual
738  * packets.  To keep these tracked properly, we use this.
739  */
740 static inline int tcp_skb_pcount(const struct sk_buff *skb)
741 {
742         return skb_shinfo(skb)->gso_segs;
743 }
744
745 /* This is valid iff tcp_skb_pcount() > 1. */
746 static inline int tcp_skb_mss(const struct sk_buff *skb)
747 {
748         return skb_shinfo(skb)->gso_size;
749 }
750
751 /* Events passed to congestion control interface */
752 enum tcp_ca_event {
753         CA_EVENT_TX_START,      /* first transmit when no packets in flight */
754         CA_EVENT_CWND_RESTART,  /* congestion window restart */
755         CA_EVENT_COMPLETE_CWR,  /* end of congestion recovery */
756         CA_EVENT_LOSS,          /* loss timeout */
757         CA_EVENT_FAST_ACK,      /* in sequence ack */
758         CA_EVENT_SLOW_ACK,      /* other ack */
759 };
760
761 /*
762  * Interface for adding new TCP congestion control handlers
763  */
764 #define TCP_CA_NAME_MAX 16
765 #define TCP_CA_MAX      128
766 #define TCP_CA_BUF_MAX  (TCP_CA_NAME_MAX*TCP_CA_MAX)
767
768 #define TCP_CONG_NON_RESTRICTED 0x1
769
770 struct tcp_congestion_ops {
771         struct list_head        list;
772         unsigned long flags;
773
774         /* initialize private data (optional) */
775         void (*init)(struct sock *sk);
776         /* cleanup private data  (optional) */
777         void (*release)(struct sock *sk);
778
779         /* return slow start threshold (required) */
780         u32 (*ssthresh)(struct sock *sk);
781         /* do new cwnd calculation (required) */
782         void (*cong_avoid)(struct sock *sk, u32 ack, u32 acked);
783         /* call before changing ca_state (optional) */
784         void (*set_state)(struct sock *sk, u8 new_state);
785         /* call when cwnd event occurs (optional) */
786         void (*cwnd_event)(struct sock *sk, enum tcp_ca_event ev);
787         /* new value of cwnd after loss (optional) */
788         u32  (*undo_cwnd)(struct sock *sk);
789         /* hook for packet ack accounting (optional) */
790         void (*pkts_acked)(struct sock *sk, u32 num_acked, s32 rtt_us);
791         /* get info for inet_diag (optional) */
792         void (*get_info)(struct sock *sk, u32 ext, struct sk_buff *skb);
793
794         char            name[TCP_CA_NAME_MAX];
795         struct module   *owner;
796 };
797
798 int tcp_register_congestion_control(struct tcp_congestion_ops *type);
799 void tcp_unregister_congestion_control(struct tcp_congestion_ops *type);
800
801 void tcp_init_congestion_control(struct sock *sk);
802 void tcp_cleanup_congestion_control(struct sock *sk);
803 int tcp_set_default_congestion_control(const char *name);
804 void tcp_get_default_congestion_control(char *name);
805 void tcp_get_available_congestion_control(char *buf, size_t len);
806 void tcp_get_allowed_congestion_control(char *buf, size_t len);
807 int tcp_set_allowed_congestion_control(char *allowed);
808 int tcp_set_congestion_control(struct sock *sk, const char *name);
809 int tcp_slow_start(struct tcp_sock *tp, u32 acked);
810 void tcp_cong_avoid_ai(struct tcp_sock *tp, u32 w);
811
812 extern struct tcp_congestion_ops tcp_init_congestion_ops;
813 u32 tcp_reno_ssthresh(struct sock *sk);
814 void tcp_reno_cong_avoid(struct sock *sk, u32 ack, u32 acked);
815 extern struct tcp_congestion_ops tcp_reno;
816
817 static inline void tcp_set_ca_state(struct sock *sk, const u8 ca_state)
818 {
819         struct inet_connection_sock *icsk = inet_csk(sk);
820
821         if (icsk->icsk_ca_ops->set_state)
822                 icsk->icsk_ca_ops->set_state(sk, ca_state);
823         icsk->icsk_ca_state = ca_state;
824 }
825
826 static inline void tcp_ca_event(struct sock *sk, const enum tcp_ca_event event)
827 {
828         const struct inet_connection_sock *icsk = inet_csk(sk);
829
830         if (icsk->icsk_ca_ops->cwnd_event)
831                 icsk->icsk_ca_ops->cwnd_event(sk, event);
832 }
833
834 /* These functions determine how the current flow behaves in respect of SACK
835  * handling. SACK is negotiated with the peer, and therefore it can vary
836  * between different flows.
837  *
838  * tcp_is_sack - SACK enabled
839  * tcp_is_reno - No SACK
840  * tcp_is_fack - FACK enabled, implies SACK enabled
841  */
842 static inline int tcp_is_sack(const struct tcp_sock *tp)
843 {
844         return tp->rx_opt.sack_ok;
845 }
846
847 static inline bool tcp_is_reno(const struct tcp_sock *tp)
848 {
849         return !tcp_is_sack(tp);
850 }
851
852 static inline bool tcp_is_fack(const struct tcp_sock *tp)
853 {
854         return tp->rx_opt.sack_ok & TCP_FACK_ENABLED;
855 }
856
857 static inline void tcp_enable_fack(struct tcp_sock *tp)
858 {
859         tp->rx_opt.sack_ok |= TCP_FACK_ENABLED;
860 }
861
862 /* TCP early-retransmit (ER) is similar to but more conservative than
863  * the thin-dupack feature.  Enable ER only if thin-dupack is disabled.
864  */
865 static inline void tcp_enable_early_retrans(struct tcp_sock *tp)
866 {
867         tp->do_early_retrans = sysctl_tcp_early_retrans &&
868                 sysctl_tcp_early_retrans < 4 && !sysctl_tcp_thin_dupack &&
869                 sysctl_tcp_reordering == 3;
870 }
871
872 static inline void tcp_disable_early_retrans(struct tcp_sock *tp)
873 {
874         tp->do_early_retrans = 0;
875 }
876
877 static inline unsigned int tcp_left_out(const struct tcp_sock *tp)
878 {
879         return tp->sacked_out + tp->lost_out;
880 }
881
882 /* This determines how many packets are "in the network" to the best
883  * of our knowledge.  In many cases it is conservative, but where
884  * detailed information is available from the receiver (via SACK
885  * blocks etc.) we can make more aggressive calculations.
886  *
887  * Use this for decisions involving congestion control, use just
888  * tp->packets_out to determine if the send queue is empty or not.
889  *
890  * Read this equation as:
891  *
892  *      "Packets sent once on transmission queue" MINUS
893  *      "Packets left network, but not honestly ACKed yet" PLUS
894  *      "Packets fast retransmitted"
895  */
896 static inline unsigned int tcp_packets_in_flight(const struct tcp_sock *tp)
897 {
898         return tp->packets_out - tcp_left_out(tp) + tp->retrans_out;
899 }
900
901 #define TCP_INFINITE_SSTHRESH   0x7fffffff
902
903 static inline bool tcp_in_initial_slowstart(const struct tcp_sock *tp)
904 {
905         return tp->snd_ssthresh >= TCP_INFINITE_SSTHRESH;
906 }
907
908 static inline bool tcp_in_cwnd_reduction(const struct sock *sk)
909 {
910         return (TCPF_CA_CWR | TCPF_CA_Recovery) &
911                (1 << inet_csk(sk)->icsk_ca_state);
912 }
913
914 /* If cwnd > ssthresh, we may raise ssthresh to be half-way to cwnd.
915  * The exception is cwnd reduction phase, when cwnd is decreasing towards
916  * ssthresh.
917  */
918 static inline __u32 tcp_current_ssthresh(const struct sock *sk)
919 {
920         const struct tcp_sock *tp = tcp_sk(sk);
921
922         if (tcp_in_cwnd_reduction(sk))
923                 return tp->snd_ssthresh;
924         else
925                 return max(tp->snd_ssthresh,
926                            ((tp->snd_cwnd >> 1) +
927                             (tp->snd_cwnd >> 2)));
928 }
929
930 /* Use define here intentionally to get WARN_ON location shown at the caller */
931 #define tcp_verify_left_out(tp) WARN_ON(tcp_left_out(tp) > tp->packets_out)
932
933 void tcp_enter_cwr(struct sock *sk);
934 __u32 tcp_init_cwnd(const struct tcp_sock *tp, const struct dst_entry *dst);
935
936 /* The maximum number of MSS of available cwnd for which TSO defers
937  * sending if not using sysctl_tcp_tso_win_divisor.
938  */
939 static inline __u32 tcp_max_tso_deferred_mss(const struct tcp_sock *tp)
940 {
941         return 3;
942 }
943
944 /* Slow start with delack produces 3 packets of burst, so that
945  * it is safe "de facto".  This will be the default - same as
946  * the default reordering threshold - but if reordering increases,
947  * we must be able to allow cwnd to burst at least this much in order
948  * to not pull it back when holes are filled.
949  */
950 static __inline__ __u32 tcp_max_burst(const struct tcp_sock *tp)
951 {
952         return tp->reordering;
953 }
954
955 /* Returns end sequence number of the receiver's advertised window */
956 static inline u32 tcp_wnd_end(const struct tcp_sock *tp)
957 {
958         return tp->snd_una + tp->snd_wnd;
959 }
960
961 /* We follow the spirit of RFC2861 to validate cwnd but implement a more
962  * flexible approach. The RFC suggests cwnd should not be raised unless
963  * it was fully used previously. And that's exactly what we do in
964  * congestion avoidance mode. But in slow start we allow cwnd to grow
965  * as long as the application has used half the cwnd.
966  * Example :
967  *    cwnd is 10 (IW10), but application sends 9 frames.
968  *    We allow cwnd to reach 18 when all frames are ACKed.
969  * This check is safe because it's as aggressive as slow start which already
970  * risks 100% overshoot. The advantage is that we discourage application to
971  * either send more filler packets or data to artificially blow up the cwnd
972  * usage, and allow application-limited process to probe bw more aggressively.
973  */
974 static inline bool tcp_is_cwnd_limited(const struct sock *sk)
975 {
976         const struct tcp_sock *tp = tcp_sk(sk);
977
978         /* If in slow start, ensure cwnd grows to twice what was ACKed. */
979         if (tp->snd_cwnd <= tp->snd_ssthresh)
980                 return tp->snd_cwnd < 2 * tp->max_packets_out;
981
982         return tp->is_cwnd_limited;
983 }
984
985 static inline void tcp_check_probe_timer(struct sock *sk)
986 {
987         const struct tcp_sock *tp = tcp_sk(sk);
988         const struct inet_connection_sock *icsk = inet_csk(sk);
989
990         if (!tp->packets_out && !icsk->icsk_pending)
991                 inet_csk_reset_xmit_timer(sk, ICSK_TIME_PROBE0,
992                                           icsk->icsk_rto, TCP_RTO_MAX);
993 }
994
995 static inline void tcp_init_wl(struct tcp_sock *tp, u32 seq)
996 {
997         tp->snd_wl1 = seq;
998 }
999
1000 static inline void tcp_update_wl(struct tcp_sock *tp, u32 seq)
1001 {
1002         tp->snd_wl1 = seq;
1003 }
1004
1005 /*
1006  * Calculate(/check) TCP checksum
1007  */
1008 static inline __sum16 tcp_v4_check(int len, __be32 saddr,
1009                                    __be32 daddr, __wsum base)
1010 {
1011         return csum_tcpudp_magic(saddr,daddr,len,IPPROTO_TCP,base);
1012 }
1013
1014 static inline __sum16 __tcp_checksum_complete(struct sk_buff *skb)
1015 {
1016         return __skb_checksum_complete(skb);
1017 }
1018
1019 static inline bool tcp_checksum_complete(struct sk_buff *skb)
1020 {
1021         return !skb_csum_unnecessary(skb) &&
1022                 __tcp_checksum_complete(skb);
1023 }
1024
1025 /* Prequeue for VJ style copy to user, combined with checksumming. */
1026
1027 static inline void tcp_prequeue_init(struct tcp_sock *tp)
1028 {
1029         tp->ucopy.task = NULL;
1030         tp->ucopy.len = 0;
1031         tp->ucopy.memory = 0;
1032         skb_queue_head_init(&tp->ucopy.prequeue);
1033 #ifdef CONFIG_NET_DMA
1034         tp->ucopy.dma_chan = NULL;
1035         tp->ucopy.wakeup = 0;
1036         tp->ucopy.pinned_list = NULL;
1037         tp->ucopy.dma_cookie = 0;
1038 #endif
1039 }
1040
1041 bool tcp_prequeue(struct sock *sk, struct sk_buff *skb);
1042
1043 #undef STATE_TRACE
1044
1045 #ifdef STATE_TRACE
1046 static const char *statename[]={
1047         "Unused","Established","Syn Sent","Syn Recv",
1048         "Fin Wait 1","Fin Wait 2","Time Wait", "Close",
1049         "Close Wait","Last ACK","Listen","Closing"
1050 };
1051 #endif
1052 void tcp_set_state(struct sock *sk, int state);
1053
1054 void tcp_done(struct sock *sk);
1055
1056 static inline void tcp_sack_reset(struct tcp_options_received *rx_opt)
1057 {
1058         rx_opt->dsack = 0;
1059         rx_opt->num_sacks = 0;
1060 }
1061
1062 u32 tcp_default_init_rwnd(u32 mss);
1063
1064 /* Determine a window scaling and initial window to offer. */
1065 void tcp_select_initial_window(int __space, __u32 mss, __u32 *rcv_wnd,
1066                                __u32 *window_clamp, int wscale_ok,
1067                                __u8 *rcv_wscale, __u32 init_rcv_wnd);
1068
1069 static inline int tcp_win_from_space(int space)
1070 {
1071         return sysctl_tcp_adv_win_scale<=0 ?
1072                 (space>>(-sysctl_tcp_adv_win_scale)) :
1073                 space - (space>>sysctl_tcp_adv_win_scale);
1074 }
1075
1076 /* Note: caller must be prepared to deal with negative returns */ 
1077 static inline int tcp_space(const struct sock *sk)
1078 {
1079         return tcp_win_from_space(sk->sk_rcvbuf -
1080                                   atomic_read(&sk->sk_rmem_alloc));
1081
1082
1083 static inline int tcp_full_space(const struct sock *sk)
1084 {
1085         return tcp_win_from_space(sk->sk_rcvbuf); 
1086 }
1087
1088 static inline void tcp_openreq_init(struct request_sock *req,
1089                                     struct tcp_options_received *rx_opt,
1090                                     struct sk_buff *skb, struct sock *sk)
1091 {
1092         struct inet_request_sock *ireq = inet_rsk(req);
1093
1094         req->rcv_wnd = 0;               /* So that tcp_send_synack() knows! */
1095         req->cookie_ts = 0;
1096         tcp_rsk(req)->rcv_isn = TCP_SKB_CB(skb)->seq;
1097         tcp_rsk(req)->rcv_nxt = TCP_SKB_CB(skb)->seq + 1;
1098         tcp_rsk(req)->snt_synack = tcp_time_stamp;
1099         req->mss = rx_opt->mss_clamp;
1100         req->ts_recent = rx_opt->saw_tstamp ? rx_opt->rcv_tsval : 0;
1101         ireq->tstamp_ok = rx_opt->tstamp_ok;
1102         ireq->sack_ok = rx_opt->sack_ok;
1103         ireq->snd_wscale = rx_opt->snd_wscale;
1104         ireq->wscale_ok = rx_opt->wscale_ok;
1105         ireq->acked = 0;
1106         ireq->ecn_ok = 0;
1107         ireq->ir_rmt_port = tcp_hdr(skb)->source;
1108         ireq->ir_num = ntohs(tcp_hdr(skb)->dest);
1109         ireq->ir_mark = inet_request_mark(sk, skb);
1110 }
1111
1112 extern void tcp_openreq_init_rwin(struct request_sock *req,
1113                                   struct sock *sk, struct dst_entry *dst);
1114
1115 void tcp_enter_memory_pressure(struct sock *sk);
1116
1117 static inline int keepalive_intvl_when(const struct tcp_sock *tp)
1118 {
1119         return tp->keepalive_intvl ? : sysctl_tcp_keepalive_intvl;
1120 }
1121
1122 static inline int keepalive_time_when(const struct tcp_sock *tp)
1123 {
1124         return tp->keepalive_time ? : sysctl_tcp_keepalive_time;
1125 }
1126
1127 static inline int keepalive_probes(const struct tcp_sock *tp)
1128 {
1129         return tp->keepalive_probes ? : sysctl_tcp_keepalive_probes;
1130 }
1131
1132 static inline u32 keepalive_time_elapsed(const struct tcp_sock *tp)
1133 {
1134         const struct inet_connection_sock *icsk = &tp->inet_conn;
1135
1136         return min_t(u32, tcp_time_stamp - icsk->icsk_ack.lrcvtime,
1137                           tcp_time_stamp - tp->rcv_tstamp);
1138 }
1139
1140 static inline int tcp_fin_time(const struct sock *sk)
1141 {
1142         int fin_timeout = tcp_sk(sk)->linger2 ? : sysctl_tcp_fin_timeout;
1143         const int rto = inet_csk(sk)->icsk_rto;
1144
1145         if (fin_timeout < (rto << 2) - (rto >> 1))
1146                 fin_timeout = (rto << 2) - (rto >> 1);
1147
1148         return fin_timeout;
1149 }
1150
1151 static inline bool tcp_paws_check(const struct tcp_options_received *rx_opt,
1152                                   int paws_win)
1153 {
1154         if ((s32)(rx_opt->ts_recent - rx_opt->rcv_tsval) <= paws_win)
1155                 return true;
1156         if (unlikely(get_seconds() >= rx_opt->ts_recent_stamp + TCP_PAWS_24DAYS))
1157                 return true;
1158         /*
1159          * Some OSes send SYN and SYNACK messages with tsval=0 tsecr=0,
1160          * then following tcp messages have valid values. Ignore 0 value,
1161          * or else 'negative' tsval might forbid us to accept their packets.
1162          */
1163         if (!rx_opt->ts_recent)
1164                 return true;
1165         return false;
1166 }
1167
1168 static inline bool tcp_paws_reject(const struct tcp_options_received *rx_opt,
1169                                    int rst)
1170 {
1171         if (tcp_paws_check(rx_opt, 0))
1172                 return false;
1173
1174         /* RST segments are not recommended to carry timestamp,
1175            and, if they do, it is recommended to ignore PAWS because
1176            "their cleanup function should take precedence over timestamps."
1177            Certainly, it is mistake. It is necessary to understand the reasons
1178            of this constraint to relax it: if peer reboots, clock may go
1179            out-of-sync and half-open connections will not be reset.
1180            Actually, the problem would be not existing if all
1181            the implementations followed draft about maintaining clock
1182            via reboots. Linux-2.2 DOES NOT!
1183
1184            However, we can relax time bounds for RST segments to MSL.
1185          */
1186         if (rst && get_seconds() >= rx_opt->ts_recent_stamp + TCP_PAWS_MSL)
1187                 return false;
1188         return true;
1189 }
1190
1191 static inline void tcp_mib_init(struct net *net)
1192 {
1193         /* See RFC 2012 */
1194         TCP_ADD_STATS_USER(net, TCP_MIB_RTOALGORITHM, 1);
1195         TCP_ADD_STATS_USER(net, TCP_MIB_RTOMIN, TCP_RTO_MIN*1000/HZ);
1196         TCP_ADD_STATS_USER(net, TCP_MIB_RTOMAX, TCP_RTO_MAX*1000/HZ);
1197         TCP_ADD_STATS_USER(net, TCP_MIB_MAXCONN, -1);
1198 }
1199
1200 /* from STCP */
1201 static inline void tcp_clear_retrans_hints_partial(struct tcp_sock *tp)
1202 {
1203         tp->lost_skb_hint = NULL;
1204 }
1205
1206 static inline void tcp_clear_all_retrans_hints(struct tcp_sock *tp)
1207 {
1208         tcp_clear_retrans_hints_partial(tp);
1209         tp->retransmit_skb_hint = NULL;
1210 }
1211
1212 /* MD5 Signature */
1213 struct crypto_hash;
1214
1215 union tcp_md5_addr {
1216         struct in_addr  a4;
1217 #if IS_ENABLED(CONFIG_IPV6)
1218         struct in6_addr a6;
1219 #endif
1220 };
1221
1222 /* - key database */
1223 struct tcp_md5sig_key {
1224         struct hlist_node       node;
1225         u8                      keylen;
1226         u8                      family; /* AF_INET or AF_INET6 */
1227         union tcp_md5_addr      addr;
1228         u8                      key[TCP_MD5SIG_MAXKEYLEN];
1229         struct rcu_head         rcu;
1230 };
1231
1232 /* - sock block */
1233 struct tcp_md5sig_info {
1234         struct hlist_head       head;
1235         struct rcu_head         rcu;
1236 };
1237
1238 /* - pseudo header */
1239 struct tcp4_pseudohdr {
1240         __be32          saddr;
1241         __be32          daddr;
1242         __u8            pad;
1243         __u8            protocol;
1244         __be16          len;
1245 };
1246
1247 struct tcp6_pseudohdr {
1248         struct in6_addr saddr;
1249         struct in6_addr daddr;
1250         __be32          len;
1251         __be32          protocol;       /* including padding */
1252 };
1253
1254 union tcp_md5sum_block {
1255         struct tcp4_pseudohdr ip4;
1256 #if IS_ENABLED(CONFIG_IPV6)
1257         struct tcp6_pseudohdr ip6;
1258 #endif
1259 };
1260
1261 /* - pool: digest algorithm, hash description and scratch buffer */
1262 struct tcp_md5sig_pool {
1263         struct hash_desc        md5_desc;
1264         union tcp_md5sum_block  md5_blk;
1265 };
1266
1267 /* - functions */
1268 int tcp_v4_md5_hash_skb(char *md5_hash, struct tcp_md5sig_key *key,
1269                         const struct sock *sk, const struct request_sock *req,
1270                         const struct sk_buff *skb);
1271 int tcp_md5_do_add(struct sock *sk, const union tcp_md5_addr *addr,
1272                    int family, const u8 *newkey, u8 newkeylen, gfp_t gfp);
1273 int tcp_md5_do_del(struct sock *sk, const union tcp_md5_addr *addr,
1274                    int family);
1275 struct tcp_md5sig_key *tcp_v4_md5_lookup(struct sock *sk,
1276                                          struct sock *addr_sk);
1277
1278 #ifdef CONFIG_TCP_MD5SIG
1279 struct tcp_md5sig_key *tcp_md5_do_lookup(struct sock *sk,
1280                                          const union tcp_md5_addr *addr,
1281                                          int family);
1282 #define tcp_twsk_md5_key(twsk)  ((twsk)->tw_md5_key)
1283 #else
1284 static inline struct tcp_md5sig_key *tcp_md5_do_lookup(struct sock *sk,
1285                                          const union tcp_md5_addr *addr,
1286                                          int family)
1287 {
1288         return NULL;
1289 }
1290 #define tcp_twsk_md5_key(twsk)  NULL
1291 #endif
1292
1293 bool tcp_alloc_md5sig_pool(void);
1294
1295 struct tcp_md5sig_pool *tcp_get_md5sig_pool(void);
1296 static inline void tcp_put_md5sig_pool(void)
1297 {
1298         local_bh_enable();
1299 }
1300
1301 int tcp_md5_hash_header(struct tcp_md5sig_pool *, const struct tcphdr *);
1302 int tcp_md5_hash_skb_data(struct tcp_md5sig_pool *, const struct sk_buff *,
1303                           unsigned int header_len);
1304 int tcp_md5_hash_key(struct tcp_md5sig_pool *hp,
1305                      const struct tcp_md5sig_key *key);
1306
1307 /* From tcp_fastopen.c */
1308 void tcp_fastopen_cache_get(struct sock *sk, u16 *mss,
1309                             struct tcp_fastopen_cookie *cookie, int *syn_loss,
1310                             unsigned long *last_syn_loss);
1311 void tcp_fastopen_cache_set(struct sock *sk, u16 mss,
1312                             struct tcp_fastopen_cookie *cookie, bool syn_lost);
1313 struct tcp_fastopen_request {
1314         /* Fast Open cookie. Size 0 means a cookie request */
1315         struct tcp_fastopen_cookie      cookie;
1316         struct msghdr                   *data;  /* data in MSG_FASTOPEN */
1317         size_t                          size;
1318         int                             copied; /* queued in tcp_connect() */
1319 };
1320 void tcp_free_fastopen_req(struct tcp_sock *tp);
1321
1322 extern struct tcp_fastopen_context __rcu *tcp_fastopen_ctx;
1323 int tcp_fastopen_reset_cipher(void *key, unsigned int len);
1324 bool tcp_try_fastopen(struct sock *sk, struct sk_buff *skb,
1325                       struct request_sock *req,
1326                       struct tcp_fastopen_cookie *foc,
1327                       struct dst_entry *dst);
1328 void tcp_fastopen_init_key_once(bool publish);
1329 #define TCP_FASTOPEN_KEY_LENGTH 16
1330
1331 /* Fastopen key context */
1332 struct tcp_fastopen_context {
1333         struct crypto_cipher    *tfm;
1334         __u8                    key[TCP_FASTOPEN_KEY_LENGTH];
1335         struct rcu_head         rcu;
1336 };
1337
1338 /* write queue abstraction */
1339 static inline void tcp_write_queue_purge(struct sock *sk)
1340 {
1341         struct sk_buff *skb;
1342
1343         while ((skb = __skb_dequeue(&sk->sk_write_queue)) != NULL)
1344                 sk_wmem_free_skb(sk, skb);
1345         sk_mem_reclaim(sk);
1346         tcp_clear_all_retrans_hints(tcp_sk(sk));
1347 }
1348
1349 static inline struct sk_buff *tcp_write_queue_head(const struct sock *sk)
1350 {
1351         return skb_peek(&sk->sk_write_queue);
1352 }
1353
1354 static inline struct sk_buff *tcp_write_queue_tail(const struct sock *sk)
1355 {
1356         return skb_peek_tail(&sk->sk_write_queue);
1357 }
1358
1359 static inline struct sk_buff *tcp_write_queue_next(const struct sock *sk,
1360                                                    const struct sk_buff *skb)
1361 {
1362         return skb_queue_next(&sk->sk_write_queue, skb);
1363 }
1364
1365 static inline struct sk_buff *tcp_write_queue_prev(const struct sock *sk,
1366                                                    const struct sk_buff *skb)
1367 {
1368         return skb_queue_prev(&sk->sk_write_queue, skb);
1369 }
1370
1371 #define tcp_for_write_queue(skb, sk)                                    \
1372         skb_queue_walk(&(sk)->sk_write_queue, skb)
1373
1374 #define tcp_for_write_queue_from(skb, sk)                               \
1375         skb_queue_walk_from(&(sk)->sk_write_queue, skb)
1376
1377 #define tcp_for_write_queue_from_safe(skb, tmp, sk)                     \
1378         skb_queue_walk_from_safe(&(sk)->sk_write_queue, skb, tmp)
1379
1380 static inline struct sk_buff *tcp_send_head(const struct sock *sk)
1381 {
1382         return sk->sk_send_head;
1383 }
1384
1385 static inline bool tcp_skb_is_last(const struct sock *sk,
1386                                    const struct sk_buff *skb)
1387 {
1388         return skb_queue_is_last(&sk->sk_write_queue, skb);
1389 }
1390
1391 static inline void tcp_advance_send_head(struct sock *sk, const struct sk_buff *skb)
1392 {
1393         if (tcp_skb_is_last(sk, skb))
1394                 sk->sk_send_head = NULL;
1395         else
1396                 sk->sk_send_head = tcp_write_queue_next(sk, skb);
1397 }
1398
1399 static inline void tcp_check_send_head(struct sock *sk, struct sk_buff *skb_unlinked)
1400 {
1401         if (sk->sk_send_head == skb_unlinked)
1402                 sk->sk_send_head = NULL;
1403 }
1404
1405 static inline void tcp_init_send_head(struct sock *sk)
1406 {
1407         sk->sk_send_head = NULL;
1408 }
1409
1410 static inline void __tcp_add_write_queue_tail(struct sock *sk, struct sk_buff *skb)
1411 {
1412         __skb_queue_tail(&sk->sk_write_queue, skb);
1413 }
1414
1415 static inline void tcp_add_write_queue_tail(struct sock *sk, struct sk_buff *skb)
1416 {
1417         __tcp_add_write_queue_tail(sk, skb);
1418
1419         /* Queue it, remembering where we must start sending. */
1420         if (sk->sk_send_head == NULL) {
1421                 sk->sk_send_head = skb;
1422
1423                 if (tcp_sk(sk)->highest_sack == NULL)
1424                         tcp_sk(sk)->highest_sack = skb;
1425         }
1426 }
1427
1428 static inline void __tcp_add_write_queue_head(struct sock *sk, struct sk_buff *skb)
1429 {
1430         __skb_queue_head(&sk->sk_write_queue, skb);
1431 }
1432
1433 /* Insert buff after skb on the write queue of sk.  */
1434 static inline void tcp_insert_write_queue_after(struct sk_buff *skb,
1435                                                 struct sk_buff *buff,
1436                                                 struct sock *sk)
1437 {
1438         __skb_queue_after(&sk->sk_write_queue, skb, buff);
1439 }
1440
1441 /* Insert new before skb on the write queue of sk.  */
1442 static inline void tcp_insert_write_queue_before(struct sk_buff *new,
1443                                                   struct sk_buff *skb,
1444                                                   struct sock *sk)
1445 {
1446         __skb_queue_before(&sk->sk_write_queue, skb, new);
1447
1448         if (sk->sk_send_head == skb)
1449                 sk->sk_send_head = new;
1450 }
1451
1452 static inline void tcp_unlink_write_queue(struct sk_buff *skb, struct sock *sk)
1453 {
1454         __skb_unlink(skb, &sk->sk_write_queue);
1455 }
1456
1457 static inline bool tcp_write_queue_empty(struct sock *sk)
1458 {
1459         return skb_queue_empty(&sk->sk_write_queue);
1460 }
1461
1462 static inline void tcp_push_pending_frames(struct sock *sk)
1463 {
1464         if (tcp_send_head(sk)) {
1465                 struct tcp_sock *tp = tcp_sk(sk);
1466
1467                 __tcp_push_pending_frames(sk, tcp_current_mss(sk), tp->nonagle);
1468         }
1469 }
1470
1471 /* Start sequence of the skb just after the highest skb with SACKed
1472  * bit, valid only if sacked_out > 0 or when the caller has ensured
1473  * validity by itself.
1474  */
1475 static inline u32 tcp_highest_sack_seq(struct tcp_sock *tp)
1476 {
1477         if (!tp->sacked_out)
1478                 return tp->snd_una;
1479
1480         if (tp->highest_sack == NULL)
1481                 return tp->snd_nxt;
1482
1483         return TCP_SKB_CB(tp->highest_sack)->seq;
1484 }
1485
1486 static inline void tcp_advance_highest_sack(struct sock *sk, struct sk_buff *skb)
1487 {
1488         tcp_sk(sk)->highest_sack = tcp_skb_is_last(sk, skb) ? NULL :
1489                                                 tcp_write_queue_next(sk, skb);
1490 }
1491
1492 static inline struct sk_buff *tcp_highest_sack(struct sock *sk)
1493 {
1494         return tcp_sk(sk)->highest_sack;
1495 }
1496
1497 static inline void tcp_highest_sack_reset(struct sock *sk)
1498 {
1499         tcp_sk(sk)->highest_sack = tcp_write_queue_head(sk);
1500 }
1501
1502 /* Called when old skb is about to be deleted (to be combined with new skb) */
1503 static inline void tcp_highest_sack_combine(struct sock *sk,
1504                                             struct sk_buff *old,
1505                                             struct sk_buff *new)
1506 {
1507         if (tcp_sk(sk)->sacked_out && (old == tcp_sk(sk)->highest_sack))
1508                 tcp_sk(sk)->highest_sack = new;
1509 }
1510
1511 /* Determines whether this is a thin stream (which may suffer from
1512  * increased latency). Used to trigger latency-reducing mechanisms.
1513  */
1514 static inline bool tcp_stream_is_thin(struct tcp_sock *tp)
1515 {
1516         return tp->packets_out < 4 && !tcp_in_initial_slowstart(tp);
1517 }
1518
1519 /* /proc */
1520 enum tcp_seq_states {
1521         TCP_SEQ_STATE_LISTENING,
1522         TCP_SEQ_STATE_OPENREQ,
1523         TCP_SEQ_STATE_ESTABLISHED,
1524 };
1525
1526 int tcp_seq_open(struct inode *inode, struct file *file);
1527
1528 struct tcp_seq_afinfo {
1529         char                            *name;
1530         sa_family_t                     family;
1531         const struct file_operations    *seq_fops;
1532         struct seq_operations           seq_ops;
1533 };
1534
1535 struct tcp_iter_state {
1536         struct seq_net_private  p;
1537         sa_family_t             family;
1538         enum tcp_seq_states     state;
1539         struct sock             *syn_wait_sk;
1540         int                     bucket, offset, sbucket, num;
1541         kuid_t                  uid;
1542         loff_t                  last_pos;
1543 };
1544
1545 int tcp_proc_register(struct net *net, struct tcp_seq_afinfo *afinfo);
1546 void tcp_proc_unregister(struct net *net, struct tcp_seq_afinfo *afinfo);
1547
1548 extern struct request_sock_ops tcp_request_sock_ops;
1549 extern struct request_sock_ops tcp6_request_sock_ops;
1550
1551 void tcp_v4_destroy_sock(struct sock *sk);
1552
1553 struct sk_buff *tcp_gso_segment(struct sk_buff *skb,
1554                                 netdev_features_t features);
1555 struct sk_buff **tcp_gro_receive(struct sk_buff **head, struct sk_buff *skb);
1556 int tcp_gro_complete(struct sk_buff *skb);
1557
1558 void __tcp_v4_send_check(struct sk_buff *skb, __be32 saddr, __be32 daddr);
1559
1560 static inline u32 tcp_notsent_lowat(const struct tcp_sock *tp)
1561 {
1562         return tp->notsent_lowat ?: sysctl_tcp_notsent_lowat;
1563 }
1564
1565 static inline bool tcp_stream_memory_free(const struct sock *sk)
1566 {
1567         const struct tcp_sock *tp = tcp_sk(sk);
1568         u32 notsent_bytes = tp->write_seq - tp->snd_nxt;
1569
1570         return notsent_bytes < tcp_notsent_lowat(tp);
1571 }
1572
1573 #ifdef CONFIG_PROC_FS
1574 int tcp4_proc_init(void);
1575 void tcp4_proc_exit(void);
1576 #endif
1577
1578 int tcp_rtx_synack(struct sock *sk, struct request_sock *req);
1579 int tcp_conn_request(struct request_sock_ops *rsk_ops,
1580                      const struct tcp_request_sock_ops *af_ops,
1581                      struct sock *sk, struct sk_buff *skb);
1582
1583 /* TCP af-specific functions */
1584 struct tcp_sock_af_ops {
1585 #ifdef CONFIG_TCP_MD5SIG
1586         struct tcp_md5sig_key   *(*md5_lookup) (struct sock *sk,
1587                                                 struct sock *addr_sk);
1588         int                     (*calc_md5_hash) (char *location,
1589                                                   struct tcp_md5sig_key *md5,
1590                                                   const struct sock *sk,
1591                                                   const struct request_sock *req,
1592                                                   const struct sk_buff *skb);
1593         int                     (*md5_parse) (struct sock *sk,
1594                                               char __user *optval,
1595                                               int optlen);
1596 #endif
1597 };
1598
1599 struct tcp_request_sock_ops {
1600         u16 mss_clamp;
1601 #ifdef CONFIG_TCP_MD5SIG
1602         struct tcp_md5sig_key   *(*md5_lookup) (struct sock *sk,
1603                                                 struct request_sock *req);
1604         int                     (*calc_md5_hash) (char *location,
1605                                                   struct tcp_md5sig_key *md5,
1606                                                   const struct sock *sk,
1607                                                   const struct request_sock *req,
1608                                                   const struct sk_buff *skb);
1609 #endif
1610         void (*init_req)(struct request_sock *req, struct sock *sk,
1611                          struct sk_buff *skb);
1612 #ifdef CONFIG_SYN_COOKIES
1613         __u32 (*cookie_init_seq)(struct sock *sk, const struct sk_buff *skb,
1614                                  __u16 *mss);
1615 #endif
1616         struct dst_entry *(*route_req)(struct sock *sk, struct flowi *fl,
1617                                        const struct request_sock *req,
1618                                        bool *strict);
1619         __u32 (*init_seq)(const struct sk_buff *skb);
1620         int (*send_synack)(struct sock *sk, struct dst_entry *dst,
1621                            struct flowi *fl, struct request_sock *req,
1622                            u16 queue_mapping, struct tcp_fastopen_cookie *foc);
1623         void (*queue_hash_add)(struct sock *sk, struct request_sock *req,
1624                                const unsigned long timeout);
1625 };
1626
1627 #ifdef CONFIG_SYN_COOKIES
1628 static inline __u32 cookie_init_sequence(const struct tcp_request_sock_ops *ops,
1629                                          struct sock *sk, struct sk_buff *skb,
1630                                          __u16 *mss)
1631 {
1632         return ops->cookie_init_seq(sk, skb, mss);
1633 }
1634 #else
1635 static inline __u32 cookie_init_sequence(const struct tcp_request_sock_ops *ops,
1636                                          struct sock *sk, struct sk_buff *skb,
1637                                          __u16 *mss)
1638 {
1639         return 0;
1640 }
1641 #endif
1642
1643 int tcpv4_offload_init(void);
1644
1645 void tcp_v4_init(void);
1646 void tcp_init(void);
1647
1648 #endif  /* _TCP_H */