mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-02 15:23:53 -06:00
net: introduce control client
This patch introduces a boolean for the device has control queue which can accepts control command via network queue. The first user would be the control virtqueue support for vhost. Signed-off-by: Jason Wang <jasowang@redhat.com> Message-Id: <20211020045600.16082-6-jasowang@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
654790b65b
commit
2f849dbdb2
2 changed files with 26 additions and 3 deletions
24
net/net.c
24
net/net.c
|
@ -239,7 +239,8 @@ static void qemu_net_client_setup(NetClientState *nc,
|
|||
NetClientState *peer,
|
||||
const char *model,
|
||||
const char *name,
|
||||
NetClientDestructor *destructor)
|
||||
NetClientDestructor *destructor,
|
||||
bool is_datapath)
|
||||
{
|
||||
nc->info = info;
|
||||
nc->model = g_strdup(model);
|
||||
|
@ -258,6 +259,7 @@ static void qemu_net_client_setup(NetClientState *nc,
|
|||
|
||||
nc->incoming_queue = qemu_new_net_queue(qemu_deliver_packet_iov, nc);
|
||||
nc->destructor = destructor;
|
||||
nc->is_datapath = is_datapath;
|
||||
QTAILQ_INIT(&nc->filters);
|
||||
}
|
||||
|
||||
|
@ -272,7 +274,23 @@ NetClientState *qemu_new_net_client(NetClientInfo *info,
|
|||
|
||||
nc = g_malloc0(info->size);
|
||||
qemu_net_client_setup(nc, info, peer, model, name,
|
||||
qemu_net_client_destructor);
|
||||
qemu_net_client_destructor, true);
|
||||
|
||||
return nc;
|
||||
}
|
||||
|
||||
NetClientState *qemu_new_net_control_client(NetClientInfo *info,
|
||||
NetClientState *peer,
|
||||
const char *model,
|
||||
const char *name)
|
||||
{
|
||||
NetClientState *nc;
|
||||
|
||||
assert(info->size >= sizeof(NetClientState));
|
||||
|
||||
nc = g_malloc0(info->size);
|
||||
qemu_net_client_setup(nc, info, peer, model, name,
|
||||
qemu_net_client_destructor, false);
|
||||
|
||||
return nc;
|
||||
}
|
||||
|
@ -297,7 +315,7 @@ NICState *qemu_new_nic(NetClientInfo *info,
|
|||
|
||||
for (i = 0; i < queues; i++) {
|
||||
qemu_net_client_setup(&nic->ncs[i], info, peers[i], model, name,
|
||||
NULL);
|
||||
NULL, true);
|
||||
nic->ncs[i].queue_index = i;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue