On Thu, 2016-12-08 at 09:49 -0800, Tom Herbert wrote: > Of course that would only help on systems where no one enable encaps, > ie. looks good in the the simple benchmarks but in real life if just > one socket enables encap everyone else takes the hit.
Well, in real life most linux hosts do not use any UDP encapsulation. Or if they do, maybe they still have to handle a lot of UDP traffic which does not hit a tunnel in the kernel. Anyway, my difference vs GRO on/off were caused by copybreak in mlx4 driver. GRO off --> mlx4 uses copybreak for small messages (all protocols) GRO on --> no copybreak for native protocols (IP+TCP IP+UDP) The lookup being done twice is not that expensive, if the first two cache lines of the socket stay shared (mostly read)