qemu-e2k/hw/net
Niek Linnenbank b6f03acc8f hw/net/allwinner-sun8i-emac: traverse transmit queue using TX_CUR_DESC register value
Currently the emulated EMAC for sun8i always traverses the transmit queue
from the head when transferring packets. It searches for a list of consecutive
descriptors whichs are flagged as ready for processing and transmits their payloads
accordingly. The controller stops processing once it finds a descriptor that is not
marked ready.

While the above behaviour works in most situations, it is not the same as the actual
EMAC in hardware. Actual hardware uses the TX_CUR_DESC register value to keep track
of the last position in the transmit queue and continues processing from that position
when software triggers the start of DMA processing. The currently emulated behaviour can
lead to packet loss on transmit when software fills the transmit queue with ready
descriptors that overlap the tail of the circular list.

This commit modifies the emulated EMAC for sun8i such that it processes
the transmit queue using the TX_CUR_DESC register in the same way as hardware.

Signed-off-by: Niek Linnenbank <nieklinnenbank@gmail.com>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Message-id: 20210310195820.21950-2-nieklinnenbank@gmail.com
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
2021-03-12 12:40:10 +00:00
..
can hw/net/can: Introduce Xilinx ZynqMP CAN controller 2020-12-10 11:30:44 +00:00
fsl_etsec hw/net: fsl_etsec: Reverse the RCTRL.RSF logic 2021-02-10 14:50:11 +11:00
rocker Machine queue, 2020-12-23 2021-01-01 22:57:15 +00:00
allwinner_emac.c
allwinner-sun8i-emac.c hw/net/allwinner-sun8i-emac: traverse transmit queue using TX_CUR_DESC register value 2021-03-12 12:40:10 +00:00
cadence_gem.c net: checksum: Introduce fine control over checksum type 2021-01-25 17:04:56 +08:00
dp8393x.c hw/net/dp8393x: fix integer underflow in dp8393x_do_transmit_packets() 2020-12-01 10:34:08 +00:00
e1000_regs.h
e1000.c Remove superfluous timer_del() calls 2021-01-08 15:13:38 +00:00
e1000e_core.c sysemu: Let VMChangeStateHandler take boolean 'running' argument 2021-03-09 23:13:57 +01:00
e1000e_core.h e1000e: Fix Lesser GPL version number 2020-11-15 16:45:49 +01:00
e1000e.c e1000e: Fix Lesser GPL version number 2020-11-15 16:45:49 +01:00
e1000x_common.c e1000e: Fix Lesser GPL version number 2020-11-15 16:45:49 +01:00
e1000x_common.h e1000e: Fix Lesser GPL version number 2020-11-15 16:45:49 +01:00
eepro100.c
etraxfs_eth.c
ftgmac100.c net: checksum: Introduce fine control over checksum type 2021-01-25 17:04:56 +08:00
i82596.c
i82596.h
imx_fec.c net: checksum: Introduce fine control over checksum type 2021-01-25 17:04:56 +08:00
Kconfig
lan9118.c hw/net/lan9118: Add symbolic constants for register offsets 2021-01-12 21:19:02 +00:00
lance.c
lasi_i82596.c
mcf_fec.c
meson.build hw/net: Add npcm7xx emc model 2021-03-05 15:17:34 +00:00
milkymist-minimac2.c nomaintainer: Fix Lesser GPL version number 2020-11-15 17:04:40 +01:00
mipsnet.c
msf2-emac.c
ne2000-isa.c
ne2000-pci.c
ne2000.c
ne2000.h
net_rx_pkt.c
net_rx_pkt.h
net_tx_pkt.c
net_tx_pkt.h
npcm7xx_emc.c hw/net: Add npcm7xx emc model 2021-03-05 15:17:34 +00:00
opencores_eth.c
pcnet-pci.c Remove superfluous timer_del() calls 2021-01-08 15:13:38 +00:00
pcnet.c
pcnet.h
rtl8139.c Remove superfluous timer_del() calls 2021-01-08 15:13:38 +00:00
smc91c111.c
spapr_llan.c Remove superfluous timer_del() calls 2021-01-08 15:13:38 +00:00
stellaris_enet.c
sungem.c
sunhme.c
trace-events hw/net: Add npcm7xx emc model 2021-03-05 15:17:34 +00:00
trace.h
tulip.c
tulip.h
vhost_net-stub.c
vhost_net.c
virtio-net.c virtio-net: handle zero mac for a vdpa peer 2021-03-02 06:09:54 -05:00
vmware_utils.h
vmxnet3_defs.h
vmxnet3.c
vmxnet3.h
vmxnet_debug.h
xen_nic.c net: checksum: Introduce fine control over checksum type 2021-01-25 17:04:56 +08:00
xgmac.c
xilinx_axienet.c hw/net/xilinx_axienet: Rename StreamSlave as StreamSink 2020-12-10 12:15:04 -05:00
xilinx_ethlite.c