On Thu, Feb 25, 2021 at 02:14:39PM -0500, Michael S. Tsirkin wrote: > On Fri, Feb 26, 2021 at 12:55:06AM +0800, Cindy Lu wrote: > > While peer is vdpa, sometime qemu get an all zero mac address from the > > hardware, > > This is not a legal value. Add the check for this.if we get an zero mac > > address. > > qemu will use the default mac address or the mac address from qemu cmdline > > > > Signed-off-by: Cindy Lu <l...@redhat.com> > > I guess I will have to rewrite the comments and commit log :( > > It is all saying what does the patch do. We want it to rather > give motivation. > > Sean could you please comment on whether this patch fixes your > config?
ping. if I'm to try and merge this work around it's critical that someone with access to hardware confirm it actually works. > > --- > > hw/net/virtio-net.c | 10 ++++++++++ > > 1 file changed, 10 insertions(+) > > > > diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c > > index 9179013ac4..8f36ca5066 100644 > > --- a/hw/net/virtio-net.c > > +++ b/hw/net/virtio-net.c > > @@ -126,6 +126,7 @@ static void virtio_net_get_config(VirtIODevice *vdev, > > uint8_t *config) > > VirtIONet *n = VIRTIO_NET(vdev); > > struct virtio_net_config netcfg; > > NetClientState *nc = qemu_get_queue(n->nic); > > + static const MACAddr zero = { .a = { 0, 0, 0, 0, 0, 0 } }; > > > > int ret = 0; > > memset(&netcfg, 0 , sizeof(struct virtio_net_config)); > > @@ -151,6 +152,15 @@ static void virtio_net_get_config(VirtIODevice *vdev, > > uint8_t *config) > > ret = vhost_net_get_config(get_vhost_net(nc->peer), (uint8_t > > *)&netcfg, > > n->config_size); > > if (ret != -1) { > > + /* > > + * Here is a work around, the 0 mac address is not a legal > > value. > > + * if we got this from hardware, qemu will use the mac address > > + * saved in VirtIONet->mac. > > + */ > > + if (memcmp(&netcfg.mac, &zero, sizeof(zero)) == 0) { > > + info_report("Get an all zero mac address from hardware"); > > + memcpy(netcfg.mac, n->mac, ETH_ALEN); > > + } > > memcpy(config, &netcfg, n->config_size); > > } > > } > > -- > > 2.21.3