Skip to content

Commit

Permalink
[TCP]: No fackets_out/highest_sack tuning when SACK isn't enabled
Browse files Browse the repository at this point in the history
This was found due to bug report from Cedric Le Goater though
it turned this turned out to be unrelated bug.

Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Ilpo Järvinen authored and David S. Miller committed Oct 10, 2007
1 parent 8336793 commit dc86967
Showing 1 changed file with 4 additions and 3 deletions.
7 changes: 4 additions & 3 deletions net/ipv4/tcp_output.c
Original file line number Diff line number Diff line change
Expand Up @@ -660,7 +660,7 @@ static void tcp_set_skb_tso_segs(struct sock *sk, struct sk_buff *skb, unsigned
static void tcp_adjust_fackets_out(struct tcp_sock *tp, struct sk_buff *skb,
int decr)
{
if (!tp->sacked_out)
if (!tp->sacked_out || tcp_is_reno(tp))
return;

if (!before(tp->highest_sack, TCP_SKB_CB(skb)->seq))
Expand Down Expand Up @@ -712,7 +712,8 @@ int tcp_fragment(struct sock *sk, struct sk_buff *skb, u32 len, unsigned int mss
TCP_SKB_CB(buff)->end_seq = TCP_SKB_CB(skb)->end_seq;
TCP_SKB_CB(skb)->end_seq = TCP_SKB_CB(buff)->seq;

if (tp->sacked_out && (TCP_SKB_CB(skb)->seq == tp->highest_sack))
if (tcp_is_sack(tp) && tp->sacked_out &&
(TCP_SKB_CB(skb)->seq == tp->highest_sack))
tp->highest_sack = TCP_SKB_CB(buff)->seq;

/* PSH and FIN should only be set in the second packet. */
Expand Down Expand Up @@ -1718,7 +1719,7 @@ static void tcp_retrans_try_collapse(struct sock *sk, struct sk_buff *skb, int m
BUG_ON(tcp_skb_pcount(skb) != 1 ||
tcp_skb_pcount(next_skb) != 1);

if (WARN_ON(tp->sacked_out &&
if (WARN_ON(tcp_is_sack(tp) && tp->sacked_out &&
(TCP_SKB_CB(next_skb)->seq == tp->highest_sack)))
return;

Expand Down

0 comments on commit dc86967

Please sign in to comment.