From a75ad876401a700127ebf234fc422e76fcd57b4c Mon Sep 17 00:00:00 2001 From: Steven Luong Date: Tue, 6 Aug 2019 21:51:34 -0700 Subject: devices: skip checksum calculation if guest supports checksum offload Set VNET_HW_INTERFACE_FLAG_SUPPORTS_TX_L4_CKSUM_OFFLOAD for the interface to skip checksum calculation if guest supports checksum offload. Type: fix Signed-off-by: Steven Luong Change-Id: Ie933c3462394f07580ef7f2bec1d2eb3b075bd0c --- src/vnet/devices/virtio/vhost_user.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'src/vnet/devices/virtio/vhost_user.c') diff --git a/src/vnet/devices/virtio/vhost_user.c b/src/vnet/devices/virtio/vhost_user.c index 788b348cc0b..c06f78ce1bb 100644 --- a/src/vnet/devices/virtio/vhost_user.c +++ b/src/vnet/devices/virtio/vhost_user.c @@ -498,10 +498,14 @@ vhost_user_socket_read (clib_file_t * uf) ASSERT (vui->virtio_net_hdr_sz < VLIB_BUFFER_PRE_DATA_SIZE); vnet_hw_interface_t *hw = vnet_get_hw_interface (vnm, vui->hw_if_index); if (vui->enable_gso && - (vui->features & (1ULL << FEAT_VIRTIO_NET_F_GUEST_CSUM))) - hw->flags |= VNET_HW_INTERFACE_FLAG_SUPPORTS_GSO; + ((vui->features & FEATURE_VIRTIO_NET_F_HOST_GUEST_TSO_FEATURE_BITS) + == FEATURE_VIRTIO_NET_F_HOST_GUEST_TSO_FEATURE_BITS)) + hw->flags |= + (VNET_HW_INTERFACE_FLAG_SUPPORTS_GSO | + VNET_HW_INTERFACE_FLAG_SUPPORTS_TX_L4_CKSUM_OFFLOAD); else - hw->flags &= ~VNET_HW_INTERFACE_FLAG_SUPPORTS_GSO; + hw->flags &= ~(VNET_HW_INTERFACE_FLAG_SUPPORTS_GSO | + VNET_HW_INTERFACE_FLAG_SUPPORTS_TX_L4_CKSUM_OFFLOAD); vnet_hw_interface_set_flags (vnm, vui->hw_if_index, 0); vui->is_ready = 0; vhost_user_update_iface_state (vui); -- cgit 1.2.3-korg