nfp: support VxLAN inner TSO with GSO_PARTIAL offload
authorFei Qin <fei.qin@corigine.com>
Sat, 30 Apr 2022 23:11:50 +0000 (08:11 +0900)
committerPaolo Abeni <pabeni@redhat.com>
Mon, 2 May 2022 10:42:03 +0000 (12:42 +0200)
VxLAN belongs to UDP-based encapsulation protocol. Inner TSO for VxLAN
packet with udpcsum requires offloading of outer header csum.

The device doesn't support outer header csum offload. However, inner TSO
for VxLAN with udpcsum can still work with GSO_PARTIAL offload, which
means outer udp csum computed by stack and inner tcp segmentation finished
by hardware. Thus, the patch enable features "NETIF_F_GSO_UDP_TUNNEL_CSUM"
and "NETIF_F_GSO_PARTIAL" and set gso_partial_features.

Signed-off-by: Fei Qin <fei.qin@corigine.com>
Signed-off-by: Yinjun Zhang <yinjun.zhang@corigine.com>
Signed-off-by: Louis Peens <louis.peens@corigine.com>
Signed-off-by: Simon Horman <simon.horman@corigine.com>
Link: https://lore.kernel.org/r/20220430231150.175270-1-simon.horman@corigine.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
drivers/net/ethernet/netronome/nfp/nfp_net_common.c

index b412670d89b242ffda4207d45bc28da2a12dd7ab..5528d12d1f483f6f868897cfa7b4f8b80b05e4e3 100644 (file)
@@ -2259,8 +2259,12 @@ static void nfp_net_netdev_init(struct nfp_net *nn)
        if (nn->cap & NFP_NET_CFG_CTRL_RSS_ANY)
                netdev->hw_features |= NETIF_F_RXHASH;
        if (nn->cap & NFP_NET_CFG_CTRL_VXLAN) {
-               if (nn->cap & NFP_NET_CFG_CTRL_LSO)
-                       netdev->hw_features |= NETIF_F_GSO_UDP_TUNNEL;
+               if (nn->cap & NFP_NET_CFG_CTRL_LSO) {
+                       netdev->hw_features |= NETIF_F_GSO_UDP_TUNNEL |
+                                              NETIF_F_GSO_UDP_TUNNEL_CSUM |
+                                              NETIF_F_GSO_PARTIAL;
+                       netdev->gso_partial_features = NETIF_F_GSO_UDP_TUNNEL_CSUM;
+               }
                netdev->udp_tunnel_nic_info = &nfp_udp_tunnels;
                nn->dp.ctrl |= NFP_NET_CFG_CTRL_VXLAN;
        }