xemu/hw/net
Kevin Wolf c89d416a2b e1000e: Don't zero out buffer address in rx descriptor
The e1000e emulation zeroes out any used rx descriptor and then writes a
completely newly constructed value there. By doing this, it doesn't only
update the write-back area of the descriptors (as it's supposed to do),
but it also clears the buffer address, which real hardware doesn't do.

The spec explicitly mentions in chapter 7.1.8 that it is valid for a
driver to reuse a descriptor and only update the status field while
doing so, i.e. reusing the old buffer address:

    If software statically allocates buffers, and uses memory read to
    check for completed descriptors, it simply has to zero the status
    byte in the descriptor to make it ready for reuse by hardware.

This patch fixes the behaviour to leave the buffer address in
descriptors unchanged even after the descriptor has been used.

Signed-off-by: Kevin Wolf <mail@kevin-wolf.de>
Reviewed-by: Dmitry Fleytman <dmitry@daynix.com>
Signed-off-by: Jason Wang <jasowang@redhat.com>
2016-10-26 09:57:59 +08:00
..
fsl_etsec hw/ptimer: Introduce timer policy feature 2016-09-22 18:13:06 +01:00
rocker net: rocker: set limit to DMA buffer size 2016-10-26 09:57:59 +08:00
Makefile.objs e1000e: fix building without CONFIG_VMXNET3_PCI 2016-07-18 16:17:02 +08:00
allwinner_emac.c qapi: Change Netdev into a flat union 2016-07-19 20:18:02 +02:00
cadence_gem.c cadence_gem: Fix priority queue out of bounds access 2016-10-04 13:28:09 +01:00
dp8393x.c qapi: Change Netdev into a flat union 2016-07-19 20:18:02 +02:00
e1000.c qapi: Change Netdev into a flat union 2016-07-19 20:18:02 +02:00
e1000_regs.h Clean up header guards that don't match their file name 2016-07-12 16:19:16 +02:00
e1000e.c e1000e: Flush all receive queues on receive enable 2016-09-27 17:54:22 +08:00
e1000e_core.c e1000e: Don't zero out buffer address in rx descriptor 2016-10-26 09:57:59 +08:00
e1000e_core.h e1000e: Flush all receive queues on receive enable 2016-09-27 17:54:22 +08:00
e1000x_common.c hw/net/e1000: Don't use *_to_cpup() 2016-06-27 16:39:56 +01:00
e1000x_common.h e1000: Move out code that will be reused in e1000e 2016-06-02 10:42:29 +08:00
eepro100.c net: eepro100: fix memory leak in device uninit 2016-10-26 09:57:59 +08:00
etraxfs_eth.c qapi: Change Netdev into a flat union 2016-07-19 20:18:02 +02:00
imx_fec.c imx_fec: fix error in qemu_send_packet argument 2016-09-27 17:54:22 +08:00
lan9118.c hw/ptimer: Introduce timer policy feature 2016-09-22 18:13:06 +01:00
lance.c qapi: Change Netdev into a flat union 2016-07-19 20:18:02 +02:00
mcf_fec.c mcf_fec: fix error in qemu_send_packet argument 2016-09-27 17:54:22 +08:00
milkymist-minimac2.c qapi: Change Netdev into a flat union 2016-07-19 20:18:02 +02:00
mipsnet.c qapi: Change Netdev into a flat union 2016-07-19 20:18:02 +02:00
ne2000-isa.c qapi: Change Netdev into a flat union 2016-07-19 20:18:02 +02:00
ne2000.c qapi: Change Netdev into a flat union 2016-07-19 20:18:02 +02:00
ne2000.h Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
net_rx_pkt.c net_pkt: Extend packet abstraction as required by e1000e functionality 2016-06-02 10:42:28 +08:00
net_rx_pkt.h net_pkt: Extend packet abstraction as required by e1000e functionality 2016-06-02 10:42:28 +08:00
net_tx_pkt.c net: vmxnet: use g_new for pkt initialisation 2016-08-18 12:05:18 +08:00
net_tx_pkt.h clean-includes: run it once more 2016-06-16 18:39:03 +02:00
opencores_eth.c qapi: Change Netdev into a flat union 2016-07-19 20:18:02 +02:00
pcnet-pci.c qapi: Change Netdev into a flat union 2016-07-19 20:18:02 +02:00
pcnet.c net: pcnet: fix source formatting and indentation 2016-10-26 09:57:59 +08:00
pcnet.h Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
rtl8139.c qapi: Change Netdev into a flat union 2016-07-19 20:18:02 +02:00
smc91c111.c qapi: Change Netdev into a flat union 2016-07-19 20:18:02 +02:00
spapr_llan.c spapr_llan: convert to trace framework instead of DPRINTF 2016-09-23 10:29:40 +10:00
stellaris_enet.c qapi: Change Netdev into a flat union 2016-07-19 20:18:02 +02:00
trace-events e1000e: Fix CTRL_EXT.EIAME behavior 2016-09-27 17:54:22 +08:00
vhost_net.c vhost: check for vhost_ops before using. 2016-08-10 17:47:29 +03:00
virtio-net.c virtio: cleanup VMSTATE_VIRTIO_DEVICE 2016-10-10 02:21:43 +03:00
vmware_utils.h vmxnet3: Fix reading/writing guest memory specially when behind an IOMMU 2016-06-28 10:13:57 +08:00
vmxnet3.c net: vmxnet3: check for device_active before write 2016-08-09 15:24:56 +08:00
vmxnet3.h Clean up ill-advised or unusual header guards 2016-07-12 16:20:46 +02:00
vmxnet_debug.h Clean up ill-advised or unusual header guards 2016-07-12 16:20:46 +02:00
xen_nic.c qapi: Change Netdev into a flat union 2016-07-19 20:18:02 +02:00
xgmac.c qapi: Change Netdev into a flat union 2016-07-19 20:18:02 +02:00
xilinx_axienet.c qapi: Change Netdev into a flat union 2016-07-19 20:18:02 +02:00
xilinx_ethlite.c hw/net: Fix a heap overflow in xlnx.xps-ethernetlite 2016-08-09 15:27:18 +08:00