On Tue, Apr 8, 2025 at 2:38 PM Jason Wang <jasow...@redhat.com> wrote:
>
> On Tue, Apr 8, 2025 at 2:13 PM Cindy Lu <l...@redhat.com> wrote:
> >
> > When using a VDPA device, it's important to ensure that the MAC
> > address is correctly set.
> > Add a new parameter in qemu cmdline to enable this check, default value
> > is false
> >
> > The usage is:
> > ....
> > -netdev 
> > type=vhost-vdpa,vhostdev=/dev/vhost-vdpa-0,id=vhost-vdpa0,check-mac=true\
> > -device virtio-net-pci,netdev=vhost-vdpa0\
> > ....
> >
> > Signed-off-by: Cindy Lu <l...@redhat.com>
> > ---
> >  include/net/net.h | 1 +
> >  net/vhost-vdpa.c  | 4 ++++
> >  qapi/net.json     | 5 +++++
> >  3 files changed, 10 insertions(+)
> >
> > diff --git a/include/net/net.h b/include/net/net.h
> > index cdd5b109b0..fac1951b6e 100644
> > --- a/include/net/net.h
> > +++ b/include/net/net.h
> > @@ -112,6 +112,7 @@ struct NetClientState {
> >      bool is_netdev;
> >      bool do_not_pad; /* do not pad to the minimum ethernet frame length */
> >      bool is_datapath;
> > +    bool check_mac;
> >      QTAILQ_HEAD(, NetFilterState) filters;
> >  };
> >
> > diff --git a/net/vhost-vdpa.c b/net/vhost-vdpa.c
> > index 7ca8b46eee..ba1da31741 100644
> > --- a/net/vhost-vdpa.c
> > +++ b/net/vhost-vdpa.c
> > @@ -1870,6 +1870,8 @@ int net_init_vhost_vdpa(const Netdev *netdev, const 
> > char *name,
> >                                       iova_range, features, shared, errp);
> >          if (!ncs[i])
> >              goto err;
> > +
> > +        ncs[i]->check_mac = opts->check_mac;
> >      }
> >
> >      if (has_cvq) {
> > @@ -1882,6 +1884,8 @@ int net_init_vhost_vdpa(const Netdev *netdev, const 
> > char *name,
> >                                   errp);
> >          if (!nc)
> >              goto err;
> > +
> > +        nc->check_mac = opts->check_mac;
>
> Unless we need to iterate all the ncs during the startup, I think it
> would be sufficient to store it in nc[0]?
>
sure, will fix this
> >      }
> >
> >      return 0;
> > diff --git a/qapi/net.json b/qapi/net.json
> > index 310cc4fd19..a5c70d1df8 100644
> > --- a/qapi/net.json
> > +++ b/qapi/net.json
> > @@ -510,6 +510,10 @@
> >  # @queues: number of queues to be created for multiqueue vhost-vdpa
> >  #     (default: 1)
> >  #
> > +# @check-mac: Enable the check for whether the device's MAC address
> > +#     and the MAC in QEMU command line are acceptable for booting.
> > +#     (default: false)
> > +#
> >  # @x-svq: Start device with (experimental) shadow virtqueue.  (Since
> >  #     7.1) (default: false)
> >  #
> > @@ -524,6 +528,7 @@
> >      '*vhostdev':     'str',
> >      '*vhostfd':      'str',
> >      '*queues':       'int',
> > +    '*check-mac':    'bool',
>
> To make this more useful, we probably need to make it true by default
> and do the compatibility work. Btw, while at it, do we need to check
> MTU as well?
>
> Thanks
>
Sure, will change this,
but there is another issue, the kernel and vdpa tool don't support MTU yet.
Should we add an MTU check later?
Thanks

cindy

> >      '*x-svq':        {'type': 'bool', 'features' : [ 'unstable'] } } }
> >
> >  ##
> > --
> > 2.45.0
> >
>


Reply via email to