xemu/hw
Aaron Hill 88e1b59ee3 Set ENET_BD_BDU in I.MX FEC controller
This commit properly sets the ENET_BD_BDU flag once the emulated FEC controller
has finished processing the last descriptor. This is done for both transmit
and receive descriptors.

This allows the QNX 7.0.0 BSP for the Sabrelite board (which can be
found at http://blackberry.qnx.com/en/developers/bsp) to properly
control the FEC. Without this patch, the BSP ethernet driver will never
re-use FEC descriptors, as the unset ENET_BD_BDU flag will cause
it to believe that the descriptors are still in use by the NIC.

Note that Linux does not appear to use this field at all, and is
unaffected by this patch.

Without this patch, QNX will think that the NIC is still processing its
transaction descriptors, and won't send any more data over the network.

For reference:

On page 1192 of the I.MX 6DQ reference manual revision (Rev. 5, 06/2018),
which can be found at https://www.nxp.com/products/processors-and-microcontrollers/arm-based-processors-and-mcus/i.mx-applications-processors/i.mx-6-processors/i.mx-6quad-processors-high-performance-3d-graphics-hd-video-arm-cortex-a9-core:i.MX6Q?&tab=Documentation_Tab&linkline=Application-Note

the 'BDU' field is described as follows for the 'Enhanced transmit
buffer descriptor':

'Last buffer descriptor update done. Indicates that the last BD data has been updated by
uDMA. This field is written by the user (=0) and uDMA (=1).'

The same description is used for the receive buffer descriptor.

Signed-off-by: Aaron Hill <aa1ronham@gmail.com>
Message-id: 20190805142417.10433-1-aaron.hill@alertinnovation.com
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
2019-08-16 14:02:48 +01:00
..
9pfs xen: Import other xen/io/*.h 2019-06-24 10:42:30 +01:00
acpi hw/acpi: extract acpi_add_rom_blob() 2019-06-16 16:16:52 -04:00
adc Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
alpha hw: Replace global smp variables with MachineState for all remaining archs 2019-07-05 17:08:03 -03:00
arm hw/arm/boot: Further improve initrd positioning code 2019-07-26 16:17:56 +01:00
audio Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
block fdc: Fix inserting read-only media in empty drive 2019-07-30 17:31:58 +02:00
bt Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
char xen: Import other xen/io/*.h 2019-06-24 10:42:30 +01:00
core compat: disable edid on virtio-gpu base device 2019-08-06 15:45:59 +01:00
cpu general: Replace global smp variables with smp machine properties 2019-07-05 17:07:36 -03:00
cris Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
display display/bochs: fix pcie support 2019-08-12 16:36:41 +01:00
dma pl330: fix vmstate description 2019-07-26 15:40:27 +01:00
gpio Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
hppa hw: Replace global smp variables with MachineState for all remaining archs 2019-07-05 17:08:03 -03:00
hyperv Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
i2c hw/i2c/bitbang_i2c: Use in-place rather than malloc'd bitbang_i2c_interface struct 2019-07-03 10:51:35 +02:00
i386 i386/acpi: show PCI Express bus on pxb-pcie expanders 2019-07-25 04:17:35 -04:00
ide Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
input stellaris_input: Fix vmstate description of buttons field 2019-07-26 16:17:56 +01:00
intc spapr/xive: Fix migration of hot-plugged CPUs 2019-08-13 16:50:30 +10:00
ipack Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
ipmi Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
isa Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
lm32 hw/lm32/Kconfig: Milkymist One provides a USB 1.1 Controller 2019-07-15 20:58:37 +02:00
m68k Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
mem pc-dimm: fix crash when invalid slot number is used 2019-07-29 16:57:27 -04:00
microblaze Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
mips hw: Replace global smp variables with MachineState for all remaining archs 2019-07-05 17:08:03 -03:00
misc hw/misc/zynq_slcr: use standard register definition 2019-08-16 14:02:48 +01:00
moxie Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
net Set ENET_BD_BDU in I.MX FEC controller 2019-08-16 14:02:48 +01:00
nios2 Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
nvram Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
openrisc hw: Replace global smp variables with MachineState for all remaining archs 2019-07-05 17:08:03 -03:00
pci pcie: minor cleanups for slot control/status 2019-07-01 09:17:30 -04:00
pci-bridge pcie_root_port: Allow ACS to be disabled 2019-07-30 12:07:07 -04:00
pci-host i.mx7d: pci: Update PCI IRQ mapping to match HW 2019-07-01 17:28:59 +01:00
pcmcia Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
ppc spapr: Reset CAS & IRQ subsystem after devices 2019-08-13 15:59:21 +10:00
rdma Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
riscv riscv/boot: Fixup the RISC-V firmware warning 2019-07-26 16:03:48 -07:00
s390x s390x/pci: add some fallthrough annotations 2019-07-18 11:29:50 +02:00
scsi scsi-cd: Fix inserting read-only media in empty drive 2019-07-30 13:21:38 +02:00
sd sd: Fix out-of-bounds assertions 2019-06-21 13:25:29 +02:00
semihosting semihosting: split console_out into string and char versions 2019-06-12 17:53:22 +01:00
sh4 Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
smbios machine: Refactor smp-related call chains to pass MachineState 2019-07-05 17:07:36 -03:00
sparc hw: Replace global smp variables with MachineState for all remaining archs 2019-07-05 17:08:03 -03:00
sparc64 hw: Replace global smp variables with MachineState for all remaining archs 2019-07-05 17:08:03 -03:00
ssi hw/ssi/mss-spi: Avoid crash when reading empty RX FIFO 2019-07-15 14:17:03 +01:00
timer pl031: Correctly migrate state when using -rtc clock=host 2019-07-15 14:17:04 +01:00
tpm tpm_emulator: Translate TPM error codes to strings 2019-07-25 11:37:10 -04:00
tricore Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
unicore32 target/unicore32: Use env_cpu, env_archcpu 2019-06-10 07:03:42 -07:00
usb hw/usb/Kconfig: USB_XHCI_NEC requires USB_XHCI 2019-07-15 20:58:37 +02:00
vfio vfio-ccw: Test vfio_set_irq_signaling() return value 2019-07-08 12:10:37 +02:00
virtio Revert "hw: report invalid disable-legacy|modern usage for virtio-1-only devs" 2019-07-29 16:57:27 -04:00
watchdog aspeed: Link SCU to the watchdog 2019-07-01 17:29:00 +01:00
xen xen: Import other xen/io/*.h 2019-06-24 10:42:30 +01:00
xenpv xen: Replace few mentions of xend by libxl 2019-01-14 13:45:40 +00:00
xtensa hw: Replace global smp variables with MachineState for all remaining archs 2019-07-05 17:08:03 -03:00
Kconfig semihosting: introduce CONFIG_SEMIHOSTING 2019-05-28 10:28:50 +01:00
Makefile.objs Makefile: do not repeat $(CONFIG_SOFTMMU) in hw/Makefile.objs 2019-07-15 20:58:37 +02:00