From: Mohsin Kazmi Date: Wed, 29 Jan 2025 11:26:25 +0000 (+0000) Subject: tap: enable IPv4 checksum offload on interface X-Git-Url: https://gerrit.fd.io/r/gitweb?a=commitdiff_plain;h=refs%2Fchanges%2F86%2F42186%2F6;p=vpp.git tap: enable IPv4 checksum offload on interface Type: improvement Signed-off-by: Mohsin Kazmi Change-Id: I6e671afd3e7d09ea2158659c1c70726e7791fc28 --- diff --git a/src/vnet/devices/tap/tap.c b/src/vnet/devices/tap/tap.c index a987400dc65..8f39204a1ae 100644 --- a/src/vnet/devices/tap/tap.c +++ b/src/vnet/devices/tap/tap.c @@ -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) { diff --git a/src/vnet/devices/virtio/pci.c b/src/vnet/devices/virtio/pci.c index 3a56732c3e9..c85e316b1f5 100644 --- a/src/vnet/devices/virtio/pci.c +++ b/src/vnet/devices/virtio/pci.c @@ -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; } }