Message ID | 68226edccea8d6e51ea3f2da26d5ff2da2abc224.1685623090.git.yin31149@gmail.com |
---|---|
State | New |
Headers | show |
Series | Vhost-vdpa Shadow Virtqueue Offloads support | expand |
On Thu, Jun 1, 2023 at 3:49 PM Hawkins Jiawei <yin31149@gmail.com> wrote: > > To support restoring offloads state in vdpa, need to expose > the function virtio_net_supported_guest_offloads(). > QEMU uses this function to get the guest supported offloads > and no needs to send the corresponding CVQ command if guest doesn't need to send? > enables all supported features. > Good! I'd add the same message as the next patch's comment, to signal it is because the device has already enabled by default: + * According to VirtIO standard, "Upon feature negotiation + * corresponding offload gets enabled to preserve + * backward compatibility." + * So we do not need to send this CVQ command if the guest + * also enables all supported offloads. Thanks! > Signed-off-by: Hawkins Jiawei <yin31149@gmail.com> > --- > hw/net/virtio-net.c | 2 +- > include/hw/virtio/virtio-net.h | 1 + > 2 files changed, 2 insertions(+), 1 deletion(-) > > diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c > index 7b27dad6c4..7e8897a8bc 100644 > --- a/hw/net/virtio-net.c > +++ b/hw/net/virtio-net.c > @@ -874,7 +874,7 @@ static uint64_t virtio_net_guest_offloads_by_features(uint32_t features) > return guest_offloads_mask & features; > } > > -static inline uint64_t virtio_net_supported_guest_offloads(const VirtIONet *n) > +uint64_t virtio_net_supported_guest_offloads(const VirtIONet *n) > { > VirtIODevice *vdev = VIRTIO_DEVICE(n); > return virtio_net_guest_offloads_by_features(vdev->guest_features); > diff --git a/include/hw/virtio/virtio-net.h b/include/hw/virtio/virtio-net.h > index ef234ffe7e..5f5dcb4572 100644 > --- a/include/hw/virtio/virtio-net.h > +++ b/include/hw/virtio/virtio-net.h > @@ -227,5 +227,6 @@ size_t virtio_net_handle_ctrl_iov(VirtIODevice *vdev, > unsigned out_num); > void virtio_net_set_netclient_name(VirtIONet *n, const char *name, > const char *type); > +uint64_t virtio_net_supported_guest_offloads(const VirtIONet *n); > > #endif > -- > 2.25.1 >
On 2023/6/1 22:37, Eugenio Perez Martin wrote: > On Thu, Jun 1, 2023 at 3:49 PM Hawkins Jiawei <yin31149@gmail.com> wrote: >> >> To support restoring offloads state in vdpa, need to expose >> the function virtio_net_supported_guest_offloads(). >> QEMU uses this function to get the guest supported offloads >> and no needs to send the corresponding CVQ command if guest > > doesn't need to send? I will correct it in the v4 patch. > >> enables all supported features. >> > > Good! I'd add the same message as the next patch's comment, to signal > it is because the device has already enabled by default: > > + * According to VirtIO standard, "Upon feature negotiation > + * corresponding offload gets enabled to preserve > + * backward compatibility." > + * So we do not need to send this CVQ command if the guest > + * also enables all supported offloads. I will add these messages in the v4 patch. Thanks! > > Thanks! > > >> Signed-off-by: Hawkins Jiawei <yin31149@gmail.com> >> --- >> hw/net/virtio-net.c | 2 +- >> include/hw/virtio/virtio-net.h | 1 + >> 2 files changed, 2 insertions(+), 1 deletion(-) >> >> diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c >> index 7b27dad6c4..7e8897a8bc 100644 >> --- a/hw/net/virtio-net.c >> +++ b/hw/net/virtio-net.c >> @@ -874,7 +874,7 @@ static uint64_t virtio_net_guest_offloads_by_features(uint32_t features) >> return guest_offloads_mask & features; >> } >> >> -static inline uint64_t virtio_net_supported_guest_offloads(const VirtIONet *n) >> +uint64_t virtio_net_supported_guest_offloads(const VirtIONet *n) >> { >> VirtIODevice *vdev = VIRTIO_DEVICE(n); >> return virtio_net_guest_offloads_by_features(vdev->guest_features); >> diff --git a/include/hw/virtio/virtio-net.h b/include/hw/virtio/virtio-net.h >> index ef234ffe7e..5f5dcb4572 100644 >> --- a/include/hw/virtio/virtio-net.h >> +++ b/include/hw/virtio/virtio-net.h >> @@ -227,5 +227,6 @@ size_t virtio_net_handle_ctrl_iov(VirtIODevice *vdev, >> unsigned out_num); >> void virtio_net_set_netclient_name(VirtIONet *n, const char *name, >> const char *type); >> +uint64_t virtio_net_supported_guest_offloads(const VirtIONet *n); >> >> #endif >> -- >> 2.25.1 >> >
diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c index 7b27dad6c4..7e8897a8bc 100644 --- a/hw/net/virtio-net.c +++ b/hw/net/virtio-net.c @@ -874,7 +874,7 @@ static uint64_t virtio_net_guest_offloads_by_features(uint32_t features) return guest_offloads_mask & features; } -static inline uint64_t virtio_net_supported_guest_offloads(const VirtIONet *n) +uint64_t virtio_net_supported_guest_offloads(const VirtIONet *n) { VirtIODevice *vdev = VIRTIO_DEVICE(n); return virtio_net_guest_offloads_by_features(vdev->guest_features); diff --git a/include/hw/virtio/virtio-net.h b/include/hw/virtio/virtio-net.h index ef234ffe7e..5f5dcb4572 100644 --- a/include/hw/virtio/virtio-net.h +++ b/include/hw/virtio/virtio-net.h @@ -227,5 +227,6 @@ size_t virtio_net_handle_ctrl_iov(VirtIODevice *vdev, unsigned out_num); void virtio_net_set_netclient_name(VirtIONet *n, const char *name, const char *type); +uint64_t virtio_net_supported_guest_offloads(const VirtIONet *n); #endif
To support restoring offloads state in vdpa, need to expose the function virtio_net_supported_guest_offloads(). QEMU uses this function to get the guest supported offloads and no needs to send the corresponding CVQ command if guest enables all supported features. Signed-off-by: Hawkins Jiawei <yin31149@gmail.com> --- hw/net/virtio-net.c | 2 +- include/hw/virtio/virtio-net.h | 1 + 2 files changed, 2 insertions(+), 1 deletion(-)