Re: driver packet coalesce



Bruce -

All LRO implementations are currently on the host.

On 5/31/07, Bruce M. Simpson <bms@xxxxxxxxxxx> wrote:
Jack Vogel wrote:
> On 5/31/07, Wilkinson, Alex <alex.wilkinson@xxxxxxxxxxxxxxxxxxx> wrote:
>> 0n Wed, May 30, 2007 at 04:45:05PM -0700, Jack Vogel wrote:
>>
>> > Does any driver do this now? And if a driver were to coalesce
>> > packets and send something up the stack that violates mss
>> > will it barf?
>>
>> erm, what is meant by "coalesce" ?
>>
> combining packets before sending to the stack, aka LRO.

Yup - the firmware for the card's LRO engine would have to know not to
coalesce packets not destined for the local host. I speculate many cards
are not smart enough to do this, and LRO is an all-or-nothing
proposition, as it's a technology designed to optimize for hosts, not
routers; see recent discussions/slanging matches on end2end.

At the moment there is no central place where we track all layer 2
addresses for which traffic should be delivered locally. This would
logically belong in struct ifnet, and clients e.g. CARP would have to be
taught to add their layer 2 endpoint addresses there.

It seems acceptable to disable LRO if bridging is on and document this
behaviour.

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

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



Relevant Pages

  • Re: [RFC 0/3] lro: Generic Large Receive Offload for TCP traffic
    ... I'm the primary author of the Myricom Myri10GE driver, and its LRO mechanism ... accumulate the pages to the frags array. ... we have 16 1/2 4KB pages and a single skb holding them. ...
    (Linux-Kernel)
  • Re: [RFC 0/1] lro: Generic Large Receive Offload for TCP traffic
    ... I've ported myri10ge to use the new LRO interface. ... performance is on-par with my own LRO used by our out-of-tree driver. ... field in the lro_mgr struct to specify napi / non-napi. ... int len, int true_size, ...
    (Linux-Kernel)
  • Re: driver packet coalesce
    ... I guess it would only be able to coalesce TCP packets that are adjacent in the same session. ... are a number of obvious and non-obvious interaction issues with LRO ... The LRO implementation (in the driver) has to be aware of all these ... issues and how the TCP stack treats them. ...
    (freebsd-net)
  • Re: [PATCH 0/4][RFC] lro: Generic Large Receive Offload for TCP traffic
    ... LRO is analogous to a receive side version of TSO. ... driver) merges several consecutive segments from the same connection, ... frames, ... CPU usage? ...
    (Linux-Kernel)
  • [RFC 0/3] lro: Generic Large Receive Offload for TCP traffic
    ... After some discussions on the mailing list concerning our LRO approach, ... A driver has to declare a "LRO Management" struct and a LRO descriptor array ... To pass packets to the network stack using LRO the following functions are used ...
    (Linux-Kernel)