IB/mlx5: Set right RoCE l3 type and roce version while deleting GID
authorParav Pandit <parav@nvidia.com>
Sun, 18 Apr 2021 13:49:39 +0000 (16:49 +0300)
committerJason Gunthorpe <jgg@nvidia.com>
Tue, 20 Apr 2021 12:41:10 +0000 (09:41 -0300)
commitdedbc2d35863f692295aff96ac9e34bf30a68707
treea5325f87baba93e9dad5311b4ef7a7e51b4cea0d
parent783a11bf2400e5d5c42a943c3083dc0330751842
IB/mlx5: Set right RoCE l3 type and roce version while deleting GID

Currently when GID is deleted, it zero out all the fields of the RoCE
address in the SET_ROCE_ADDRESS command for a specified index.

roce_version = 0 means RoCEv1 in the SET_ROCE_ADDRESS command.

This assumes that device has RoCEv1 always enabled which is not always
correct. For example Subfunction does not support RoCEv1.

Due to this assumption a previously added RoCEv2 GID is always deleted as
RoCEv1 GID. This results in a below syndrome:

   mlx5_core.sf mlx5_core.sf.4: mlx5_cmd_check:777:(pid 4256): SET_ROCE_ADDRESS(0x761) op_mod(0x0) failed, status bad parameter(0x3), syndrome (0x12822d)

Hence set the right RoCE version during GID deletion provided by the core.

Link: https://lore.kernel.org/r/d3f54129c90ca329caf438dbe31875d8ad08d91a.1618753425.git.leonro@nvidia.com
Signed-off-by: Parav Pandit <parav@nvidia.com>
Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
drivers/infiniband/hw/mlx5/main.c
drivers/net/ethernet/mellanox/mlx5/core/lib/gid.c