diff options
author | Arnaldo Carvalho de Melo <acme@ghostprotocols.net> | 2005-08-09 23:11:56 -0400 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2005-08-29 18:49:29 -0400 |
commit | 295f7324ff8d9ea58b4d3ec93b1aaa1d80e048a9 (patch) | |
tree | 509c113d2622a28836303590ba1a40cecea59d3b /net/ipv4/tcp_input.c | |
parent | 0a5578cf8e5e045aaa68643c17ce885426697c6b (diff) |
[ICSK]: Introduce reqsk_queue_prune from code in tcp_synack_timer
With this we're very close to getting all of the current TCP
refactorings in my dccp-2.6 tree merged, next changeset will export
some functions needed by the current DCCP code and then dccp-2.6.git
will be born!
Signed-off-by: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4/tcp_input.c')
-rw-r--r-- | net/ipv4/tcp_input.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c index b35badf53aa5..71d456148de7 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c | |||
@@ -3831,6 +3831,7 @@ static int tcp_rcv_synsent_state_process(struct sock *sk, struct sk_buff *skb, | |||
3831 | tcp_parse_options(skb, &tp->rx_opt, 0); | 3831 | tcp_parse_options(skb, &tp->rx_opt, 0); |
3832 | 3832 | ||
3833 | if (th->ack) { | 3833 | if (th->ack) { |
3834 | struct inet_connection_sock *icsk; | ||
3834 | /* rfc793: | 3835 | /* rfc793: |
3835 | * "If the state is SYN-SENT then | 3836 | * "If the state is SYN-SENT then |
3836 | * first check the ACK bit | 3837 | * first check the ACK bit |
@@ -3956,7 +3957,11 @@ static int tcp_rcv_synsent_state_process(struct sock *sk, struct sk_buff *skb, | |||
3956 | sk_wake_async(sk, 0, POLL_OUT); | 3957 | sk_wake_async(sk, 0, POLL_OUT); |
3957 | } | 3958 | } |
3958 | 3959 | ||
3959 | if (sk->sk_write_pending || tp->defer_accept || inet_csk(sk)->icsk_ack.pingpong) { | 3960 | icsk = inet_csk(sk); |
3961 | |||
3962 | if (sk->sk_write_pending || | ||
3963 | icsk->icsk_accept_queue.rskq_defer_accept || | ||
3964 | icsk->icsk_ack.pingpong) { | ||
3960 | /* Save one ACK. Data will be ready after | 3965 | /* Save one ACK. Data will be ready after |
3961 | * several ticks, if write_pending is set. | 3966 | * several ticks, if write_pending is set. |
3962 | * | 3967 | * |
@@ -3965,8 +3970,8 @@ static int tcp_rcv_synsent_state_process(struct sock *sk, struct sk_buff *skb, | |||
3965 | * to stand against the temptation 8) --ANK | 3970 | * to stand against the temptation 8) --ANK |
3966 | */ | 3971 | */ |
3967 | inet_csk_schedule_ack(sk); | 3972 | inet_csk_schedule_ack(sk); |
3968 | inet_csk(sk)->icsk_ack.lrcvtime = tcp_time_stamp; | 3973 | icsk->icsk_ack.lrcvtime = tcp_time_stamp; |
3969 | inet_csk(sk)->icsk_ack.ato = TCP_ATO_MIN; | 3974 | icsk->icsk_ack.ato = TCP_ATO_MIN; |
3970 | tcp_incr_quickack(sk); | 3975 | tcp_incr_quickack(sk); |
3971 | tcp_enter_quickack_mode(sk); | 3976 | tcp_enter_quickack_mode(sk); |
3972 | inet_csk_reset_xmit_timer(sk, ICSK_TIME_DACK, | 3977 | inet_csk_reset_xmit_timer(sk, ICSK_TIME_DACK, |