linux/drivers/infiniband/hw/mlx4
Jack Morgenstein 3eac103f83 IB/mlx4: Use default pkey when creating tunnel QPs
When creating tunnel QPs for special QP tunneling, look for the
default pkey in the slave's virtual pkey table.  If it is present, use
the real pkey index where the default pkey is located.

If the default pkey is not found in the pkey table, use the real pkey
index which is stored at index 0 in the slave's virtual pkey table
(this is the current behavior).

This change is required to support cloud computing, where the
paravirtualized index of the default pkey is moved to index 1 or
higher.  The pkey at paravirtualized index 0 is used for the default
IPoIB interface created by the VF.

Its possible for the pkey value at paravirtualized index 0 to be
invalid (zero) at VF probe time (pkey index 0 is mapped to real pkey
index 127, which contains pkey = 0).

At some point after the VF probe, the cloud computing interface at the
hypervisor maps virtual index 0 for the VF to the pkey index
containing the pkey that IPoIB will use in its operation.  However,
when the tunnel QP is created, the pkey at the slave's virtual index 0
is still mapped to the invalid pkey index, so tunnel QP creation
fails.

This commit causes the hypervisor to search for the default pkey in
the slave's pkey table -- and this pkey is present in the table (at
index > 0) at tunnel QP creation time, so that the tunnel QP creation
will succeed.

Signed-off-by: Jack Morgenstein <jackm@dev.mellanox.co.il>
Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com>
Signed-off-by: Roland Dreier <roland@purestorage.com>
2013-07-31 12:22:12 -07:00
..
Kconfig mlx4: Fix infiniband Kconfig dependencies. 2011-08-11 23:05:05 -07:00
Makefile IB/mlx4: Add iov directory in sysfs under the ib device 2012-09-30 20:33:39 -07:00
ah.c IB/mlx4: Fix SL to 802.1Q priority-bits mapping for IBoE 2012-01-03 21:00:02 -08:00
alias_GUID.c IB/mlx4: Fix build error on platforms where UL is not 64 bits 2012-10-18 10:29:01 -07:00
cm.c drivers/infiniband/hw/mlx4: convert to using idr_alloc_cyclic() 2013-04-29 18:28:41 -07:00
cq.c InfiniBand/RDMA changes for the 3.10 merge window: 2013-05-08 15:29:48 -07:00
doorbell.c IB: expand ib_umem_get() prototype 2008-04-29 08:06:12 -07:00
mad.c IB/mlx4: Use default pkey when creating tunnel QPs 2013-07-31 12:22:12 -07:00
main.c net: pass info struct via netdevice notifier 2013-05-28 13:11:01 -07:00
mcg.c IB/mlx4: Synchronize cleanup of MCGs in MCG paravirtualization 2012-10-18 10:29:02 -07:00
mlx4_ib.h IB/mlx4: Support memory window binding 2013-02-25 10:44:32 -08:00
mr.c IB/mlx4: Support memory window binding 2013-02-25 10:44:32 -08:00
qp.c IB/mlx4: Set link type for RAW PACKET QPs in the QP context 2013-04-24 17:51:28 -07:00
srq.c IB/mlx4: Replace printk(KERN_yyy...) with pr_yyy(...) 2012-05-08 11:59:36 -07:00
sysfs.c IB/mlx4: Adjust duplicate test 2013-02-15 15:23:26 -08:00
user.h mlx4: 64-byte CQE/EQE support 2012-11-26 10:19:17 -08:00