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]? > } > > 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 > '*x-svq': {'type': 'bool', 'features' : [ 'unstable'] } } } > > ## > -- > 2.45.0 >