> If you have a flow cache, keyed on saddr/daddr/sport/dport then you
> can keep a growing LRO limit.  For example, when a flow cache entry is
> created, use a LRO limit of 2 frames.  Each time the LRO limit is
> reached, increase the LRO limit by one (until you hit the largest
> LRO supported, which for ipv4 would be 64K minus header space).

The flow cache would also be very useful to allow the NIC to 
send a MSI-X only to the CPU the user process did last recvmsg on.
This way the receiving could be all CPU local and packets
would need to be passed between CPUs. The process will likely
stay on the same CPU due to CPU affinity, so this should
work on average.

This would need some state in the NIC, but it is much easier
than full TOE because it doesn't have to be exact and is 
just a hint. If NIC and stack get desynchronized in some corner
cases all that happens is that receiving goes slightly slower,
but no data corruption can happen.

I think that could be done with a single callback to the netdevice from
when TCP frees the skb.

-Andi

-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to