aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEugenio Pérez <eperezma@redhat.com>2025-01-06 10:57:34 -0500
committerJason Wang <jasowang@redhat.com>2025-03-10 17:07:14 +0800
commitdb0d4017f9b9e87f962b35dd19a4912bbfcd3cbc (patch)
tree1126114ebd1368d70057cf6cda318bb11dd15ead
parentd9a4282c4b690e45d25c2b933f318bb41eeb271d (diff)
downloadqemu-db0d4017f9b9e87f962b35dd19a4912bbfcd3cbc.zip
qemu-db0d4017f9b9e87f962b35dd19a4912bbfcd3cbc.tar.gz
qemu-db0d4017f9b9e87f962b35dd19a4912bbfcd3cbc.tar.bz2
net: parameterize the removing client from nc list
This change is used in later commits so we can avoid the removal of the netclient if it is delayed. No functional change intended. Reviewed-by: Si-Wei Liu <si-wei.liu@oracle.com> Acked-by: Jason Wang <jasowang@redhat.com> Signed-off-by: Eugenio Pérez <eperezma@redhat.com> Signed-off-by: Jason Wang <jasowang@redhat.com>
-rw-r--r--net/net.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/net/net.c b/net/net.c
index a3996d5..4eb78a1 100644
--- a/net/net.c
+++ b/net/net.c
@@ -381,9 +381,12 @@ NetClientState *qemu_get_peer(NetClientState *nc, int queue_index)
return ncs->peer;
}
-static void qemu_cleanup_net_client(NetClientState *nc)
+static void qemu_cleanup_net_client(NetClientState *nc,
+ bool remove_from_net_clients)
{
- QTAILQ_REMOVE(&net_clients, nc, next);
+ if (remove_from_net_clients) {
+ QTAILQ_REMOVE(&net_clients, nc, next);
+ }
if (nc->info->cleanup) {
nc->info->cleanup(nc);
@@ -442,14 +445,14 @@ void qemu_del_net_client(NetClientState *nc)
}
for (i = 0; i < queues; i++) {
- qemu_cleanup_net_client(ncs[i]);
+ qemu_cleanup_net_client(ncs[i], true);
}
return;
}
for (i = 0; i < queues; i++) {
- qemu_cleanup_net_client(ncs[i]);
+ qemu_cleanup_net_client(ncs[i], true);
qemu_free_net_client(ncs[i]);
}
}
@@ -474,7 +477,7 @@ void qemu_del_nic(NICState *nic)
for (i = queues - 1; i >= 0; i--) {
NetClientState *nc = qemu_get_subqueue(nic, i);
- qemu_cleanup_net_client(nc);
+ qemu_cleanup_net_client(nc, true);
qemu_free_net_client(nc);
}