[ovs-dev] [PATCH 1/3] netdev-dpdk: vhost: disable unsupported offload features.
Flavio Leitner
fbl at sysclose.org
Fri Feb 14 13:03:34 UTC 2020
Disable ECN and UFO since this is not supported yet. Also, disable
all other features when userspace_tso is not enabled.
Fixes: 29cf9c1b3b9c ("userspace: Add TCP Segmentation Offload support")
Signed-off-by: Flavio Leitner <fbl at sysclose.org>
---
lib/netdev-dpdk.c | 24 +++++++++++++++---------
1 file changed, 15 insertions(+), 9 deletions(-)
diff --git a/lib/netdev-dpdk.c b/lib/netdev-dpdk.c
index 6187129c0..192c174f3 100644
--- a/lib/netdev-dpdk.c
+++ b/lib/netdev-dpdk.c
@@ -5186,6 +5186,7 @@ netdev_dpdk_vhost_client_reconfigure(struct netdev *netdev)
struct netdev_dpdk *dev = netdev_dpdk_cast(netdev);
int err;
uint64_t vhost_flags = 0;
+ uint64_t vhost_unsup_flags;
bool zc_enabled;
ovs_mutex_lock(&dev->mutex);
@@ -5252,16 +5253,21 @@ netdev_dpdk_vhost_client_reconfigure(struct netdev *netdev)
netdev->ol_flags |= NETDEV_TX_OFFLOAD_TCP_TSO;
netdev->ol_flags |= NETDEV_TX_OFFLOAD_TCP_CKSUM;
netdev->ol_flags |= NETDEV_TX_OFFLOAD_IPV4_CKSUM;
+ vhost_unsup_flags = 1ULL << VIRTIO_NET_F_HOST_ECN
+ | 1ULL << VIRTIO_NET_F_HOST_UFO;
} else {
- err = rte_vhost_driver_disable_features(dev->vhost_id,
- 1ULL << VIRTIO_NET_F_HOST_TSO4
- | 1ULL << VIRTIO_NET_F_HOST_TSO6
- | 1ULL << VIRTIO_NET_F_CSUM);
- if (err) {
- VLOG_ERR("rte_vhost_driver_disable_features failed for "
- "vhost user client port: %s\n", dev->up.name);
- goto unlock;
- }
+ /* This disables checksum offloading and all the features
+ * that depends on it (TSO, UFO, ECN) according to virtio
+ * specification. */
+ vhost_unsup_flags = 1ULL << VIRTIO_NET_F_CSUM;
+ }
+
+ err = rte_vhost_driver_disable_features(dev->vhost_id,
+ vhost_unsup_flags);
+ if (err) {
+ VLOG_ERR("rte_vhost_driver_disable_features failed for "
+ "vhost user client port: %s\n", dev->up.name);
+ goto unlock;
}
err = rte_vhost_driver_start(dev->vhost_id);
--
2.24.1
More information about the dev
mailing list