The function vhost_kernel_tap_set_offload() could return errors,
the return value need to be checked. And there is no need to fail
when error is -ENOTSUP.

Fixes: 1db4d2330bc8 ("net/virtio-user: check negotiated features before set")
Cc: sta...@dpdk.org

Signed-off-by: Yunjian Wang <wangyunj...@huawei.com>
---
v2:
 * No need to fail when error is -ENOTSUP.
---
 drivers/net/virtio/virtio_user/vhost_kernel_tap.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/net/virtio/virtio_user/vhost_kernel_tap.c 
b/drivers/net/virtio/virtio_user/vhost_kernel_tap.c
index 76bf75423..2a0c2106d 100644
--- a/drivers/net/virtio/virtio_user/vhost_kernel_tap.c
+++ b/drivers/net/virtio/virtio_user/vhost_kernel_tap.c
@@ -66,6 +66,7 @@ vhost_kernel_open_tap(char **p_ifname, int hdr_size, int 
req_mq,
        int sndbuf = INT_MAX;
        struct ifreq ifr;
        int tapfd;
+       int ret;
 
        /* TODO:
         * 1. verify we can get/set vnet_hdr_len, tap_probe_vnet_hdr_len
@@ -131,7 +132,9 @@ vhost_kernel_open_tap(char **p_ifname, int hdr_size, int 
req_mq,
                goto error;
        }
 
-       vhost_kernel_tap_set_offload(tapfd, features);
+       ret = vhost_kernel_tap_set_offload(tapfd, features);
+       if (ret < 0 && ret != ENOTSUP)
+               goto error;
 
        memset(&ifr, 0, sizeof(ifr));
        ifr.ifr_hwaddr.sa_family = ARPHRD_ETHER;
-- 
2.19.1


Reply via email to