tap: enable IPv4 checksum offload on interface 86/42186/6
authorMohsin Kazmi <[email protected]>
Wed, 29 Jan 2025 11:26:25 +0000 (11:26 +0000)
committerBenoit Ganne <[email protected]>
Tue, 27 May 2025 10:48:44 +0000 (10:48 +0000)
Type: improvement

Signed-off-by: Mohsin Kazmi <[email protected]>
Change-Id: I6e671afd3e7d09ea2158659c1c70726e7791fc28

src/vnet/devices/tap/tap.c
src/vnet/devices/virtio/pci.c

index a987400..8f39204 100644 (file)
@@ -678,15 +678,16 @@ tap_create_if (vlib_main_t * vm, tap_create_if_args_t * args)
   args->rv = 0;
   hw = vnet_get_hw_interface (vnm, vif->hw_if_index);
   cc.mask = VNET_HW_IF_CAP_INT_MODE | VNET_HW_IF_CAP_TCP_GSO |
-           VNET_HW_IF_CAP_TX_TCP_CKSUM | VNET_HW_IF_CAP_TX_UDP_CKSUM |
-           VNET_HW_IF_CAP_TX_FIXED_OFFSET;
+           VNET_HW_IF_CAP_TX_IP4_CKSUM | VNET_HW_IF_CAP_TX_TCP_CKSUM |
+           VNET_HW_IF_CAP_TX_UDP_CKSUM | VNET_HW_IF_CAP_TX_FIXED_OFFSET;
   cc.val = VNET_HW_IF_CAP_INT_MODE | VNET_HW_IF_CAP_TX_FIXED_OFFSET;
 
   if (args->tap_flags & TAP_FLAG_GSO)
-    cc.val |= VNET_HW_IF_CAP_TCP_GSO | VNET_HW_IF_CAP_TX_TCP_CKSUM |
-             VNET_HW_IF_CAP_TX_UDP_CKSUM;
+    cc.val |= VNET_HW_IF_CAP_TCP_GSO | VNET_HW_IF_CAP_TX_IP4_CKSUM |
+             VNET_HW_IF_CAP_TX_TCP_CKSUM | VNET_HW_IF_CAP_TX_UDP_CKSUM;
   else if (args->tap_flags & TAP_FLAG_CSUM_OFFLOAD)
-    cc.val |= VNET_HW_IF_CAP_TX_TCP_CKSUM | VNET_HW_IF_CAP_TX_UDP_CKSUM;
+    cc.val |= VNET_HW_IF_CAP_TX_IP4_CKSUM | VNET_HW_IF_CAP_TX_TCP_CKSUM |
+             VNET_HW_IF_CAP_TX_UDP_CKSUM;
 
   if ((args->tap_flags & TAP_FLAG_GSO)
       && (args->tap_flags & TAP_FLAG_GRO_COALESCE))
@@ -800,10 +801,10 @@ tap_csum_offload_enable_disable (vlib_main_t * vm, u32 sw_if_index,
   vif->gso_enabled = 0;
   vif->packet_coalesce = 0;
 
-  cc.mask = VNET_HW_IF_CAP_TCP_GSO | VNET_HW_IF_CAP_L4_TX_CKSUM;
+  cc.mask = VNET_HW_IF_CAP_TCP_GSO | VNET_HW_IF_CAP_TX_CKSUM;
   if (enable_disable)
     {
-      cc.val = VNET_HW_IF_CAP_L4_TX_CKSUM;
+      cc.val = VNET_HW_IF_CAP_TX_CKSUM;
       vif->csum_offload_enabled = 1;
     }
   else
@@ -848,7 +849,7 @@ tap_gso_enable_disable (vlib_main_t * vm, u32 sw_if_index, int enable_disable,
   vec_foreach_index (i, vif->tap_fds)
     _IOCTL (vif->tap_fds[i], TUNSETOFFLOAD, offload);
 
-  cc.mask = VNET_HW_IF_CAP_TCP_GSO | VNET_HW_IF_CAP_L4_TX_CKSUM;
+  cc.mask = VNET_HW_IF_CAP_TCP_GSO | VNET_HW_IF_CAP_TX_CKSUM;
 
   if (enable_disable)
     {
index 3a56732..c85e316 100644 (file)
@@ -565,7 +565,7 @@ virtio_pci_offloads (vlib_main_t * vm, virtio_if_t * vif, int gso_enabled,
              vif->csum_offload_enabled = 0;
              vif->gso_enabled = 0;
              cc.val = 0;
-             cc.mask = VNET_HW_IF_CAP_L4_TX_CKSUM | VNET_HW_IF_CAP_TCP_GSO |
+             cc.mask = VNET_HW_IF_CAP_TX_CKSUM | VNET_HW_IF_CAP_TCP_GSO |
                        VNET_HW_IF_CAP_TX_FIXED_OFFSET;
            }
        }