people/xl0/gpxe.git
12 years agoAdd ProxyDHCP support.
Michael Brown [Wed, 21 Nov 2007 21:51:43 +0000 (21:51 +0000)]
Add ProxyDHCP support.

12 years agoAdded netdev_nullify to natsemi_remove()
Marty Connor [Wed, 21 Nov 2007 15:33:51 +0000 (10:33 -0500)]
Added netdev_nullify to natsemi_remove()

12 years agoRemoved old e1000 driver.
Michael Brown [Wed, 21 Nov 2007 15:37:58 +0000 (15:37 +0000)]
Removed old e1000 driver.

12 years agoMerge commit 'origin/mdc-working'
Michael Brown [Wed, 21 Nov 2007 15:35:08 +0000 (15:35 +0000)]
Merge commit 'origin/mdc-working'

12 years agoRemove some assumptions about DHCP obtaining only a single options block.
Michael Brown [Wed, 21 Nov 2007 04:48:18 +0000 (04:48 +0000)]
Remove some assumptions about DHCP obtaining only a single options block.

12 years agoAdd PXE-required DHCP options to DHCPDISCOVER and DHCPREQUEST packets.
Michael Brown [Wed, 21 Nov 2007 03:57:30 +0000 (03:57 +0000)]
Add PXE-required DHCP options to DHCPDISCOVER and DHCPREQUEST packets.

12 years agoAdd UUID to DHCP request as option 97 (if available).
Michael Brown [Wed, 21 Nov 2007 03:29:53 +0000 (03:29 +0000)]
Add UUID to DHCP request as option 97 (if available).

12 years agoFixed receive instability by not enabling interrupts. duh.
Marty Connor [Wed, 21 Nov 2007 02:33:42 +0000 (21:33 -0500)]
Fixed receive instability by not enabling interrupts. duh.

I have successfully booted DOS via iSCSI and PXELINUX via TFTP with this
version of the e1000 driver.

12 years agoAdded definition of a UUID and uuid_ntoa() (for debugging), and
Michael Brown [Wed, 21 Nov 2007 02:27:07 +0000 (02:27 +0000)]
Added definition of a UUID and uuid_ntoa() (for debugging), and
implemented smbios_get_uuid().

12 years agoUpdate SMBIOS internal API to be easier to use, and not to require
Michael Brown [Wed, 21 Nov 2007 01:58:27 +0000 (01:58 +0000)]
Update SMBIOS internal API to be easier to use, and not to require
potentially exorbitant amounts of stack space.

12 years agoThis version now transmits and receives.
Marty Connor [Tue, 20 Nov 2007 21:23:12 +0000 (16:23 -0500)]
This version now transmits and receives.

There may still be an issue with memory handling, since it seems to
die ungracefully when ARP packets come in after loading a kernel.
Something to debug.

12 years agoAutonegotiation fixes. NIC now autonegotiates to whatever the switch supports.
Marty Connor [Tue, 20 Nov 2007 17:06:22 +0000 (12:06 -0500)]
Autonegotiation fixes.  NIC now autonegotiates to whatever the switch supports.

12 years agoA version of the new e1000 driver that transmits.
Marty Connor [Tue, 20 Nov 2007 15:23:32 +0000 (10:23 -0500)]
A version of the new e1000 driver that transmits.

autonegotiation still needs work.  receive is not working yet.

12 years agoReplace "Etherboot" strings with "gPXE".
Michael Brown [Tue, 20 Nov 2007 02:00:54 +0000 (02:00 +0000)]
Replace "Etherboot" strings with "gPXE".

12 years agoMerge branch 'master' of rom.etherboot.org:/pub/scm/gpxe
Michael Brown [Mon, 19 Nov 2007 20:14:49 +0000 (20:14 +0000)]
Merge branch 'master' of rom.etherboot.org:/gpxe

12 years agoAdd bin/pci_VVVV_DDDD target to allow building ROM images without
Michael Brown [Mon, 19 Nov 2007 20:14:20 +0000 (20:14 +0000)]
Add bin/pci_VVVV_DDDD target to allow building ROM images without
needing to know the gPXE internal ROM name.

12 years agoFix typo.
Marty Connor [Sun, 18 Nov 2007 16:12:54 +0000 (11:12 -0500)]
Fix typo.

12 years agoAdd e1000 directory to build, since the driver compiles cleanly.
Marty Connor [Sun, 18 Nov 2007 15:57:20 +0000 (10:57 -0500)]
Add e1000 directory to build, since the driver compiles cleanly.

12 years agoRename e1000_main.c to e1000.c to so we can type 'make bin/e1000.dsk' instead of...
Marty Connor [Sun, 18 Nov 2007 15:54:42 +0000 (10:54 -0500)]
Rename e1000_main.c to e1000.c to so we can type 'make bin/e1000.dsk' instead of 'make bin/e1000_main.dsk'

12 years agoAdd errfile definition for new e1000.c
Marty Connor [Sun, 18 Nov 2007 15:45:20 +0000 (10:45 -0500)]
Add errfile definition for new e1000.c

12 years agoIntroduce files for new e1000 driver
Marty Connor [Sun, 18 Nov 2007 15:31:00 +0000 (10:31 -0500)]
Introduce files for new e1000 driver

12 years agoAdd src/drivers/net/e1000 as home of new e1000 driver
Marty Connor [Sun, 18 Nov 2007 15:28:25 +0000 (10:28 -0500)]
Add src/drivers/net/e1000 as home of new e1000 driver

12 years agoMove current e1000 driver files to e1000-old/ directory to avoid collisions
Marty Connor [Sun, 18 Nov 2007 14:58:28 +0000 (09:58 -0500)]
Move current e1000 driver files to e1000-old/ directory to avoid collisions

12 years agoAdd ERRFILE information for e1000_main and e1000_hw, part of the new e1000 driver
Marty Connor [Sun, 18 Nov 2007 14:51:21 +0000 (09:51 -0500)]
Add ERRFILE information for e1000_main and e1000_hw, part of the new e1000 driver

It is likely we will rename e1000_main to e1000 when the new e1000 driver is debugged.

12 years agoRemove unnecessary variable.
Marty Connor [Sun, 18 Nov 2007 08:11:02 +0000 (03:11 -0500)]
Remove unnecessary variable.

12 years agoWork around a bug in the OpenSolaris iSCSI target.
Michael Brown [Mon, 5 Nov 2007 13:29:05 +0000 (13:29 +0000)]
Work around a bug in the OpenSolaris iSCSI target.

We didn't specify values for MaxRecvDataSegmentLength and
MaxBurstLength (to save space, since we were happy with the
RFC-defined default values of 8kB and 256kB respectively).  However,
the OpenSolaris target (incorrectly) assumes default values of zero
for these parameters.

The upshot was that the OpenSolaris target would get stuck in an
endless loop trying to send us the first 512-byte sector, zero bytes
at a time, and would eventually run out of memory and core-dump.

Fixed by explicitly specifying the default values for these two
parameters.

12 years agoAllow space for the kernel's real-mode .bss. Previously we weren't
Michael Brown [Sun, 4 Nov 2007 04:27:38 +0000 (04:27 +0000)]
Allow space for the kernel's real-mode .bss.  Previously we weren't
allowing any space for this, which makes it surprising that bzImage
loading ever worked.

12 years agoAdd missing attribute(packed) to two structures.
Michael Brown [Mon, 29 Oct 2007 21:22:00 +0000 (21:22 +0000)]
Add missing attribute(packed) to two structures.

12 years agoMerge branch 'master' of rom.etherboot.org:/pub/scm/gpxe
Michael Brown [Mon, 29 Oct 2007 17:22:27 +0000 (17:22 +0000)]
Merge branch 'master' of rom.etherboot.org:/gpxe

12 years agoMerge branch '3leaf'
Michael Brown [Mon, 29 Oct 2007 17:21:58 +0000 (17:21 +0000)]
Merge branch '3leaf'

12 years agoAdded one more PCI ID
Michael Brown [Mon, 22 Oct 2007 15:24:09 +0000 (16:24 +0100)]
Added one more PCI ID

12 years agoChange ROM names to lower case.
Michael Brown [Wed, 10 Oct 2007 23:43:21 +0000 (00:43 +0100)]
Change ROM names to lower case.

12 years agoEnsure that empty e820 regions are skipped even at the end of the
Michael Brown [Wed, 10 Oct 2007 19:12:25 +0000 (20:12 +0100)]
Ensure that empty e820 regions are skipped even at the end of the
memory map.  (We achieve this by setting CF on the last entry if it is
zero-length; this avoids the need to look ahead to see at each entry
if the *next* entry would be both the last entry and zero-length).

This fixes the "0kB base memory" error message upon starting Windows
2003 on a SunFire X2100.

12 years agoEnsure that empty e820 regions are skipped even at the end of the
Michael Brown [Wed, 10 Oct 2007 19:12:25 +0000 (20:12 +0100)]
Ensure that empty e820 regions are skipped even at the end of the
memory map.  (We achieve this by setting CF on the last entry if it is
zero-length; this avoids the need to look ahead to see at each entry
if the *next* entry would be both the last entry and zero-length).

This fixes the "0kB base memory" error message upon starting Windows
2003 on a SunFire X2100.

12 years agoAdd a missing PCI ID that is tested as working.
Michael Brown [Wed, 10 Oct 2007 01:07:18 +0000 (02:07 +0100)]
Add a missing PCI ID that is tested as working.

13 years agoForce a netdevice poll in net_tx() before attempting to transmit
Michael Brown [Thu, 4 Oct 2007 13:46:56 +0000 (14:46 +0100)]
Force a netdevice poll in net_tx() before attempting to transmit
packet, to work around the problem whereby small TX rings get backed
up because we haven't yet poll()ed for TX completions.

13 years agoForce a netdevice poll in net_tx() before attempting to transmit
Michael Brown [Thu, 4 Oct 2007 13:46:56 +0000 (14:46 +0100)]
Force a netdevice poll in net_tx() before attempting to transmit
packet, to work around the problem whereby small TX rings get backed
up because we haven't yet poll()ed for TX completions.

13 years agoRedefine bzimage_exec_context::mem_limit to be the highest permissible
Michael Brown [Fri, 28 Sep 2007 00:23:06 +0000 (01:23 +0100)]
Redefine bzimage_exec_context::mem_limit to be the highest permissible
byte, rather than the number of permissible bytes (i.e. subtract one
from the value under the previous definition to get the value under
the new definition).

This avoids integer overflow on 64-bit kernels, where
bzhdr.initrd_addr_max may be 0xffffffffffffffff; under the old
behaviour we set mem_limit equal to initrd_addr_max+1, which meant it
ended up as zero.  Kernel loads would fail with ENOBUFS.

13 years agoQuick and very dirty hack to get r8169 driver working again, prior to
Michael Brown [Wed, 26 Sep 2007 16:58:51 +0000 (17:58 +0100)]
Quick and very dirty hack to get r8169 driver working again, prior to
any rewrite.

13 years agoStandardise DBG_PRINTF()->DBG(), and remove custom definitions for
Michael Brown [Wed, 26 Sep 2007 16:38:36 +0000 (17:38 +0100)]
Standardise DBG_PRINTF()->DBG(), and remove custom definitions for
DBG_PRINTF() and assert().

13 years agoSwitch rm_ss and rm_sp back to being words; it'll make it less
Michael Brown [Tue, 25 Sep 2007 19:16:32 +0000 (20:16 +0100)]
Switch rm_ss and rm_sp back to being words; it'll make it less
confusing to read the code.

13 years agoDon't use the "rep ss movsb" trick to copy the RM stack to the PM
Michael Brown [Tue, 25 Sep 2007 19:14:20 +0000 (20:14 +0100)]
Don't use the "rep ss movsb" trick to copy the RM stack to the PM
stack; it breaks vmxassist.

13 years agorm_ss, rm_sp, and pm_esp don't need to be accessed from anywhere
Michael Brown [Tue, 25 Sep 2007 18:20:38 +0000 (19:20 +0100)]
rm_ss, rm_sp, and pm_esp don't need to be accessed from anywhere
outside of librm.S.

13 years agoMinor refactoring to eliminate duplication.
Michael Brown [Tue, 25 Sep 2007 18:06:38 +0000 (19:06 +0100)]
Minor refactoring to eliminate duplication.

13 years agoUse full protected mode for access to high memory within prefix, to
Michael Brown [Tue, 25 Sep 2007 17:01:15 +0000 (18:01 +0100)]
Use full protected mode for access to high memory within prefix, to
work around limitations in real-mode virtualisation support on Intel
VT-capable chips.

13 years agoAdded more verbose memory-map debugging.
Michael Brown [Fri, 21 Sep 2007 17:27:51 +0000 (18:27 +0100)]
Added more verbose memory-map debugging.

Added redundant call to get_memmap() in int13_boot() immediately
before jumping to boot sector, to assist in debugging.

13 years agoAdded more verbose memory-map debugging.
Michael Brown [Fri, 21 Sep 2007 17:27:51 +0000 (18:27 +0100)]
Added more verbose memory-map debugging.

Added redundant call to get_memmap() in int13_boot() immediately
before jumping to boot sector, to assist in debugging.

13 years agoMerge branch 'master' into 3leaf-delivery
Michael Brown [Fri, 21 Sep 2007 00:27:03 +0000 (01:27 +0100)]
Merge branch 'master' into 3leaf-delivery

13 years agoMerge branch 'master' of rom.etherboot.org:/pub/scm/gpxe
Michael Brown [Fri, 21 Sep 2007 00:26:06 +0000 (01:26 +0100)]
Merge branch 'master' of rom.etherboot.org:/gpxe

13 years agoInfinband requires longer link-layer addresses and headers than Ethernet.
Michael Brown [Fri, 21 Sep 2007 00:23:57 +0000 (01:23 +0100)]
Infinband requires longer link-layer addresses and headers than Ethernet.

13 years agoAdded defines for Infiniband files (which can't be committed to the
Michael Brown [Fri, 21 Sep 2007 00:19:04 +0000 (01:19 +0100)]
Added defines for Infiniband files (which can't be committed to the
main tree yet, but reserving the error numbers now avoids problems later).

13 years agoMinor debug message improvement.
Michael Brown [Mon, 17 Sep 2007 17:57:32 +0000 (18:57 +0100)]
Minor debug message improvement.

13 years agoUse RFC4390 whenever hardware address exceeds 16 bytes; this allows us
Michael Brown [Thu, 13 Sep 2007 00:53:04 +0000 (01:53 +0100)]
Use RFC4390 whenever hardware address exceeds 16 bytes; this allows us
to construct DHCP packets suitable for Infiniband.

13 years agoAdd const attribute to byte-swapping functions
Michael Brown [Sat, 15 Sep 2007 17:44:35 +0000 (18:44 +0100)]
Add const attribute to byte-swapping functions

13 years agoDon't get stuck in an infinite loop on negative integers!
Michael Brown [Sun, 16 Sep 2007 16:39:29 +0000 (17:39 +0100)]
Don't get stuck in an infinite loop on negative integers!

13 years agoAdd fls() for non-constant values.
Michael Brown [Sun, 16 Sep 2007 16:36:40 +0000 (17:36 +0100)]
Add fls() for non-constant values.

13 years agoMoved iobuf.h assertions outside the static inline functions, so that
Michael Brown [Mon, 17 Sep 2007 17:38:04 +0000 (18:38 +0100)]
Moved iobuf.h assertions outside the static inline functions, so that
the assert message's file and line number gives some clue as to the
real location of the problem.

Added similar assertions to list.h.

13 years agoReverted driver/net/mlx_ipoib to clean master state
Michael Brown [Tue, 18 Sep 2007 06:07:04 +0000 (07:07 +0100)]
Reverted driver/net/mlx_ipoib to clean master state

13 years agoMerge branch 'master' into 3leaf-rewrite
Michael Brown [Tue, 18 Sep 2007 06:03:57 +0000 (07:03 +0100)]
Merge branch 'master' into 3leaf-rewrite

13 years agoIB can't afford many RX buffers, because the MTU is so large. Reduce
Michael Brown [Tue, 18 Sep 2007 06:02:41 +0000 (07:02 +0100)]
IB can't afford many RX buffers, because the MTU is so large.  Reduce
the TCP window to compensate.

13 years agoAdded arbel.c
Michael Brown [Tue, 18 Sep 2007 05:37:22 +0000 (06:37 +0100)]
Added arbel.c

13 years agoRemove the last remaining visible hack.
Michael Brown [Tue, 18 Sep 2007 05:26:31 +0000 (06:26 +0100)]
Remove the last remaining visible hack.

13 years agoSeparated out to a clean new drivers/infiniband directory.
Michael Brown [Tue, 18 Sep 2007 05:06:55 +0000 (06:06 +0100)]
Separated out to a clean new drivers/infiniband directory.

13 years agoFirst version that works with SELF_INIT!
Michael Brown [Tue, 18 Sep 2007 04:46:49 +0000 (05:46 +0100)]
First version that works with SELF_INIT!

13 years agoGets most of the way through initialisation.
Michael Brown [Tue, 18 Sep 2007 04:39:34 +0000 (05:39 +0100)]
Gets most of the way through initialisation.

13 years agoAdded sw2hw_mpt
Michael Brown [Tue, 18 Sep 2007 03:45:55 +0000 (04:45 +0100)]
Added sw2hw_mpt

13 years agoINIT_HCA block now matches.
Michael Brown [Tue, 18 Sep 2007 03:20:41 +0000 (04:20 +0100)]
INIT_HCA block now matches.

13 years agoSeems to get through the ICM mapping process
Michael Brown [Tue, 18 Sep 2007 02:58:59 +0000 (03:58 +0100)]
Seems to get through the ICM mapping process

13 years agoICM allocation code in place; about to start test-and-compare runs.
Michael Brown [Tue, 18 Sep 2007 01:57:49 +0000 (02:57 +0100)]
ICM allocation code in place; about to start test-and-compare runs.

13 years agoICM allocation code *should* now be complete.
Michael Brown [Tue, 18 Sep 2007 01:05:25 +0000 (02:05 +0100)]
ICM allocation code *should* now be complete.

13 years agoStarted with the ICM partitioning code.
Michael Brown [Tue, 18 Sep 2007 00:49:39 +0000 (01:49 +0100)]
Started with the ICM partitioning code.

13 years agoRestructured bits of initialisation (not testable at present)
Michael Brown [Mon, 17 Sep 2007 21:25:46 +0000 (22:25 +0100)]
Restructured bits of initialisation (not testable at present)

13 years agoStarting the firmware directly now works.
Michael Brown [Mon, 17 Sep 2007 20:59:41 +0000 (21:59 +0100)]
Starting the firmware directly now works.

13 years agoStart migrating the remaining initialisation steps.
Michael Brown [Mon, 17 Sep 2007 20:14:09 +0000 (21:14 +0100)]
Start migrating the remaining initialisation steps.

13 years agoDon't use the mailboxless version of the HW2SW_CQ command; it seems to
Michael Brown [Mon, 17 Sep 2007 18:47:19 +0000 (19:47 +0100)]
Don't use the mailboxless version of the HW2SW_CQ command; it seems to
crash the machine.

13 years agoRemoved more hacks, and adjusted number of queue entries for likely usage.
Michael Brown [Mon, 17 Sep 2007 18:17:55 +0000 (19:17 +0100)]
Removed more hacks, and adjusted number of queue entries for likely usage.

13 years agoRemove hacks, and fix leaving the multicast GID.
Michael Brown [Mon, 17 Sep 2007 18:12:06 +0000 (19:12 +0100)]
Remove hacks, and fix leaving the multicast GID.

13 years agoAdded an almost obscene amount of debugging and assertion code while
Michael Brown [Mon, 17 Sep 2007 18:01:10 +0000 (19:01 +0100)]
Added an almost obscene amount of debugging and assertion code while
tracking down a bug that turned out to be a free_iob() used where I
needed a netdev_tx_complete().  This left the freed I/O buffer on the
net device's TX list, with bad, bad consequences later.

Also fixed the bug in question.

13 years agoMinor debug message improvement.
Michael Brown [Mon, 17 Sep 2007 17:57:32 +0000 (18:57 +0100)]
Minor debug message improvement.

13 years agoMoved iobuf.h assertions outside the static inline functions, so that
Michael Brown [Mon, 17 Sep 2007 17:38:04 +0000 (18:38 +0100)]
Moved iobuf.h assertions outside the static inline functions, so that
the assert message's file and line number gives some clue as to the
real location of the problem.

Added similar assertions to list.h.

13 years agoSome interesting packet corruption happening now.
Michael Brown [Mon, 17 Sep 2007 12:31:13 +0000 (13:31 +0100)]
Some interesting packet corruption happening now.

13 years agoBroadcast GID is now calculated by IPoIB layer.
Michael Brown [Mon, 17 Sep 2007 10:50:25 +0000 (11:50 +0100)]
Broadcast GID is now calculated by IPoIB layer.

13 years agoCleaned up some debug messages.
Michael Brown [Mon, 17 Sep 2007 09:56:21 +0000 (10:56 +0100)]
Cleaned up some debug messages.

13 years agoUnicasts seem to be working. :)
Michael Brown [Mon, 17 Sep 2007 09:39:30 +0000 (10:39 +0100)]
Unicasts seem to be working. :)

13 years agoDead code disabling
Michael Brown [Mon, 17 Sep 2007 07:41:06 +0000 (08:41 +0100)]
Dead code disabling

13 years agoObtains a response to the get path record!
Michael Brown [Mon, 17 Sep 2007 07:36:56 +0000 (08:36 +0100)]
Obtains a response to the get path record!

13 years agoUse pkey table access to determine broadcast GID directly.
Michael Brown [Mon, 17 Sep 2007 05:35:21 +0000 (06:35 +0100)]
Use pkey table access to determine broadcast GID directly.

13 years agoPrepare for adding a metadata queue to IPoIB
Michael Brown [Mon, 17 Sep 2007 05:12:33 +0000 (06:12 +0100)]
Prepare for adding a metadata queue to IPoIB

13 years agoDead code removal
Michael Brown [Mon, 17 Sep 2007 04:12:47 +0000 (05:12 +0100)]
Dead code removal

13 years agoIPoIB code separated out to ipoib.c.
Michael Brown [Mon, 17 Sep 2007 04:04:58 +0000 (05:04 +0100)]
IPoIB code separated out to ipoib.c.

13 years agoRead port GID directly using MAD IFC.
Michael Brown [Mon, 17 Sep 2007 01:54:15 +0000 (02:54 +0100)]
Read port GID directly using MAD IFC.

13 years agoMulticast join now works.
Michael Brown [Sun, 16 Sep 2007 23:24:44 +0000 (00:24 +0100)]
Multicast join now works.

13 years agoNow transmits packets on our own allocated IPoIB queue pair. :)
Michael Brown [Sun, 16 Sep 2007 21:53:57 +0000 (22:53 +0100)]
Now transmits packets on our own allocated IPoIB queue pair. :)

13 years agoAlmost working with own-queue allocation.
Michael Brown [Sun, 16 Sep 2007 21:47:45 +0000 (22:47 +0100)]
Almost working with own-queue allocation.

13 years agocreate_qp() and destroy_qp() now written (but not tested).
Michael Brown [Sun, 16 Sep 2007 19:54:21 +0000 (20:54 +0100)]
create_qp() and destroy_qp() now written (but not tested).

13 years agoStarted implementing create_qp() and destroy_qp().
Michael Brown [Sun, 16 Sep 2007 18:03:24 +0000 (19:03 +0100)]
Started implementing create_qp() and destroy_qp().

13 years agoDon't get stuck in an infinite loop on negative integers!
Michael Brown [Sun, 16 Sep 2007 16:39:29 +0000 (17:39 +0100)]
Don't get stuck in an infinite loop on negative integers!

13 years agoAdd fls() for non-constant values.
Michael Brown [Sun, 16 Sep 2007 16:36:40 +0000 (17:36 +0100)]
Add fls() for non-constant values.

13 years agoRevert to dev_priv/owner_priv scheme, rather than container_of; it
Michael Brown [Sun, 16 Sep 2007 16:25:15 +0000 (17:25 +0100)]
Revert to dev_priv/owner_priv scheme, rather than container_of; it
makes it easier to put the generic allocation code into infiniband.c

13 years agodestroy_cq() now implemented (not tested).
Michael Brown [Sun, 16 Sep 2007 13:39:51 +0000 (14:39 +0100)]
destroy_cq() now implemented (not tested).