summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* [int13] Provide a permanently closed window via the control interfaceMichael Brown2011-06-281-0/+15
| | | | | | | Allow objects to support both streaming and block device protocols, by starting streaming data only when the data transfer window opens. Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [tls] Eliminate polling while TX state machine is idleMichael Brown2011-06-281-13/+67
| | | | Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [iscsi] Eliminate polling while waiting for window to openMichael Brown2011-06-281-3/+26
| | | | Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [http] Eliminate polling while waiting for window to openMichael Brown2011-06-281-32/+46
| | | | Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [scsi] Eliminate polling while waiting for window to openMichael Brown2011-06-281-6/+13
| | | | Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [hw] Eliminate polling while waiting for window to openMichael Brown2011-06-281-1/+2
| | | | | | | | | | | | | | | Polling for the data-transfer window to become open is wasteful. We can eliminate the polling loop by using hw_step() as the handler for an xfer_window_changed() event. If the window is already open at the time of instantiation, then xfer_window_changed() may never be called. We can cover this case by using hw_step() as the step() method of a one-shot process. Since the signature for an xfer_window_changed() method is identical to the signature for a process step() method, the same function can be used for both. Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [infiniband] Use a one-shot process for CMRC shutdownMichael Brown2011-06-281-4/+2Star
| | | | Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [fc] Use a one-shot process for Fibre Channel name server queriesMichael Brown2011-06-281-4/+1Star
| | | | Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [fc] Use a one-shot process for Fibre Channel ELS requestsMichael Brown2011-06-281-4/+1Star
| | | | Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [resolv] Use a one-shot process for the numeric resolverMichael Brown2011-06-281-2/+1Star
| | | | Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [process] Add support for one-shot processesMichael Brown2011-06-282-2/+24
| | | | | | | | | Some processes execute only once, and exist solely in order to defer execution until after the relevant instantiator method has returned. Such processes do not need to be automatically rescheduled when executing. Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [process] Pass containing object pointer to process step() methodsMichael Brown2011-06-2816-101/+229
| | | | | | | | | Give the step() method a pointer to the containing object, rather than a pointer to the process. This is consistent with the operation of interface methods, and allows a single function to serve as both an interface method and a process step() method. Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [xfer] Send xfer_window_changed() after xfer_vredirect()Michael Brown2011-06-281-1/+16
| | | | | | | | | | Modify the default action for xfer_vredirect() to automatically send xfer_window_changed() messages to both the new child and the parent interfaces. This will allow the elimination of processes that simply poll on xfer_window() to determine when a redirection has completed successfully. Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [tcp] Send xfer_window_changed() when window opensMichael Brown2011-06-281-19/+27
| | | | Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [infiniband] Send xfer_window_changed() when CMRC connection is establishedMichael Brown2011-06-281-0/+3
| | | | Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [tls] Send xfer_window_changed() when TLS session is establishedMichael Brown2011-06-281-0/+4
| | | | Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [fc] Send xfer_window_changed() when FCP link is establishedMichael Brown2011-06-283-13/+100
| | | | Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [fc] Maintain a list of Fibre Channel upper-layer protocol usersMichael Brown2011-06-284-39/+73
| | | | Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [ftp] Remove redundant ftp_data_deliver() methodMichael Brown2011-06-281-25/+4Star
| | | | | | | | ftp_data_deliver() does nothing except pass through the received data to the xfer interface, and so can be eliminated by using a pass-through interface. Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [prefix] Cope with BOOT_IMAGE= anywhere within command lineMichael Brown2011-06-281-4/+14
| | | | | | | | Some bootloaders seem to add "BOOT_IMAGE=..." at the end of the command line; some at the start. Cope with either variation. Reported-by: Dave Hansen <dave@sr71.net> Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [ipv4] Record ARP resolution errorsMichael Brown2011-06-281-0/+2
| | | | | | | | | At the time of attempting ARP resolution, we already know the transmitting network device. We can therefore record ARP errors using netdev_tx_err() so that they show up in the output of "ifstat". Inspired-by: Dominik Russenberger <dominik.russenberger@terreactive.ch> Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [netdevice] Allow non-completion TX errors to be recordedMichael Brown2011-06-282-7/+27
| | | | | | | | Allow TX errors to be recorded against a network device even when the packet didn't make it as far as netdev_tx(). Inspired-by: Dominik Russenberger <dominik.russenberger@terreactive.ch> Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [build] Allow APPEND lines in ipxe.iso to function as expectedDominic Cleal2011-05-191-1/+1
| | | | | Signed-off-by: Dominic Cleal <dcleal@redhat.com> Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [parseopt] Disambiguate the various EINVAL errorsMichael Brown2011-05-181-2/+16
| | | | Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [romprefix] Force PnP header to a 16-byte boundary for IBM BIOSesMichael Brown2011-05-171-0/+5
| | | | | | | | | | IBM BIOSes ignore the PnP header offset stored at address 0x1a and instead scan for the $PnP signature on a 16-byte boundary. (This alignment is not mandated by the PnP specification.) Force PnP header to a 16-byte boundary to work around these BIOSes. Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [romprefix] Do not fall back to hooking INT19 by defaultMichael Brown2011-05-172-0/+8
| | | | | | | | | | | | | | | | | | | | Several BIOSes (including most IBM BIOSes and many virtual machine BIOSes) do not provide detectable PnP support, but will use the BEV entry point for a PnP option ROM. On these semi-PnP BIOSes, iPXE will respond to the absence of detectable PnP support by hooking INT19, which disrupts the boot order. BIOSes that genuinely require hooking INT19 seem to be very rare nowadays. It may therefore be preferable to assume that the absence of detectable PnP support indicates a semi-PnP BIOS rather than a non-PnP BIOS. Change the default behaviour so that INT19 will never be hooked unless the compile-time option NONPNP_HOOK_INT19 is enabled. Leave the redundant PnP detection routine in-place to allow for debugging via the ROM banner line. Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [romprefix] Remove special treatment for IBM BIOSesMichael Brown2011-05-171-20/+6Star
| | | | | | | | Revert commit 38cd351 ("[romprefix] Attempt to gracefully handle semi-PnP IBM BIOSes"), since the test for the "IBM " signature in %edi is not sufficient to identify an IBM BIOS. Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [contrib] Update rom-o-matic to build iPXEFloris Bos2011-05-064-9/+31
| | | | Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [ipv4] Include network device metadata in packet tracesMichael Brown2011-05-051-3/+10
| | | | | | | | | | | | | | | | | (Ab)use the "ident" field in transmitted IPv4 packets to convey metadata about the network device. In particular: bits 0-3 represent the low bits of the "RX" good packet counter bits 4-7 represent the low bits of the "RXE" bad packet counter bits 8-15 represent the transmitted packet sequence number This allows some relevant information about the internal state of the network device to be read out from a packet trace from a non-debug build of iPXE. In particular, it allows a packet trace containing packets transmitted by iPXE to indicate whether or not any packets have been received by iPXE. Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [bofm] Pass BOFM version 2 table to SetStatus() if applicableMichael Brown2011-05-051-10/+29
| | | | Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [http] Support chunked transfer encodingMichael Brown2011-05-051-44/+119
| | | | | | | | Booting from an HTTP SAN will require HTTP range requests, which are defined only in HTTP/1.1 and above. HTTP/1.1 mandates support for "Transfer-Encoding: chunked", so we must support it. Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [bofm] Increase amount of debugging availableMichael Brown2011-05-051-32/+48
| | | | Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [forcedeth] Ensure that IRQ line is deasserted when disabling interruptsMichael Brown2011-05-041-3/+2Star
| | | | Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [hermon] Remove temporary workaround for missing BOFM mport supportMichael Brown2011-05-041-39/+15Star
| | | | | | | This reverts commit 15c1200 ("[hermon] Work around missing mport support in current BOFM implementations"). Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [bofm] Report {slot,port} to {bus:dev.fn,mport} mapping on newer BOFM buildsMichael Brown2011-05-041-2/+7
| | | | | | | | | | | | | Newer BOFM builds provide support for mapping multiple physical ports to a single PCI bus:dev.fn via PCI VPD descriptions. These builds will also leave the {slot,port} field intact, and will populate the mport field with a meaningful value. Older BOFM builds will zero out the {slot,port} field. A zero value in this field may indicate either a genuine zero value (i.e. slot 0 first port) or an older build. Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [bofm] Use "mport" rather than "port" to describe mport valueMichael Brown2011-05-041-5/+5
| | | | Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [bofm] Match port numbering as used in CSV fileMichael Brown2011-05-041-1/+1
| | | | Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [romprefix] Attempt to gracefully handle semi-PnP IBM BIOSesMichael Brown2011-05-041-6/+20
| | | | | | | | | | | Some IBM BIOSes provide partial support for PnP: they will use the BEV entry point but will not advertise PnP support. This causes iPXE to hook INT 19, which disrupts the boot process. Attempt to improve this situation by detecting an IBM BIOS and treating it as a PnP BIOS despite the absence of a PnP signature. Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [netdevice] Improve detection of bugs in drivers' TX completion handlingMichael Brown2011-05-031-2/+1Star
| | | | Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [list] Add list_check_contains()Michael Brown2011-05-031-0/+19
| | | | Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [netdevice] Move high-frequency debug messages to DBGLVL_EXTRAMichael Brown2011-05-031-9/+9
| | | | Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [efi] Ensure that each HII package list and formset has a unique GUIDMichael Brown2011-05-031-3/+6
| | | | Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [build] Fix building on mildly deranged versions of binutilsMichael Brown2011-04-291-13/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Some versions of binutils have curious concepts of what constitutes subtraction. For example: 0x00000000000000f0 _text16_late = . 0x0000000000000898 _mtext16 = . 0x0000000000000898 _etext16 = . 0x0000000000000898 _text16_late_filesz = ABSOLUTE ((_mtext16 - _text16_late)) 0x00000000000007a8 _text16_late_memsz = ABSOLUTE ((_etext16 - _text16_late)) This has interesting side-effects such as producing sizes for .bss segments that are negative, causing the majority of addressable memory to be zeroed out. Fix by using the form ABSOLUTE ( x ) - ABSOLUTE ( y ) rather than ABSOLUTE ( x - y ) Reported-by: H. Peter Anvin <hpa@zytor.com> Suggested-by: H. Peter Anvin <hpa@zytor.com> Tested-by: H. Peter Anvin <hpa@zytor.com> Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [int13] Catch INT 13,4b when no explicit drive number is presentMichael Brown2011-04-281-2/+7
| | | | | | | | | This allows older versions of ELTORITO.SYS (such as the version found on the FreeDOS installation CD-ROM) to use iPXE's emulated CD-ROM drive. Reported-by: Robin Smidsrød <robin@smidsrod.no> Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [build] Accept EMBED=... as a synonym for EMBEDDED_IMAGE=...Michael Brown2011-04-281-5/+6
| | | | | | | | | | | | Make the build command line less cumbersome by accepting make DEBUG=int13 EMBED=test.ipxe rather then make DEBUG=int13 EMBEDDED_IMAGE=test.ipxe Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [int13] Add support for INT 13,4bMichael Brown2011-04-281-4/+46
| | | | | | | This allows the ELTORITO.SYS driver for MS-DOS to access our emulated CD-ROM drives. Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [int13] Add support for El Torito bootable CD-ROM imagesMichael Brown2011-04-272-48/+486
| | | | Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [linux] Avoid building Linux-specific prefix on non-Linux buildsMichael Brown2011-04-272-0/+0
| | | | | Reported-by: David Yeske <dyeske@gmail.com> Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [sanboot] Add "sanhook" and "sanunhook" commandsMichael Brown2011-04-2410-77/+215
| | | | | | | Expose the multiple-SAN-drive capability of the iPXE core via the iPXE command line by adding commands to hook and unhook additional drives. Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [parseopt] Allow for pre-initialised option setsMichael Brown2011-04-242-7/+24
| | | | Signed-off-by: Michael Brown <mcb30@ipxe.org>