[pxe] Fix interoperability with the 3Com DOS UNDI driver
authorMichael Brown <mcb30@etherboot.org>
Tue, 23 Jun 2009 20:54:50 +0000 (21:54 +0100)
committerMichael Brown <mcb30@etherboot.org>
Tue, 23 Jun 2009 20:54:50 +0000 (21:54 +0100)
commit4f881ae35262d4e788507a9e4712a5eae4f26310
tree01dcfce8c0234db112d8e67e8cc6fa80b9b3dde1
parentded4d3a703e42a2d57eb72467fafe8e06f32e40d
[pxe] Fix interoperability with the 3Com DOS UNDI driver

The 3Com DOS UNDI driver fails when run on top of gPXE for two
reasons: firstly because PXENV_UNDI_SET_PACKET_FILTER is unsupported,
and secondly because gPXE enters the NBP without enabling interrupts
on the NIC, and the 3Com driver never calls PXENV_UNDI_OPEN.

Fix by always returning success from PXENV_UNDI_SET_PACKET_FILTER
(which is no worse than the current situation, since we already ignore
the receive packet filter in PXENV_UNDI_OPEN), and by forcibly
enabling interrupts on the NIC within PXENV_UNDI_TRANSMIT.  The latter
is something of a hack, but avoids the need to implement a complete
base-code ISR that we would otherwise need if we were to enter the NBP
with interrupts enabled.
src/arch/i386/interface/pxe/pxe_undi.c