by PXE and NBI) and UNDI packets (as used by undinet and UNDI).
/**
* @file
*
- * DHCP parameter block provided to external programs in base memory
+ * Packet buffer in base memory. Used by various components which
+ * need to pass packets to and from external real-mode code.
*
*/
-#include <dhcp_basemem.h>
+#include <basemem_packet.h>
-#undef dhcp_basemem
-char __data16_array ( dhcp_basemem, [DHCP_BASEMEM_LEN] );
+#undef basemem_packet
+char __data16_array ( basemem_packet, [BASEMEM_PACKET_LEN] );
#include <pic8259.h>
#include <biosint.h>
#include <pnpbios.h>
+#include <basemem_packet.h>
#include <gpxe/iobuf.h>
#include <gpxe/netdevice.h>
#include <gpxe/if_ether.h>
*****************************************************************************
*/
-/** Maximum length of a packet transmitted via the UNDI API */
-#define UNDI_IOB_LEN 1514
-
-/** UNDI I/O buffer */
-static char __data16_array ( undinet_iob, [UNDI_IOB_LEN] );
-#define undinet_iob __use_data16 ( undinet_iob )
-
/** UNDI transmit buffer descriptor */
static struct s_PXENV_UNDI_TBD __data16 ( undinet_tbd );
#define undinet_tbd __use_data16 ( undinet_tbd )
int rc;
/* Copy packet to UNDI I/O buffer */
- if ( len > sizeof ( undinet_iob ) )
- len = sizeof ( undinet_iob );
- memcpy ( &undinet_iob, iobuf->data, len );
+ if ( len > sizeof ( basemem_packet ) )
+ len = sizeof ( basemem_packet );
+ memcpy ( &basemem_packet, iobuf->data, len );
/* Create PXENV_UNDI_TRANSMIT data structure */
memset ( &undi_transmit, 0, sizeof ( undi_transmit ) );
undinet_tbd.ImmedLength = len;
undinet_tbd.Xmit.segment = rm_ds;
undinet_tbd.Xmit.offset
- = ( ( unsigned ) & __from_data16 ( undinet_iob ) );
+ = ( ( unsigned ) & __from_data16 ( basemem_packet ) );
/* Issue PXE API call */
if ( ( rc = undinet_call ( undinic, PXENV_UNDI_TRANSMIT,
#include <realmode.h>
#include <gateA20.h>
#include <memsizes.h>
-#include <dhcp_basemem.h>
+#include <basemem_packet.h>
#include <gpxe/uaccess.h>
#include <gpxe/segment.h>
#include <gpxe/shutdown.h>
"=b" ( discard_b )
: "D" ( imgheader->execaddr.segoff ),
"S" ( imgheader->location ),
- "b" ( __from_data16 ( dhcp_basemem ) )
+ "b" ( __from_data16 ( basemem_packet ) )
: "ecx", "edx", "ebp" );
gateA20_set();
: "D" ( imgheader->execaddr.linear ),
"S" ( ( imgheader->location.segment << 4 ) +
imgheader->location.offset ),
- "b" ( virt_to_phys ( dhcp_basemem ) ),
+ "b" ( virt_to_phys ( basemem_packet ) ),
"a" ( virt_to_phys ( &loaderinfo ) )
: "ecx", "edx", "ebp", "memory" );
return -ENODEV;
}
- if ( ( rc = create_dhcp_packet ( boot_netdev, DHCPACK,
- dhcp_basemem, sizeof ( dhcp_basemem ),
+ if ( ( rc = create_dhcp_packet ( boot_netdev, DHCPACK, basemem_packet,
+ sizeof ( basemem_packet ),
&dhcppkt ) ) != 0 ) {
DBGC ( image, "NBI %p failed to build DHCP packet\n", image );
return rc;
--- /dev/null
+#ifndef BASEMEM_PACKET_H
+#define BASEMEM_PACKET_H
+
+#include <realmode.h>
+
+/** Maximum length of base memory packet buffer */
+#define BASEMEM_PACKET_LEN 1514
+
+/** Base memory packet buffer */
+extern char __data16_array ( basemem_packet, [BASEMEM_PACKET_LEN] );
+#define basemem_packet __use_data16 ( basemem_packet )
+
+#endif /* BASEMEM_PACKET_H */
+++ /dev/null
-#ifndef DHCP_BASEMEM_H
-#define DHCP_BASEMEM_H
-
-#include <realmode.h>
-
-/** Maximum length of a DHCP data buffer */
-#define DHCP_BASEMEM_LEN 1514
-
-/** DHCP data buffer */
-extern char __data16_array ( dhcp_basemem, [DHCP_BASEMEM_LEN] );
-#define dhcp_basemem __use_data16 ( dhcp_basemem )
-
-#endif /* DHCP_BASEMEM_H */
#include <stdlib.h>
#include <gpxe/uaccess.h>
#include <gpxe/dhcp.h>
-#include <dhcp_basemem.h>
+#include <basemem_packet.h>
#include "pxe.h"
#include "pxe_call.h"
*/
len = get_cached_info->BufferSize;
if ( len == 0 ) {
- len = sizeof ( dhcp_basemem );
+ len = sizeof ( basemem_packet );
get_cached_info->Buffer.segment = rm_ds;
get_cached_info->Buffer.offset =
- ( unsigned int ) ( & __from_data16 ( dhcp_basemem ) );
+ ( unsigned int ) ( & __from_data16 ( basemem_packet ) );
get_cached_info->BufferLimit = len;
}