tcp: use tcp_v4_send_synack on first SYN-ACK
To avoid large code duplication in IPv6, we need to first simplify the complicate SYN-ACK sending code in tcp_v4_conn_request(). To use tcp_v4(6)_send_synack() to send all SYN-ACKs, we need to initialize the mini socket's receive window before trying to create the child socket and/or building the SYN-ACK packet. So we move that initialization from tcp_make_synack() to tcp_v4_conn_request() as a new function tcp_openreq_init_req_rwin(). After this refactoring the SYN-ACK sending code is simpler and easier to implement Fast Open for IPv6. Signed-off-by: Yuchung Cheng <ycheng@google.com> Signed-off-by: Daniel Lee <longinus00@gmail.com> Signed-off-by: Jerry Chu <hkchu@google.com> Acked-by: Neal Cardwell <ncardwell@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
89278c9dc9
commit
843f4a55e3
+7
-7
@@ -1114,6 +1114,9 @@ static inline void tcp_openreq_init(struct request_sock *req,
|
||||
ireq->ir_num = ntohs(tcp_hdr(skb)->dest);
|
||||
}
|
||||
|
||||
extern void tcp_openreq_init_rwin(struct request_sock *req,
|
||||
struct sock *sk, struct dst_entry *dst);
|
||||
|
||||
void tcp_enter_memory_pressure(struct sock *sk);
|
||||
|
||||
static inline int keepalive_intvl_when(const struct tcp_sock *tp)
|
||||
@@ -1323,13 +1326,10 @@ void tcp_free_fastopen_req(struct tcp_sock *tp);
|
||||
|
||||
extern struct tcp_fastopen_context __rcu *tcp_fastopen_ctx;
|
||||
int tcp_fastopen_reset_cipher(void *key, unsigned int len);
|
||||
int tcp_fastopen_create_child(struct sock *sk,
|
||||
struct sk_buff *skb,
|
||||
struct sk_buff *skb_synack,
|
||||
struct request_sock *req);
|
||||
bool tcp_fastopen_check(struct sock *sk, struct sk_buff *skb,
|
||||
struct request_sock *req,
|
||||
struct tcp_fastopen_cookie *foc);
|
||||
bool tcp_try_fastopen(struct sock *sk, struct sk_buff *skb,
|
||||
struct request_sock *req,
|
||||
struct tcp_fastopen_cookie *foc,
|
||||
struct dst_entry *dst);
|
||||
void tcp_fastopen_init_key_once(bool publish);
|
||||
#define TCP_FASTOPEN_KEY_LENGTH 16
|
||||
|
||||
|
||||
Reference in New Issue
Block a user