]> git.proxmox.com Git - qemu.git/commitdiff
e1000/rtl8139: update HMP NIC when every bit is written
authorAmos Kong <akong@redhat.com>
Tue, 5 Nov 2013 11:17:18 +0000 (19:17 +0800)
committerAnthony Liguori <aliguori@amazon.com>
Thu, 7 Nov 2013 05:46:25 +0000 (21:46 -0800)
We currently just update the HMP NIC info when the last bit of macaddr
is written. This assumes that guest driver will write all the macaddr
from bit 0 to bit 5 when it changes the macaddr, this is the current
behavior of linux driver (e1000/rtl8139cp), but we can't do this
assumption.

The macaddr that is used for rx-filter will be updated when every bit
is changed. This patch updates the e1000/rtl8139 nic to update HMP NIC
info when every bit is changed. It will be same as virtio-net.

Signed-off-by: Amos Kong <akong@redhat.com>
Reviewed-by: Alex Williamson <alex.williamson@redhat.com>
Message-id: 1383650238-16015-1-git-send-email-akong@redhat.com
Signed-off-by: Anthony Liguori <aliguori@amazon.com>
hw/net/e1000.c
hw/net/rtl8139.c

index 8387443ee38eb341e1c380c2f403f94ec6855239..ae6359117dcfe5d7adb7ebc33554a0d2dcb5739f 100644 (file)
@@ -1106,7 +1106,7 @@ mac_writereg(E1000State *s, int index, uint32_t val)
 
     s->mac_reg[index] = val;
 
-    if (index == RA + 1) {
+    if (index == RA || index == RA + 1) {
         macaddr[0] = cpu_to_le32(s->mac_reg[RA]);
         macaddr[1] = cpu_to_le32(s->mac_reg[RA + 1]);
         qemu_format_nic_info_str(qemu_get_queue(s->nic), (uint8_t *)macaddr);
index 5329f44a9dfd73a5d93201accdab70b8097a2572..7f2b4db4496f231d360e0bb5a68f52555d98a29d 100644 (file)
@@ -2741,10 +2741,7 @@ static void rtl8139_io_writeb(void *opaque, uint8_t addr, uint32_t val)
 
     switch (addr)
     {
-        case MAC0 ... MAC0+4:
-            s->phys[addr - MAC0] = val;
-            break;
-        case MAC0+5:
+        case MAC0 ... MAC0+5:
             s->phys[addr - MAC0] = val;
             qemu_format_nic_info_str(qemu_get_queue(s->nic), s->phys);
             break;