qed: Fix rdma_info structure allocation
authorMichal Kalderon <michal.kalderon@cavium.com>
Mon, 12 Nov 2018 10:50:22 +0000 (12:50 +0200)
committerDavid S. Miller <davem@davemloft.net>
Tue, 13 Nov 2018 16:51:16 +0000 (08:51 -0800)
commit291d57f67d2449737d1e370ab5b9a583818eaa0c
treeca7a5979f6526559b0c2d09d1cf9d89dfeb33f3c
parente90202ed1cf9672c48a363c84a929932ebfe6fc0
qed: Fix rdma_info structure allocation

Certain flows need to access the rdma-info structure, for example dcbx
update flows. In some cases there can be a race between the allocation or
deallocation of the structure which was done in roce start / roce stop and
an asynchrounous dcbx event that tries to access the structure.
For this reason, we move the allocation of the rdma_info structure to be
similar to the iscsi/fcoe info structures which are allocated during device
setup.
We add a new field of "active" to the struct to define whether roce has
already been started or not, and this is checked instead of whether the
pointer to the info structure.

Fixes: 51ff17251c9c ("qed: Add support for RoCE hw init")
Signed-off-by: Michal Kalderon <michal.kalderon@cavium.com>
Signed-off-by: Denis Bolotin <denis.bolotin@cavium.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/qlogic/qed/qed_dev.c
drivers/net/ethernet/qlogic/qed/qed_rdma.c
drivers/net/ethernet/qlogic/qed/qed_rdma.h