[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL for-2.4 13/16] mipsnet: Flush queued packets when rec
From: |
Stefan Hajnoczi |
Subject: |
[Qemu-devel] [PULL for-2.4 13/16] mipsnet: Flush queued packets when receiving is enabled |
Date: |
Mon, 27 Jul 2015 14:51:58 +0100 |
From: Fam Zheng <address@hidden>
Drop .can_receive and move the semantics to mipsnet_receive, by
returning 0.
After 0 is returned, we must flush the queue explicitly to restart it:
Call qemu_flush_queued_packets when s->busy or s->rx_count is being
updated.
Signed-off-by: Fam Zheng <address@hidden>
Reviewed-by: Stefan Hajnoczi <address@hidden>
Reviewed-by: Jason Wang <address@hidden>
Message-id: address@hidden
Signed-off-by: Stefan Hajnoczi <address@hidden>
---
hw/net/mipsnet.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/hw/net/mipsnet.c b/hw/net/mipsnet.c
index c813e0c..f261011 100644
--- a/hw/net/mipsnet.c
+++ b/hw/net/mipsnet.c
@@ -80,7 +80,7 @@ static ssize_t mipsnet_receive(NetClientState *nc, const
uint8_t *buf, size_t si
trace_mipsnet_receive(size);
if (!mipsnet_can_receive(nc))
- return -1;
+ return 0;
s->busy = 1;
@@ -134,6 +134,9 @@ static uint64_t mipsnet_ioport_read(void *opaque, hwaddr
addr,
if (s->rx_count) {
s->rx_count--;
ret = s->rx_buffer[s->rx_read++];
+ if (mipsnet_can_receive(s->nic->ncs)) {
+ qemu_flush_queued_packets(qemu_get_queue(s->nic));
+ }
}
break;
/* Reads as zero. */
@@ -170,6 +173,9 @@ static void mipsnet_ioport_write(void *opaque, hwaddr addr,
}
s->busy = !!s->intctl;
mipsnet_update_irq(s);
+ if (mipsnet_can_receive(s->nic->ncs)) {
+ qemu_flush_queued_packets(qemu_get_queue(s->nic));
+ }
break;
case MIPSNET_TX_DATA_BUFFER:
s->tx_buffer[s->tx_written++] = val;
@@ -214,7 +220,6 @@ static const VMStateDescription vmstate_mipsnet = {
static NetClientInfo net_mipsnet_info = {
.type = NET_CLIENT_OPTIONS_KIND_NIC,
.size = sizeof(NICState),
- .can_receive = mipsnet_can_receive,
.receive = mipsnet_receive,
};
--
2.4.3
- [Qemu-devel] [PULL for-2.4 01/16] hw/net: create common collection of MII definitions, (continued)
- [Qemu-devel] [PULL for-2.4 01/16] hw/net: create common collection of MII definitions, Stefan Hajnoczi, 2015/07/27
- [Qemu-devel] [PULL for-2.4 02/16] hw/net: add ANLPAR bit definitions to generic mii, Stefan Hajnoczi, 2015/07/27
- [Qemu-devel] [PULL for-2.4 04/16] hw/net: fix mcf_fec driver receiver, Stefan Hajnoczi, 2015/07/27
- [Qemu-devel] [PULL for-2.4 05/16] xgmac: Drop packets with eth_can_rx is false., Stefan Hajnoczi, 2015/07/27
- [Qemu-devel] [PULL for-2.4 08/16] usbnet: Drop usbnet_can_receive, Stefan Hajnoczi, 2015/07/27
- [Qemu-devel] [PULL for-2.4 06/16] pcnet: Drop pcnet_can_receive, Stefan Hajnoczi, 2015/07/27
- [Qemu-devel] [PULL for-2.4 07/16] eepro100: Drop nic_can_receive, Stefan Hajnoczi, 2015/07/27
- [Qemu-devel] [PULL for-2.4 10/16] etsec: Flush queue when rx buffer is consumed, Stefan Hajnoczi, 2015/07/27
- [Qemu-devel] [PULL for-2.4 12/16] milkymist-minimac2: Flush queued packets when link comes up, Stefan Hajnoczi, 2015/07/27
- [Qemu-devel] [PULL for-2.4 11/16] mcf_fec: Drop mcf_fec_can_receive, Stefan Hajnoczi, 2015/07/27
- [Qemu-devel] [PULL for-2.4 13/16] mipsnet: Flush queued packets when receiving is enabled,
Stefan Hajnoczi <=
- [Qemu-devel] [PULL for-2.4 14/16] stellaris_enet: Flush queued packets when read done, Stefan Hajnoczi, 2015/07/27
- [Qemu-devel] [PULL for-2.4 09/16] etsec: Move etsec_can_receive into etsec_receive, Stefan Hajnoczi, 2015/07/27
- [Qemu-devel] [PULL for-2.4 15/16] dp8393x: Flush packets when link comes up, Stefan Hajnoczi, 2015/07/27
- [Qemu-devel] [PULL for-2.4 16/16] axienet: Flush queued packets when rx is done, Stefan Hajnoczi, 2015/07/27
- Re: [Qemu-devel] [PULL for-2.4 00/16] Net patches, Peter Maydell, 2015/07/27