diff options
author | Ilpo Järvinen <ilpo.jarvinen@helsinki.fi> | 2009-03-14 10:23:01 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-03-15 23:09:51 -0400 |
commit | 5861f8e58dd84fc34b691c2e8d4824dea68c360e (patch) | |
tree | 5c202f6866cca91ded45213cbb1a3d7f75fc6749 /net/ipv4 | |
parent | 7cd0a63872ac6ef97265f07adc367ca4f984468e (diff) |
tcp: remove pointless .dsack/.num_sacks code
In the pure assignment case, the earlier zeroing is
still in effect.
David S. Miller raised concerns if the ifs are there to avoid
dirtying cachelines. I came to these conclusions:
> We'll be dirty it anyway (now that I check), the first "real" statement
> in tcp_rcv_established is:
>
> tp->rx_opt.saw_tstamp = 0;
>
> ...that'll land on the same dword. :-/
>
> I suppose the blocks are there just because they had more complexity
> inside when they had to calculate the eff_sacks too (maybe it would
> have been better to just remove them in that drop-patch so you would
> have had less head-ache :-)).
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4')
-rw-r--r-- | net/ipv4/tcp_input.c | 7 | ||||
-rw-r--r-- | net/ipv4/tcp_output.c | 3 |
2 files changed, 3 insertions, 7 deletions
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c index 5ecd7aa25979..cd39d1d02dc3 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c | |||
@@ -4248,8 +4248,7 @@ static void tcp_sack_remove(struct tcp_sock *tp) | |||
4248 | this_sack++; | 4248 | this_sack++; |
4249 | sp++; | 4249 | sp++; |
4250 | } | 4250 | } |
4251 | if (num_sacks != tp->rx_opt.num_sacks) | 4251 | tp->rx_opt.num_sacks = num_sacks; |
4252 | tp->rx_opt.num_sacks = num_sacks; | ||
4253 | } | 4252 | } |
4254 | 4253 | ||
4255 | /* This one checks to see if we can put data from the | 4254 | /* This one checks to see if we can put data from the |
@@ -4325,8 +4324,7 @@ static void tcp_data_queue(struct sock *sk, struct sk_buff *skb) | |||
4325 | 4324 | ||
4326 | TCP_ECN_accept_cwr(tp, skb); | 4325 | TCP_ECN_accept_cwr(tp, skb); |
4327 | 4326 | ||
4328 | if (tp->rx_opt.dsack) | 4327 | tp->rx_opt.dsack = 0; |
4329 | tp->rx_opt.dsack = 0; | ||
4330 | 4328 | ||
4331 | /* Queue data for delivery to the user. | 4329 | /* Queue data for delivery to the user. |
4332 | * Packets in sequence go to the receive queue. | 4330 | * Packets in sequence go to the receive queue. |
@@ -4445,7 +4443,6 @@ drop: | |||
4445 | /* Initial out of order segment, build 1 SACK. */ | 4443 | /* Initial out of order segment, build 1 SACK. */ |
4446 | if (tcp_is_sack(tp)) { | 4444 | if (tcp_is_sack(tp)) { |
4447 | tp->rx_opt.num_sacks = 1; | 4445 | tp->rx_opt.num_sacks = 1; |
4448 | tp->rx_opt.dsack = 0; | ||
4449 | tp->selective_acks[0].start_seq = TCP_SKB_CB(skb)->seq; | 4446 | tp->selective_acks[0].start_seq = TCP_SKB_CB(skb)->seq; |
4450 | tp->selective_acks[0].end_seq = | 4447 | tp->selective_acks[0].end_seq = |
4451 | TCP_SKB_CB(skb)->end_seq; | 4448 | TCP_SKB_CB(skb)->end_seq; |
diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c index eb285befdf3b..325658039139 100644 --- a/net/ipv4/tcp_output.c +++ b/net/ipv4/tcp_output.c | |||
@@ -441,8 +441,7 @@ static void tcp_options_write(__be32 *ptr, struct tcp_sock *tp, | |||
441 | *ptr++ = htonl(sp[this_sack].end_seq); | 441 | *ptr++ = htonl(sp[this_sack].end_seq); |
442 | } | 442 | } |
443 | 443 | ||
444 | if (tp->rx_opt.dsack) | 444 | tp->rx_opt.dsack = 0; |
445 | tp->rx_opt.dsack = 0; | ||
446 | } | 445 | } |
447 | } | 446 | } |
448 | 447 | ||