• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: TSO / LSO
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: TSO / LSO


  • Subject: Re: TSO / LSO
  • From: Adi Masputra <email@hidden>
  • Date: Wed, 3 Jan 2007 10:28:44 -0800


On Jan 3, 2007, at 6:44 AM, Andrew Gallatin wrote:

There are 3 problems with the above:

1) The NIC does not advertise any sort of MTU.  The stack just sends
down the biggest frame it can (ip_len is 16 bits, so the max is 64K-1
for IPv4..).  The NIC is responsible for splitting this into as many
packets as required.

2) The NIC is implicitly informed of the path MTU by the TCP stack
tagging the frame with the TCP MSS (m->m_pkthdr.tso_segsize in FreeBSD
terms).  The packets a NIC generates are limited to the MSS + the size
of the template TCP/IP + link-layer headers.

I'm not disagreeing with these points, and I personally know the benefits
of TCP LSO having involved with it in the past. But I think Terry brought
some valid points, especially those related to driver capability and the
possibility of an interface filter interposed between IP and the driver.


IIRC, in the TCP LSO case the hardware would generate the IP+TCP headers
based on the template; e.g. the IP ID field and friends get generated
by an entity other than the network stack.  This may become an issue
with some interface filters, especially those which splice or re-injects
the packets especially when it's not LSO-aware and expects the TCP
segment to be no larger than the SMSS.

So issues like this needs to be taken into account too; things are much
easier for statically configured filters (as in STREAMS's autopush
scheme) but it gets complicated when filters can be loaded/unloaded
at will.  (I'm not saying this can't be solved; in fact, it is solvable
but not that straight-forward.)

Adi


3) There is no need to buffer up an entire window on the NIC. All you really need to buffer on the NIC is one frame's worth of data (so that you can properly send the frame on the wire).

Drew

 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Darwin-kernel mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden

Attachment: smime.p7s
Description: S/MIME cryptographic signature

 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Darwin-kernel mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:

This email sent to email@hidden

  • Follow-Ups:
    • Re: TSO / LSO
      • From: Terry Lambert <email@hidden>
References: 
 >Re: mbuf_outbound_finalize bug? (From: Terry Lambert <email@hidden>)
 >Re: mbuf_outbound_finalize bug? (From: Josh Graessley <email@hidden>)
 >Re: mbuf_outbound_finalize bug? (From: Andrew Gallatin <email@hidden>)
 >Re: mbuf_outbound_finalize bug? (From: Josh Graessley <email@hidden>)
 >TSO / LSO (From: Andrew Gallatin <email@hidden>)
 >Re: TSO / LSO (From: Terry Lambert <email@hidden>)
 >Re: TSO / LSO (From: Andrew Gallatin <email@hidden>)

  • Prev by Date: Re: TSO / LSO
  • Next by Date: Re: TSO / LSO
  • Previous by thread: Re: TSO / LSO
  • Next by thread: Re: TSO / LSO
  • Index(es):
    • Date
    • Thread