summaryrefslogtreecommitdiffstats
path: root/src/drivers/infiniband
Commit message (Collapse)AuthorAgeFilesLines
...
* [hermon] Randomise the high-order bits of queue pair numbersMichael Brown2009-08-102-6/+7
| | | | | | | | | | | | | The Infiniband Communication Manager will refuse to establish a connection if it believes the connection is already established. There is no immediately obvious way to ask it to tear down the existing connection and replace it; to issue a DREP we would need to know the local and remote communication IDs used for the previous connection setup. We can work around this by randomising the high-order bits of the queue pair number; these have no significance to the hardware, but are sufficient to convince the IB CM that this is a different connection.
* [infiniband] Update subnet management agent to use a management interfaceMichael Brown2009-08-091-4/+4
|
* [hermon] Allow for multiple calls to ib_modify_qp()Michael Brown2009-08-092-31/+64
|
* [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-061-10/+10
| | | | | | | | | | 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.
* [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 infrastructure for RC queue pairsMichael Brown2009-07-183-23/+18Star
| | | | | | | | | | | | | | | | | | 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-181-3/+3
|
* [infiniband] Expose supported and enabled link speeds and widthsMichael Brown2009-07-181-3/+11
|
* [infiniband] Always create an SMA and a GMAMichael Brown2009-07-181-13/+0Star
|
* [infiniband] Implement SMA as an instance of a GMAMichael Brown2009-07-181-8/+3Star
| | | | | The GMA code was based upon the SMA code. We can save space by making the SMA simply an instance of the GMA.
* [infiniband] Move non-driver-specific code to net/infinibandMichael Brown2009-07-183-959/+0Star
|
* [legal] Add a selection of FILE_LICENCE declarationsMichael Brown2009-05-1815-1/+29
| | | | | 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-263-7/+7
| | | | | Modified-by: Michael Brown <mcb30@etherboot.org> Signed-off-by: Michael Brown <mcb30@etherboot.org>
* [infiniband] Call ib_open() only when opening the IPoIB net deviceMichael Brown2009-01-022-0/+8
| | | | | Defer the call to ib_open() until we want to actually open the device, rather than when the device is registered.
* [hermon] Fix permissions broken in 3a799e9 ("Add PCI ID for ConnectX QDR card")Michael Brown2008-12-051-0/+0
| | | | | | The patch file supplied for commit 3a799e9 ("[hermon] Add PCI ID for ConnectX QDR card") accidentally marked drivers/infiniband/hermon.c as being executable.
* [hermon] Add PCI ID for ConnectX QDR cardMichael Brown2008-12-041-0/+1
| | | | Patch provided by Itay Gazit <itaygazit@gmail.com>.
* [x86_64] Fix assorted 64-bit compilation errors and warningsMichael Brown2008-11-193-1/+4
| | | | | | Remove various 32-bit assumptions scattered throughout the codebase. The code is still not necessarily 64-bit clean, but will at least compile.
* [i386] Change [u]int32_t to [unsigned] int, rather than [unsigned] longMichael Brown2008-11-196-13/+13
| | | | | | 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.
* [linda] Add missing copyright noticesMichael Brown2008-11-182-0/+34
|
* [linda] Purge references to 8051Michael Brown2008-11-182-12/+12
|
* [infiniband] Respect hop pointer when building directed route SMP return pathMichael Brown2008-11-121-1/+13
| | | | | | | | | | | | The return path in directed route SMPs lists the egress ports in order from SM to node, rather than from node to SM. To write to the correct offset within the return path, we need to parse the hop pointer. This is held within the class-specific data portion of the MAD header, which was previously unused by us and defined to be a uint16_t. Define this field to be a union type; this requires some rearrangement of ib_mad.h and corresponding changes to ipoib.c.
* [linda] Add support for QLogic 7220-based Infiniband HCAsMichael Brown2008-11-115-0/+5558
| | | | | | | | | These cards very nearly support our current IB Verbs model. There is one minor difference: multicast packets will always be delivered by the hardware to QP0, so the driver has to redirect them to the appropriate QP. This means that QP owners may see receive completions for buffers that they never posted. Nothing in our current codebase will break because of this.
* [infiniband] Add raw packet parser and constructorMichael Brown2008-11-111-0/+234
| | | | | | | This can be used with cards that require the driver to construct and parse packet headers manually. Headers are optionally handled out-of-line from the packet payload, since some such cards will split received headers into a separate ring buffer.
* [infiniband] Add a standalone subnet management agentMichael Brown2008-11-111-0/+541
| | | | | This generic SMA code can be used for any cards that do not provide firmware-based embedded SMAs.
* [infiniband] Split subnet management agent client out into ib_smc.cMichael Brown2008-11-113-92/+268
| | | | | | | | Not all Infiniband cards have embedded subnet management agents. Split out the code that communicates with such an embedded SMA into a separate ib_smc.c file, and have drivers call ib_smc_update() explicitly when they suspect that the answers given by the embedded SMA may have changed.
* [infiniband] Pass address vector in receive completionsMichael Brown2008-11-112-44/+52
| | | | | | | | | | | | | | | | | Receive completion handlers now get passed an address vector containing the information extracted from the packet headers (including the GRH, if present), and only the payload remains in the I/O buffer. This breaks the symmetry between transmit and receive completions, so remove the ib_completer_t type and use an ib_completion_queue_operations structure instead. Rename the "destination QPN" and "destination LID" fields in struct ib_address_vector to reflect its new dual usage. Since the ib_completion structure now contains only an IB status code, ("syndrome") replace it with a generic gPXE integer status code.
* [infiniband] Flush uncompleted work queue entries at QP teardownMichael Brown2008-11-112-30/+16Star
| | | | | | | | | | | | | | Avoid leaking I/O buffers in ib_destroy_qp() by completing any outstanding work queue entries with a generic error code. This requires the completion handlers to be available to ib_destroy_qp(), which is done by making them static configuration parameters of the CQ (set by ib_create_cq()) rather than being provided on each call to ib_poll_cq(). This mimics the functionality of netdev_{tx,rx}_flush(). The netdev flush functions would previously have been catching any I/O buffers leaked by the IPoIB data queue (though not by the IPoIB metadata queue).
* [arbel] Fix off-by-one error in the failure path in arbel_probe()Michael Brown2008-10-011-4/+4
|
* [hermon] Fix off-by-one error in the failure path in hermon_probe()Michael Brown2008-10-011-4/+4
|
* [hermon] Allocate only as much memory as is needed for ICM and ICM AUXMichael Brown2008-09-281-47/+62
| | | | | | Use individual page mappings rather than a single whole-region mapping, to avoid the waste of memory that occurs due to the constraint that each mapped block must be aligned on its own size.
* [arbel] Allocate sufficient space for firmware bufferMichael Brown2008-09-251-1/+1
| | | | | | We were accidentally allocating only half the required amount of memory (given the alignment method) for the firmware buffer, leading to conflicts between the firmware buffer and gPXE code/data segments.
* [hermon] Allocate sufficient space for firmware bufferMichael Brown2008-09-251-1/+1
| | | | | | We were accidentally allocating only half the required amount of memory (given the alignment method) for the firmware buffer, leading to conflicts between the firmware buffer and gPXE code/data segments.
* [hermon] Add support for MT26418 deviceMichael Brown2008-07-091-0/+1
| | | | | PCI ID supplied (and tested) by Frederic Temporelli <frederic.temporelli@bull.net>
* [Infiniband] Fix event queue doorbell ringing on ArbelMichael Brown2008-04-222-2/+14
|
* [Infiniband] Add multiport support for Arbel cardsMichael Brown2008-04-223-18/+304
|
* [Infiniband] Move event-queue process from driver to Infiniband coreMichael Brown2008-04-213-228/+253
|
* [Hermon] Fix event queue doorbells.Michael Brown2008-04-182-24/+60
| | | | | | Event queue doorbells must use UAR pages 0-127 depending on event queue number; other doorbells must use pages 128+ (and we choose to use page 128).
* [Infiniband] Add preliminary multiple port support for Hermon cardsMichael Brown2008-04-182-7/+340
| | | | | | | | | | | | Infiniband devices no longer block waiting for link-up in register_ibdev(). Hermon driver needs to create an event queue and poll for link-up events. Infiniband core needs to reread MAD parameters when link state changes. IPoIB needs to cope with Infiniband link parameters being only partially available at probe and open time.
* Modify gPXE core and drivers to work with the new timer subsystemAlexey Zaytsev2008-03-022-2/+0Star
| | | | Signed-off-by: Alexey Zaytsev <alexey.zaytsev@gmail.com>
* [Infiniband] Add preliminary support for multi-port devices.Michael Brown2008-02-274-96/+148
| | | | | | | | | | Arbel and Hermon cards both have multiple ports. Add the infrastructure required to register each port as a separate IB device. Don't yet register more than one port, since registration will currently fail unless a valid link is detected. Use ib_*_{set,get}_{drv,owner}data wrappers to access driver- and owner-private data on Infiniband structures.
* [Infiniband] Centralise MAD operationsMichael Brown2008-02-262-543/+207Star
| | | | | | | | | Pull out common code for handling management datagrams from arbel.c and hermon.c into infiniband.c. Add port number to struct ib_device. Add open(), close() and mad() methods to struct ib_device_operations.
* [Hermon] Donate joint copyright on Hermon driver to Mellanox.Michael Brown2008-02-231-4/+2Star
|
* [Hermon] Add driver for Mellanox Hermon (ConnectX) cards.Michael Brown2008-02-233-0/+5940
|
* Change ROM names to lower case.Michael Brown2007-10-111-2/+2
|
* Remove the last remaining visible hack.Michael Brown2007-09-182-10/+11
|
* Separated out to a clean new drivers/infiniband directory.Michael Brown2007-09-184-0/+6258