From 721589dd74e7d4771a5b996cfd8e1f79fc10f3a3 Mon Sep 17 00:00:00 2001 From: Anthony Liguori Date: Tue, 5 Jun 2012 09:05:51 +0800 Subject: [PATCH] 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 --- hw/rtl8139.c | 9 +++++++++ 1 file changed, 9 insertions(+) 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 */