|
@@ -211,6 +211,12 @@ PXENV_EXIT_t pxenv_undi_transmit ( struct s_PXENV_UNDI_TRANSMIT
|
211
|
211
|
|
212
|
212
|
DBG ( "PXENV_UNDI_TRANSMIT" );
|
213
|
213
|
|
|
214
|
+ /* Forcibly enable interrupts at this point, to work around
|
|
215
|
+ * callers that never call PXENV_UNDI_OPEN before attempting
|
|
216
|
+ * to use the UNDI API.
|
|
217
|
+ */
|
|
218
|
+ netdev_irq ( pxe_netdev, 1 );
|
|
219
|
+
|
214
|
220
|
/* Identify network-layer protocol */
|
215
|
221
|
switch ( undi_transmit->Protocol ) {
|
216
|
222
|
case P_IP: net_protocol = &ipv4_protocol; break;
|
|
@@ -341,10 +347,17 @@ pxenv_undi_set_station_address ( struct s_PXENV_UNDI_SET_STATION_ADDRESS
|
341
|
347
|
PXENV_EXIT_t
|
342
|
348
|
pxenv_undi_set_packet_filter ( struct s_PXENV_UNDI_SET_PACKET_FILTER
|
343
|
349
|
*undi_set_packet_filter ) {
|
|
350
|
+
|
344
|
351
|
DBG ( "PXENV_UNDI_SET_PACKET_FILTER" );
|
345
|
352
|
|
346
|
|
- undi_set_packet_filter->Status = PXENV_STATUS_UNSUPPORTED;
|
347
|
|
- return PXENV_EXIT_FAILURE;
|
|
353
|
+ /* Pretend that we succeeded, otherwise the 3Com DOS UNDI
|
|
354
|
+ * driver refuses to load. (We ignore the filter value in the
|
|
355
|
+ * PXENV_UNDI_OPEN call anyway.)
|
|
356
|
+ */
|
|
357
|
+ DBG ( " %02x", undi_set_packet_filter->filter );
|
|
358
|
+ undi_set_packet_filter->Status = PXENV_STATUS_SUCCESS;
|
|
359
|
+
|
|
360
|
+ return PXENV_EXIT_SUCCESS;
|
348
|
361
|
}
|
349
|
362
|
|
350
|
363
|
/* PXENV_UNDI_GET_INFORMATION
|