Re: [PATCH v1 1/6] net: Generalize udp based tunnel offload
From: Jesse Gross <jesse@kernel.org>
Date: 2015-12-04 20:45:20
On Fri, Dec 4, 2015 at 12:26 PM, Hannes Frederic Sowa [off-list ref] wrote:
Hi Dave, On Fri, Dec 4, 2015, at 21:06, David Miller wrote:quoted
From: Hannes Frederic Sowa <redacted> Date: Fri, 04 Dec 2015 20:59:05 +0100quoted
Yes, I agree, I am totally with you here. If generic offloading can be realized by NICs I am totally with you that this should be the way to go. I don't see that coming in the next (small number of) years, so I don't see a reason to stop this patchset.If I just apply this and say "yeah ok", the message is completely lost and your prediction about "small number of years" indeed will occur. However if I push back hard on this, as I will, then the message has some chance of seeping back to the people designing these chips. So that's what I'm going to do, like it or not. Or can someone convince me that someone who understand this stuff is telling the hardware guys to universally put 2's complement checksums into the descriptors? Who is doing that at each and every prominent ethernet hardware verndor? Who? If I get silence, or some vague non-specific response, then I'm going to hold my ground and keep pushing back on this stuff.This is not only about 1's checksumming but also about TSO (and to some smaller degree about RSS, as I tried to explain): if we attach a geneve header in front of a skb we expect the hardware to recognize it and duplicate it while doing the hardware segmentation. The hardware can only do so if it is in knowledge of the specific port (in this case UDP port used for geneve) which is in use for this particular tunneling transport protocol. We currently cannot describe this in a generic way, thus this patchset. (Please correct me if I am wrong!)
This isn't really about TSO so much as receive side offloads. However, the general point still stands. Checksum is only one component and really the only one that has this type of generalizable mathematical property. n-tuple offloads, LRO, etc. are things that are currently supported by the stack and need this type of support. And encryption, which people are already pushing for, has the same issue. The fact is that there is no real plan to be able to support these types of things in a way other than what is being done in this patchset. I do believe that there is genuine interest in working to find solutions to these types of problems as John and et. al. have already been doing. However, a real, fully general solution is not something that exists as this point in time, as you can see from all of the discussion in this thread.