diff options
author | Eugenio Pérez <eperezma@redhat.com> | 2022-08-23 20:30:30 +0200 |
---|---|---|
committer | Jason Wang <jasowang@redhat.com> | 2022-09-02 10:22:39 +0800 |
commit | eb92b75380fc0f2368e22be45d1e2d1e2cd2f79c (patch) | |
tree | 15623b775f40a11c800b1bd07353816cf6f8de8f | |
parent | d368c0b052ad95d3bf4fcc5a5d25715a35c91d4b (diff) | |
download | qemu-eb92b75380fc0f2368e22be45d1e2d1e2cd2f79c.zip qemu-eb92b75380fc0f2368e22be45d1e2d1e2cd2f79c.tar.gz qemu-eb92b75380fc0f2368e22be45d1e2d1e2cd2f79c.tar.bz2 |
vhost_net: Add NetClientInfo start callback
This is used by the backend to perform actions before the device is
started.
In particular, vdpa net use it to map CVQ buffers to the device, so it
can send control commands using them.
Signed-off-by: Eugenio Pérez <eperezma@redhat.com>
Acked-by: Jason Wang <jasowang@redhat.com>
Signed-off-by: Jason Wang <jasowang@redhat.com>
-rw-r--r-- | hw/net/vhost_net.c | 7 | ||||
-rw-r--r-- | include/net/net.h | 2 |
2 files changed, 9 insertions, 0 deletions
diff --git a/hw/net/vhost_net.c b/hw/net/vhost_net.c index ccac5b7..2e0baeb 100644 --- a/hw/net/vhost_net.c +++ b/hw/net/vhost_net.c @@ -244,6 +244,13 @@ static int vhost_net_start_one(struct vhost_net *net, struct vhost_vring_file file = { }; int r; + if (net->nc->info->start) { + r = net->nc->info->start(net->nc); + if (r < 0) { + return r; + } + } + r = vhost_dev_enable_notifiers(&net->dev, dev); if (r < 0) { goto fail_notifiers; diff --git a/include/net/net.h b/include/net/net.h index 523136c..ad9e800 100644 --- a/include/net/net.h +++ b/include/net/net.h @@ -44,6 +44,7 @@ typedef struct NICConf { typedef void (NetPoll)(NetClientState *, bool enable); typedef bool (NetCanReceive)(NetClientState *); +typedef int (NetStart)(NetClientState *); typedef ssize_t (NetReceive)(NetClientState *, const uint8_t *, size_t); typedef ssize_t (NetReceiveIOV)(NetClientState *, const struct iovec *, int); typedef void (NetCleanup) (NetClientState *); @@ -71,6 +72,7 @@ typedef struct NetClientInfo { NetReceive *receive_raw; NetReceiveIOV *receive_iov; NetCanReceive *can_receive; + NetStart *start; NetCleanup *cleanup; LinkStatusChanged *link_status_changed; QueryRxFilter *query_rx_filter; |