summaryrefslogtreecommitdiffstats
path: root/src/arch
diff options
context:
space:
mode:
authorMichael Brown2007-07-02 18:43:32 +0200
committerMichael Brown2007-07-02 18:43:32 +0200
commit5f17089b148211dd8667af4efa9302a1f46dbc49 (patch)
tree0d131e90f9b7d2ebdc9422e3d5bd24ff31dd0d98 /src/arch
parentBuild bochs with ne2000 support, and add sample lines in bochsrc.txt (diff)
downloadipxe-5f17089b148211dd8667af4efa9302a1f46dbc49.tar.gz
ipxe-5f17089b148211dd8667af4efa9302a1f46dbc49.tar.xz
ipxe-5f17089b148211dd8667af4efa9302a1f46dbc49.zip
pxe_netdev now holds a reference to the network device.
Use generic fields in struct device_description rather than assuming that the struct device * is contained within a pci_device or isapnp_device; this assumption is broken when using the undionly driver. Add PXENV_UNDI_SET_STATION_ADDRESS.
Diffstat (limited to 'src/arch')
-rw-r--r--src/arch/i386/image/pxe_image.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/arch/i386/image/pxe_image.c b/src/arch/i386/image/pxe_image.c
index 9cf546916..c64692900 100644
--- a/src/arch/i386/image/pxe_image.c
+++ b/src/arch/i386/image/pxe_image.c
@@ -40,6 +40,7 @@ struct image_type pxe_image_type __image_type ( PROBE_PXE );
*/
static int pxe_exec ( struct image *image __unused ) {
struct net_device *netdev;
+ int rc;
/* Ensure that PXE stack is ready to use */
pxe_init_structures();
@@ -47,11 +48,18 @@ static int pxe_exec ( struct image *image __unused ) {
/* Arbitrarily pick the first open network device to use for PXE */
for_each_netdev ( netdev ) {
- pxe_netdev = netdev;
+ pxe_set_netdev ( netdev );
break;
}
- return pxe_start_nbp();
+ /* Start PXE NBP */
+ rc = pxe_start_nbp();
+
+ /* Deactivate PXE */
+ pxe_set_netdev ( NULL );
+ pxe_unhook_int1a();
+
+ return rc;
}
/**