2
0
mirror of https://github.com/xcat2/xcat-dep.git synced 2024-11-27 03:39:11 +00:00
xcat-dep/gpxe/gpxe-0.9.7-noopenworkaround.patch
jbjohnso a60d90375d -Add several patches from gPXE git tree (all of this checkin is from gPXE git tree)
-Add workaround for use of Etherboot UNDI stack from git tree
-Add workaround for UNDI drivers that do not call the undi open call before attempting to use defive from git tree
-Change ProxyDHCP broadcast to go to port 67 (from git tree)
-Enable use of DHCP options when BOOTP fields are not present
-Report UNDI device to driver as a more standard interface type
-Workaround malformed OACK packets sent by certain PXE servers
-Avoid a spurious IRQ
-Add fix for e1000 driver
-Have the UNDI stack report UNDI capabilities
-Fix some places where interrupt handlers did not use iret to return
2009-08-22 02:03:07 +00:00

37 lines
1.3 KiB
Diff

diff -urN gpxe-0.9.7/src/arch/i386/interface/pxe/pxe_undi.c gpxe-0.9.7-noopenworkaround/src/arch/i386/interface/pxe/pxe_undi.c
--- gpxe-0.9.7/src/arch/i386/interface/pxe/pxe_undi.c 2009-08-21 21:05:12.000000000 -0400
+++ gpxe-0.9.7-noopenworkaround/src/arch/i386/interface/pxe/pxe_undi.c 2009-08-21 21:04:39.000000000 -0400
@@ -209,6 +209,12 @@
DBG ( "PXENV_UNDI_TRANSMIT" );
+ /* Forcibly enable interrupts at this point, to work around
+ * callers that never call PXENV_UNDI_OPEN before attempting
+ * to use the UNDI API.
+ */
+ netdev_irq ( pxe_netdev, 1 );
+
/* Identify network-layer protocol */
switch ( undi_transmit->Protocol ) {
case P_IP: net_protocol = &ipv4_protocol; break;
@@ -340,10 +346,17 @@
PXENV_EXIT_t
pxenv_undi_set_packet_filter ( struct s_PXENV_UNDI_SET_PACKET_FILTER
*undi_set_packet_filter ) {
+
DBG ( "PXENV_UNDI_SET_PACKET_FILTER" );
- undi_set_packet_filter->Status = PXENV_STATUS_UNSUPPORTED;
- return PXENV_EXIT_FAILURE;
+ /* Pretend that we succeeded, otherwise the 3Com DOS UNDI
+ * driver refuses to load. (We ignore the filter value in the
+ * PXENV_UNDI_OPEN call anyway.)
+ */
+ DBG ( " %02x", undi_set_packet_filter->filter );
+ undi_set_packet_filter->Status = PXENV_STATUS_SUCCESS;
+
+ return PXENV_EXIT_SUCCESS;
}
/* PXENV_UNDI_GET_INFORMATION