From 654790b65b8435a7d409b1873b566e8db9e91b9b Mon Sep 17 00:00:00 2001 From: Jason Wang Date: Wed, 20 Oct 2021 12:55:54 +0800 Subject: [PATCH] vhost-vdpa: let net_vhost_vdpa_init() returns NetClientState * This patch switches to let net_vhost_vdpa_init() to return NetClientState *. This is used for the callers to allocate multiqueue NetClientState for multiqueue support. Signed-off-by: Jason Wang Message-Id: <20211020045600.16082-5-jasowang@redhat.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- net/vhost-vdpa.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/net/vhost-vdpa.c b/net/vhost-vdpa.c index fd4ff5a0fb..151f60184d 100644 --- a/net/vhost-vdpa.c +++ b/net/vhost-vdpa.c @@ -169,8 +169,10 @@ static NetClientInfo net_vhost_vdpa_info = { .check_peer_type = vhost_vdpa_check_peer_type, }; -static int net_vhost_vdpa_init(NetClientState *peer, const char *device, - const char *name, int vdpa_device_fd) +static NetClientState *net_vhost_vdpa_init(NetClientState *peer, + const char *device, + const char *name, + int vdpa_device_fd) { NetClientState *nc = NULL; VhostVDPAState *s; @@ -184,15 +186,17 @@ static int net_vhost_vdpa_init(NetClientState *peer, const char *device, ret = vhost_vdpa_add(nc, (void *)&s->vhost_vdpa); if (ret) { qemu_del_net_client(nc); + return NULL; } - return ret; + return nc; } int net_init_vhost_vdpa(const Netdev *netdev, const char *name, NetClientState *peer, Error **errp) { const NetdevVhostVDPAOptions *opts; - int vdpa_device_fd, ret; + int vdpa_device_fd; + NetClientState *nc; assert(netdev->type == NET_CLIENT_DRIVER_VHOST_VDPA); opts = &netdev->u.vhost_vdpa; @@ -202,10 +206,11 @@ int net_init_vhost_vdpa(const Netdev *netdev, const char *name, return -errno; } - ret = net_vhost_vdpa_init(peer, TYPE_VHOST_VDPA, name, vdpa_device_fd); - if (ret) { + nc = net_vhost_vdpa_init(peer, TYPE_VHOST_VDPA, name, vdpa_device_fd); + if (!nc) { qemu_close(vdpa_device_fd); + return -1; } - return ret; + return 0; }