]> git.baikalelectronics.ru Git - kernel.git/commit
RDMA/mlx4: Fix MAD tunneling when SRIOV is enabled
authorJack Morgenstein <jackm@dev.mellanox.co.il>
Sun, 21 May 2017 16:11:13 +0000 (19:11 +0300)
committerDoug Ledford <dledford@redhat.com>
Thu, 1 Jun 2017 21:04:51 +0000 (17:04 -0400)
commit76f9f1627c02c8bebddb6874679a87bf820c3103
tree34615fc83a55ae41203ae20d541ce6f81148a301
parenta1d74eb8b84a6791e3e7777fc1776adcc529b50a
RDMA/mlx4: Fix MAD tunneling when SRIOV is enabled

The cited patch added a type field to structures ib_ah and rdma_ah_attr.

Function mlx4_ib_query_ah() builds an rdma_ah_attr structure from the
data in an mlx4_ib_ah structure (which contains both an ib_ah structure
and an address vector).

For mlx4_ib_query_ah() to work properly, the type field in the contained
ib_ah structure must be set correctly.

In the outgoing MAD tunneling flow, procedure mlx4_ib_multiplex_mad()
paravirtualizes a MAD received from a slave and sends the processed
mad out over the wire. During this processing, it populates an
mlx4_ib_ah structure and calls mlx4_ib_query_ah().

The cited commit overlooked setting the type field in the contained
ib_ah structure before invoking mlx4_ib_query_ah(). As a result, the
type field remained uninitialized, and the rdma_ah_attr structure was
incorrectly built. This resulted in improperly built MADs being sent out
over the wire.

This patch properly initializes the type field in the contained ib_ah
structure before calling mlx4_ib_query_ah(). The rdma_ah_attr structure
is then generated correctly.

Fixes: 2330739532f9 ("IB/core: Define 'ib' and 'roce' rdma_ah_attr types")
Signed-off-by: Jack Morgenstein <jackm@dev.mellanox.co.il>
Signed-off-by: Leon Romanovsky <leon@kernel.org>
Signed-off-by: Doug Ledford <dledford@redhat.com>
drivers/infiniband/hw/mlx4/mad.c