From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34901) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZJipA-000467-R2 for qemu-devel@nongnu.org; Mon, 27 Jul 2015 09:52:16 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZJip9-000639-RQ for qemu-devel@nongnu.org; Mon, 27 Jul 2015 09:52:12 -0400 Received: from mx1.redhat.com ([209.132.183.28]:33658) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZJip9-00062x-NS for qemu-devel@nongnu.org; Mon, 27 Jul 2015 09:52:11 -0400 From: Stefan Hajnoczi Date: Mon, 27 Jul 2015 14:51:49 +0100 Message-Id: <1438005121-31153-5-git-send-email-stefanha@redhat.com> In-Reply-To: <1438005121-31153-1-git-send-email-stefanha@redhat.com> References: <1438005121-31153-1-git-send-email-stefanha@redhat.com> Subject: [Qemu-devel] [PULL for-2.4 04/16] hw/net: fix mcf_fec driver receiver List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Peter Maydell , Stefan Hajnoczi , Greg Ungerer From: Greg Ungerer The network mcf_fec driver emulated receive side method is returning a result of 0 causing the network layer to disable receive for this emulated device. This results in the guest only ever receiving one packet. Fix the recieve side processing to return the number of bytes that we passed back through to the guest. Signed-off-by: Greg Ungerer Reviewed-by: Stefan Hajnoczi Message-id: 1435296436-12152-5-git-send-email-gerg@uclinux.org Signed-off-by: Stefan Hajnoczi --- hw/net/mcf_fec.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/hw/net/mcf_fec.c b/hw/net/mcf_fec.c index ea59017..e63af1b 100644 --- a/hw/net/mcf_fec.c +++ b/hw/net/mcf_fec.c @@ -413,6 +413,7 @@ static ssize_t mcf_fec_receive(NetClientState *nc, const uint8_t *buf, size_t si uint32_t buf_addr; uint8_t *crc_ptr; unsigned int buf_len; + size_t retsize; DPRINTF("do_rx len %d\n", size); if (!s->rx_enabled) { @@ -432,6 +433,7 @@ static ssize_t mcf_fec_receive(NetClientState *nc, const uint8_t *buf, size_t si flags |= FEC_BD_LG; } addr = s->rx_descriptor; + retsize = size; while (size > 0) { mcf_fec_read_bd(&bd, addr); if ((bd.flags & FEC_BD_E) == 0) { @@ -476,7 +478,7 @@ static ssize_t mcf_fec_receive(NetClientState *nc, const uint8_t *buf, size_t si s->rx_descriptor = addr; mcf_fec_enable_rx(s); mcf_fec_update(s); - return size; + return retsize; } static const MemoryRegionOps mcf_fec_ops = { -- 2.4.3