xemu/hw/net
Peter Maydell 7d09facec7 hw/net/stellaris_enet: Restructure tx_fifo code to avoid buffer overrun
The current tx_fifo code has a corner case where the guest can overrun
the fifo buffer: if automatic CRCs are disabled we allow the guest to write
the CRC word even if there isn't actually space for it in the FIFO.
The datasheet is unclear about exactly how the hardware deals with this
situation; the most plausible answer seems to be that the CRC word is
just lost.

Implement this fix by separating the "can we stuff another word in the
FIFO" logic from the "should we transmit the packet now" check. This
also moves us closer to the real hardware, which has a number of ways
it can be configured to trigger sending the packet, some of which we
don't implement.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Cc: qemu-stable@nongnu.org
(cherry picked from commit 5c10495ab1)
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
2014-06-25 15:33:30 -05:00
..
Makefile.objs hw: move NICs to hw/net/, configure via default-configs/ 2013-04-08 18:13:13 +02:00
cadence_gem.c cadence_gem: QOM cast cleanup 2013-07-29 21:06:59 +02:00
dp8393x.c aio / timers: Switch entire codebase to the new timer API 2013-08-22 19:14:24 +02:00
e1000.c Revert "e1000/rtl8139: update HMP NIC when every bit is written" 2013-11-21 16:28:27 +02:00
e1000_regs.h hw: move private headers to hw/ subdirectories. 2013-04-08 18:13:16 +02:00
eepro100.c hw: set interrupts using pci irq wrappers 2013-10-14 17:11:45 +03:00
etraxfs_eth.c etraxfs_eth: Rename fs_eth to ETRAXFSEthState 2013-07-29 21:06:59 +02:00
lan9118.c aio / timers: Switch entire codebase to the new timer API 2013-08-22 19:14:24 +02:00
lance.c lance: QOM cast cleanup 2013-07-29 21:06:59 +02:00
mcf_fec.c memory: add owner argument to initialization functions 2013-07-04 17:42:44 +02:00
milkymist-minimac2.c milkymist-minimac2: QOM cast cleanup 2013-07-29 21:06:59 +02:00
mipsnet.c mipsnet: QOM cast cleanup 2013-07-29 21:07:02 +02:00
ne2000-isa.c devices: Associate devices to their logical category 2013-07-29 10:37:09 -05:00
ne2000.c bswap.h: Remove le32_to_cpupu() 2013-11-05 19:57:46 -08:00
ne2000.h ne2000: pass device to ne2000_setup_io, use it as owner 2013-07-04 17:42:46 +02:00
opencores_eth.c opencores_eth: QOM cast cleanup 2013-07-29 21:07:02 +02:00
pcnet-pci.c pci, pc, acpi fixes, enhancements 2013-10-31 16:58:32 +01:00
pcnet.c aio / timers: Switch entire codebase to the new timer API 2013-08-22 19:14:24 +02:00
pcnet.h hw: move private headers to hw/ subdirectories. 2013-04-08 18:13:16 +02:00
rtl8139.c Revert "e1000/rtl8139: update HMP NIC when every bit is written" 2013-11-21 16:28:27 +02:00
smc91c111.c smc91c111: Fix receive starvation 2013-11-15 13:25:39 +01:00
spapr_llan.c spapr: add vio-bus devices to categories 2013-11-08 04:33:18 +01:00
stellaris_enet.c hw/net/stellaris_enet: Restructure tx_fifo code to avoid buffer overrun 2014-06-25 15:33:30 -05:00
vhost_net.c virtio: remove virtiobindings. 2013-04-24 11:50:20 -05:00
virtio-net.c virtio-net: Do not filter VLANs without F_CTRL_VLAN 2014-06-25 15:28:50 -05:00
vmware_utils.h hw: move target-independent files to subdirectories 2013-04-08 18:13:12 +02:00
vmxnet3.c hw/vmxnet3: set interrupts using pci irq wrappers 2013-10-14 17:11:45 +03:00
vmxnet3.h vmxnet3: Eliminate __packed redefined warning 2013-09-06 17:25:55 +02:00
vmxnet_debug.h hw: move target-independent files to subdirectories 2013-04-08 18:13:12 +02:00
vmxnet_rx_pkt.c hw: move target-independent files to subdirectories 2013-04-08 18:13:12 +02:00
vmxnet_rx_pkt.h hw: move target-independent files to subdirectories 2013-04-08 18:13:12 +02:00
vmxnet_tx_pkt.c misc: Use g_assert_not_reached for code which is expected to be unreachable 2013-07-27 11:22:54 +04:00
vmxnet_tx_pkt.h hw: move target-independent files to subdirectories 2013-04-08 18:13:12 +02:00
xen_nic.c hw: move target-independent files to subdirectories 2013-04-08 18:13:12 +02:00
xgmac.c xgmac: QOM cast cleanup 2013-07-29 21:07:00 +02:00
xilinx_axienet.c qom: Pass available size to object_initialize() 2013-08-30 21:15:44 +02:00
xilinx_ethlite.c xilinx_ethlite: QOM cast cleanup 2013-07-29 21:07:00 +02:00