Files
linux/include/net
Jerry Chu 8336886f78 tcp: TCP Fast Open Server - support TFO listeners
This patch builds on top of the previous patch to add the support
for TFO listeners. This includes -

1. allocating, properly initializing, and managing the per listener
fastopen_queue structure when TFO is enabled

2. changes to the inet_csk_accept code to support TFO. E.g., the
request_sock can no longer be freed upon accept(), not until 3WHS
finishes

3. allowing a TCP_SYN_RECV socket to properly poll() and sendmsg()
if it's a TFO socket

4. properly closing a TFO listener, and a TFO socket before 3WHS
finishes

5. supporting TCP_FASTOPEN socket option

6. modifying tcp_check_req() to use to check a TFO socket as well
as request_sock

7. supporting TCP's TFO cookie option

8. adding a new SYN-ACK retransmit handler to use the timer directly
off the TFO socket rather than the listener socket. Note that TFO
server side will not retransmit anything other than SYN-ACK until
the 3WHS is completed.

The patch also contains an important function
"reqsk_fastopen_remove()" to manage the somewhat complex relation
between a listener, its request_sock, and the corresponding child
socket. See the comment above the function for the detail.

Signed-off-by: H.K. Jerry Chu <hkchu@google.com>
Cc: Yuchung Cheng <ycheng@google.com>
Cc: Neal Cardwell <ncardwell@google.com>
Cc: Eric Dumazet <edumazet@google.com>
Cc: Tom Herbert <therbert@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2012-08-31 20:02:19 -04:00
..
2011-03-31 11:26:23 -03:00
2012-08-15 03:43:43 -07:00
2012-07-18 11:28:46 -07:00
2012-06-08 14:27:23 -07:00
2012-08-09 16:18:06 -07:00
2012-04-15 12:44:40 -04:00
2012-04-15 12:44:40 -04:00
2010-06-03 03:21:52 -07:00
2012-04-15 12:44:40 -04:00
2012-07-19 10:43:03 -07:00
2011-03-31 11:26:23 -03:00
2012-04-15 12:44:40 -04:00
2012-08-06 13:33:21 -07:00
2012-07-18 08:59:58 -07:00
2012-08-14 14:28:32 -07:00
2012-08-10 14:08:57 -07:00
2012-04-14 14:47:05 -04:00
2011-03-31 11:26:23 -03:00
2012-05-17 18:45:20 -04:00
2010-06-03 03:21:52 -07:00
2012-08-09 16:18:06 -07:00
2012-08-07 16:24:55 -07:00
2012-08-03 20:40:11 -07:00
2011-05-17 14:16:58 -04:00
2012-07-26 15:50:39 -07:00
2009-03-21 19:06:50 -07:00
2012-05-19 01:08:16 -04:00
2012-08-06 13:40:47 -07:00
2009-10-07 16:39:43 -04:00
2012-04-15 12:44:40 -04:00
2012-05-16 15:17:08 -04:00
2012-04-15 12:44:40 -04:00