iPXE - Open Source Boot Firmware

people/cooldavid/ipxe.git
8 years ago[tcp core][RFC] Wait for TCP to safely close ipxe_tcpfix
Guo-Fu Tseng [Thu, 15 Jul 2010 03:02:52 +0000 (11:02 +0800)] 
[tcp core][RFC] Wait for TCP to safely close

After some discussion with Piotr and Michael, I think it might
be an acceptable solution for the issue that gPXE leaves remote
peer TCP in undesired state.

The reason I don't mark activity_start at somewhere like tcp_open
or ESTABLISHED is that sanboot do not close the TCP connection
before hand of the control to OS.

8 years ago[tcp][RFC] Cleanup tcp_close()
Guo-Fu Tseng [Fri, 30 Jul 2010 08:08:28 +0000 (16:08 +0800)] 
[tcp][RFC] Cleanup tcp_close()

The complexity of tcp_close() makes the TCP closing control
hard to maintain.
This patch try to solve it by separating tcp_terminate() and
tcp_dataxfer_close() from tcp_close().

Use tcp_terminate() to immediately free all tcp resources, and
close data transfer interface by calling tcp_dataxfer_close().

tcp_close() now simply bing TCP connection to closing state.
Which makes it safe to call in tcp_rx_fin().

tcp_dataxfer_close() is separated due to early close timing of
tcp_xfer_close() which is called by upper-layer to indicate no
more data to send or receive.

8 years ago[tcp][RFC] Distinguish passive and active close with proper actions
Guo-Fu Tseng [Thu, 29 Jul 2010 13:43:05 +0000 (21:43 +0800)] 
[tcp][RFC] Distinguish passive and active close with proper actions

The original design of TCP stack dose not distinguish passive and active
close, support is to make close action more compatible with RFC 793 and
having the ability to benefit from passive closing that can release all
resources immediately.

8 years ago[tcp][RFC] Deliver data only after updating TCP state
Guo-Fu Tseng [Thu, 29 Jul 2010 13:16:24 +0000 (21:16 +0800)] 
[tcp][RFC] Deliver data only after updating TCP state

Michael suggested something like:
===============================================================
  struct list_head received = LIST_HEAD_INIT ( received );
  ...
  while ( ! list_empty ( &tcp->rx_queue ) ) {
     ...
     tcp_rx_data ( tcp, seq, iob_disown ( iobuf ), &received );
     ...
  }

  list_for_each_entry_safe ( iobuf, tmp, &received, list ) {
    // deliver iobuf via xfer_deliver_iob()
  }

  if ( tcp->state & TCP_STATE_RCVD ( TCP_FIN ) )
    tcp_close ( tcp, 0 );
===============================================================
But after some thought I think making the change like this commit
can have same behavior, but simplified by not using extra queue.
Which can also save some code size.

In this patch:
  1. We call xfer_deliver_iob() after fully updated/handled received TCP
     state. In which to have better timing that upper-layer protocol
     might call tcp_xfer_close() to initiate a shutdown, or sending
     extra data.
  2. We move tcp_close() out from tcp_rx_fin() because tcp_close()
     nullified the xfer interface. It'll cause error to call
     xfer_deliver_iob() after tcp_rx_fin().
     (So that I proposed an idea to clean up tcp_close(), I'll post it
      in later commit.)

9 years ago[tcp] Fix a 64bit compile time error master
Piotr Jaroszyński [Thu, 22 Jul 2010 20:10:40 +0000 (22:10 +0200)] 
[tcp] Fix a 64bit compile time error

Signed-off-by: Piotr Jaroszyński <p.jaroszynski@gmail.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[efi] Fix the 32-bit version of elf2efi64
Geoff Lywood [Wed, 21 Jul 2010 02:23:02 +0000 (19:23 -0700)] 
[efi] Fix the 32-bit version of elf2efi64

Currently, if elf2efi.c is compiled using a 32-bit HOST_CC, then the
resulting elf2efi64 binary will generate 32-bit EFI binaries instead
of 64-bit EFI binaries.

The problem is that elf2efi.c uses the MDE_CPU_* definitions to decide
whether to output a 32-bit or 64-bit PE binary.  However, MDE_CPU_*
gets defined in ProcessorBind.h, depending on the compiler's target
architecture.  Overriding them on the command line doesn't work in the
expected way, and you can end up in cases where both MDE_CPU_IA32 and
MDE_CPU_X64 are defined.

Fix by using a separate definition, EFI_TARGET_IA32/EFI_TARGET_X64,
which is specified only on the command line.

Signed-off-by: Geoff Lywood <glywood@vmware.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[tcp] Allow out-of-order receive queue to be discarded
Michael Brown [Wed, 21 Jul 2010 11:01:50 +0000 (12:01 +0100)] 
[tcp] Allow out-of-order receive queue to be discarded

Allow packets in the receive queue to be discarded in order to free up
memory.  This avoids a potential deadlock condition in which the
missing packet can never be received because the receive queue is
occupying all of the memory available for further RX buffers.

Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[malloc] Add cache discard mechanism
Michael Brown [Wed, 21 Jul 2010 10:58:50 +0000 (11:58 +0100)] 
[malloc] Add cache discard mechanism

Add a facility allowing cached data to be discarded in order to
satisfy memory allocations that would otherwise fail.

Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[tcp] Handle out-of-order received packets
Michael Brown [Tue, 20 Jul 2010 22:17:30 +0000 (23:17 +0100)] 
[tcp] Handle out-of-order received packets

Maintain a queue of received packets, so that lost packets need not
result in retransmission of the entire TCP window.

Increase the TCP window to 8kB, in order that we can potentially
transmit enough duplicate ACKs to trigger Fast Retransmission at the
sender.

Using a 10MB HTTP download in qemu-kvm with an artificial drop rate of
1 in 64 packets, this reduces the download time from around 26s to
around 4s.

Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[netdevice] Provide a test mechanism for discarding packets at random
Michael Brown [Tue, 20 Jul 2010 19:52:08 +0000 (20:52 +0100)] 
[netdevice] Provide a test mechanism for discarding packets at random

Setting NETDEV_DISCARD_RATE to a non-zero value will cause one in
every NETDEV_DISCARD_RATE packets to be discarded at random on both
the transmit and receive datapaths, allowing the robustness of
upper-layer network protocols to be tested even in simulation
environments that provide wholly reliable packet transmission.

Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[virtio] Replace virtio-net with native iPXE driver
Stefan Hajnoczi [Fri, 2 Jul 2010 18:15:47 +0000 (19:15 +0100)] 
[virtio] Replace virtio-net with native iPXE driver

This patch adds a native iPXE virtio-net driver and removes the legacy
Etherboot virtio-net driver.  The main reasons for doing this are:

1. Multiple virtio-net NICs are now supported by iPXE.  The legacy
   driver kept global state and caused issues in virtual machines with
   more than one virtio-net device.

2. Faster downloads.  The native iPXE driver downloads 100 MB over
   HTTP in 12s, the legacy Etherboot driver in 37s.  This simple
   benchmark uses KVM with tap networking and the Python
   SimpleHTTPServer both running on the same host.

Changes to core virtio code reduce vring descriptors to 256 (QEMU uses
128 for virtio-blk and 256 for virtio-net) and change the opaque token
from u16 to void*.  Lowering the descriptor count reduces memory
consumption.  The void* opaque token change makes driver code simpler.

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[errcode] Remove unused contrib/errcode scripts
Stefan Hajnoczi [Sun, 11 Jul 2010 07:52:57 +0000 (08:52 +0100)] 
[errcode] Remove unused contrib/errcode scripts

The new errdb error code database is more accurate than the regular
expression-based errcode scripts.  This patch removes errcode scripts
in favor of errdb.

The gpxebot.py script is no longer needed, gpxebot has been released
as a separate open source codebase:

  http://git.etherboot.org/?p=people/stefanha/gpxebot.git;a=summary

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[settings] Unregister the children when unregistering the parent
Piotr Jaroszyński [Wed, 14 Jul 2010 20:25:55 +0000 (22:25 +0200)] 
[settings] Unregister the children when unregistering the parent

The DHCP settings registered as a child of the netdevice settings are
not unregistered anywhere.  This prevents the netdevice from being
freed on shutdown.

Fix by automatically unregistering any child settings when the parent
settings are unregistered.

Modified-by: Michael Brown <mcb30@ipxe.org>
Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[tcp] Treat ACKs as sent only when successfully transmitted
Michael Brown [Thu, 15 Jul 2010 18:33:46 +0000 (19:33 +0100)] 
[tcp] Treat ACKs as sent only when successfully transmitted

iPXE currently forces sending (i.e. sends a pure ACK even in the
absence of fresh data to send) only in response to packets that
consume sequence space or that lie outside of the receive window.
This ignores the possibility that a previous ACK was not actually sent
(due to, for example, the retransmission timer running).

This does not cause incorrect behaviour, but does cause unnecessary
retransmissions from our peer.  For example:

 1. Peer sends final data packet (ack      106 seq 521..523)
 2. We send FIN                  (seq 106..107 ack      523)
 3. Peer sends FIN               (ack      106 seq 523..524)
 4. We send nothing since retransmission timer is running for our FIN
 5. Peer ACKs our FIN            (ack      107 seq 524..524)
 6. We send nothing since this packet consumes no sequence space
 7. Peer retransmits FIN         (ack      107 seq 523..524)
 8. We ACK peer's FIN            (seq 107..107 ack      524)

What should happen at step (6) is that we should ACK the peer's FIN,
since we can deduce that we have never sent this ACK.

Fix by maintaining an "ACK pending" flag that is set whenever we are
made aware that our peer needs an ACK (whether by consuming sequence
space or by sending a packet that appears out of order), and is
cleared only when the ACK packet has been transmitted.

Reported-by: Piotr Jaroszyński <p.jaroszynski@gmail.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[tcp] Merge boolean flags into a single "flags" field
Michael Brown [Thu, 15 Jul 2010 18:15:36 +0000 (19:15 +0100)] 
[tcp] Merge boolean flags into a single "flags" field

Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[tcp] Use a dedicated timer for the TIME_WAIT state
Michael Brown [Thu, 15 Jul 2010 17:57:34 +0000 (18:57 +0100)] 
[tcp] Use a dedicated timer for the TIME_WAIT state

iPXE currently repurposes the retransmission timer to hold the TCP
connection in the TIME_WAIT state (i.e. waiting for up to 2*MSL in
case we are required to re-ACK our peer's FIN due to a lost ACK).
However, the fact that this timer is running will prevent such an ACK
from ever being sent, since the logic in tcp_xmit() assumes that a
running timer indicates that we ourselves are waiting for an ACK and
so blocks the transmission.  (We always wait for an ACK before sending
our next packet, to keep our transmit data path as simple as
possible.)

Fix by using an entirely separate timer for the TIME_WAIT state, so
that packets can still be sent.

Reported-by: Piotr Jaroszyński <p.jaroszynski@gmail.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[build] Speed up rebuilding on header file changes
Michael Brown [Wed, 14 Jul 2010 17:29:16 +0000 (18:29 +0100)] 
[build] Speed up rebuilding on header file changes

Split src_template into deps_template (which handles the definition of
foo_DEPS) and rules_template (which handles the rules referencing
foo_DEPS).  The rules_template is not affected by any included header
files and so does not need to be reprocessed following a change to an
included header file.

This reduces the time required to rebuild the Makefile rules following
a change to stdint.h by around 45%, at a cost of increasing the time
required to rebuild after a "make veryclean" by around 3%.

Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[build] Standardise variable naming for inter-build state files
Michael Brown [Wed, 14 Jul 2010 16:43:44 +0000 (17:43 +0100)] 
[build] Standardise variable naming for inter-build state files

For files such as $(BIN)/.blib.list, standardise the variable names
used to represent the file contents.

Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[build] Avoid unnecessary "rm" and "touch" in dependency generation
Michael Brown [Wed, 14 Jul 2010 15:14:29 +0000 (16:14 +0100)] 
[build] Avoid unnecessary "rm" and "touch" in dependency generation

Speed up dependency generation by omitting the totally unnecessary
"rm" and "touch" commands.  This reduces the time taken to generate
dependencies by around 6%.

Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[build] Mark weak functions noinline
Stefan Hajnoczi [Wed, 14 Jul 2010 09:13:44 +0000 (10:13 +0100)] 
[build] Mark weak functions noinline

Weak functions whose visibility is hidden may be inlined due to a bug
in GCC.  Explicitly mark weak functions noinline to work around the
problem.

This makes the PXE_MENU config option work again, the PXE boot menu
was never being called because the compiler inlined a weak stub
function.

The GCC bug was identified and fixed by Richard Sandiford
<rdsandiford@googlemail.com> but in the meantime iPXE needs to
implement a workaround.

Reported-by: Steve Jones <steve@squaregoldfish.co.uk>
Reported-by: Shao Miller <shao.miller@yrdsb.edu.on.ca>
Suggested-by: Joshua Oreman <oremanj@rwcr.net>
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
Modified-by: Michael Brown <mcb30@ipxe.org>
Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[hci] Continue processing while prompting for shell banner
Michael Brown [Wed, 14 Jul 2010 11:37:29 +0000 (12:37 +0100)] 
[hci] Continue processing while prompting for shell banner

Continue calling step() while displaying the shell banner.  This
potentially allows TCP connections to close gracefully after a failed
boot attempt.

Inspired-by: Guo-Fu Tseng <cooldavid@cooldavid.org>
Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[davicom] Use iPXE debugging infrastructure
Michael Brown [Wed, 14 Jul 2010 11:19:17 +0000 (12:19 +0100)] 
[davicom] Use iPXE debugging infrastructure

Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[tulip] Use iPXE debugging infrastructure
Michael Brown [Wed, 14 Jul 2010 11:17:45 +0000 (12:17 +0100)] 
[tulip] Use iPXE debugging infrastructure

Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[debug] Expose pause() and more() debugging functions
Michael Brown [Wed, 14 Jul 2010 11:01:20 +0000 (12:01 +0100)] 
[debug] Expose pause() and more() debugging functions

Include the pause() and more() debugging functions within the general
iPXE debugging framework, by introducing DBGxxx_PAUSE() and
DBGxxx_MORE() macros.

Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[debug] Remove unused guard_region() and check_region() functions
Michael Brown [Wed, 14 Jul 2010 10:44:58 +0000 (11:44 +0100)] 
[debug] Remove unused guard_region() and check_region() functions

Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[build] Remove some obsolete header files
Michael Brown [Wed, 14 Jul 2010 10:38:02 +0000 (11:38 +0100)] 
[build] Remove some obsolete header files

Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[console] Remove never-used putline() method
Michael Brown [Wed, 14 Jul 2010 10:27:42 +0000 (11:27 +0100)] 
[console] Remove never-used putline() method

putline() was introduced back in 2007 for a feature that was never
committed.  No console driver implements it and no code calls it, so
remove it from struct console_driver.

Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[cmdline] Fix inconsistent and ugly code formatting in shell_banner()
Michael Brown [Wed, 14 Jul 2010 10:17:26 +0000 (11:17 +0100)] 
[cmdline] Fix inconsistent and ugly code formatting in shell_banner()

Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[tcp] Randomise local TCP port
Guo-Fu Tseng [Tue, 13 Jul 2010 16:24:01 +0000 (17:24 +0100)] 
[tcp] Randomise local TCP port

Signed-off-by: Guo-Fu Tseng <cooldavid@cooldavid.org>
Modified-by: Michael Brown <mcb30@ipxe.org>
Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[tcp] Fix typos by changing ntohl() to htonl() where appropriate
Michael Brown [Tue, 13 Jul 2010 16:18:48 +0000 (17:18 +0100)] 
[tcp] Fix typos by changing ntohl() to htonl() where appropriate

Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[tcp] Store local port in host byte order
Michael Brown [Tue, 13 Jul 2010 16:15:57 +0000 (17:15 +0100)] 
[tcp] Store local port in host byte order

Every other scalar integer value in struct tcp_connection is in host
byte order; change the definition of local_port to match.

Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[image] Fix a memory leak in free_image()
Piotr Jaroszyński [Thu, 8 Jul 2010 13:54:55 +0000 (15:54 +0200)] 
[image] Fix a memory leak in free_image()

image_set_cmdline() strdup()s cmdline, which free_image() doesn't
clean up.

Signed-off-by: Piotr Jaroszyński <p.jaroszynski@gmail.com>
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[pcnet32] Fix pcnet32_wio_reset() bug
Andrei Faur [Wed, 7 Jul 2010 12:43:41 +0000 (15:43 +0300)] 
[pcnet32] Fix pcnet32_wio_reset() bug

This bug caused .probe to fail because the NIC did not reset properly.

Signed-off-by: Andrei Faur <da3drus@gmail.com>
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[tcp] Fix potential use-after-free when accessing timestamp option
Michael Brown [Wed, 7 Jul 2010 11:57:08 +0000 (12:57 +0100)] 
[tcp] Fix potential use-after-free when accessing timestamp option

Reported-by: Piotr Jaroszyński <p.jaroszynski@gmail.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[refcnt] Fix embedded image building
Alessandro Salvatori [Mon, 5 Jul 2010 10:01:23 +0000 (11:01 +0100)] 
[refcnt] Fix embedded image building

Modified-by: Michael Brown <mcb30@ipxe.org>
Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[pcnet32] Fix uninitialised variable
Michael Brown [Fri, 25 Jun 2010 10:12:40 +0000 (11:12 +0100)] 
[pcnet32] Fix uninitialised variable

Reported-by: Geoff Lywood <glywood@vmware.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[myri10ge] Add NonVolatile Option (nvo) support
Glenn Brown [Wed, 23 Jun 2010 20:18:36 +0000 (13:18 -0700)] 
[myri10ge] Add NonVolatile Option (nvo) support

Add NonVolatile Option (nvo) and NonVolatile Storage (nvs) support to
the myri10ge driver using the EEPROM read/write mechanism provided by
the NIC's Vendor Specific PCI capability.

The myri10ge NIC is capabile of storing 64KB or more of nonvolatile
options, but this patch advertises only 512 bytes of nvo storage
because iPXE malloc's a buffer matching the total size we advertise.
512 is plenty without wasting malloc'd memory.  (The 2 other drivers
currently supporting nvo advertise 256 bytes or less.)

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[settings] Add setting deletion (Ctrl-D) interface
Glenn Brown [Wed, 23 Jun 2010 20:18:35 +0000 (13:18 -0700)] 
[settings] Add setting deletion (Ctrl-D) interface

Make Ctrl-D delete a setting, because the Text User Interface (tui)
previously provided no way to delete a setting.  Also, update the
on-screen instructions to describe the new feature.  Deleting settings
is especially important for settings stored in precious nonvolatile
storage.

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[settings] Enable jump scroll in config UI
Glenn Brown [Wed, 23 Jun 2010 20:18:34 +0000 (13:18 -0700)] 
[settings] Enable jump scroll in config UI

Implement jump scrolling with "..." displayed where the settings list
continues off-screen, because there are now too many settings to fit
on screen in the "config ..." text user interface.

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[pci] Define Vendor Specific capability ID
Glenn Brown [Wed, 23 Jun 2010 20:18:33 +0000 (13:18 -0700)] 
[pci] Define Vendor Specific capability ID

Add a PCI_CAP_ID_VNDR definition for the PCI standard "Vendor
Specific" capability ID.

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[romprefix] Do not check for BBS compatibility
Michael Brown [Thu, 24 Jun 2010 18:03:04 +0000 (19:03 +0100)] 
[romprefix] Do not check for BBS compatibility

The existence and usage of the BEV entry point is covered by the PnP
spec, not the BBS spec; the BBS spec merely describes a policy for
selecting the boot device order.  iPXE should therefore check only for
a PnP BIOS in order to decide whether or not to hook INT19.

Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[build] Fix broken build caused by implied dependency upon "perl"
Michael Brown [Thu, 24 Jun 2010 16:20:35 +0000 (17:20 +0100)] 
[build] Fix broken build caused by implied dependency upon "perl"

Commit ea12dc0 ("[build] Avoid hard-coding the path to perl")
introduced a build failure for fully clean trees (e.g. after running
"make veryclean"), since the dependency upon $(PARSEROM) now includes
a dependency upon "perl" (which doesn't exist) rather than upon
"/usr/bin/perl" (which does exist).

There should of course be no dependency upon the perl binary at all;
the dependency should be upon "./util/parserom.pl" alone.

Fix by removing the $(PERL) from the definition of Perl-based utility
paths, and adding $(PERL) at the point of usage.

Reported-by: Stefan Hajnoczi <stefanha@gmail.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[build] Avoid hard-coding the path to perl
Michael Brown [Thu, 24 Jun 2010 00:23:00 +0000 (01:23 +0100)] 
[build] Avoid hard-coding the path to perl

The path "/usr/bin/perl" has been hard-coded since Etherboot 5.1, for
no discernible reason.  Use just "perl" instead to fix the
inconsistency and allow building on systems with Perl installed
outside of /usr/bin.

Reported-by: Gabor Z. Papp <gzp@papp.hu>
Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[efi] Build iPXE script support into EFI binaries by default
Geoff Lywood [Wed, 16 Jun 2010 21:35:24 +0000 (14:35 -0700)] 
[efi] Build iPXE script support into EFI binaries by default

Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[r8169] Remove driver cfg lookup, use pci_device_id->driver_data instead
Andrei Faur [Tue, 22 Jun 2010 16:41:58 +0000 (19:41 +0300)] 
[r8169] Remove driver cfg lookup, use pci_device_id->driver_data instead

This patch removes the cfg lookup made in the r8169 driver and
replaces it with equivalent information found in the driver_data field
of the pci_device_id structure.

Signed-off-by: Andrei Faur <da3drus@gmail.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[tls] Handle multiple handshake records
Michael Brown [Wed, 23 Jun 2010 00:01:32 +0000 (01:01 +0100)] 
[tls] Handle multiple handshake records

The handshake record in TLS can contain multiple messages.

Originally-fixed-by: Timothy Stack <tstack@vmware.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[refcnt] Add ref_no_free handler
Joshua Oreman [Thu, 26 Nov 2009 01:27:50 +0000 (17:27 -0800)] 
[refcnt] Add ref_no_free handler

Since more reference-counted structures than embedded images might
want to mark themselves unfreeable, expose a dummy ref_no_free().

Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[http] Pass through unknown interface method calls
Michael Brown [Tue, 22 Jun 2010 18:33:39 +0000 (19:33 +0100)] 
[http] Pass through unknown interface method calls

Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[interface] Allow for non-pass-through interface methods
Michael Brown [Tue, 22 Jun 2010 18:12:40 +0000 (19:12 +0100)] 
[interface] Allow for non-pass-through interface methods

xfer_vredirect() should not be allowed to propagate to a pass-through
interface.  For example, when an HTTPS connection is opened, the
redirect message should cause the TLS layer to reopen the TCP socket,
rather than causing the HTTP layer to disconnect from the TLS layer.

Fix by allowing for non-pass-through interface methods, and setting
xfer_vredirect() to be one such method.

This is slightly ugly, in that it complicates the notion of an
interface method call by adding a "pass-through" / "non-pass-through"
piece of metadata.  However, the only current user of xfer_vredirect()
is iscsi.c, which uses it only because we don't yet have an
ioctl()-style call for retrieving the underlying socket address.
The new interface infrastructure allows for such a call to be created,
at which time this sole user of xfer_vredirect() can be removed,
xfer_vredirect() can cease to be an interface method and become simply
a wrapper around xfer_vreopen(), and the concept of a non-pass-through
interface method can be reverted.

Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[interface] Convert all data-xfer interfaces to generic interfaces
Michael Brown [Wed, 16 Jun 2010 00:31:29 +0000 (01:31 +0100)] 
[interface] Convert all data-xfer interfaces to generic interfaces

Remove data-xfer as an interface type, and replace data-xfer
interfaces with generic interfaces supporting the data-xfer methods.

Filter interfaces (as used by the TLS layer) are handled using the
generic pass-through interface capability.  A side-effect of this is
that deliver_raw() no longer exists as a data-xfer method.  (In
practice this doesn't lose any efficiency, since there are no
instances within the current codebase where xfer_deliver_raw() is used
to pass data to an interface supporting the deliver_raw() method.)

Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[interface] Convert all name-resolution interfaces to generic interfaces
Michael Brown [Fri, 13 Jun 2008 02:36:24 +0000 (03:36 +0100)] 
[interface] Convert all name-resolution interfaces to generic interfaces

Remove name-resolution as an interface type, and replace
name-resolution interfaces with generic interfaces supporting the
resolv_done() method.

Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[interface] Convert all job-control interfaces to generic interfaces
Michael Brown [Thu, 12 Jun 2008 20:47:19 +0000 (21:47 +0100)] 
[interface] Convert all job-control interfaces to generic interfaces

Remove job-control as an interface type, and replace job-control
interfaces with generic interfaces supporting the close() method.
(Both done() and kill() are absorbed into the function of close();
kill() is merely close(-ECANCELED).)

Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[interface] Expand object interface to allow for polymorphic interfaces
Michael Brown [Thu, 12 Jun 2008 18:43:25 +0000 (19:43 +0100)] 
[interface] Expand object interface to allow for polymorphic interfaces

We have several types of object interface at present (data-xfer, job
control, name resolution), and there is some duplication of
functionality between them.  For example, job_done(), job_kill() and
xfer_close() are almost isomorphic to each other.

This updated version of the object interface mechanism allows for each
interface to export an arbitrary list of supported operations.
Advantages include:

  Operations methods now receive a pointer to the object, rather than
  a pointer to the interface.  This allows an object to, for example,
  implement a single close() method that can handle close() operations
  from any of its exposed interfaces.

  The close() operation is implemented as a generic operation (rather
  than having specific variants for data-xfer, job control, etc.).
  This will allow functions such as monojob_wait() to be used to wait
  for e.g.  a name resolution to complete.

  The amount of boilerplate code required in objects is reduced, not
  least because it is no longer necessary to include per-interface
  methods that simply use container_of() to derive a pointer to the
  object and then tail-call to a common per-object method.

  The cost of adding new operations is reduced; adding a new data-xfer
  operation such as stat() no longer incurs the penalty of adding a
  .stat member to the operations table of all existing data-xfer
  interfaces.

The data-xfer, job control and name resolution interfaces have not yet
been updated to use the new interface mechanism, but the code will
still compile and run.

Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[retry] Use start_timer_fixed() instead of direct timeout manipulation
Michael Brown [Tue, 15 Jun 2010 17:16:02 +0000 (18:16 +0100)] 
[retry] Use start_timer_fixed() instead of direct timeout manipulation

Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[retry] Add timer_init() wrapper function
Michael Brown [Tue, 15 Jun 2010 17:13:36 +0000 (18:13 +0100)] 
[retry] Add timer_init() wrapper function

Standardise on using timer_init() to initialise an embedded retry
timer, to match the coding style used by other embedded objects.

Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[refcnt] Add ref_init() wrapper function
Michael Brown [Tue, 15 Jun 2010 16:33:23 +0000 (17:33 +0100)] 
[refcnt] Add ref_init() wrapper function

Standardise on using ref_init() to initialise an embedded reference
count, to match the coding style used by other embedded objects.

Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[pcnet32] Replace pcnet32 with native driver
Andrei Faur [Sun, 20 Jun 2010 19:23:01 +0000 (22:23 +0300)] 
[pcnet32] Replace pcnet32 with native driver

This patch replaces the old pcnet32 driver with a new one that
uses iPXE's API.

Signed-off-by: Andrei Faur <da3drus@gmail.com>
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[jme] Fix 64-bit compile of JMicron ethernet driver
Geoff Lywood [Tue, 15 Jun 2010 00:46:36 +0000 (17:46 -0700)] 
[jme] Fix 64-bit compile of JMicron ethernet driver

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[process] Hold reference to process during call to step()
Michael Brown [Fri, 13 Jun 2008 02:39:22 +0000 (03:39 +0100)] 
[process] Hold reference to process during call to step()

It is conceivable that the process may terminate during the execution
of step().  If nothing else holds a reference to the containing
object, this would cause the object to be freed prior to returning
from step().

Add a ref_get()/ref_put() around the call to ->step() to prevent this
from happening.

Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[jme] Fix refill behavior
Guo-Fu Tseng [Fri, 4 Jun 2010 14:23:15 +0000 (22:23 +0800)] 
[jme] Fix refill behavior

After changing the driver to refill after feed, if any error occurs a
non-contiguous empty buffer will be introduced in the ring due to my
reuse-buffer-when-error implementation.

Reported-by: Marty Connor <mdc@etherboot.org>
Signed-off-by: Guo-Fu Tseng <cooldavid@cooldavid.org>
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[ethernet] Move Ethernet MAC address checking routines to ethernet.h
Michael Brown [Fri, 4 Jun 2010 19:24:45 +0000 (22:24 +0300)] 
[ethernet] Move Ethernet MAC address checking routines to ethernet.h

Originally-fixed-by: Faur Andrei <da3drus@gmail.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[eepro100] Add PCI ID for Intel Pro/100 VE
Erwan Velu [Thu, 3 Jun 2010 20:28:38 +0000 (22:28 +0200)] 
[eepro100] Add PCI ID for Intel Pro/100 VE

Signed-off-by: Erwan Velu <erwanaliasr1@gmail.com>
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[doc] Fix comment on Linux/x86 boot protocol path
Wu Fengguang [Thu, 3 Jun 2010 03:16:03 +0000 (11:16 +0800)] 
[doc] Fix comment on Linux/x86 boot protocol path

Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[jme] Add JMicron Ethernet driver
Guo-Fu Tseng [Mon, 31 May 2010 22:09:02 +0000 (06:09 +0800)] 
[jme] Add JMicron Ethernet driver

A new driver for JMicron Ethernet controller.

Reviewed-by: Joshua Oreman <oremanj@rwcr.net>
Reviewed-by: Michael Brown <mbrown@fensystems.co.uk>
Reviewed-by: Marty Connor <mdc@etherboot.org>
Signed-off-by: Guo-Fu Tseng <cooldavid@cooldavid.org>
Modified-by: Michael Brown <mcb30@ipxe.org>
Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[efi] Add the "snpnet" driver
Geoff Lywood [Fri, 28 May 2010 03:08:28 +0000 (20:08 -0700)] 
[efi] Add the "snpnet" driver

Add a new network driver that consumes the EFI Simple Network
Protocol.  Also add a bus driver that can find the Simple Network
Protocol that iPXE was loaded from; the resulting behavior is similar
to the "undionly" driver for BIOS systems.

Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[qib7322] Fix whitespace errors
Michael Brown [Tue, 1 Jun 2010 18:11:38 +0000 (19:11 +0100)] 
[qib7322] Fix whitespace errors

Fix up the whitespace errors inadvertently introduced by the
last-minute rename from the internal QLogic codename to "qib7322".

Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[qib7322] Fix uninitialized variables warning
Shao Miller [Tue, 1 Jun 2010 17:19:33 +0000 (17:19 +0000)] 
[qib7322] Fix uninitialized variables warning

Signed-off-by: Shao Miller <shao.miller@yrdsb.edu.on.ca>
Modified-by: Michael Brown <mcb30@ipxe.org>
Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[errdb] Add errdb.pl script to build error database
Michael Brown [Mon, 31 May 2010 13:22:24 +0000 (14:22 +0100)] 
[errdb] Add errdb.pl script to build error database

Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[libc] Enable automated extraction of error usage reports
Michael Brown [Sun, 30 May 2010 14:29:05 +0000 (15:29 +0100)] 
[libc] Enable automated extraction of error usage reports

Add preprocessor magic to the error definitions to enable every error
usage to be tracked.

Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[pxe] Remove obsolete pxe_errortab.c
Michael Brown [Sun, 30 May 2010 22:27:22 +0000 (23:27 +0100)] 
[pxe] Remove obsolete pxe_errortab.c

strerror() has not been able to use the PXE-only error table since
commit 9aa61ad ("Add per-file error identifiers") back in 2007.

Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[efi] Tidy up output of EFI header import script
Michael Brown [Sat, 29 May 2010 22:47:30 +0000 (23:47 +0100)] 
[efi] Tidy up output of EFI header import script

Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[legal] Add FILE_LICENCE declarations to EFI header files
Michael Brown [Sat, 29 May 2010 22:06:06 +0000 (23:06 +0100)] 
[legal] Add FILE_LICENCE declarations to EFI header files

Autodetect the BSD licence statement in EFI header files, and add a
suitable FILE_LICENCE macro to the version imported into the iPXE
tree.

Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[efi] Synchronise EFI header files
Michael Brown [Sat, 29 May 2010 21:39:22 +0000 (22:39 +0100)] 
[efi] Synchronise EFI header files

Now that the PACKED macro conflict is resolved, we can use an
unmodified import of the EFI header files (using
include/ipxe/efi/import.pl).

Synchronised to EDK2 SVN revision 10556.

Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[build] Remove PACKED macro
Michael Brown [Sat, 29 May 2010 15:51:48 +0000 (16:51 +0100)] 
[build] Remove PACKED macro

Most of iPXE uses __attribute__((packed)) anyway, and PACKED conflicts
with an identically-named macro in the upstream EFI header files.

Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[efi] Update UEFI header files with latest version from TianoCore
Geoff Lywood [Fri, 28 May 2010 22:06:24 +0000 (15:06 -0700)] 
[efi] Update UEFI header files with latest version from TianoCore

Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[dhcp] Use correct DHCP options on EFI systems
Geoff Lywood [Tue, 4 May 2010 21:31:46 +0000 (14:31 -0700)] 
[dhcp] Use correct DHCP options on EFI systems

See RFC 4578 for details.

Signed-off-by: Joshua Oreman <oremanj@rwcr.net>
Modified-by: Michael Brown <mcb30@ipxe.org>
Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[iscsi] Allow base64 encoding in large binary values
Piotr Jaroszyński [Fri, 28 May 2010 18:52:47 +0000 (19:52 +0100)] 
[iscsi] Allow base64 encoding in large binary values

Modified-by: Michael Brown <mcb30@ipxe.org>
Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[iscsi] Use generic base16 functions for iSCSI reverse CHAP
Michael Brown [Fri, 28 May 2010 18:27:59 +0000 (19:27 +0100)] 
[iscsi] Use generic base16 functions for iSCSI reverse CHAP

Yes, I forgot to convert this function before pushing.

Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[infiniband] Use generic base16 functions for SRP
Michael Brown [Fri, 28 May 2010 18:04:59 +0000 (19:04 +0100)] 
[infiniband] Use generic base16 functions for SRP

Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[iscsi] Use generic base16 functions for iSCSI
Michael Brown [Fri, 28 May 2010 15:21:56 +0000 (16:21 +0100)] 
[iscsi] Use generic base16 functions for iSCSI

Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[base16] Add generic base16 encoding and decoding routines
Michael Brown [Fri, 28 May 2010 13:58:04 +0000 (14:58 +0100)] 
[base16] Add generic base16 encoding and decoding routines

Base16 encoding is currently implemented in both iSCSI and SRP.

Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[base64] Add ability to decode base64 strings
Michael Brown [Fri, 28 May 2010 11:42:00 +0000 (12:42 +0100)] 
[base64] Add ability to decode base64 strings

Inspired-by: Piotr Jaroszyński <p.jaroszynski@gmail.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[base64] Allow base64_encode() to handle arbitrary data
Michael Brown [Fri, 28 May 2010 00:17:22 +0000 (01:17 +0100)] 
[base64] Allow base64_encode() to handle arbitrary data

Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[doc] Re-add README file
Michael Brown [Thu, 27 May 2010 23:03:47 +0000 (00:03 +0100)] 
[doc] Re-add README file

The README file was accidentally deleted in commit 2aad3fa ("[build]
Use weak definitions instead of weak declarations").

Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[build] Add rtl8139.rom to the default build target list
Michael Brown [Thu, 27 May 2010 22:20:44 +0000 (23:20 +0100)] 
[build] Add rtl8139.rom to the default build target list

rtl8139.rom is the target used in qemu/kvm, which is the default test
platform for iPXE.

Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[build] Allow building against a zlib in a non-standard location
Geoff Lywood [Thu, 27 May 2010 22:00:07 +0000 (23:00 +0100)] 
[build] Allow building against a zlib in a non-standard location

Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[efi] Fix .efi and .efidrv linking
Piotr Jaroszyński [Tue, 30 Mar 2010 16:18:43 +0000 (18:18 +0200)] 
[efi] Fix .efi and .efidrv linking

The linker chooses to look for _start first and always picks
efidrvprefix.o to satisfy it (probably because it's earlier in the
archive) which causes a multiple definition error when the linker
later has to pick efiprefix.o for other symbols.

Fix by using EFI-specific TGT_LD_FLAGS with an explicit entry point.

Signed-off-by: Piotr Jaroszyński <p.jaroszynski@gmail.com>
Signed-off-by: Joshua Oreman <oremanj@rwcr.net>
Modified-by: Michael Brown <mcb30@ipxe.org>
Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[compiler] Fix 64bit compile time errors
Piotr Jaroszyński [Tue, 30 Mar 2010 13:33:20 +0000 (15:33 +0200)] 
[compiler] Fix 64bit compile time errors

Apart from format specifier fixes there are two changes in proper code:
- Change type of regs in skge_hw to unsigned long
- Cast result of sizeof in myri10ge to uint32_t

Both don't change anything for i386 and should be fine on x86_64.

Signed-off-by: Piotr Jaroszyński <p.jaroszynski@gmail.com>
Signed-off-by: Joshua Oreman <oremanj@rwcr.net>
Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[dhcp] Don't consider invalid offers to be duplicates
Joshua Oreman [Wed, 26 May 2010 21:22:03 +0000 (14:22 -0700)] 
[dhcp] Don't consider invalid offers to be duplicates

This fixes a regression in BOOTP support; since BOOTP requests often
have the `siaddr' field set to 0.0.0.0, they would be considered
duplicates of the first zeroed-out offer slot.

Signed-off-by: Joshua Oreman <oremanj@rwcr.net>
Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[build] Use weak definitions instead of weak declarations
Joshua Oreman [Thu, 27 May 2010 00:52:44 +0000 (17:52 -0700)] 
[build] Use weak definitions instead of weak declarations

This removes the need for inline safety wrappers, marginally reducing
the size penalty of weak functions, and works around an apparent
binutils bug that causes undefined weak symbols to not actually be
NULL when compiling with -fPIE (as EFI builds do).

A bug in versions of binutils prior to 2.16 (released in 2005) will
cause same-file weak definitions to not work with those
toolchains. Update the README to reflect our new dependency on
binutils >= 2.16.

Signed-off-by: Joshua Oreman <oremanj@rwcr.net>
Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[efi] Fix link order for elf2efi
Piotr Jaroszyński [Tue, 30 Mar 2010 13:34:17 +0000 (15:34 +0200)] 
[efi] Fix link order for elf2efi

Dependencies are considered in left-to-right order so the source file
needs to come first in this case.

Signed-off-by: Piotr Jaroszyński <p.jaroszynski@gmail.com>
Signed-off-by: Joshua Oreman <oremanj@rwcr.net>
Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[build] Inhibit "skipping incompatible" message from ld
Michael Brown [Thu, 27 May 2010 08:42:53 +0000 (09:42 +0100)] 
[build] Inhibit "skipping incompatible" message from ld

On 64-bit systems with both 32-bit and 64-bit libraries installed, ld
tends to generate noisy "skipping incompatible /usr/lib/libxxx.so"
messages when building elf2efi.c.

Fix by passing --no-warn-search-mismatch to ld.

Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[efi] Verify object format support in elf2efi.c
Geoff Lywood [Thu, 27 May 2010 00:04:12 +0000 (17:04 -0700)] 
[efi] Verify object format support in elf2efi.c

Currently, if you attempt to build 64-bit EFI binaries on a 32-bit
system without a suitable cross-compiling version of libbfd, the iPXE
build will die with a segmentation fault in elf2efi64.

Fix by properly handling the return value from bfd_check_format().

Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[dhcp] Honor PXEBS_SKIP option in discovery control
Joshua Oreman [Tue, 25 May 2010 20:17:40 +0000 (16:17 -0400)] 
[dhcp] Honor PXEBS_SKIP option in discovery control

It is permissible for a DHCP packet containing PXE options to specify
only "discovery control", instead of the more typical boot menu +
prompt options. This is the strategy used by older versions of
dnsmasq; by specifying the discovery control as PXEBS_SKIP, they cause
vendor PXE ROMs to ignore boot server discovery and just use the
filename and next-server options in the initial (Proxy)DHCP packet.
Modify iPXE to accept this behavior, to be more compatible with the
Intel firmware.

Signed-off-by: Joshua Oreman <oremanj@rwcr.net>
Tested-by: Kyle Kienapfel <kyle@shadowmage.org>
Modified-by: Michael Brown <mcb30@ipxe.org>
Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[wpa] Remove PMKID checking
Joshua Oreman [Wed, 19 May 2010 03:39:32 +0000 (23:39 -0400)] 
[wpa] Remove PMKID checking

PMKID checking is an additional pre-check that helps detect invalid
passphrases before going through the full handshaking procedure. It
takes up some amount of code size, and is not necessary from a
security perspective. It also is implemented improperly by some
routers, which was causing iPXE to give spurious authentication
errors. Remove it for these reasons.

Signed-off-by: Joshua Oreman <oremanj@rwcr.net>
Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[bitmap] Fix bitmaps on 64-bit
Geoff Lywood [Wed, 26 May 2010 23:39:17 +0000 (00:39 +0100)] 
[bitmap] Fix bitmaps on 64-bit

Modified-by: Michael Brown <mcb30@ipxe.org>
Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[comboot] Propagate carry flag from COMBOOT API
Stefan Hajnoczi [Sat, 8 May 2010 10:49:09 +0000 (11:49 +0100)] 
[comboot] Propagate carry flag from COMBOOT API

COMBOOT API calls set the carry flag on failure.  This was not being
propagated because the COMBOOT interrupt handler used iret to return
with EFLAGS restored from the stack.  This patch propagates CF before
returning from the interrupt.

Reported-by: Geoff Lywood <glywood@vmware.com>
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
Signed-off-by: Marty Connor <mdc@etherboot.org>
Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[qib7322] Add support for QLogic 7322 HCA
Michael Brown [Wed, 11 Nov 2009 00:50:34 +0000 (00:50 +0000)] 
[qib7322] Add support for QLogic 7322 HCA

Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[tcp] Update received sequence number before delivering received data
Michael Brown [Fri, 21 May 2010 23:45:49 +0000 (00:45 +0100)] 
[tcp] Update received sequence number before delivering received data

iPXE currently updates the TCP sequence number after delivering the
data to the application via xfer_deliver_iob().  If the application
responds to the received data by transmitting more data, this would
result in a stale ACK number appearing in the transmitted packet,
which potentially causes retransmissions and also gives the
undesirable appearance of violating causality (by sending a response
to a message that we claim not to have yet received).

Reported-by: Guo-Fu Tseng <cooldavid@cooldavid.org>
Signed-off-by: Michael Brown <mcb30@ipxe.org>

9 years ago[script] Accept "#!gpxe" as well as "#!ipxe" as a script magic marker
Michael Brown [Fri, 21 May 2010 23:27:10 +0000 (00:27 +0100)] 
[script] Accept "#!gpxe" as well as "#!ipxe" as a script magic marker

Signed-off-by: Michael Brown <mcb30@ipxe.org>