aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnthony Liguori <aliguori@us.ibm.com>2012-06-05 09:05:51 +0800
committerAnthony Liguori <aliguori@us.ibm.com>2012-06-05 09:05:51 +0800
commit721589dd74e7d4771a5b996cfd8e1f79fc10f3a3 (patch)
tree2a32bd2cba96a01573846aa50a3fcf419f3a892e
parent8cc9b43f7c5f826b39af4b012ad89bb55faac29c (diff)
Revert "Revert "rtl8139: do the network/host communication only in normal operating mode""
This reverts commit 9c92bf7f6c3f675e60b8ba8a5287bb88ea1eac36. Per Jason's request. Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
-rw-r--r--hw/rtl8139.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/hw/rtl8139.c b/hw/rtl8139.c
index 2413bc3d25..eb22d04fad 100644
--- a/hw/rtl8139.c
+++ b/hw/rtl8139.c
@@ -791,6 +791,9 @@ static int rtl8139_can_receive(VLANClientState *nc)
return 1;
if (!rtl8139_receiver_enabled(s))
return 1;
+ /* network/host communication happens only in normal mode */
+ if ((s->Cfg9346 & Chip9346_op_mask) != Cfg9346_Normal)
+ return 0;
if (rtl8139_cp_receiver_enabled(s)) {
/* ??? Flow control not implemented in c+ mode.
@@ -833,6 +836,12 @@ static ssize_t rtl8139_do_receive(VLANClientState *nc, const uint8_t *buf, size_
return -1;
}
+ /* check whether we are in normal mode */
+ if ((s->Cfg9346 & Chip9346_op_mask) != Cfg9346_Normal) {
+ DPRINTF("not in normal op mode\n");
+ return -1;
+ }
+
/* XXX: check this */
if (s->RxConfig & AcceptAllPhys) {
/* promiscuous: receive all */