netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Ravinandan Arakali" <ravinandan.arakali@neterion.com>
To: "'David Miller'" <davem@davemloft.net>, <mchan@broadcom.com>
Cc: <herbert@gondor.apana.org.au>, <netdev@vger.kernel.org>,
	<steve.arden@neterion.com>, <Dan.Reader@neterion.com>,
	<leonid.grossman@neterion.com>, <ananda.raju@neterion.com>
Subject: RE: [PATCH]NET: Add ECN support for TSO
Date: Thu, 13 Jul 2006 10:26:40 -0700	[thread overview]
Message-ID: <000801c6a6a1$812c08d0$4710100a@pc.s2io.com> (raw)
In-Reply-To: <20060708.133223.35527292.davem@davemloft.net>

Dave/Michael,
Replicating NS bit(from super segment) across all segments looks fine.

But one of the issues is the random/pseudo-random generation of
ECT code points on each of these segments. The hardware will need to
be capable of generating this, and I guess should be able to verify this
against the NS bit received as part of ACK for that packet.

Following are couple of schemes proposed by our team. Please comment.

Option A)

If we were to permit ourselves to somewhat break the spirit of RFC3540
without breaking the letter, we could come up a fairly easy enhancement
to TSO... I think it would be acceptable to set ECT(0) on all packets
except one (I would suggest the last, but an argument could be made for
the first).  That one would have either ECT(0) or ECT(1) set as per a
field in the TxD (for example).

That would give us a method that works with ECN nonces (ECT(0) doesn't
increment the sum).  Unfortunately, it would give us a relative increase
in the number of packets being sent with ECT(0) (the random generation
should see a 50-50 distribution between ECT (0) and (1); we would be
skewing it toward (0) by whatever the proportion of packets to TSO
operations is).  So, a connection using ECN nonces and TSO would be less
robust than one not using TSO.

But it wouldn't be broken...

########

Option B)

The hardware could randomly generate either ECN codepoint on all packets
of a TSO operation except the last.  It would keep a local NS value for
the operation and, in the last packet, set either ECT(0) or ECT(1) as
necessary to generate a NS value equal to that specified in the
descriptor.

That way we would keep a much more equal distribution.  It comes at the
cost of a random value generator in the hardware but we could get by
with something extremely basic (e.g. lsb of the internal clock at the
point the packet is generated) if "perfect" randomness is not required.

The limitation with this scheme is that the sender can't verify the NS
from any returned ACK that falls inside a TSO operation (it can only be
checked at TSO endpoints and on non-TSO transmissions).

Ravi


-----Original Message-----
From: David Miller [mailto:davem@davemloft.net]
Sent: Saturday, July 08, 2006 1:32 PM
To: mchan@broadcom.com
Cc: ravinandan.arakali@neterion.com; herbert@gondor.apana.org.au;
netdev@vger.kernel.org
Subject: Re: [PATCH]NET: Add ECN support for TSO


From: "Michael Chan" <mchan@broadcom.com>
Date: Fri, 7 Jul 2006 18:01:34 -0700

> However, Large Receive Offload will be a different story.  If
> packets are accumulated in the hardware and presented to the stack
> as one large packet, the stack will not be able to calculate the
> cumulative NS correctly.  Unless the hardware calculates the partial
> NS over the LRO packet and puts it in the SKB when handing over the
> packet.

This is correct, LRO hardware would need to do something to make sure
the nonce parity works out.

  parent reply	other threads:[~2006-07-13 17:27 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-07-08  1:01 [PATCH]NET: Add ECN support for TSO Michael Chan
2006-07-08 20:32 ` David Miller
2006-07-12  1:45   ` Ravinandan Arakali
2006-07-12  1:51     ` David Miller
2006-07-13 17:26   ` Ravinandan Arakali [this message]
  -- strict thread matches above, loose matches on Subject: below --
2006-07-14 16:12 Dan Reader
2006-07-26 19:40 ` Michael Chan
2006-07-13 19:35 Michael Chan
2006-07-14  5:03 ` David Miller
2006-07-12  4:53 Michael Chan
2006-07-12  6:11 ` David Miller
2006-07-12 17:15   ` Ravinandan Arakali
2006-07-07 20:57 Michael Chan
2006-07-07 21:59 ` David Miller
2006-07-07 22:52   ` David Miller
2006-06-28  3:06 Michael Chan
2006-06-28  3:10 ` Herbert Xu
2006-06-28  3:40   ` Michael Chan
2006-06-28  3:48     ` Herbert Xu
2006-06-28  4:37       ` Michael Chan
2006-06-28  4:42         ` Herbert Xu
2006-06-28  4:54           ` Michael Chan
2006-06-28  4:57             ` Herbert Xu
2006-06-29 19:30         ` David Miller
2006-07-07 18:56 ` Ravinandan Arakali

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='000801c6a6a1$812c08d0$4710100a@pc.s2io.com' \
    --to=ravinandan.arakali@neterion.com \
    --cc=Dan.Reader@neterion.com \
    --cc=ananda.raju@neterion.com \
    --cc=davem@davemloft.net \
    --cc=herbert@gondor.apana.org.au \
    --cc=leonid.grossman@neterion.com \
    --cc=mchan@broadcom.com \
    --cc=netdev@vger.kernel.org \
    --cc=steve.arden@neterion.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).