summaryrefslogtreecommitdiffstats
path: root/src/drivers/net/phantom
Commit message (Collapse)AuthorAgeFilesLines
* [pci] Support systems with multiple PCI root bridgesMichael Brown2016-06-091-5/+7
| | | | | | | | | Extend the 16-bit PCI bus:dev.fn address to a 32-bit seg:bus:dev.fn address, assuming a segment value of zero in contexts where multiple segments are unsupported by the underlying data structures (e.g. in the iBFT or BOFM tables). Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [legal] Relicense files under GPL2_OR_LATER_OR_UBDLMichael Brown2015-03-024-4/+20
| | | | | | | Relicense files for which I am the sole author (as identified by util/relicense.pl). Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [settings] Explicitly separate the concept of a completed fetched settingMichael Brown2013-12-051-5/+6
| | | | | | | | | | The fetch_setting() family of functions may currently modify the definition of the specified setting (e.g. to add missing type information). Clean up this interface by requiring callers to provide an explicit buffer to contain the completed definition of the fetched setting, if required. Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [settings] Eliminate settings "tag magic"Michael Brown2013-05-011-8/+5Star
| | | | | | | Create an explicit concept of "settings scope" and eliminate the magic values used for numerical setting tags. Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [legal] Update FSF mailing address in GPL licence textsMichael Brown2012-07-204-4/+8
| | | | | Suggested-by: Daniel P. Berrange <berrange@redhat.com> Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [settings] Formalise notion of setting applicabilityMichael Brown2011-03-221-4/+21
| | | | | | | | | | | | | | | Expose a function setting_applies() to allow a caller to determine whether or not a particular setting is applicable to a particular settings block. Restrict DHCP-backed settings blocks to accepting only DHCP-based settings. Restrict network device settings blocks to accepting only DHCP-based settings and network device-specific settings such as "mac". Inspired-by: Glenn Brown <glenn@myri.com> Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [phantom] Remove unused variable in phantom_dmesg()Michael Brown2011-03-161-2/+0Star
| | | | | | Reported-by: Ralph Giles <giles@thaumas.net> Tested-by: Ralph Giles <giles@thaumas.net> Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [pci] Make driver PCI ID a property of the PCI deviceMichael Brown2011-02-171-2/+1Star
| | | | Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [pci] Use single "busdevfn" field in struct pci_deviceMichael Brown2011-02-171-7/+9
| | | | | | | Merge the "bus" and "devfn" fields into a single "busdevfn" field, to match the format used by the majority of external code. Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [settings] Apply settings block name in register_settings()Michael Brown2010-12-011-2/+2
| | | | | | | | Pass the settings block name as a parameter to register_settings(), rather than defining it with settings_init() (and then possibly changing it by directly manipulating settings->name). Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [build] Rename gPXE to iPXEMichael Brown2010-04-201-15/+15
| | | | | | | | | | | Access to the gpxe.org and etherboot.org domains and associated resources has been revoked by the registrant of the domain. Work around this problem by renaming project from gPXE to iPXE, and updating URLs to match. Also update README, LOG and COPYRIGHTS to remove obsolete information. Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [phantom] Update interrupt support to match current firmwareMichael Brown2010-03-222-23/+91
| | | | | | | | | | | The interrupt control mechanism on Phantom cards has changed substantially since the driver was initially written. This updates the code to match the mechanism used in production firmware. This is sufficient to allow DOS wget to function successfully using the 3Com UNDI/NDIS, Intel UNDI/NDIS, and UNDIPD.COM UNDI/PD stacks. Signed-off-by: Michael Brown <mcb30@etherboot.org>
* [netdevice] Separate out the concept of hardware and link-layer addressesMichael Brown2009-08-121-5/+5
| | | | | | | | | | | 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().
* [netdevice] Make ll_broadcast per-netdevice rather than per-ll_protocolMichael Brown2009-07-181-5/+3Star
| | | | | | | | | IPoIB has a link-layer broadcast address that varies according to the partition key. We currently go through several contortions to pretend that the link-layer address is a fixed constant; by making the broadcast address a property of the network device rather than the link-layer protocol it will be possible to simplify IPoIB's broadcast handling.
* [legal] Add a selection of FILE_LICENCE declarationsMichael Brown2009-05-185-0/+10
| | | | | Add FILE_LICENCE declarations to almost all files that make up the various standard builds of gPXE.
* [pci] Add driver_data field to struct pci_device_idThomas Miletich2009-03-261-1/+1
| | | | | Modified-by: Michael Brown <mcb30@etherboot.org> Signed-off-by: Michael Brown <mcb30@etherboot.org>
* [i386] Change [u]int32_t to [unsigned] int, rather than [unsigned] longMichael Brown2008-11-191-11/+11
| | | | | | This brings us in to line with Linux definitions, and also simplifies adding x86_64 support since both platforms have 2-byte shorts, 4-byte ints and 8-byte long longs.
* [phantom] Do not halt PEGs on driver shutdownMichael Brown2008-11-081-15/+0Star
| | | | | | | | Halting the PEGs breaks platforms where there is sideband access to the NIC (e.g. HP machines using iLO). (We have to retain the unhalting code because on some other platforms (e.g. IBM blades with BOFM) the pre-PXE firmware must halt the PEGs to avoid issues with the BIOS rereading via the expansion ROM BAR.)
* [phantom] Allow for PXE boot to be enabled/disabled on a per-port basisMichael Brown2008-11-012-0/+32
| | | | | | | | | This is something of an ugly hack to accommodate an OEM requirement. The NIC has only one expansion ROM BAR, rather than one per port. To allow individual ports to be selectively enabled/disabled for PXE boot (as required), we must therefore leave the expansion ROM always enabled, and place the per-port enable/disable logic within the gPXE driver.
* [phantom] Assume one net device per PCI functionMichael Brown2008-10-312-764/+339Star
| | | | | | | | The Phantom firmware selectively disables PCI functions based on the board type, with the end result that we see one PCI function for each network port. This allows us to eliminate the code for reading from flash and, more importantly, removes knowledge of the board type magic number from the gPXE driver.
* [settings] Add the notion of a "tag magic" to numbered settingsMichael Brown2008-10-301-16/+24
| | | | | | | | | | | | | | | | | | | Settings can be constructed using a dotted-decimal notation, to allow for access to unnamed settings. The default interpretation is as a DHCP option number (with encapsulated options represented as "<encapsulating option>.<encapsulated option>". In several contexts (e.g. SMBIOS, Phantom CLP), it is useful to interpret the dotted-decimal notation as referring to non-DHCP options. In this case, it becomes necessary for these contexts to ignore standard DHCP options, otherwise we end up trying to, for example, retrieve the boot filename from SMBIOS. Allow settings blocks to specify a "tag magic". When dotted-decimal notation is used to construct a setting, the tag magic value of the originating settings block will be ORed in to the tag number. Store/fetch methods can then check for the magic number before interpreting arbitrarily-numbered settings.
* [phantom] Add CLP settings interfaceMichael Brown2008-10-282-0/+368
| | | | | | This interface provides access to firmware settings (e.g. MAC address) that will apply to all drivers loaded for the duration of the current system boot.
* [phantom] Unhalt/halt all PEGs during driver startup/shutdownMichael Brown2008-10-282-0/+70
| | | | | | | | | | | A hardware bug means that reads through the expansion ROM BAR can return corrupted data if the PEGs are running. This breaks platforms that re-read the expansion ROM after invoking gPXE code, such as IBM blade servers. Halt PEGs during driver shutdown, and unhalt PEGs during driver startup if we detect that this is not the first startup since power-on.
* [phantom] Add line count limit to phantom_dmesg()Michael Brown2008-10-281-22/+57
| | | | | The Phantom firmware debug logs can be extremely long, so add the ability to restrict the output to the last N lines.
* [phantom] Change register space abstraction to match other driversMichael Brown2008-10-242-54/+46Star
| | | | | | | Most other Phantom drivers define a register space in terms of a 64M virtual address space. While this doesn't map in any meaningful way to the actual addresses used on the latest cards, it makes maintenance easier if we do the same.
* [phantom] Add missing #include <gpxe/io.h>Michael Brown2008-10-121-0/+1
|
* [phantom] Skip command PEG initialisation if PEG is already runningMichael Brown2008-09-241-0/+11
| | | | | | | It is possible for the BIOS to use the UNDI API to bring up the NIC prior to system boot. If this happens, UNM_NIC_REG_CMDPEG_STATE will contain the value 0xf00f (UNM_NIC_REG_CMDPEG_STATE_INITIALIZE_ACK), and we should skip initialising the command PEG.
* [phantom] Omit an initialisation step now performed by the firmwareMichael Brown2008-09-241-2/+0Star
| | | | | | The firmware will now determine the right port mode on all cards, so the PXE driver doesn't have to set it. (Setting the port mode apparently breaks some newer cards.)
* [phantom] Fix P3 B1 silicon bug workaroundMichael Brown2008-08-271-1/+3
| | | | | | Commit f58cc3f introduced a temporary workaround for a bug in current prototype silicon, but failed to apply it to all eight PCI functions within the device.
* [phantom] Remove comment that no longer matches realityMichael Brown2008-08-261-3/+0Star
|
* [phantom] Temporary workaround for bug in prototype (P3 B1) siliconMichael Brown2008-08-262-1/+14
|
* [phantom] Add new board typeMichael Brown2008-07-242-0/+2
|
* [phantom] Guard against partially-written status descriptorsMichael Brown2008-07-171-15/+28
| | | | | | | | | | | Conjecture: The hardware issues 64-bit DMA writes of status descriptors, which some PCI bridges seem to split into two 32-bit writes in reverse order (i.e. dword 1 first). This means that we sometimes observe a partial status descriptor. Add an explicit check to ensure that the descriptor is complete before processing it. Also ensure that the RDS consumer counter is incremented only when we know that we have actually consumed an RX descriptor.
* [phantom] Remove warning relating to now-fixed firmware bugMichael Brown2008-07-081-11/+0Star
|
* [phantom] Add NetXen dual copyrightMichael Brown2008-07-083-0/+21
|
* [phantom] Initialise RCVPEG before reading MAC addressesMichael Brown2008-07-081-4/+4
|
* [phantom] Add support for NetXen Phantom NICsMichael Brown2008-07-055-0/+3065