Michael Brown [Tue, 9 Jan 2007 03:20:22 +0000 (03:20 +0000)]
Added UNDI root bus driver (which saves including all the PCI bus code,
UNDI ROM code etc. when you just want a "undi.kpxe"-type image).
This driver cannot be used in conjunction with any other driver (it will
crash), or in any other format than .kpxe (it just won't find any network
devices).
Michael Brown [Mon, 8 Jan 2007 03:48:26 +0000 (03:48 +0000)]
New strategy: always stop both base code and UNDI. Always free base code
memory (unless we get an error while stopping the base code). Leave UNDI
resident (though stopped) for .kpxe.
Still need to add code to record the device identification parameters
prior to stopping UNDI.
Michael Brown [Mon, 8 Jan 2007 02:38:10 +0000 (02:38 +0000)]
Separated out UNDI ROM location code into undirom.c, and use struct
undi_rom rather than struct pxe_driver. (This is part of the naming
consistency fixes).
Michael Brown [Mon, 8 Jan 2007 02:24:53 +0000 (02:24 +0000)]
Use "struct undi_device" instead of "struct pxe_device", and use the
function prefix "undinet_" and the variable name "undinic" in undinet.c,
so that we can reserve the variable name "undi" for a struct undi_device.
The idea is that we preserve the Etherboot 5.4 convention that the "UNDI"
code refers to our using an underlying UNDI stack, while the "PXE" code
refers to our providing a PXE API.
Michael Brown [Mon, 8 Jan 2007 01:29:51 +0000 (01:29 +0000)]
Add device to hierarchy before calling the driver's probe() function; this
way everything remains consistent if the probe() ends up creating child
devices.
Michael Brown [Sun, 7 Jan 2007 19:02:17 +0000 (19:02 +0000)]
Move START_UNDI, UNDI_STARTUP, UNDI_INITIALIZE and
UNDI_GET_INFORMATION calls into drivers/net/undi.c. undi_probe() now
gets given a pxe_device representing a PXE stack that has been loaded
into memory but not initialised in any way.
Michael Brown [Thu, 4 Jan 2007 19:42:05 +0000 (19:42 +0000)]
Obsolete; net driver functionality is now in undi_net.c and bus driver
functionality is now in pxebus.c. (Not all bus functionality is ported
across yet.)
Michael Brown [Thu, 4 Jan 2007 13:48:13 +0000 (13:48 +0000)]
Don't include __FUNCTION__ in assert() messages; it was causing the
function name to appear within the objects even in non-asserting
builds. (This could be considered a gcc bug.)
Removing __FUNCTION__ from assert() reduces the size of bin/blib.a by
around 2.5%!
Michael Brown [Fri, 29 Dec 2006 14:03:03 +0000 (14:03 +0000)]
Use auto-colourisation for debug messages.
Truncate TX length to TCP window at time of transmission rather than at
time of adding to TX packet; this is conceptually cleaner and also allows
the application to call tcp_send() multiple times to build up a single
packet.
Michael Brown [Fri, 29 Dec 2006 00:44:31 +0000 (00:44 +0000)]
Redefine TCP state to include "flags that have been sent" rather than
"flags that are currently being sent". This allows at least one special
case (checking that we haven't already sent a FIN in tcp_rx_fin()) to be
collapsed.
Michael Brown [Fri, 22 Dec 2006 13:04:50 +0000 (13:04 +0000)]
Ensure that old TCP connection state is destroyed before attempting to
reopen connection. (The TCP API will soon change to render this step
unnecessary.)
Michael Brown [Fri, 22 Dec 2006 12:24:12 +0000 (12:24 +0000)]
Cannot immediately overwrite the peer address when we parse
TargetAddress from the login response, because we still need the old
address while we close the connection!
Michael Brown [Thu, 21 Dec 2006 17:43:43 +0000 (17:43 +0000)]
When login fails, leave the session open but not in full feature
phase. In iscsi_issue(), detect this state and immediately refuse the
operation. This avoids trying multiple logins when scsi.c tries
several times to read the drive capacity.
Michael Brown [Wed, 20 Dec 2006 22:24:45 +0000 (22:24 +0000)]
KEY_XXX constants are now defined in gpxe/keys.h. Kept separate from
curses.h so that you don't have to suffer the curses namespace pollution
just to get the symbolic key names.