On Wed, Aug 24, 2016 at 5:33 AM, Yuval Mintz <[email protected]> wrote: >> This patch assumes that the bnx2x hardware will ignore existing IPv4/v6 >> header >> fields for length and checksum as well as the length and checksum fields for >> outer UDP and GRE headers. >> >> I have no means of testing this as I do not have any bnx2x hardware but >> thought >> I would submit it as an RFC to see if anyone out there wants to test this >> and see >> if this does in fact enable this functionality allowing us to to segment >> tunneled >> frames that have an outer checksum. >> >> Signed-off-by: Alexander Duyck <[email protected]> > > So it took me some [well, a lot] time to reach this, but I've finally gave > it a try. > I saw a performance boost with the partial support - > Throughput for vxlan tunnels with and without udpcsum were almost identical > after this, whereas without this patch the udpcsum prevented GSO and > a TCP/IPv4 connection on top of it got roughly half the throughput. > > However, I did encounter one oddity I couldn't explain - > After I've disabled tx-udp_tnl-segmentation via ethtool on the base interface, > got left with: > tx-gso-partial: on > tx-udp_tnl-segmentation: off > tx-udp_tnl-csum-segmentation: on > > When I ran traffic over both vxlan tunnels the one with the udpcsum was still > Passing gso aggregations to base device to transmit [and the throughput was > same as before], where's the tunnel without the udpcsum showed only > MTU-sized packets reaching the base interface for transmission [which is what > I've expected] > > Any idea why that happened?
So the way they are implemented tx-udp_tnl-segmentation and tx-udp_tnl-csum-segmentation are treated as two separate features. The kernel currently gives them the same treatment as NETIF_F_TSO and NETIF_F_TSO6. You can disable one and the other still functions. Now if you disable tx-gso-partial you should expect to see tx-udp_tnl-csum-segmentation be disabled because it is dependent on the partial GSO offload. - Alex
