summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* [802.11] Set channels early on to avoid tuning to an undefined channelJoshua Oreman2009-08-091-0/+5
| | | | | | | | | | | Some cards (such as ath5k) always need to tune to a particular channel when they are reset; the reset may happen upon open(), which is before the channels array would be set up (in prepare_probe()). Avoid tuning the card to an inconsistent state by copying the hardware supported-channels array to the 802.11 device's allowable-channels array even before channels are "properly" set up. Signed-off-by: Michael Brown <mcb30@etherboot.org>
* [802.11] Enhance support for driver PHY differencesJoshua Oreman2009-08-093-44/+147
| | | | | | | | | | | | | | | | | The prior net80211 model of physical-layer behavior for drivers was overly simplistic and limited the drivers that could be written. To be more flexible, split the driver-provided list of supported rates by band, and add a means for specifying a list of supported channels. Allow drivers to specify a hardware channel value that will be tied to uses of the channel. Expose net80211_duration() to drivers, and make the rate it uses in its computations configurable, so that it can be used in calculating durations that must be set in hardware for ACK and CTS packets. Add net80211_cts_duration() for the common case of calculating the duration for a CTS packet. Signed-off-by: Michael Brown <mcb30@etherboot.org>
* [geniso] Emit proper error message for incorrect location of ISOLINUX_BINvibi sreenivasan2009-08-091-1/+1
| | | | | | | | If isolinux.bin is not installed in the expected location the error message shown is slightly misleading. Signed-off-by: Vibi Sreenivasan <vibi_sreenivasan@cms.com> Signed-off-by: Michael Brown <mcb30@etherboot.org>
* [infiniband] Update all other MAD users to use a management interfaceMichael Brown2009-08-0912-992/+747Star
|
* [infiniband] Update subnet management agent to use a management interfaceMichael Brown2009-08-098-313/+412
|
* [infiniband] Add the concept of a management interfaceMichael Brown2009-08-094-1/+549
| | | | | | | | | A management interface is the component through which both local and remote management agents are accessed. This new implementation of a management interface allows for the user to react to timed-out transactions, and also allows for cancellation of in-progress transactions.
* [hermon] Allow for multiple calls to ib_modify_qp()Michael Brown2009-08-092-31/+64
|
* [romprefix] Cope with PnP BIOSes that fail to set %es:%di on entryMichael Brown2009-08-081-7/+20
| | | | | | | | | | | | Some BIOSes support the BIOS Boot Specification (BBS) but fail to set %es:%di correctly when calling the option ROM initialisation entry point. This causes gPXE to identify the BIOS as non-PnP (and so non-BBS), leaving the user unable to control the boot order. Fix by scanning for the $PnP signature ourselves, rather than relying on the BIOS having passed in %es:%di correctly. Tested-by: Helmut Adrigan <helmut.adrigan@chello.at>
* [hermon] Add support for multiple ports and detecting non-IB portsMichael Brown2009-08-063-31/+110
| | | | Originally-fixed-by: Itay Gazit <itaygazit@gmail.com>
* [infiniband] Change IB_{QPN,QKEY,QPT} names from {SMA,GMA} to {SMI,GSI}Michael Brown2009-08-065-30/+30
| | | | | | | | | | The IBA specification refers to management "interfaces" and "agents". The interface is the component that connects to the queue pair and sends and receives MADs; the agent is the component that constructs the reply to the MAD. Rename the IB_{QPN,QKEY,QPT} constants as a first step towards making this separation in gPXE.
* [build] Mark __intel_new_proc_init with __libgcc rather than cdeclMichael Brown2009-08-031-1/+1
| | | | | | | | | | The function __intel_new_proc_init() (called implicitly when building using icc) is marked with __attribute__((cdecl)). This breaks building on x86_64, where cdecl is meaningless. Fix by replacing with the existing __libgcc macro, which is already defined to be "__attribute__((cdecl))" for i386 builds and empty for x86_64 builds.
* [sky2] Add support for Marvell Yukon-II gigabit Ethernet cardsJoshua Oreman2009-08-033-0/+4576
| | | | Signed-off-by: Michael Brown <mcb30@etherboot.org>
* [pci] Add definitions for Advanced Error Reporting registersJoshua Oreman2009-08-031-0/+27
| | | | Signed-off-by: Michael Brown <mcb30@etherboot.org>
* [legal] Add the MIT and ISC licenses to licence.plH. Peter Anvin2009-08-031-0/+25
| | | | | | | | The MIT and ISC licenses are legally equivalent to the bsd2 license, but with slightly different verbiage. Signed-off-by: H. Peter Anvin <hpa@zytor.com> Signed-off-by: Michael Brown <mcb30@etherboot.org>
* [pxe] Dual-license pxe_api.h under the MIT licenseH. Peter Anvin2009-08-031-0/+25
| | | | | | | | | pxe_api.h is just a description of API functions, it's actively undesirable to have more implementations than necessary. Allowing it under the MIT license lets the Syslinux libraries use it. Signed-off-by: H. Peter Anvin <hpa@zytor.com> Signed-off-by: Michael Brown <mcb30@etherboot.org>
* [config] Enable PXE commands by default only on pcbios architectureJoshua Oreman2009-08-032-1/+3
| | | | | | | The commands bring in UNDI and thus real-mode code, so they cannot be used on EFI. Signed-off-by: Michael Brown <mcb30@etherboot.org>
* [pxe] Avoid printf format warning on some compilersMichael Brown2009-08-021-1/+1
| | | | Tested-by: Joshua Oreman <oremanj@xenon.get-linux.org>
* [tcp] Avoid printf format warnings on some compilersMichael Brown2009-08-021-9/+9
| | | | | | | | | | | | In several places, we currently use size_t to represent a difference between TCP sequence numbers. This can cause compiler warnings relating to printf format specifiers, since the result of (uint32_t+size_t) may be an unsigned long on some compilers. Fix by using uint32_t for all variables that represent a difference between TCP sequence numbers. Tested-by: Joshua Oreman <oremanj@xenon.get-linux.org>
* [build] Allow safe concurrent builds of .iso, .liso and .sdsk targetsMichael Brown2009-08-023-8/+5Star
| | | | | | | | The geniso, genliso and gensdsk scripts contain hard-coded temporary directory names, and so could potentially collide with each other when run as part of a concurrent build (e.g. "make -j 4"). Fix by using mktemp to generate suitable temporary directory names.
* [build] Make .liso image generation silent unless errors occurMichael Brown2009-08-021-1/+1
|
* [build] Add syslinux floppy image type .sdskMarty Connor2009-08-023-27/+89
| | | | | | | | | | | | We add a syslinux floppy disk type using parts of the genliso script. This floppy image cat be dd'ed to a physical floppy or used in instances where a virtual floppy with an mountable DOS filesystem is useful. We also modify the genliso script to only generate .liso images rather than creating images depending on how it is called. Signed-off-by: Michael Brown <mcb30@etherboot.org>
* [rtl818x] Add driver for Realtek 8180/8185 wireless cardsJoshua Oreman2009-08-0110-0/+2607
|
* [802.11] Add support for 802.11 devices with software MAC layerJoshua Oreman2009-08-017-1/+5144
| | | | | | | | | This is required for all modern 802.11 devices, and allows drivers to be written for them with minimally more effort than is required for a wired NIC. Signed-off-by: Michael Brown <mcb30@etherboot.org> Modified-by: Michael Brown <mcb30@etherboot.org>
* [hermon] Add support for RC queue pairsMichael Brown2009-07-183-70/+221
|
* [hermon] Allow software GMA to receive packets destined for QP1Michael Brown2009-07-182-45/+277
| | | | | | | | | | | | | The Linux IB Communication Manager will always send MADs to QP1, rather than back to the originating QP. On Hermon, QP1 is by default handled by the embedded firmware. We can change this, but the cost is that we have to handle both QP0 and QP1 (i.e. we have to provide SMA as well as GMA service in software), and we have to use MLX queues rather than standard UD queues (i.e. we have to construct the UD datagrams by hand). There doesn't seem to be any viable way around this situation, ugly though it is.
* [hermon] Disable debugging around mapping of firmware tablesMichael Brown2009-07-181-0/+8
|
* [hermon] Remove an unnecessary check for GID-less transmissionsMichael Brown2009-07-181-8/+1Star
|
* [infiniband] Add Communication Manager (CM)Michael Brown2009-07-184-0/+524
| | | | | The Communication Manager is responsible for handling the setup and teardown of RC connections.
* [infiniband] Add infrastructure for RC queue pairsMichael Brown2009-07-189-93/+148
| | | | | | | | | | | | | | | | | | Queue pairs are now assumed to be created in the INIT state, with a call to ib_modify_qp() required to bring the queue pair to the RTS state. ib_modify_qp() no longer takes a modification list; callers should modify the relevant queue pair parameters (e.g. qkey) directly and then call ib_modify_qp() to synchronise the changes to the hardware. The packet sequence number is now a property of the queue pair, rather than of the device. Each queue pair may have an associated address vector. For RC queue pairs, this is the address vector that will be programmed in to the hardware as the remote address. For UD queue pairs, it will be used as the default address vector if none is supplied to ib_post_send().
* [infiniband] Pass a generic MAD to ib_set_port_info()Michael Brown2009-07-184-14/+12Star
|
* [infiniband] Expose supported and enabled link speeds and widthsMichael Brown2009-07-184-23/+61
|
* [infiniband] Allow MAD handlers to indicate response via return valueMichael Brown2009-07-184-71/+104
| | | | | | | | Now that MAD handlers no longer return a status code, we can allow them to return a pointer to a MAD structure if and only if they want to send a response. This provides a more natural and flexible approach than using a "response method" field within the handler's descriptor.
* [infiniband] Remove the return status code from MAD handlersMichael Brown2009-07-184-69/+37Star
| | | | | | | | | | | | | MAD handlers have to set the status fields within the MAD itself anyway, in order to provide a meaningful response MAD; the additional gPXE return status code is just noise. Note that we probably don't need to ever explicitly set the status to IB_MGMT_STATUS_OK, since it should already have this value from the request. (By not explicitly setting the status in this way, we can safely have ib_sma_set_xxx() call ib_sma_get_xxx() in order to generate the GetResponse MAD without worrying that ib_sma_get_xxx() will clear any error status set by ib_sma_set_xxx().)
* [infiniband] Allow external QPN to differ from real QPNMichael Brown2009-07-183-8/+32
| | | | | | | Most IB hardware seems not to allow allocation of the genuine QPNs 0 and 1, so allow for the externally-visible QPN (as constructed and parsed by ib_packet, where used) to differ from the real hardware-allocated QPN.
* [infiniband] Always create an SMA and a GMAMichael Brown2009-07-189-390/+299Star
|
* [infiniband] Add notion of a queue pair typeMichael Brown2009-07-186-10/+27
|
* [infiniband] Allow completion queue operations to be optionalMichael Brown2009-07-182-24/+12Star
| | | | | The send completion handler typically will just free the I/O buffer, so allow this common case to be handled by the Infiniband core.
* [infiniband] Improve ib_packet debugging messagesMichael Brown2009-07-181-7/+15
|
* [ipoib] Attempt the broadcast group join only if the link is upMichael Brown2009-07-181-9/+4Star
| | | | | Attempting the broadcast group join while the link is down is harmless, but can generate annoying volumes of debug messages.
* [infiniband] Implement SMA as an instance of a GMAMichael Brown2009-07-188-363/+193Star
| | | | | The GMA code was based upon the SMA code. We can save space by making the SMA simply an instance of the GMA.
* [infiniband] Pass GMA as a parameter to GMA MAD handlersMichael Brown2009-07-184-72/+72
|
* [ipoib] Remove the queue set abstractionMichael Brown2009-07-183-148/+36Star
| | | | | Now that IPoIB has to deal with only one set of queues, the queue set abstraction becomes merely an inconvenient wrapper.
* [ipoib] Kill off the now-unused IPoIB metadata queue setMichael Brown2009-07-181-144/+39Star
| | | | All packets handled by the metadata queue set now go via the GMA.
* [infiniband] Provide a general mechanism for multicast group joinsMichael Brown2009-07-186-129/+274
| | | | Generalise out the multicast group membership record code from IPoIB.
* [infiniband] Allow for sending MADs via GMA without retransmissionMichael Brown2009-07-183-30/+54
|
* [infiniband] Make qkey and rate optional parameters to ib_post_send()Michael Brown2009-07-183-10/+10
| | | | | | | | | | The queue key is stored as a property of the queue pair, and so can optionally be added by the Infiniband core at the time of calling ib_post_send(), rather than always having to be specified by the caller. This allows IPoIB to avoid explicitly keeping track of the data queue key.
* [ipoib] Clarify new role of IPoIB peer cache as for MAC addresses onlyMichael Brown2009-07-181-39/+21Star
| | | | | | | Now that path record lookups are handled entirely via ib_resolve_path(), the only role of the IPoIB peer cache is as a lookup table for MAC addresses. Update the code structure and comments to reflect this.
* [ipoib] Expose the real broadcast MACMichael Brown2009-07-181-46/+37Star
| | | | | | | | | | | | The IPoIB broadcast MAC address varies according to the partition key. Now that the broadcast MAC address is a property of the network device rather than of the link layer, we can expose this real MAC address directly. The broadcast LID is now identified via a path record lookup; this is marginally inefficient (since it was present in the MCMemberRecord GetResponse), but avoids the need to special-case broadcasts when constructing the address vector in ipoib_transmit().
* [ipoib] Use Infiniband broadcast QPN in IPoIB broadcast MAC addressMichael Brown2009-07-181-10/+3Star
| | | | Remove the special handling of the IPoIB broadcast QPN.
* [infiniband] Provide a general mechanism for path record lookupsMichael Brown2009-07-184-108/+247
| | | | Generalise out the path record lookup code from IPoIB.