From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:46118) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZcXbn-0005Pv-M8 for qemu-devel@nongnu.org; Thu, 17 Sep 2015 07:44:12 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZcXbm-0001O9-Qu for qemu-devel@nongnu.org; Thu, 17 Sep 2015 07:44:11 -0400 Received: from mx1.redhat.com ([209.132.183.28]:38274) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZcXbm-0001Nj-Lq for qemu-devel@nongnu.org; Thu, 17 Sep 2015 07:44:10 -0400 From: Stefan Hajnoczi Date: Thu, 17 Sep 2015 12:44:01 +0100 Message-Id: <1442490241-17702-5-git-send-email-stefanha@redhat.com> In-Reply-To: <1442490241-17702-1-git-send-email-stefanha@redhat.com> References: <1442490241-17702-1-git-send-email-stefanha@redhat.com> Subject: [Qemu-devel] [PULL 4/4] net: smc91c111: flush packets on RCR register changes List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Peter Maydell , Peter Crosthwaite , Stefan Hajnoczi , Peter Crosthwaite From: Peter Crosthwaite The SOFT_RST or RXEN in the control register can be used as a condition to unblock the net layer via can_receive(). So check for possible flushes on RCR changes. This will drop all pending packets on soft reset or disable which is the functional intent of the can_receive() logic. Signed-off-by: Peter Crosthwaite Reviewed-by: Fam Zheng Tested-by: Richard Purdie Message-id: b114d4c96f4afbdaa15f1361d9c07e3021755915.1441873621.git.crosthwaite.peter@gmail.com Signed-off-by: Stefan Hajnoczi --- hw/net/smc91c111.c | 1 + 1 file changed, 1 insertion(+) diff --git a/hw/net/smc91c111.c b/hw/net/smc91c111.c index 8fc3deb..c19cdd1 100644 --- a/hw/net/smc91c111.c +++ b/hw/net/smc91c111.c @@ -331,6 +331,7 @@ static void smc91c111_writeb(void *opaque, hwaddr offset, if (s->rcr & RCR_SOFT_RST) { smc91c111_reset(DEVICE(s)); } + smc91c111_flush_queued_packets(s); return; case 10: case 11: /* RPCR */ /* Ignored */ -- 2.4.3