On Wed, Jan 16, 2013 at 11:22:23AM +0200, Michael S. Tsirkin wrote:
> On Wed, Jan 16, 2013 at 10:13:28AM +0100, Stefan Hajnoczi wrote:
> > On Wed, Jan 16, 2013 at 03:33:24PM +0800, [email protected] wrote:
> > > +\change_inserted -1930653948 1358320004
> > > +The command VIRTIO_NET_CTRL_MAC_ADDR_SET is used to set
> > > +\begin_inset Quotes eld
> > > +\end_inset
> > > +
> > > +physical
> > > +\begin_inset Quotes erd
> > > +\end_inset
> > > +
> > > + address of the network card.
> >
> > The "physical" address of the network card? That term is not defined
> > anywhere in the specification.
I will replace it with 'the default MAC address'
> > Perhaps it's best to explain that the config space "mac" field and
> > VIRTIO_NET_CTRL_MAC_ADDR_SET both set the default MAC address which rx
> > filtering accepts. (The MAC table is an additional set of MAC addresses
> > which rx filtering accepts.)
> >
> > It would also be worth explaining that VIRTIO_NET_CTRL_MAC_ADDR_SET is
> > atomic whereas the config space "mac" field is not. Therefore,
> > VIRTIO_NET_CTRL_MAC_ADDR_SET is preferred, especially while the NIC is
> > up.
Ok, will send a v2, thanks.
> > Stefan
> It's probably best to simply make the config space field
> read-only if the feature bit is acked.
It's reasonable.
diff --git a/hw/virtio-net.c b/hw/virtio-net.c
index c18e276..54c5eae 100644
--- a/hw/virtio-net.c
+++ b/hw/virtio-net.c
@@ -93,7 +93,8 @@ static void virtio_net_set_config(VirtIODevice
*vdev, const uint8_t *config)
memcpy(&netcfg, config, sizeof(netcfg));
- if (memcmp(netcfg.mac, n->mac, ETH_ALEN)) {
+ if (!(n->vdev.guest_features >> VIRTIO_NET_F_CTRL_MAC_ADDR & 1) &&
+ memcmp(netcfg.mac, n->mac, ETH_ALEN)) {
memcpy(n->mac, netcfg.mac, ETH_ALEN);
qemu_format_nic_info_str(&n->nic->nc, n->mac);
}
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html