IB/mlx4: Fix MAD tunneling when SRIOV is enabled
Subsystems (2)
PATCH 1/1 IB/mlx4: Fix MAD tunneling when SRIOV is enabled
From: Jack Morgenstein <[email protected]>
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.
--- drivers/infiniband/hw/mlx4/mad.c | 1 + 1 file changed, 1 insertion(+)
drivers/infiniband/hw/mlx4/mad.c +1 -0
@@ -1578,6 +1578,7 @@ static void mlx4_ib_multiplex_mad(struct mlx4_ib_demux_pv_ctx *ctx, struct ib_wcif (port <0 )return ; ah.av.ib.port_pd =cpu_to_be32 (port <<24 | (be32_to_cpu (ah.av.ib.port_pd) &0xffffff )); + ah.ibah.type =rdma_ah_find_type (&dev->ib_dev, port);mlx4_ib_query_ah (&ah.ibah, &ah_attr);if (rdma_ah_get_ah_flags (&ah_attr) &IB_AH_GRH )
--
2.12.2
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
A message that is not in the archive (sent off-list or not yet received): 20170521161113.20772-1-leon-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org
Doug Ledford
AppliedQuoted 29 lines · Leon Romanovsky
The cited patch added a type field to structures
ib_ahandrdma_ah_attr.Function
mlx4_ib_query_ah()builds anrdma_ah_attrstructure from the data in anmlx4_ib_ahstructure (which contains both anib_ahstructure
and an address vector).For
mlx4_ib_query_ah()to work properly, the type field in the containedib_ahstructure 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 anmlx4_ib_ahstructure and callsmlx4_ib_query_ah().The cited commit overlooked setting the type field in the contained
ib_ahstructure before invokingmlx4_ib_query_ah(). As a result, the type field remained uninitialized, and therdma_ah_attrstructure 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_ahstructure before callingmlx4_ib_query_ah(). Therdma_ah_attrstructure
is then generated correctly.
Quoted 4 lines
Fixes 44c58487d51a ("IB/core: Define 'ib' and 'roce' rdma_ah_attrtypes")
Signed-off-by Jack Morgenstein <[email protected]>Signed-off-by Leon Romanovsky <[email protected]>
Thanks, applied.
Signature · 9 lines
Doug Ledford <[email protected]> GPG KeyID: B826A3330E572FDD Key fingerprint = AE6B 1BDA 122B 23B4 265B 1274 B826 A333 0E57 2FDD -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html