|
@@ -45,10 +45,23 @@ uint64_t vhost_user_get_acked_features(NetClientState *nc)
|
|
return s->acked_features;
|
|
return s->acked_features;
|
|
}
|
|
}
|
|
|
|
|
|
-static void vhost_user_stop(int queues, NetClientState *ncs[])
|
|
|
|
|
|
+void vhost_user_save_acked_features(NetClientState *nc)
|
|
{
|
|
{
|
|
NetVhostUserState *s;
|
|
NetVhostUserState *s;
|
|
|
|
+
|
|
|
|
+ s = DO_UPCAST(NetVhostUserState, nc, nc);
|
|
|
|
+ if (s->vhost_net) {
|
|
|
|
+ uint64_t features = vhost_net_get_acked_features(s->vhost_net);
|
|
|
|
+ if (features) {
|
|
|
|
+ s->acked_features = features;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+static void vhost_user_stop(int queues, NetClientState *ncs[])
|
|
|
|
+{
|
|
int i;
|
|
int i;
|
|
|
|
+ NetVhostUserState *s;
|
|
|
|
|
|
for (i = 0; i < queues; i++) {
|
|
for (i = 0; i < queues; i++) {
|
|
assert(ncs[i]->info->type == NET_CLIENT_DRIVER_VHOST_USER);
|
|
assert(ncs[i]->info->type == NET_CLIENT_DRIVER_VHOST_USER);
|
|
@@ -56,11 +69,7 @@ static void vhost_user_stop(int queues, NetClientState *ncs[])
|
|
s = DO_UPCAST(NetVhostUserState, nc, ncs[i]);
|
|
s = DO_UPCAST(NetVhostUserState, nc, ncs[i]);
|
|
|
|
|
|
if (s->vhost_net) {
|
|
if (s->vhost_net) {
|
|
- /* save acked features */
|
|
|
|
- uint64_t features = vhost_net_get_acked_features(s->vhost_net);
|
|
|
|
- if (features) {
|
|
|
|
- s->acked_features = features;
|
|
|
|
- }
|
|
|
|
|
|
+ vhost_user_save_acked_features(ncs[i]);
|
|
vhost_net_cleanup(s->vhost_net);
|
|
vhost_net_cleanup(s->vhost_net);
|
|
}
|
|
}
|
|
}
|
|
}
|