diff options
author | Peter Crosthwaite <crosthwaitepeter@gmail.com> | 2015-09-10 21:24:12 -0700 |
---|---|---|
committer | Stefan Hajnoczi <stefanha@redhat.com> | 2015-09-17 12:36:03 +0100 |
commit | 271a234a2359975101396916f37f3c7d347c61b8 (patch) | |
tree | 0686818d84e239ea437ea0171db41f8d471b9cc6 /hw | |
parent | e62cb54cd5d08dc1c029f254b0d18faa138971b2 (diff) | |
download | hqemu-271a234a2359975101396916f37f3c7d347c61b8.zip hqemu-271a234a2359975101396916f37f3c7d347c61b8.tar.gz |
net: smc91c111: flush packets on RCR register changes
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 <crosthwaite.peter@gmail.com>
Reviewed-by: Fam Zheng <famz@redhat.com>
Tested-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Message-id: b114d4c96f4afbdaa15f1361d9c07e3021755915.1441873621.git.crosthwaite.peter@gmail.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Diffstat (limited to 'hw')
-rw-r--r-- | hw/net/smc91c111.c | 1 |
1 files changed, 1 insertions, 0 deletions
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 */ |