iPXE - Open Source Boot Firmware

[intelxl] Choose to operate in non-PXE mode
authorMichael Brown <mcb30@ipxe.org>
Wed, 24 Apr 2019 21:11:14 +0000 (22:11 +0100)
committerMichael Brown <mcb30@ipxe.org>
Sat, 27 Apr 2019 19:26:18 +0000 (20:26 +0100)
commit92b46b7858c8bf99abc9007c550be72d8eb4f132
tree63213f8e0e192b204fbe117f9469687588ecbc5e
parent3078a952a83d8af37f40a82e93461c087efa7e5a
[intelxl] Choose to operate in non-PXE mode

The physical function defaults to operating in "PXE mode" after a
power-on reset.  In this mode, receive descriptors are fetched and
written back as single descriptors.  In normal (non-PXE mode)
operation, receive descriptors are fetched and written back only as
complete cachelines unless an interrupt is raised.

There is no way to return to PXE mode from non-PXE mode, and there is
no way for the virtual function driver to operate in PXE mode.

Choose to operate in non-PXE mode.  This requires us to trick the
hardware into believing that it is raising an interrupt, so that it
will not defer writing back receive descriptors until a complete
cacheline (i.e. four packets) have been consumed.  We do so by
configuring the hardware to use MSI-X with a dummy target location in
place of the usual APIC register.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/drivers/net/intelxl.c
src/drivers/net/intelxl.h