On Tue, Mar 17, 2020 at 8:33 AM Michael S. Tsirkin <m...@redhat.com> wrote:

> On Tue, Mar 17, 2020 at 07:48:55AM +0200, Yuri Benditovich wrote:
> >
> >
> > On Tue, Mar 17, 2020 at 1:05 AM Michael S. Tsirkin <m...@redhat.com>
> wrote:
> >
> >     On Mon, Mar 16, 2020 at 12:09:33PM +0200, Yuri Benditovich wrote:
> >     > Save and restore RSS/hash report configuration.
> >     >
> >     > Signed-off-by: Yuri Benditovich <yuri.benditov...@daynix.com>
> >     > ---
> >     >  hw/net/virtio-net.c | 26 ++++++++++++++++++++++++++
> >     >  1 file changed, 26 insertions(+)
> >     >
> >     > diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c
> >     > index a0614ad4e6..f343762a0f 100644
> >     > --- a/hw/net/virtio-net.c
> >     > +++ b/hw/net/virtio-net.c
> >     > @@ -2842,6 +2842,13 @@ static int virtio_net_post_load_device(void
> >     *opaque, int version_id)
> >     >          }
> >     >      }
> >     >
> >     > +    if (n->rss_data.enabled) {
> >     > +        trace_virtio_net_rss_enable(n->rss_data.hash_types,
> >     > +                                    n->rss_data.indirections_len,
> >     > +                                    sizeof(n->rss_data.key));
> >     > +    } else {
> >     > +        trace_virtio_net_rss_disable();
> >     > +    }
> >     >      return 0;
> >     >  }
> >     >
> >     > @@ -3019,6 +3026,24 @@ static const VMStateDescription
> >     vmstate_virtio_net_has_vnet = {
> >     >      },
> >     >  };
> >     >
> >     > +static const VMStateDescription vmstate_rss = {
> >     > +    .name      = "vmstate_rss",
> >     > +    .fields = (VMStateField[]) {
> >     > +        VMSTATE_BOOL(enabled, VirtioNetRssData),
> >     > +        VMSTATE_BOOL(redirect, VirtioNetRssData),
> >     > +        VMSTATE_BOOL(populate_hash, VirtioNetRssData),
> >     > +        VMSTATE_UINT32(hash_types, VirtioNetRssData),
> >     > +        VMSTATE_UINT32(indirections_len, VirtioNetRssData),
> >
> >
> >     Why is this UINT32? Shouldn't it be UINT16?
> >
> >
> > It is UINT32 in the _internal_ structure to use
> VMSTATE_VARRAY_UINT32_ALLOC.
> > Otherwise I need to invent additional macro for the same operation with
> UINT16
> > length.
> >
>
> It's not internal - it's exposed as part of the migration stream format.
> Adding VMSTATE_VARRAY_UINT16_ALLOC is as easy as:
>
>
IMO, reuse existing (and widely used) is always better than create a new,
even if it is simple to create a new.
But if you find it mandatory, I'll add a new.

Are there some notes to other patches in the batch?



> -->
>
> vmstate: add VMSTATE_VARRAY_UINT16_ALLOC
>
> Signed-off-by: Michael S. Tsirkin <m...@redhat.com>
>
> --
>
> diff --git a/include/migration/vmstate.h b/include/migration/vmstate.h
> index 30667631bc..b0b89c6fe5 100644
> --- a/include/migration/vmstate.h
> +++ b/include/migration/vmstate.h
> @@ -432,6 +432,16 @@ extern const VMStateInfo vmstate_info_qlist;
>      .offset     = vmstate_offset_pointer(_state, _field, _type),     \
>  }
>
> +#define VMSTATE_VARRAY_UINT16_ALLOC(_field, _state, _field_num, _version,
> _info, _type) {\
> +    .name       = (stringify(_field)),                               \
> +    .version_id = (_version),                                        \
> +    .num_offset = vmstate_offset_value(_state, _field_num, uint16_t),\
> +    .info       = &(_info),                                          \
> +    .size       = sizeof(_type),                                     \
> +    .flags      = VMS_VARRAY_UINT16|VMS_POINTER|VMS_ALLOC,           \
> +    .offset     = vmstate_offset_pointer(_state, _field, _type),     \
> +}
> +
>  #define VMSTATE_VARRAY_UINT16_UNSAFE(_field, _state, _field_num,
> _version, _info, _type) {\
>      .name       = (stringify(_field)),                               \
>      .version_id = (_version),                                        \
>
>

Reply via email to