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>
This commit is contained in:
parent
d368c0b052
commit
eb92b75380
@ -244,6 +244,13 @@ static int vhost_net_start_one(struct vhost_net *net,
|
|||||||
struct vhost_vring_file file = { };
|
struct vhost_vring_file file = { };
|
||||||
int r;
|
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);
|
r = vhost_dev_enable_notifiers(&net->dev, dev);
|
||||||
if (r < 0) {
|
if (r < 0) {
|
||||||
goto fail_notifiers;
|
goto fail_notifiers;
|
||||||
|
@ -44,6 +44,7 @@ typedef struct NICConf {
|
|||||||
|
|
||||||
typedef void (NetPoll)(NetClientState *, bool enable);
|
typedef void (NetPoll)(NetClientState *, bool enable);
|
||||||
typedef bool (NetCanReceive)(NetClientState *);
|
typedef bool (NetCanReceive)(NetClientState *);
|
||||||
|
typedef int (NetStart)(NetClientState *);
|
||||||
typedef ssize_t (NetReceive)(NetClientState *, const uint8_t *, size_t);
|
typedef ssize_t (NetReceive)(NetClientState *, const uint8_t *, size_t);
|
||||||
typedef ssize_t (NetReceiveIOV)(NetClientState *, const struct iovec *, int);
|
typedef ssize_t (NetReceiveIOV)(NetClientState *, const struct iovec *, int);
|
||||||
typedef void (NetCleanup) (NetClientState *);
|
typedef void (NetCleanup) (NetClientState *);
|
||||||
@ -71,6 +72,7 @@ typedef struct NetClientInfo {
|
|||||||
NetReceive *receive_raw;
|
NetReceive *receive_raw;
|
||||||
NetReceiveIOV *receive_iov;
|
NetReceiveIOV *receive_iov;
|
||||||
NetCanReceive *can_receive;
|
NetCanReceive *can_receive;
|
||||||
|
NetStart *start;
|
||||||
NetCleanup *cleanup;
|
NetCleanup *cleanup;
|
||||||
LinkStatusChanged *link_status_changed;
|
LinkStatusChanged *link_status_changed;
|
||||||
QueryRxFilter *query_rx_filter;
|
QueryRxFilter *query_rx_filter;
|
||||||
|
Loading…
Reference in New Issue
Block a user