mirror of https://github.com/xemu-project/xemu.git
vdpa: Add vhost_vdpa_net_load_mq
Same way as with the MAC, restore the expected number of queues at device's start. Signed-off-by: Eugenio Pérez <eperezma@redhat.com> Signed-off-by: Jason Wang <jasowang@redhat.com>
This commit is contained in:
parent
f73c0c43ac
commit
f64c7cda69
|
@ -400,6 +400,28 @@ static int vhost_vdpa_net_load_mac(VhostVDPAState *s, const VirtIONet *n)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int vhost_vdpa_net_load_mq(VhostVDPAState *s,
|
||||||
|
const VirtIONet *n)
|
||||||
|
{
|
||||||
|
struct virtio_net_ctrl_mq mq;
|
||||||
|
uint64_t features = n->parent_obj.guest_features;
|
||||||
|
ssize_t dev_written;
|
||||||
|
|
||||||
|
if (!(features & BIT_ULL(VIRTIO_NET_F_MQ))) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
mq.virtqueue_pairs = cpu_to_le16(n->curr_queue_pairs);
|
||||||
|
dev_written = vhost_vdpa_net_load_cmd(s, VIRTIO_NET_CTRL_MQ,
|
||||||
|
VIRTIO_NET_CTRL_MQ_VQ_PAIRS_SET, &mq,
|
||||||
|
sizeof(mq));
|
||||||
|
if (unlikely(dev_written < 0)) {
|
||||||
|
return dev_written;
|
||||||
|
}
|
||||||
|
|
||||||
|
return *s->status != VIRTIO_NET_OK;
|
||||||
|
}
|
||||||
|
|
||||||
static int vhost_vdpa_net_load(NetClientState *nc)
|
static int vhost_vdpa_net_load(NetClientState *nc)
|
||||||
{
|
{
|
||||||
VhostVDPAState *s = DO_UPCAST(VhostVDPAState, nc, nc);
|
VhostVDPAState *s = DO_UPCAST(VhostVDPAState, nc, nc);
|
||||||
|
@ -418,6 +440,10 @@ static int vhost_vdpa_net_load(NetClientState *nc)
|
||||||
if (unlikely(r < 0)) {
|
if (unlikely(r < 0)) {
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
r = vhost_vdpa_net_load_mq(s, n);
|
||||||
|
if (unlikely(r)) {
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue