rtl8139: do the network/host communication only in normal operating mode
commitff71f2e8cacefae99179993204172bc65e4303df
authorJason Wang <jasowang@redhat.com>
Mon, 5 Mar 2012 03:09:08 +0000 (5 11:09 +0800)
committerMichael S. Tsirkin <mst@redhat.com>
Thu, 15 Mar 2012 23:04:51 +0000 (16 01:04 +0200)
treee5793810fac0ff2597c02aba8ddfc393603a1782
parenteb46c5eda7d8b38c1407dd55f67cf4a6aa3b7b23
rtl8139: do the network/host communication only in normal operating mode

According the spec, the card works in network/host communication mode only when
both EEM1 and EEM0 are unset in 93C46 Command Register (normal op
mode). So this patch check these bits before trying to receive packets.

As some guest driver (such as linux, see cp_init_hw() in 8139cp.c)
allocate rx ring after the recevier were enabled, this would cause our
emulation codes tries to dma into guest memory when the rx descriptor
is not properly configured. This patch fixes this.

Signed-off-by: Jason Wang <jasowang@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
hw/rtl8139.c