summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* [release] Update version to 0.9.9 for releasev0.9.9Marty Connor2009-10-211-2/+2
|
* [zbin] Fix 64-bit compilation warnings for util/zbin.cJoshua Oreman2009-10-201-8/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Recent gcc versions generate more warnings when compiling util/zbin.c on a 64-bit system: util/zbin.c: In function `read_file': util/zbin.c:85: warning: format `%d' expects type `int', but argument 3 has type `size_t' util/zbin.c:91: warning: format `%d' expects type `int', but argument 3 has type `size_t' util/zbin.c: In function `read_zinfo_file': util/zbin.c:119: warning: format `%d' expects type `int', but argument 4 has type `size_t' util/zbin.c: In function `alloc_output_file': util/zbin.c:134: warning: format `%d' expects type `int', but argument 3 has type `size_t' util/zbin.c: In function `process_zinfo_add': util/zbin.c:244: warning: format `%d' expects type `int', but argument 3 has type `size_t' util/zbin.c:266: warning: format `%d' expects type `int', but argument 7 has type `size_t' util/zbin.c:286: warning: format `%#x' expects type `unsigned int', but argument 7 has type `size_t' util/zbin.c: In function `write_output_file': util/zbin.c:348: warning: format `%d' expects type `int', but argument 3 has type `size_t' This patch eliminates these warnings. Signed-off-by: Marty Connor <mdc@etherboot.org>
* [util] Change gensdsk file permissions to include executeMarty Connor2009-10-201-0/+0
| | | | | | src/util/gensdsk is a shell script and should have execute permission. Reported-by: sobtwmxt sobtwmxt@sdf.lonestar.org
* [sis190] Fix for gcc-3.3.3 compilationShao Miller2009-10-181-1/+1
| | | | | | | | | | | | | gcc 3.3.3 gave the following error when compiling sis190.c drivers/net/sis190.c: In function 'sis190_get_mac_addr_from_apc': drivers/net/sis190.c:966: warning: 'isa_bridge' might be used uninitialized in this function make: *** [bin/sis190.o] Error 1 This patch allows error-free compilation. Signed-off-by: Marty Connor <mdc@etherboot.org>
* [zbin] Fix compilation warnings for util/zbin.cThomas Miletich2009-10-171-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | Recent gcc versions generate warnings when compiling util/zbin.c ( tested with gcc-4.3.3 ): util/zbin.c: In function ‘process_zinfo_pack’: util/zbin.c:200: warning: format ‘%#zx’ expects type ‘size_t’, but argument 6 has type ‘long unsigned int’ util/zbin.c: In function ‘process_zinfo_add’: util/zbin.c:257: warning: format ‘%#lx’ expects type ‘long unsigned int’, but argument 4 has type ‘int’ util/zbin.c:266: warning: format ‘%#lx’ expects type ‘long unsigned int’, but argument 4 has type ‘int’ util/zbin.c:266: warning: format ‘%d’ expects type ‘int’, but argument 8 has type ‘long unsigned int’ util/zbin.c:286: warning: format ‘%#lx’ expects type ‘long unsigned int’, but argument 6 has type ‘int’ util/zbin.c:286: warning: format ‘%#lx’ expects type ‘long unsigned int’, but argument 7 has type ‘size_t’ This patch eliminates these warnings. Tested with gcc-4.3.3 on Ubuntu 9.04 and gcc-4.1.2 on Debian Etch. Signed-off-by: Marty Connor <mdc@etherboot.org>
* [ath5k] Save proper cacheline size when fixing PCI configurationJoshua Oreman2009-10-171-1/+2
| | | | | | | | | | | | Some BIOSes set the PCI cacheline size to zero for the card; the ath5k driver fixes it to a reasonable in PCI config space, but failed to correct the internal value it had already read. This resulted in divide-by-zero errors when cacheline-aligning various data structures. Fix by setting the internal cachelsz to a sane value at the same time as we write that value to PCI config space. Signed-off-by: Marty Connor <mdc@etherboot.org>
* [ath5k] Update for changes in kernel 2.6.31Joshua Oreman2009-10-178-5/+147
| | | | | | | | | | | This adds basic rfkill support for enabling the wireless card on certain laptops, and changes miscellaneous other details that may help in obscure cases. Also change the error handling to not report CRC errors, which due to the basic facts of wireless may happen even more frequently than valid packets. Signed-off-by: Marty Connor <mdc@etherboot.org>
* [infiniband] Send CM requests to target node's GSI rather than SM's GSIMichael Brown2009-10-171-1/+3
|
* [sis190] Add sis190/191 ethernet driverThomas Miletich2009-10-163-0/+1490
| | | | | Tested-by: Paul Hackett <paulfxhackett@gmail.com> Signed-off-by: Marty Connor <mdc@etherboot.org>
* [e1000] Add 82576 supportSimon Horman2009-10-163-24/+181
| | | | | | | | | | | | | | | | | | | Add the 82576 to the e1000 driver. - Examining the Linux 2.6.30-rc4 igb driver, which supports this card and; - Information available in the Intel® 82576 Gigabit Ethernet Controller Datasheet v2.1, which is available from Intel's web site. I only have a dual-ported card with Copper PHY, so any code paths relating to Fibre haven't been tested. Also, I have only tested using auto-negotiation of speed and duplex, and no flow control. Other code paths relating to those settings also have not been exercised. Signed-off-by: Simon Horman <horms@verge.net.au> Sponsored-by: Thomas Miletich <thomas.miletich@gmail.com> Modified-by: Thomas Miletich <thomas.miletich@gmail.com> Modified-by: Marty Connor <mdc@etherboot.org> Signed-off-by: Marty Connor <mdc@etherboot.org>
* [atl1e] Add Attansic L1E gigabit Ethernet driverJoshua Oreman2009-10-163-0/+2789
| | | | Signed-off-by: Marty Connor <mdc@etherboot.org>
* [sis900] Enable interrupts to allow UNDI to workThomas Miletich2009-10-151-0/+6
| | | | | | | | Enable interrupts in sis900_irq(). Doing so allows some programs using gPXE's UNDI interface to work properly, including Symantec Ghost. Tested-by: Hubert Mercier <hubert.mercier@unilim.fr> Signed-off-by: Marty Connor <mdc@etherboot.org>
* [util] Make mtools check detect new versionsStefan Hajnoczi2009-10-152-2/+2
| | | | | | | | | The mtools version check does not handle GNU mtools 4.0.10. This commit makes the pattern more general so it matches older mtools as well as the newer "mtools (GNU mtools) 4.0.10" string. Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com> Signed-off-by: Marty Connor <mdc@etherboot.org>
* [modrom] Avoid clobbering near jump with checksumJoshua Oreman2009-10-151-2/+2
| | | | | | | | | | | | | | A jump instruction starts at the third byte of an option ROM image, and it is required that the bytes in the whole image add up to zero. To achieve this, a checksum byte is usually placed after the jump. The jump can be either a short jump (2 bytes, EB xx) or a near jump (3 bytes, E9 xx xx). gPXE's romprefix.S uses a near jump, but modrom.pl assumed a short jump, and clobbered the high byte of the offset. This caused modrom-modified gPXE ROM images to crash the system during POST. Fix by making modrom.pl place the checksum at byte 6, like makerom.pl does. Signed-off-by: Marty Connor <mdc@etherboot.org>
* [build] Fix DEBUG builds for filenames with hyphensJoshua Oreman2009-10-151-1/+1
| | | | | | | | | | | | | | | | | | | Debug builds for filenames with hyphens such as: $ make bin/via-rhine.dsk DEBUG=via-rhine fail with: [BUILD] bin/via-rhine.dbg1.o <command-line>: error: missing whitespace after the macro name make: *** [bin/via-rhine.dbg1.o] Error 1 This is because "-" is not a legal character in C identifiers, and gcc rejects "-Ddebug_via-rhine=1" as an argument. Signed-off-by: Daniel Verkamp <daniel@drv.nu> Signed-off-by: Joshua Oreman <oremanj@rwcr.net> Signed-off-by: Marty Connor <mdc@etherboot.org>
* [3c90x] Fix a3c90x_close() and a3c90x_remove() methods.Thomas Miletich2009-10-151-3/+3
| | | | | | | | | | | Both methods disabled packet tx and rx just to have it enabled again by calling a3c90x_reset(). Fixed by disabling tx and rx after the call to a3c90x_reset(). Tested by booting Ubuntu intrepid(8.10) directly from gPXE and pxelinux. Tested on 3c905, 3c905B, 3c905C. Signed-off-by: Marty Connor <mdc@etherboot.org>
* [release] Update version to 0.9.8+ post releaseMarty Connor2009-10-141-1/+1
|
* [release] Update version to 0.9.8 for releasev0.9.8Marty Connor2009-10-141-2/+2
|
* [hermon] Reset device during probe()Michael Brown2009-10-142-0/+28
| | | | | | | | | | | Some systems will retry their boot sequence in the event of a boot failure. On these systems, the second and subsequent boot attempts will fail to initialise the Hermon HCA. Fix by resetting the HCA during probe(). This incurs a one-second cost, but there seems to be no viable alternative. Originally-fixed-by: Itay Gazit <itaygazit@gmail.com>
* [pci] Add generic configuration space backup/restore facilityMichael Brown2009-10-142-0/+123
| | | | | | Some devices can only be reset via a mechanism that also resets the card's PCI core, thus necessitating a backup and restore of all or part of the PCI configuration space across a reset.
* [job] Report progress of downloader jobs via job_progress()Michael Brown2009-08-311-2/+21
|
* [job] Add missing job_progress() interface methodMichael Brown2009-08-312-0/+10
|
* [ath5k] Remove spurious debugging checkJoshua Oreman2009-08-181-10/+0Star
| | | | Signed-off-by: Marty Connor <mdc@etherboot.org>
* [802.11] Support multicast hashingMichael Brown2009-08-123-22/+4Star
| | | | | | | 802.11 multicast hashing is the same as standard Ethernet hashing, so just expose and use eth_mc_hash(). Signed-off-by: Joshua Oreman <oremanj@rwcr.net>
* [802.11] Properly initialize autoassociation processJoshua Oreman2009-08-121-1/+2
| | | | | | | | | | | | | The recent change to process_add() to detect duplicate process additions relies on the fact that all processes will be initialized using process_init_stopped() before being passed to that function. The autoassociation process was not initialized in this fashion, so process_add() erroneously detected it as a duplicate. Fix by using process_init_stopped() to initialize the autoassociation process instead of setting the step member directly. Signed-off-by: Michael Brown <mcb30@etherboot.org>
* [dhcp] Fall back to using the hardware address to populate the chaddr fieldMichael Brown2009-08-123-12/+52
| | | | | | | | | | | | | | | | | | | | | | | | For IPoIB, the chaddr field is too small (16 bytes) to contain the 20-byte IPoIB link-layer address. RFC4390 mandates that we should pass an empty chaddr field and rely on the DHCP client identifier instead. This has many problems, not least of which is that a client identifier containing an IPoIB link-layer address is not very useful from the point of view of creating DHCP reservations, since the QPN component is assigned at runtime and may vary between boots. Leave the DHCP client identifier as-is, to avoid breaking existing setups as far as possible, but expose the real hardware address (the port GUID) via the DHCP chaddr field, using the broadcast flag to instruct the DHCP server not to use this chaddr value as a link-layer address. This makes it possible (at least with ISC dhcpd) to create DHCP reservations using host declarations such as: host duckling { fixed-address 10.252.252.99; hardware unknown-32 00:02:c9:02:00:25:a1:b5; }
* [netdevice] Allow the hardware and link-layer addresses to differ in sizeMichael Brown2009-08-128-17/+66
| | | | | | | | | | IPoIB has a 20-byte link-layer address, of which only eight bytes represent anything relating to a "hardware address". The PXE and EFI SNP APIs expect the permanent address to be the same size as the link-layer address, so fill in the "permanent address" field with the initial link layer address (as generated by register_netdev() based upon the real hardware address).
* [netdevice] Separate out the concept of hardware and link-layer addressesMichael Brown2009-08-1222-82/+71Star
| | | | | | | | | | | The hardware address is an intrinsic property of the hardware, while the link-layer address can be changed at runtime. This separation is exposed via APIs such as PXE and EFI, but is currently elided by gPXE. Expose the hardware and link-layer addresses as separate properties within a net device. Drivers should now fill in hw_addr, which will be used to initialise ll_addr at the time of calling register_netdev().
* [doc] Expand scope of doxygen-generated documentationMichael Brown2009-08-114-30/+45
|
* [zbin] Change fixup semantics to support ROMs over 128k uncompressedJoshua Oreman2009-08-117-75/+92
| | | | | | | | | | | | | | | | | | | | | | | | The option ROM header contains a one-byte field indicating the number of 512-byte sectors in the ROM image. Currently it is linked to contain the number of uncompressed sectors, with an instruction to the compressor to correct it. This causes link failure when the uncompressed size of the ROM image is over 128k. Fix by replacing the SUBx compressor fixup with an ADDx fixup that adds the total compressed output length, scaled as requested, to an addend stored in the field where the final length value will be placed. This is similar to the behavior of ELF relocations, and ensures that an overflow error will not be generated unless the compressed size is still too large for the field. This also allows us to do away with the _filesz_pgh and _filesz_sect calculations exported by the linker script. Output tested bitwise identical to the old SUBx mechanism on hd, dsk, lkrn, and rom prefixes, on both 32-bit and 64-bit processors. Modified-by: Michael Brown <mcb30@etherboot.org> Signed-off-by: Michael Brown <mcb30@etherboot.org>
* [doc] Update doxygen.cfg to match version running on rom.etherboot.orgMichael Brown2009-08-111-75/+320
|
* [infiniband] Add support for the SRP Boot Firmware TableMichael Brown2009-08-103-0/+236
| | | | | | The SRP Boot Firmware Table serves a similar role to the iSCSI and AoE Boot Firmware Tables; it provides information required by the loaded OS in order to establish a connection back to the SRP boot device.
* [infiniband] Disambiguate CM connection rejection reasonsMichael Brown2009-08-103-4/+32
| | | | | | | | | | | | | There is diagnostic value in being able to disambiguate between the various reasons why an IB CM has rejected a connection attempt. In particular, reason 8 "invalid service ID" can be used to identify an incorrect SRP service_id root-path component, and reason 28 "consumer reject" corresponds to a genuine SRP login rejection IU, which can be passed up to the SRP layer. For rejection reasons other than "consumer reject", we should not pass through the private data, since it is most likely generated by the CM without any protocol-specific knowledge.
* [infiniband] Allow SRP reconnection attempts even after reporting failuresMichael Brown2009-08-102-18/+5Star
| | | | | | | | | With iSCSI, connection attempts are expensive; it may take many seconds to determine that a connection will fail. SRP connection attempts are much less expensive, so we may as well avoid the "optimisation" of declaring a state of permanent failure after a certain number of attempts. This allows a gPXE SRP initiator to resume operations after an arbitrary amount of SRP target downtime.
* [infiniband] Generate more specific errors in response to failure MADsMichael Brown2009-08-104-6/+8
| | | | | | | Generate errors within individual MAD transaction consumers such as ib_pathrec.c and ib_mcast.c, rather than within ib_mi.c. This allows for more meaningful error messages to eventually be displayed to the user.
* [infiniband] Add support for SRP over InfinibandMichael Brown2009-08-109-0/+1960
| | | | | | | | SRP is the SCSI RDMA Protocol. It allows for a method of SAN booting whereby the target is responsible for reading and writing data using Remote DMA directly to the initiator's memory. The software initiator merely sends and receives SCSI commands; it never has to touch the actual data.
* [infiniband] Add last_opened_ibdev(), analogous to last_opened_netdev()Michael Brown2009-08-103-1/+27
| | | | | | | The minimal-surprise behaviour, when no explicit SRP initiator device is specified, will probably be to use the most recently opened Infiniband device. This matches our behaviour with using the most recently opened net device for PXE, iSCSI, AoE, NBI, etc.
* [infiniband] Add find_ibdev()Michael Brown2009-08-102-0/+17
|
* [infiniband] Add a "communication-managed reliable connection" protocolMichael Brown2009-08-103-0/+456
| | | | | | | SRP over Infiniband uses a protocol whereby data is sent via a combination of the CM private data fields and the RC queue pair itself. This seems sufficiently generic that it's worth having available as a separate protocol.
* [hermon] Reduce the RC ACK timeoutMichael Brown2009-08-101-1/+1
| | | | | | | | The ACK timeout determines how long we take to notice a failed Reliable Connection. Reducing it from the arbitrary value of 19 down to 14 reduces the individual ACK timeout from around 2.1s to 67ms; this in turn reduces the time to tear down and re-establish a broken SRP session from around 30s to around 1s.
* [hermon] Randomise the high-order bits of queue pair numbersMichael Brown2009-08-102-6/+7
| | | | | | | | | | | | | The Infiniband Communication Manager will refuse to establish a connection if it believes the connection is already established. There is no immediately obvious way to ask it to tear down the existing connection and replace it; to issue a DREP we would need to know the local and remote communication IDs used for the previous connection setup. We can work around this by randomising the high-order bits of the queue pair number; these have no significance to the hardware, but are sufficient to convince the IB CM that this is a different connection.
* [scsi] Make LUN a property of the SCSI backend onlyMichael Brown2009-08-102-3/+0Star
| | | | | Nothing within the SCSI core actually refers to the LUN, so we can simplify matters by treating it as purely a property of the backend.
* [scsi] Generalise iscsi_parse_lun() to scsi_parse_lun()Michael Brown2009-08-104-48/+48
|
* [scsi] Generalise iscsi_detached_command() to scsi_detached_command()Michael Brown2009-08-103-6/+15
|
* [process] Make it safe to call process_add() multiple timesMichael Brown2009-08-105-3/+14
|
* [infiniband] Handle duplicate Communication Management REPsMichael Brown2009-08-092-0/+58
| | | | | | | | | | | We will terminate our transaction as soon as we receive the first CM REP, since that provides all the state that we need. However, the peer may resend the REP if it didn't see our RTU, and if we don't respond with another RTU we risk being disconnected. (This protocol appears not to handle retries gracefully.) Fix by adding a management agent that will listen for these duplicate REPs and send back an RTU.
* [ath5k] Add support for non-802.11n Atheros wireless NICsJoshua Oreman2009-08-0921-0/+17970
| | | | Signed-off-by: Michael Brown <mcb30@etherboot.org>
* [legal] Add MIT licence declarationJoshua Oreman2009-08-091-0/+10
| | | | Signed-off-by: Michael Brown <mcb30@etherboot.org>
* [802.11] Fix memory leak on unsuccessful probesJoshua Oreman2009-08-091-2/+1Star
| | | | | | | When a probe found no results, the list head of beacons would not be freed, leaking 16 bytes of memory per probe. Signed-off-by: Michael Brown <mcb30@etherboot.org>
* [802.11] Fix maximum packet lengthJoshua Oreman2009-08-091-5/+13
| | | | | | | | | | | | | Previously the maximum packet length was computed using an erroneous understanding of the role of the MIC field in TKIP-encrypted packets. The field is actually considered to be part of the MSDU (encrypted and fragmented data), not the MPDU (container for each encrypted fragment). As such its size does not contribute to cryptographic overhead outside the data field's size limitations. The net result is that the previous maximum packet length value was 4 bytes too long; fix it to the correct value of 2352. Signed-off-by: Michael Brown <mcb30@etherboot.org>