qemu-e2k/hw/net
Stefan Hajnoczi bd142b2391 rtl8139: avoid clobbering tx descriptor bits
The device turns the Tx Descriptor into a Tx Status descriptor after
fully reading the descriptor. This involves clearing Tx Own (bit 31) to
indicate that the driver has ownership of the descriptor again as well
as several other bits.

The code keeps the first dword of the Tx Descriptor in the txdw0 local
variable. txdw0 is reused to build the first word of the Tx Status
descriptor. Later on the code uses txdw0 again, incorrectly assuming
that it still contains the first dword of the Tx Descriptor. The tx
offloading code misbehaves because it sees bogus bits in txdw0.

Use a separate local variable for Tx Status and preserve Tx Descriptor
in txdw0.

Acked-by: Jason Wang <jasowang@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Message-Id: <20221117165554.1773409-2-stefanha@redhat.com>
2022-11-21 09:28:43 -05:00
..
can net: Replace TAB indentations with spaces 2022-11-11 09:39:03 +01:00
fsl_etsec hw/net/fsl_etsec/etsec: Remove obsolete and unused etsec_create() 2022-06-11 11:44:50 +02:00
rocker msix: Assert that specified vector is in range 2022-11-07 14:08:17 -05:00
allwinner_emac.c
allwinner-sun8i-emac.c
cadence_gem.c
dp8393x.c
e1000_regs.h net: Replace TAB indentations with spaces 2022-11-11 09:39:03 +01:00
e1000.c e1000: set RX descriptor status in a separate operation 2022-07-06 11:39:09 +08:00
e1000e_core.c e1000e: set RX desc status with DD flag in a separate operation 2022-09-27 15:12:08 +08:00
e1000e_core.h
e1000e.c msix: Assert that specified vector is in range 2022-11-07 14:08:17 -05:00
e1000x_common.c
e1000x_common.h
eepro100.c
etraxfs_eth.c
ftgmac100.c
i82596.c
i82596.h
imx_fec.c Trivial: 3 char repeat typos 2022-06-28 11:06:02 +02:00
Kconfig
lan9118.c hw/net/lan9118: Signal TSFL_INT flag when TX FIFO reaches specified level 2022-09-22 16:38:28 +01:00
lance.c
lasi_i82596.c
mcf_fec.c net: Replace TAB indentations with spaces 2022-11-11 09:39:03 +01:00
meson.build meson: use have_vhost_* variables to pick sources 2022-05-07 07:46:58 +02:00
mipsnet.c
msf2-emac.c
mv88w8618_eth.c
ne2000-isa.c
ne2000-pci.c
ne2000.c net: Replace TAB indentations with spaces 2022-11-11 09:39:03 +01:00
ne2000.h
net_rx_pkt.c
net_rx_pkt.h
net_tx_pkt.c
net_tx_pkt.h
npcm7xx_emc.c
opencores_eth.c
pcnet-pci.c
pcnet.c net: Replace TAB indentations with spaces 2022-11-11 09:39:03 +01:00
pcnet.h net: Replace TAB indentations with spaces 2022-11-11 09:39:03 +01:00
rtl8139.c rtl8139: avoid clobbering tx descriptor bits 2022-11-21 09:28:43 -05:00
smc91c111.c
spapr_llan.c
stellaris_enet.c
sungem.c
sunhme.c
trace-events
trace.h
tulip.c tulip: Remove unused variable 2022-11-11 09:12:10 +01:00
tulip.h
vhost_net-stub.c vhost-net: vhost-kernel: introduce vhost_net_virtqueue_restart() 2022-11-07 13:12:20 -05:00
vhost_net.c vhost: Change the sequence of device start 2022-11-07 14:08:17 -05:00
virtio-net.c virtio-net: fix for heap-buffer-overflow 2022-11-10 10:18:55 -05:00
vmware_utils.h
vmxnet3_defs.h
vmxnet3.c msix: Assert that specified vector is in range 2022-11-07 14:08:17 -05:00
vmxnet3.h
vmxnet_debug.h
xen_nic.c net: introduce qemu_set_info_str() function 2022-10-28 13:28:52 +08:00
xgmac.c
xilinx_axienet.c
xilinx_ethlite.c