History log of /drivers/infiniband/hw/mlx4/mlx4_ib.h
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
0a1405da9952a72dd587829a3321695adde7dca1 02-Jun-2011 Sean Hefty <sean.hefty@intel.com> IB/mlx4: Add support for XRC QPs

Support the creation of XRC INI and TGT QPs. To handle the case where
a CQ or PD is not provided, we allocate them internally with the xrcd.

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
Signed-off-by: Roland Dreier <roland@purestorage.com>
/drivers/infiniband/hw/mlx4/mlx4_ib.h
012a8ff577f95211c6ffd3b77a94c34ebae009b6 02-Jun-2011 Sean Hefty <sean.hefty@intel.com> IB/mlx4: Add support for XRC domains

Support creating and destroying XRC domains. Any sharing of the XRCD
is managed above the low-level driver.

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
Signed-off-by: Roland Dreier <roland@purestorage.com>
/drivers/infiniband/hw/mlx4/mlx4_ib.h
cfcde11c3d7ae175f49280bb6f913478c2f1bd8c 15-Jun-2011 Or Gerlitz <ogerlitz@mellanox.com> IB/mlx4: Use flow counters on IBoE ports

Allocate flow counter per Ethernet/IBoE port, and attach this counter
to all the QPs created on that port. Based on patch by Eli Cohen
<eli@mellanox.co.il>.

Signed-off-by: Or Gerlitz <ogerlitz@mellanox.co.il>
Signed-off-by: Roland Dreier <roland@purestorage.com>
/drivers/infiniband/hw/mlx4/mlx4_ib.h
fa417f7b520ee60b39f7e23528d2030af30a07d1 25-Oct-2010 Eli Cohen <eli@mellanox.co.il> IB/mlx4: Add support for IBoE

Add support for IBoE to mlx4_ib. The bulk of the code is handling the
new address vector fields; mlx4 needs the MAC address of a remote node
to include it in a WQE (for datagrams) or in the QP context (for
connected QPs). Address resolution is done by assuming all unicast
GIDs are either link-local IPv6 addresses.

Multicast group attach/detach needs to update the NIC's multicast
filters; but since attaching a QP to a multicast group can be done
before the QP is bound to a port, for IBoE we need to keep track of
all multicast groups that a QP is attached too before it transitions
from INIT to RTR (since it does not have a port in the INIT state).

Signed-off-by: Eli Cohen <eli@mellanox.co.il>

[ Many things cleaned up and otherwise monkeyed with; hope I didn't
introduce too many bugs. - Roland ]

Signed-off-by: Roland Dreier <rolandd@cisco.com>
/drivers/infiniband/hw/mlx4/mlx4_ib.h
3b4a8cd51e59c1c342c51b241bbb96c6ac24a147 06-Sep-2009 Jack Morgenstein <jackm@dev.mellanox.co.il> IB/mlx4: Don't allow userspace open while recovering from catastrophic error

Userspace apps are supposed to release all ib device resources if they
receive a fatal async event (IBV_EVENT_DEVICE_FATAL). However, the
app has no way of knowing when the device has come back up, except to
repeatedly attempt ibv_open_device() until it succeeds.

However, currently there is no protection against the open succeeding
while the device is in being removed following the fatal event. In
this case, the open will succeed, but as a result the device waits in
the middle of its removal until the new app releases its resources --
and the new app will not do so, since the open succeeded at a point
following the fatal event generation.

This patch adds an "active" flag to the device. The active flag is set
to false (in the fatal event flow) before the "fatal" event is
generated, so any subsequent ibv_dev_open() call to the device will
fail until the device comes back up, thus preventing the above
deadlock.

Signed-off-by: Jack Morgenstein <jackm@dev.mellanox.co.il>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
/drivers/infiniband/hw/mlx4/mlx4_ib.h
2b6b7d4be487bada8c727df829c25068c7b5e5a3 08-May-2009 Jack Morgenstein <jackm@dev.mellanox.co.il> IB/mlx4: Don't overwrite fast registration page list when posting work request

The low-level mlx4 driver modified the page-list addresses for fast
register work requests post send to big-endian, and set a "present"
bit. This caused problems later when the consumer attempted to unmap
the pages using the page-list (using the list addresses which were
assumed to be still in CPU-endian order). Fix the mlx4 driver to
allocate two buffers and use a private buffer for the hardware-format
bus addresses.

This patch fixes <https://bugs.openfabrics.org/show_bug.cgi?id=1571>,
an NFS/RDMA server crash. The cause of the crash was found by Vu Pham
of Mellanox. The fix is along the lines suggested by Steve Wise in
comment #21 in bug 1571.

Signed-off-by: Jack Morgenstein <jackm@dev.mellanox.co.il>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
/drivers/infiniband/hw/mlx4/mlx4_ib.h
7ff93f8b7ecbc36e7ffc5c11a61643821c1bfee5 23-Oct-2008 Yevgeny Petrilin <yevgenyp@mellanox.co.il> mlx4_core: Multiple port type support

Multi-protocol adapters support different port types. Each consumer
of mlx4_core queries for supported port types; in particular mlx4_ib
can no longer assume that all physical ports belong to it. Port type
is configured through a sysfs interface. When the type of a port is
changed, all mlx4 interfaces are unregistered, and then registered
again with the new port types.

Signed-off-by: Yevgeny Petrilin <yevgenyp@mellanox.co.il>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
/drivers/infiniband/hw/mlx4/mlx4_ib.h
51a379d0c8f7a6db7c9e3c9c770d90a6d2d1ef9b 25-Jul-2008 Jack Morgenstein <jackm@dev.mellanox.co.il> mlx4: Update/add Mellanox Technologies copyright lines to mlx4 driver files

Update existing Mellanox copyright lines to 2008, and add such lines
to files where they are missing.

Signed-off-by: Jack Morgenstein <jackm@dev.mellanox.co.il>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
/drivers/infiniband/hw/mlx4/mlx4_ib.h
95d04f0735b4fc837bff9aedcc3f3efb20ddc3d1 23-Jul-2008 Roland Dreier <rolandd@cisco.com> IB/mlx4: Add support for memory management extensions and local DMA L_Key

Add support for the following operations to mlx4 when device firmware
supports them:

- Send with invalidate and local invalidate send queue work requests;
- Allocate/free fast register MRs;
- Allocate/free fast register MR page lists;
- Fast register MR send queue work requests;
- Local DMA L_Key.

Signed-off-by: Roland Dreier <rolandd@cisco.com>
/drivers/infiniband/hw/mlx4/mlx4_ib.h
521e575b9a7324a0bca762622139f69582a042bf 15-Jul-2008 Ron Livne <ronli@voltaire.com> IB/mlx4: Add support for blocking multicast loopback packets

Add support for handling the IB_QP_CREATE_MULTICAST_BLOCK_LOOPBACK
flag by using the per-multicast group loopback blocking feature of
mlx4 hardware.

Signed-off-by: Ron Livne <ronli@voltaire.com>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
/drivers/infiniband/hw/mlx4/mlx4_ib.h
6296883ca4cd52dafb45f191d24102e28ded38f2 23-Apr-2008 Yevgeny Petrilin <yevgenyp@mellanox.co.il> mlx4_core: Move kernel doorbell management into core

In addition to mlx4_ib, there will be ethernet and FC consumers of
mlx4_core, so move the code for managing kernel doorbells into the
core module to avoid having to duplicate this multiple times.

Signed-off-by: Yevgeny Petrilin <yevgenyp@mellanox.co.il>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
/drivers/infiniband/hw/mlx4/mlx4_ib.h
bbf8eed1a0f8949f7385146624f736f829992a70 17-Apr-2008 Vladimir Sokolovsky <vlad@dev.mellanox.co.il> IB/mlx4: Add support for resizing CQs

Signed-off-by: Vladimir Sokolovsky <vlad@mellanox.co.il>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
/drivers/infiniband/hw/mlx4/mlx4_ib.h
3fdcb97f0b8d8a29117dc36acd0b15965d2a2160 17-Apr-2008 Eli Cohen <eli@dev.mellanox.co.il> IB/mlx4: Add support for modifying CQ moderation parameters

Signed-off-by: Eli Cohen <eli@mellnaox.co.il>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
/drivers/infiniband/hw/mlx4/mlx4_ib.h
b832be1e4007f4a54954ec68bd865ff05d6babca 17-Apr-2008 Eli Cohen <eli@dev.mellanox.co.il> IB/mlx4: Add IPoIB LSO support

Add TSO support to the mlx4_ib driver.

Signed-off-by: Eli Cohen <eli@mellanox.co.il>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
/drivers/infiniband/hw/mlx4/mlx4_ib.h
ea54b10c7773007e173da31fe7adcc049da33331 28-Jan-2008 Jack Morgenstein <jackm@dev.mellanox.co.il> IB/mlx4: Use multiple WQ blocks to post smaller send WQEs

ConnectX HCA supports shrinking WQEs, so that a single work request
can be made of multiple units of wqe_shift. This way, WRs can differ
in size, and do not have to be a power of 2 in size, saving memory and
speeding up send WR posting. Unfortunately, if we do this then the
wqe_index field in CQEs can't be used to look up the WR ID anymore, so
our implementation does this only if selective signaling is off.

Further, on 32-bit platforms, we can't use vmap() to make the QP
buffer virtually contigious. Thus we have to use constant-sized WRs to
make sure a WR is always fully within a single page-sized chunk.

Finally, we use WRs with the NOP opcode to avoid wrapping around the
queue buffer in the middle of posting a WR, and we set the
NoErrorCompletion bit to avoid getting completions with error for NOP
WRs. However, NEC is only supported starting with firmware 2.2.232,
so we use constant-sized WRs for older firmware. And, since MLX QPs
only support SEND, we use constant-sized WRs in this case.

When stamping during NOP posting, do stamping following setting of the
NOP WQE valid bit.

Signed-off-by: Michael S. Tsirkin <mst@dev.mellanox.co.il>
Signed-off-by: Jack Morgenstein <jackm@dev.mellanox.co.il>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
/drivers/infiniband/hw/mlx4/mlx4_ib.h
8ad11fb6b0739e704953e2b0aed453bf7d75d4f6 31-Jul-2007 Jack Morgenstein <jackm@dev.mellanox.co.il> IB/mlx4: Implement FMRs

Implement FMRs for mlx4. This is an adaptation of code from mthca.

Signed-off-by: Jack Morgenstein <jackm@dev.mellanox.co.il>
Signed-off-by: Michael S. Tsirkin <mst@dev.mellanox.co.il>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
/drivers/infiniband/hw/mlx4/mlx4_ib.h
65541cb7cf353946ecd78016a453b453b8830656 21-Jun-2007 Jack Morgenstein <jackm@dev.mellanox.co.il> IB/mlx4: Implement query SRQ

Signed-off-by: Dotan Barak <dotanb@mellanox.co.il>
Signed-off-by: Jack Morgenstein <jackm@dev.mellanox.co.il>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
/drivers/infiniband/hw/mlx4/mlx4_ib.h
6a775e2ba4f7635849ade628e64723ab2beef0bc 20-Jun-2007 Jack Morgenstein <jackm@dev.mellanox.co.il> IB/mlx4: Implement query QP

Signed-off-by: Jack Morgenstein <jackm@dev.mellanox.co.il>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
/drivers/infiniband/hw/mlx4/mlx4_ib.h
63019d9329628a5056b3a0c76aee955873dc25c3 11-Jun-2007 Michael S. Tsirkin <mst@dev.mellanox.co.il> IB/mlx4: Include linux/mutex.h from mlx4_ib.h

mlx4_ib.h uses struct mutex, so although <linux/mutex.h> seems to be
pulled in indirectly by one of the headers it includes, the right
thing is to include <linux/mutex.h> directly.

Signed-off-by: Michael S. Tsirkin <mst@dev.mellanox.co.il>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
/drivers/infiniband/hw/mlx4/mlx4_ib.h
0e6e74162164d908edf7889ac66dca09e7505745 18-Jun-2007 Roland Dreier <rolandd@cisco.com> IB/mlx4: Handle new FW requirement for send request prefetching

New ConnectX firmware introduces FW command interface revision 2,
which requires that for each QP, a chunk of send queue entries (the
"headroom") is kept marked as invalid, so that the HCA doesn't get
confused if it prefetches entries that haven't been posted yet. Add
code to the driver to do this, and also update the user ABI so that
userspace can request that the prefetcher be turned off for userspace
QPs (we just leave the prefetcher on for all kernel QPs).

Unfortunately, marking send queue entries this way is confuses older
firmware, so we change the driver to allow only FW command interface
revisions 2. This means that users will have to update their firmware
to work with the new driver, but the firmware is changing quickly and
the old firmware has lots of other bugs anyway, so this shouldn't be too
big a deal.

Based on a patch from Jack Morgenstein <jackm@dev.mellanox.co.il>.

Signed-off-by: Roland Dreier <rolandd@cisco.com>
/drivers/infiniband/hw/mlx4/mlx4_ib.h
225c7b1feef1b41170f7037a5b10a65cd8a42c54 09-May-2007 Roland Dreier <rolandd@cisco.com> IB/mlx4: Add a driver Mellanox ConnectX InfiniBand adapters

Add an InfiniBand driver for Mellanox ConnectX adapters. Because
these adapters can also be used as ethernet NICs and Fibre Channel
HBAs, the driver is split into two modules:

mlx4_core: Handles low-level things like device initialization and
processing firmware commands. Also controls resource allocation
so that the InfiniBand, ethernet and FC functions can share a
device without stepping on each other.

mlx4_ib: Handles InfiniBand-specific things; plugs into the
InfiniBand midlayer.

Signed-off-by: Roland Dreier <rolandd@cisco.com>
/drivers/infiniband/hw/mlx4/mlx4_ib.h