Hi Michael, Can you review this feature support patch, appreciate your review and comments.
Patch considers all feature bits supported by vhost net client type as part of feature negotiation to address the concerns raised in below thread. https://patchew.org/QEMU/[email protected]/ Regards Vamsi > -----Original Message----- > From: Srujana Challa <[email protected]> > Sent: Tuesday, January 2, 2024 4:45 PM > To: [email protected] > Cc: [email protected]; Vamsi Krishna Attunuru <[email protected]>; > Jerin Jacob Kollanukkaran <[email protected]> > Subject: [PATCH] vhost_net: add NOTIFICATION_DATA and IN_ORDER > feature bits to vdpa_feature_bits > > Enables VIRTIO_F_NOTIFICATION_DATA and VIRTIO_F_IN_ORDER feature > bits for vhost vdpa backend. Also adds code to consider all feature bits > supported by vhost net client type for feature negotiation, so that vhost > backend device supported features can be negotiated with guest. > > Signed-off-by: Srujana Challa <[email protected]> > --- > hw/net/vhost_net.c | 10 ++++++++++ > net/vhost-vdpa.c | 2 ++ > 2 files changed, 12 insertions(+) > > diff --git a/hw/net/vhost_net.c b/hw/net/vhost_net.c index > e8e1661646..65ae8bcece 100644 > --- a/hw/net/vhost_net.c > +++ b/hw/net/vhost_net.c > @@ -117,6 +117,16 @@ static const int *vhost_net_get_feature_bits(struct > vhost_net *net) > > uint64_t vhost_net_get_features(struct vhost_net *net, uint64_t features) > { > + const int *bit = vhost_net_get_feature_bits(net); > + > + /* > + * Consider all feature bits for feature negotiation with vhost backend, > + * so that all backend device supported features can be negotiated. > + */ > + while (*bit != VHOST_INVALID_FEATURE_BIT) { > + features |= (1ULL << *bit); > + bit++; > + } > return vhost_get_features(&net->dev, vhost_net_get_feature_bits(net), > features); > } > diff --git a/net/vhost-vdpa.c b/net/vhost-vdpa.c index > 3726ee5d67..51334fcfe2 100644 > --- a/net/vhost-vdpa.c > +++ b/net/vhost-vdpa.c > @@ -57,7 +57,9 @@ typedef struct VhostVDPAState { > */ > const int vdpa_feature_bits[] = { > VIRTIO_F_ANY_LAYOUT, > + VIRTIO_F_IN_ORDER, > VIRTIO_F_IOMMU_PLATFORM, > + VIRTIO_F_NOTIFICATION_DATA, > VIRTIO_F_NOTIFY_ON_EMPTY, > VIRTIO_F_RING_PACKED, > VIRTIO_F_RING_RESET, > -- > 2.25.1
