diff options
Diffstat (limited to 'include/linux/tcp.h')
| -rw-r--r-- | include/linux/tcp.h | 28 |
1 files changed, 12 insertions, 16 deletions
diff --git a/include/linux/tcp.h b/include/linux/tcp.h index 14a55e3e3a50..97a7c9e03df5 100644 --- a/include/linux/tcp.h +++ b/include/linux/tcp.h | |||
| @@ -230,6 +230,17 @@ struct tcp_options_received { | |||
| 230 | __u16 mss_clamp; /* Maximal mss, negotiated at connection setup */ | 230 | __u16 mss_clamp; /* Maximal mss, negotiated at connection setup */ |
| 231 | }; | 231 | }; |
| 232 | 232 | ||
| 233 | struct tcp_request_sock { | ||
| 234 | struct inet_request_sock req; | ||
| 235 | __u32 rcv_isn; | ||
| 236 | __u32 snt_isn; | ||
| 237 | }; | ||
| 238 | |||
| 239 | static inline struct tcp_request_sock *tcp_rsk(const struct request_sock *req) | ||
| 240 | { | ||
| 241 | return (struct tcp_request_sock *)req; | ||
| 242 | } | ||
| 243 | |||
| 233 | struct tcp_sock { | 244 | struct tcp_sock { |
| 234 | /* inet_sock has to be the first member of tcp_sock */ | 245 | /* inet_sock has to be the first member of tcp_sock */ |
| 235 | struct inet_sock inet; | 246 | struct inet_sock inet; |
| @@ -368,22 +379,7 @@ struct tcp_sock { | |||
| 368 | 379 | ||
| 369 | __u32 total_retrans; /* Total retransmits for entire connection */ | 380 | __u32 total_retrans; /* Total retransmits for entire connection */ |
| 370 | 381 | ||
| 371 | /* The syn_wait_lock is necessary only to avoid proc interface having | 382 | struct request_sock_queue accept_queue; /* FIFO of established children */ |
| 372 | * to grab the main lock sock while browsing the listening hash | ||
| 373 | * (otherwise it's deadlock prone). | ||
| 374 | * This lock is acquired in read mode only from listening_get_next() | ||
| 375 | * and it's acquired in write mode _only_ from code that is actively | ||
| 376 | * changing the syn_wait_queue. All readers that are holding | ||
| 377 | * the master sock lock don't need to grab this lock in read mode | ||
| 378 | * too as the syn_wait_queue writes are always protected from | ||
| 379 | * the main sock lock. | ||
| 380 | */ | ||
| 381 | rwlock_t syn_wait_lock; | ||
| 382 | struct tcp_listen_opt *listen_opt; | ||
| 383 | |||
| 384 | /* FIFO of established children */ | ||
| 385 | struct open_request *accept_queue; | ||
| 386 | struct open_request *accept_queue_tail; | ||
| 387 | 383 | ||
| 388 | unsigned int keepalive_time; /* time before keep alive takes place */ | 384 | unsigned int keepalive_time; /* time before keep alive takes place */ |
| 389 | unsigned int keepalive_intvl; /* time interval between keep alive probes */ | 385 | unsigned int keepalive_intvl; /* time interval between keep alive probes */ |
