e1000e: Flush all receive queues on receive enable
authorDmitry Fleytman <dmitry@daynix.com>
Thu, 15 Sep 2016 06:14:24 +0000 (09:14 +0300)
committerJason Wang <jasowang@redhat.com>
Tue, 27 Sep 2016 09:54:22 +0000 (17:54 +0800)
Before this patch first netdev queue only was flushed.

Signed-off-by: Dmitry Fleytman <dmitry@daynix.com>
Signed-off-by: Jason Wang <jasowang@redhat.com>
hw/net/e1000e.c
hw/net/e1000e_core.c
hw/net/e1000e_core.h

index bad43f474e06a00d696f3b2db0ae77da622be6b8..4994e1ca0062386cc32790258f055e42409abc4d 100644 (file)
@@ -400,7 +400,7 @@ static void e1000e_write_config(PCIDevice *pci_dev, uint32_t address,
 
     if (range_covers_byte(address, len, PCI_COMMAND) &&
         (pci_dev->config[PCI_COMMAND] & PCI_COMMAND_MASTER)) {
-        qemu_flush_queued_packets(qemu_get_queue(s->nic));
+        e1000e_start_recv(&s->core);
     }
 }
 
index 03e3c462f189c0b9d09e6036cdaac4507100c1b7..ea2a484e9eff3ac4d0e3ceb9bb303305c545225a 100644 (file)
@@ -953,7 +953,7 @@ e1000e_has_rxbufs(E1000ECore *core, const E1000E_RingInfo *r,
                          core->rx_desc_buf_size;
 }
 
-static inline void
+void
 e1000e_start_recv(E1000ECore *core)
 {
     int i;
index 5f413a9e08b640176ea73ec85115d87f45c2d513..1ff6978ca1fd2ff5d64e38c25da3b90306ea3172 100644 (file)
@@ -144,3 +144,6 @@ e1000e_receive(E1000ECore *core, const uint8_t *buf, size_t size);
 
 ssize_t
 e1000e_receive_iov(E1000ECore *core, const struct iovec *iov, int iovcnt);
+
+void
+e1000e_start_recv(E1000ECore *core);