lkml.org 
[lkml]   [2003]   [Nov]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectLinux TCP state machine is broken?
Hi,

[I'm not subscribed to this mailing list, so please CC
your reply to me]

I have been trying to implement one of the Internet
Drafts in the kernel for experimentation, and while
debugging I reliazed that TCP sender is almost always
in TCP_CA_CWR state. Since Linux doesn't follow the
RFCs, I am not sure if this is what is intended, or if
this is bug.

I think the reason the sender is always in TCP_CA_CWR
and not in TCP_CA_Open is because in the function
"tcp_transmit_skb" (tcp_out.c:190), after sending the
packet to IP-layer, the sender call tcp_enter_cwr() if
the IP layer did not return any non congestion error.
I have put the code fragement at the end of the
e-mail.

I am not clear why a successfuly transmission should
cause the sender to enter CWR (the only other places
when tcp_enter_cwr is called are when there is a ICMP
source quench or when there is ECE bit set for ECN).

If someone could explain this to me, that would be
great.

Thanks
Yogesh


------tcp_output.c; line 279 -------------

err = tp->af_specific->queue_xmit(skb, 0);
if (err <= 0)
return err;


tcp_enter_cwr(tp);


/* NET_XMIT_CN is special. It does not
guarantee,
* that this packet is lost. It tells that
device
* is about to start to drop packets or already
* drops some packets of the same priority and
* invokes us to send less aggressively.
*/
return err == NET_XMIT_CN ? 0 : err;

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

\
 
 \ /
  Last update: 2005-03-22 13:58    [W:0.021 / U:4.308 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site