Re: [patch] TCP -> retrans_collapse doesn't update packets_out

David Miller (davem@twiddle.net)
Wed, 10 Mar 1999 05:32:07 -0800


Date: Wed, 10 Mar 1999 14:23:18 +0100 (CET)
From: Andrea Arcangeli <andrea@e-mind.com>

I think I fixed a bug in the retrans path of the TCP stack. Here the
patch against 2.2.3:

Andrea, look at your patch please, it's wrong.

@@ -510,7 +510,9 @@
*/
kfree_skb(next_skb);
sk->tp_pinfo.af_tcp.packets_out--;
+ return 0;
}
+ return -1;
}

Note the "sk->tp_pinfo.af_tcp.packets_out--" being done if we actually
fragment. And it's the one place where your patch returns 0, and it's
the one case where you've changed the behavior.

/* Do a simple retransmit without using the backoff mechanisms in
@@ -575,7 +577,8 @@
(skb->next != tp->send_head) &&
(skb->next != (struct sk_buff *)&sk->write_queue) &&
(sysctl_tcp_retrans_collapse != 0))
- tcp_retrans_try_collapse(sk, skb, cur_mss);
+ if (!tcp_retrans_try_collapse(sk, skb, cur_mss))
+ tp->packets_out--;

if(tp->af_specific->rebuild_header(sk))
return 1; /* Routing failure or similar. */

And then you do it again. You have introduced a bug instead of fixing
one.

Later,
David S. Miller
davem@redhat.com

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/