LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
* Linux TCP state machine is broken?
@ 2003-11-26 17:53 Yogesh Swami
  2003-11-26 18:39 ` John Heffner
  0 siblings, 1 reply; 2+ messages in thread
From: Yogesh Swami @ 2003-11-26 17:53 UTC (permalink / raw)
  To: linux-kernel

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;

-------------------------------------

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: Linux TCP state machine is broken?
  2003-11-26 17:53 Linux TCP state machine is broken? Yogesh Swami
@ 2003-11-26 18:39 ` John Heffner
  0 siblings, 0 replies; 2+ messages in thread
From: John Heffner @ 2003-11-26 18:39 UTC (permalink / raw)
  To: Yogesh Swami; +Cc: linux-kernel

On Wed, 26 Nov 2003, Yogesh Swami wrote:

> 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.

It reaches this point if there *is* congestion explicitly reported by the
interface.  It will be in CWR a lot of the time if your local interface is
the bottleneck.

  -John


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2003-11-26 18:40 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-11-26 17:53 Linux TCP state machine is broken? Yogesh Swami
2003-11-26 18:39 ` John Heffner

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).