On Wed, May 31, 2023 at 3:47 AM Jason Wang <[email protected]> wrote:
>
> On Mon, May 29, 2023 at 9:18 PM Hawkins Jiawei <[email protected]> wrote:
> >
> > This patch introduces vhost_vdpa_net_load_offloads() to
> > restore offloads state at device's startup.
> >
> > Signed-off-by: Hawkins Jiawei <[email protected]>
> > ---
> > net/vhost-vdpa.c | 26 ++++++++++++++++++++++++++
> > 1 file changed, 26 insertions(+)
> >
> > diff --git a/net/vhost-vdpa.c b/net/vhost-vdpa.c
> > index 37cdc84562..682c749b19 100644
> > --- a/net/vhost-vdpa.c
> > +++ b/net/vhost-vdpa.c
> > @@ -680,6 +680,28 @@ static int vhost_vdpa_net_load_mq(VhostVDPAState *s,
> > return *s->status != VIRTIO_NET_OK;
> > }
> >
> > +static int vhost_vdpa_net_load_offloads(VhostVDPAState *s,
> > + const VirtIONet *n)
> > +{
> > + uint64_t features, offloads;
> > + ssize_t dev_written;
> > +
> > + features = n->parent_obj.guest_features;
>
> Any reason you need to do tricks like this instead of using
> virtio_xxx_has_features()?
>
It can be replaced by virtio_vdev_has_feature, yes.
Current code of vhost_vdpa_net_load_mac and vhost_vdpa_net_load_mq
access to guest_features directly too, so I think we should change all
of them at once.
Thanks!
> > + if (!(features & BIT_ULL(VIRTIO_NET_F_CTRL_GUEST_OFFLOADS))) {
> > + return 0;
> > + }
> > +
> > + offloads = cpu_to_le64(n->curr_guest_offloads);
> > + dev_written = vhost_vdpa_net_load_cmd(s,
> > VIRTIO_NET_CTRL_GUEST_OFFLOADS,
> > +
> > VIRTIO_NET_CTRL_GUEST_OFFLOADS_SET,
> > + &offloads, sizeof(offloads));
> > + if (unlikely(dev_written < 0)) {
> > + return dev_written;
> > + }
> > +
> > + return *s->status != VIRTIO_NET_OK;
> > +}
> > +
> > static int vhost_vdpa_net_load(NetClientState *nc)
> > {
> > VhostVDPAState *s = DO_UPCAST(VhostVDPAState, nc, nc);
> > @@ -702,6 +724,10 @@ static int vhost_vdpa_net_load(NetClientState *nc)
> > if (unlikely(r)) {
> > return r;
> > }
> > + r = vhost_vdpa_net_load_offloads(s, n);
> > + if (unlikely(r)) {
> > + return r;
> > + }
> >
> > return 0;
> > }
> > --
> > 2.25.1
> >
>