mirror of https://gitee.com/openkylin/qemu.git
vhost_net should call the poll callback only when it is set
The poll callback needs to be called when bringing up or down the vhost_net instance. As it is not mandatory for an NetClient to implement it, invoke it only when it is set. Signed-off-by: Antonios Motakis <a.motakis@virtualopensystems.com> Signed-off-by: Nikolay Nikolaev <n.nikolaev@virtualopensystems.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
2e6d46d77e
commit
212d69f25e
|
@ -168,7 +168,10 @@ static int vhost_net_start_one(struct vhost_net *net,
|
|||
goto fail_start;
|
||||
}
|
||||
|
||||
net->nc->info->poll(net->nc, false);
|
||||
if (net->nc->info->poll) {
|
||||
net->nc->info->poll(net->nc, false);
|
||||
}
|
||||
|
||||
qemu_set_fd_handler(net->backend, NULL, NULL, NULL);
|
||||
file.fd = net->backend;
|
||||
for (file.index = 0; file.index < net->dev.nvqs; ++file.index) {
|
||||
|
@ -185,7 +188,9 @@ fail:
|
|||
int r = ioctl(net->dev.control, VHOST_NET_SET_BACKEND, &file);
|
||||
assert(r >= 0);
|
||||
}
|
||||
net->nc->info->poll(net->nc, true);
|
||||
if (net->nc->info->poll) {
|
||||
net->nc->info->poll(net->nc, true);
|
||||
}
|
||||
vhost_dev_stop(&net->dev, dev);
|
||||
fail_start:
|
||||
vhost_dev_disable_notifiers(&net->dev, dev);
|
||||
|
@ -206,7 +211,9 @@ static void vhost_net_stop_one(struct vhost_net *net,
|
|||
int r = ioctl(net->dev.control, VHOST_NET_SET_BACKEND, &file);
|
||||
assert(r >= 0);
|
||||
}
|
||||
net->nc->info->poll(net->nc, true);
|
||||
if (net->nc->info->poll) {
|
||||
net->nc->info->poll(net->nc, true);
|
||||
}
|
||||
vhost_dev_stop(&net->dev, dev);
|
||||
vhost_dev_disable_notifiers(&net->dev, dev);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue