On Tue, May 24, 2016 at 7:59 AM, Alexander Duyck <alexander.du...@gmail.com> wrote: > On Mon, May 23, 2016 at 3:48 PM, Tom Herbert <t...@herbertland.com> wrote: >> Add SKB_GSO_TOU. In udp[64]_ufo_fragment check for SKB_GSO_TOU. If this >> is set call skb_udp_tou_segment. skb_udp_tou_segment is very similar >> to skb_udp_tunnel_segment except that we only need to deal with the >> L4 headers. >> >> Signed-off-by: Tom Herbert <t...@herbertland.com> >> --- >> include/linux/skbuff.h | 2 + >> include/net/udp.h | 2 + >> net/ipv4/fou.c | 2 + >> net/ipv4/ip_output.c | 2 + >> net/ipv4/udp_offload.c | 164 >> +++++++++++++++++++++++++++++++++++++-- >> net/ipv6/inet6_connection_sock.c | 3 + >> net/ipv6/udp_offload.c | 128 +++++++++++++++--------------- >> 7 files changed, 236 insertions(+), 67 deletions(-) >> >> diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h >> index 65968a9..b57e484 100644 >> --- a/include/linux/skbuff.h >> +++ b/include/linux/skbuff.h >> @@ -482,6 +482,8 @@ enum { >> SKB_GSO_PARTIAL = 1 << 13, >> >> SKB_GSO_TUNNEL_REMCSUM = 1 << 14, >> + >> + SKB_GSO_TOU = 1 << 15, >> }; >> > > So where do you add the netdev feature bit? From what I can tell that > was overlooked and as a result devices that support FCoE CRC will end > up corrupting TOU frames because netif_gso_ok currently ands the two > together. > An obvious omission, thanks for pointing it out.
> Also I am pretty sure we can offload this on the Intel NICs using the > GSO partial approach as we can just stuff the UDP header into the > space that we would use for IPv4 options or IPv6 extension headers and > it shouldn't complain. > That would be cool! > - Alex