aboutsummaryrefslogtreecommitdiff
path: root/hw/net
diff options
context:
space:
mode:
authorDmitry Fleytman <dmitry@daynix.com>2016-09-15 09:14:24 +0300
committerJason Wang <jasowang@redhat.com>2016-09-27 17:54:22 +0800
commit6ee0e20b653817aa0adac89e21704842608e1639 (patch)
tree44a6b7d4d2281173513e31d3c354b255270931ba /hw/net
parent47f9f15831faa549504ab9b035aaea44a02e5f95 (diff)
downloadqemu-6ee0e20b653817aa0adac89e21704842608e1639.zip
qemu-6ee0e20b653817aa0adac89e21704842608e1639.tar.gz
qemu-6ee0e20b653817aa0adac89e21704842608e1639.tar.bz2
e1000e: Flush all receive queues on receive enable
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>
Diffstat (limited to 'hw/net')
-rw-r--r--hw/net/e1000e.c2
-rw-r--r--hw/net/e1000e_core.c2
-rw-r--r--hw/net/e1000e_core.h3
3 files changed, 5 insertions, 2 deletions
diff --git a/hw/net/e1000e.c b/hw/net/e1000e.c
index bad43f4..4994e1c 100644
--- a/hw/net/e1000e.c
+++ b/hw/net/e1000e.c
@@ -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);
}
}
diff --git a/hw/net/e1000e_core.c b/hw/net/e1000e_core.c
index 03e3c46..ea2a484 100644
--- a/hw/net/e1000e_core.c
+++ b/hw/net/e1000e_core.c
@@ -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;
diff --git a/hw/net/e1000e_core.h b/hw/net/e1000e_core.h
index 5f413a9..1ff6978 100644
--- a/hw/net/e1000e_core.h
+++ b/hw/net/e1000e_core.h
@@ -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);