On Thu, Sep 9, 2021 at 11:46 PM Zhang, Chen <chen.zh...@intel.com> wrote: > > > > > -----Original Message----- > > From: Qemu-devel <qemu-devel- > > bounces+chen.zhang=intel....@nongnu.org> On Behalf Of Jason Wang > > Sent: Tuesday, September 7, 2021 5:03 PM > > To: m...@redhat.com; jasow...@redhat.com; qemu-devel@nongnu.org > > Cc: epere...@redhat.com; e...@nvidia.com; gda...@xilinx.com; Zhu, > > Lingshan <lingshan....@intel.com>; l...@redhat.com > > Subject: [PATCH V3 05/10] 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 <jasow...@redhat.com> > > --- > > include/net/net.h | 5 +++++ > > net/net.c | 24 +++++++++++++++++++++--- > > 2 files changed, 26 insertions(+), 3 deletions(-) > > > > diff --git a/include/net/net.h b/include/net/net.h index > > 5d1508081f..4f400b8a09 100644 > > --- a/include/net/net.h > > +++ b/include/net/net.h > > @@ -103,6 +103,7 @@ struct NetClientState { > > int vnet_hdr_len; > > bool is_netdev; > > bool do_not_pad; /* do not pad to the minimum ethernet frame length */ > > + bool is_datapath; > > QTAILQ_HEAD(, NetFilterState) filters; }; > > > > @@ -134,6 +135,10 @@ NetClientState > > *qemu_new_net_client(NetClientInfo *info, > > NetClientState *peer, > > const char *model, > > const char *name); > > +NetClientState *qemu_new_net_control_client(NetClientInfo *info, > > + NetClientState *peer, > > + const char *model, > > + const char *name); > > NICState *qemu_new_nic(NetClientInfo *info, > > NICConf *conf, > > const char *model, diff --git a/net/net.c > > b/net/net.c index > > 52c99196c6..f0d14dbfc1 100644 > > --- a/net/net.c > > +++ b/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); > > > > Except for the "is_datapath", it looks the same as "qemu_new_net_client ". > Why not extend the original "qemu_new_net_client " with a "bool control" > field?
Either is fine. I think it's a trick to reduce the changeset, otherwise we need to modify all the 13 callers. Thanks > > Thanks > Chen > > > 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; > > } > > > > -- > > 2.25.1 > > >