net: Add is_vhost_user flag to vhost_net struct
Introduce a boolean is_vhost_user field to the vhost_net structure. This flag is initialized during vhost_net_init based on whether the backend is vhost-user. This refactoring simplifies checks for vhost-user specific behavior, replacing direct comparisons of 'net->nc->info->type' with the new flag. It improves readability and encapsulates the backend type information directly within the vhost_net instance. Signed-off-by: Laurent Vivier <lvivier@redhat.com> Signed-off-by: Jason Wang <jasowang@redhat.com>
This commit is contained in:
parent
33b78a30a3
commit
ba5acc5d6e
7 changed files with 13 additions and 3 deletions
|
|
@ -246,6 +246,7 @@ struct vhost_net *vhost_net_init(VhostNetOptions *options)
|
|||
net->feature_bits = options->feature_bits;
|
||||
net->save_acked_features = options->save_acked_features;
|
||||
net->max_tx_queue_size = options->max_tx_queue_size;
|
||||
net->is_vhost_user = options->is_vhost_user;
|
||||
|
||||
net->dev.max_queues = 1;
|
||||
net->dev.vqs = net->vqs;
|
||||
|
|
@ -440,7 +441,7 @@ int vhost_net_start(VirtIODevice *dev, NetClientState *ncs,
|
|||
* because vhost user doesn't interrupt masking/unmasking
|
||||
* properly.
|
||||
*/
|
||||
if (net->nc->info->type == NET_CLIENT_DRIVER_VHOST_USER) {
|
||||
if (net->is_vhost_user) {
|
||||
dev->use_guest_notifier_mask = false;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -691,12 +691,14 @@ default_value:
|
|||
static int peer_attach(VirtIONet *n, int index)
|
||||
{
|
||||
NetClientState *nc = qemu_get_subqueue(n->nic, index);
|
||||
struct vhost_net *net;
|
||||
|
||||
if (!nc->peer) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (nc->peer->info->type == NET_CLIENT_DRIVER_VHOST_USER) {
|
||||
net = get_vhost_net(nc->peer);
|
||||
if (net && net->is_vhost_user) {
|
||||
vhost_net_set_vring_enable(nc->peer, 1);
|
||||
}
|
||||
|
||||
|
|
@ -714,12 +716,14 @@ static int peer_attach(VirtIONet *n, int index)
|
|||
static int peer_detach(VirtIONet *n, int index)
|
||||
{
|
||||
NetClientState *nc = qemu_get_subqueue(n->nic, index);
|
||||
struct vhost_net *net;
|
||||
|
||||
if (!nc->peer) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (nc->peer->info->type == NET_CLIENT_DRIVER_VHOST_USER) {
|
||||
net = get_vhost_net(nc->peer);
|
||||
if (net && net->is_vhost_user) {
|
||||
vhost_net_set_vring_enable(nc->peer, 0);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -147,6 +147,7 @@ struct vhost_net {
|
|||
const int *feature_bits;
|
||||
int max_tx_queue_size;
|
||||
SaveAcketFeatures *save_acked_features;
|
||||
bool is_vhost_user;
|
||||
NetClientState *nc;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ typedef struct VhostNetOptions {
|
|||
unsigned int nvqs;
|
||||
const int *feature_bits;
|
||||
int max_tx_queue_size;
|
||||
bool is_vhost_user;
|
||||
GetAckedFeatures *get_acked_features;
|
||||
SaveAcketFeatures *save_acked_features;
|
||||
void *opaque;
|
||||
|
|
|
|||
|
|
@ -747,6 +747,7 @@ static void net_init_tap_one(const NetdevTapOptions *tap, NetClientState *peer,
|
|||
options.get_acked_features = NULL;
|
||||
options.save_acked_features = NULL;
|
||||
options.max_tx_queue_size = 0;
|
||||
options.is_vhost_user = false;
|
||||
|
||||
s->vhost_net = vhost_net_init(&options);
|
||||
if (!s->vhost_net) {
|
||||
|
|
|
|||
|
|
@ -141,6 +141,7 @@ static int vhost_user_start(int queues, NetClientState *ncs[],
|
|||
options.max_tx_queue_size = VIRTQUEUE_MAX_SIZE;
|
||||
options.get_acked_features = vhost_user_get_acked_features;
|
||||
options.save_acked_features = vhost_user_save_acked_features;
|
||||
options.is_vhost_user = true;
|
||||
|
||||
net = vhost_net_init(&options);
|
||||
if (!net) {
|
||||
|
|
|
|||
|
|
@ -205,6 +205,7 @@ static int vhost_vdpa_add(NetClientState *ncs, void *be,
|
|||
options.get_acked_features = NULL;
|
||||
options.save_acked_features = NULL;
|
||||
options.max_tx_queue_size = VIRTQUEUE_MAX_SIZE;
|
||||
options.is_vhost_user = false;
|
||||
|
||||
net = vhost_net_init(&options);
|
||||
if (!net) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue