• Mark Bloch's avatar
    RDMA/mlx5: Initialize roce port info before multiport master init · d3b5cc1c
    Mark Bloch authored
    When working in mutliport RoCE mode it is possible to attach a slave
    before the master. In that case the slave is waiting for a master to be
    attached.  When the master is attached it goes over the list of waiting
    slaves, finds a slave that is compatible and tries to bind it to itself.
    
    The call stack is:
    mlx5_ib_init_multiport_master() -> mlx5_ib_bind_slave_port()
    
    In the bind function we will create a netdev notifier, but this is done
    before we initialize the RoCE structure (this is done at a later stage by
    the master in the ROCE stage).
    
    Once events are delivered to that notifier we will use
    mlx5_ib_get_native_port_mdev() to get the actual port and as the native
    port is zero we will access an invalid index in the port structure.
    
    Move the RoCE structure initialization to an earlier stage.
    
    Fixes: 32f69e4b ("{net, IB}/mlx5: Manage port association for multiport RoCE")
    Signed-off-by: default avatarMark Bloch <markb@mellanox.com>
    Signed-off-by: default avatarLeon Romanovsky <leonro@mellanox.com>
    Signed-off-by: default avatarJason Gunthorpe <jgg@mellanox.com>
    d3b5cc1c
main.c 179 KB