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/