virtio-net: revert mac on reset
PATCH 1/1 virtio-net: revert mac on reset
Once guest overrides virtio net primary mac, it retains the value set until qemu exit. This is inconsistent with standard nic behaviour. To fix, revert the mac to the original value on reset.
Signed-off-by Michael S. Tsirkin <[email protected]>
--- hw/virtio-net.c | 1 + 1 file changed, 1 insertion(+)
hw/virtio-net.c +1 -0
@@ -199,6 +199,7 @@ static void virtio_net_reset(VirtIODevice *vdev) n->mac_table.multi_overflow =0 ; n->mac_table.uni_overflow =0 ;memset (n->mac_table.macs,0 ,MAC_TABLE_ENTRIES *ETH_ALEN ); +memcpy (&n->mac[0 ], &n->nic->conf->macaddr,sizeof (n->mac));memset (n->vlans,0 ,MAX_VLAN >>3 ); }
Signature · 1 line
MST
Quoted 9 lines · Michael S. Tsirkin
Once guest overrides virtio net primary mac, it retains the value set until qemu exit. This is inconsistent with standard nic behaviour. To fix, revert the mac to the original value on reset.
Signed-off-by Michael S. Tsirkin <[email protected]>--- hw/virtio-net.c | 1 + 1 file changed, 1 insertion(+)
Reviewed-by Stefan Hajnoczi <[email protected]>
Quoted 15 lines · Michael S. Tsirkin
Once guest overrides virtio net primary mac, it retains the value set until qemu exit. This is inconsistent with standard nic behaviour. To fix, revert the mac to the original value on reset.
Signed-off-by Michael S. Tsirkin <[email protected]>--- hw/virtio-net.c | 1 + 1 file changed, 1 insertion(+)hw/virtio-net.c +0
-0
hw/virtio-net.c static void virtio_net_reset(VirtIODevice *vdev) · line 205
Quoted 7 lines
hw/virtio-net.c +1
-0@@ -199,6 +199,7 @@ static void virtio_net_reset(VirtIODevice *vdev) n->mac_table.multi_overflow =0 ; n->mac_table.uni_overflow =0 ;memset (n->mac_table.macs,0 ,MAC_TABLE_ENTRIES *ETH_ALEN ); +memcpy (&n->mac[0 ], &n->nic->conf->macaddr,sizeof (n->mac));memset (n->vlans,0 ,MAX_VLAN >>3 ); }
Reviewed-by Laszlo Ersek <[email protected]>