Skip to content

Commit

Permalink
tcp: remove pointless .dsack/.num_sacks code
Browse files Browse the repository at this point in the history
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 <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
  • Loading branch information
ij1 authored and davem330 committed Mar 16, 2009
1 parent 7cd0a63 commit 5861f8e
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 7 deletions.
7 changes: 2 additions & 5 deletions net/ipv4/tcp_input.c
Original file line number Diff line number Diff line change
Expand Up @@ -4248,8 +4248,7 @@ static void tcp_sack_remove(struct tcp_sock *tp)
this_sack++;
sp++;
}
if (num_sacks != tp->rx_opt.num_sacks)
tp->rx_opt.num_sacks = num_sacks;
tp->rx_opt.num_sacks = num_sacks;
}

/* This one checks to see if we can put data from the
Expand Down Expand Up @@ -4325,8 +4324,7 @@ static void tcp_data_queue(struct sock *sk, struct sk_buff *skb)

TCP_ECN_accept_cwr(tp, skb);

if (tp->rx_opt.dsack)
tp->rx_opt.dsack = 0;
tp->rx_opt.dsack = 0;

/* Queue data for delivery to the user.
* Packets in sequence go to the receive queue.
Expand Down Expand Up @@ -4445,7 +4443,6 @@ static void tcp_data_queue(struct sock *sk, struct sk_buff *skb)
/* Initial out of order segment, build 1 SACK. */
if (tcp_is_sack(tp)) {
tp->rx_opt.num_sacks = 1;
tp->rx_opt.dsack = 0;
tp->selective_acks[0].start_seq = TCP_SKB_CB(skb)->seq;
tp->selective_acks[0].end_seq =
TCP_SKB_CB(skb)->end_seq;
Expand Down
3 changes: 1 addition & 2 deletions net/ipv4/tcp_output.c
Original file line number Diff line number Diff line change
Expand Up @@ -441,8 +441,7 @@ static void tcp_options_write(__be32 *ptr, struct tcp_sock *tp,
*ptr++ = htonl(sp[this_sack].end_seq);
}

if (tp->rx_opt.dsack)
tp->rx_opt.dsack = 0;
tp->rx_opt.dsack = 0;
}
}

Expand Down

0 comments on commit 5861f8e

Please sign in to comment.