]> git.baikalelectronics.ru Git - kernel.git/commit
RDMA/mlx5: Initialize roce port info before multiport master init
authorMark Bloch <markb@mellanox.com>
Thu, 28 Mar 2019 13:46:26 +0000 (15:46 +0200)
committerJason Gunthorpe <jgg@mellanox.com>
Mon, 22 Apr 2019 18:24:05 +0000 (15:24 -0300)
commitf1f9113b7b9809e359a1653b2dc87d2654e4d920
treef91cc8a3059bb1d9c52a44f1c77f5b5196dd16c6
parent21a09952d765b3b1862161e1dd9f92088519e8bd
RDMA/mlx5: Initialize roce port info before multiport master init

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: 9fa766c665d4 ("{net, IB}/mlx5: Manage port association for multiport RoCE")
Signed-off-by: Mark Bloch <markb@mellanox.com>
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
drivers/infiniband/hw/mlx5/main.c