question in tcp_do_segment()



Hi, freebsd-net-

I don't have a testcase for this at the moment, but there's a test
in tcp_do_segment that looks backwards to me...

http://svnweb.freebsd.org/base/release/9.0.0/sys/netinet/tcp_input.c?view=markup

line 2398 -
if (!tcp_timer_active(tp, TT_REXMT) ||
th->th_ack != tp->snd_una)
tp->t_dupacks = 0;

says "If we get a DUP ack and the retransmit timer is NOT
fired, then ignore it and reset DUP ACK count."

Isn't that exactly backwards? I could see ignoring the DUP ACK if we
know the retransmit timer HAS fired, and we don't want to interfere with
its retransmission efforts. The way the code is written now, as far as
I can see, completely defeats retransmission based on DUP acks. I
accidentally ran across this by breaking the timer, so that the
retransmit timer never fires, and my streams get stuck, even with plenty of DUP ACKs.

Am I missing something, or should that "!" go ?

Thanks,
Reese Faucette
Myricom, Inc.


_______________________________________________
freebsd-net@xxxxxxxxxxx mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-net
To unsubscribe, send any mail to "freebsd-net-unsubscribe@xxxxxxxxxxx"