• Jack Morgenstein's avatar
    RDMA/mlx4: Fix MAD tunneling when SRIOV is enabled · eed76245
    Jack Morgenstein authored
    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: 44c58487 ("IB/core: Define 'ib' and 'roce' rdma_ah_attr types")
    Signed-off-by: default avatarJack Morgenstein <jackm@dev.mellanox.co.il>
    Signed-off-by: default avatarLeon Romanovsky <leon@kernel.org>
    Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
    eed76245
mad.c 67 KB