mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs.git
synced 2026-10-31 22:34:33 +01:00
IB/mlx5: Improve query port for representor port
Improve query port functionality for representor port as below. 1. RoCE Qkey violation counters are not applicable for representor port. 2. Avoid setting gid_tbl_len twice for representor port. 3. Avoid setting ip_gids and IB_PORT_CM_SUP property for representor port as GID table is empty and CM support is not present in representor mode. Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Parav Pandit <[email protected]> Signed-off-by: Leon Romanovsky <[email protected]> Signed-off-by: Jason Gunthorpe <[email protected]>
This commit is contained in:
1 parent
2019d70e91
commit
7a58779edd
1 file changed
+10
-21
@@ -462,7 +462,6 @@ static int mlx5_query_port_roce(struct ib_device *device, u8 port_num,
|
||||
struct net_device *ndev, *upper;
|
||||
enum ib_mtu ndev_ib_mtu;
|
||||
bool put_mdev = true;
|
||||
u16 qkey_viol_cntr;
|
||||
u32 eth_prot_oper;
|
||||
u8 mdev_port_num;
|
||||
bool ext;
|
||||
@@ -500,20 +499,22 @@ static int mlx5_query_port_roce(struct ib_device *device, u8 port_num,
|
||||
translate_eth_proto_oper(eth_prot_oper, &props->active_speed,
|
||||
&props->active_width, ext);
|
||||
|
||||
props->port_cap_flags |= IB_PORT_CM_SUP;
|
||||
props->ip_gids = true;
|
||||
if (!dev->is_rep && mlx5_is_roce_enabled(mdev)) {
|
||||
u16 qkey_viol_cntr;
|
||||
|
||||
props->gid_tbl_len = MLX5_CAP_ROCE(dev->mdev,
|
||||
roce_address_table_size);
|
||||
props->port_cap_flags |= IB_PORT_CM_SUP;
|
||||
props->ip_gids = true;
|
||||
props->gid_tbl_len = MLX5_CAP_ROCE(dev->mdev,
|
||||
roce_address_table_size);
|
||||
mlx5_query_nic_vport_qkey_viol_cntr(mdev, &qkey_viol_cntr);
|
||||
props->qkey_viol_cntr = qkey_viol_cntr;
|
||||
}
|
||||
props->max_mtu = IB_MTU_4096;
|
||||
props->max_msg_sz = 1 << MLX5_CAP_GEN(dev->mdev, log_max_msg);
|
||||
props->pkey_tbl_len = 1;
|
||||
props->state = IB_PORT_DOWN;
|
||||
props->phys_state = IB_PORT_PHYS_STATE_DISABLED;
|
||||
|
||||
mlx5_query_nic_vport_qkey_viol_cntr(mdev, &qkey_viol_cntr);
|
||||
props->qkey_viol_cntr = qkey_viol_cntr;
|
||||
|
||||
/* If this is a stub query for an unaffiliated port stop here */
|
||||
if (!put_mdev)
|
||||
goto out;
|
||||
@@ -1383,19 +1384,7 @@ int mlx5_ib_query_port(struct ib_device *ibdev, u8 port,
|
||||
static int mlx5_ib_rep_query_port(struct ib_device *ibdev, u8 port,
|
||||
struct ib_port_attr *props)
|
||||
{
|
||||
int ret;
|
||||
|
||||
/* Only link layer == ethernet is valid for representors
|
||||
* and we always use port 1
|
||||
*/
|
||||
ret = mlx5_query_port_roce(ibdev, port, props);
|
||||
if (ret || !props)
|
||||
return ret;
|
||||
|
||||
/* We don't support GIDS */
|
||||
props->gid_tbl_len = 0;
|
||||
|
||||
return ret;
|
||||
return mlx5_query_port_roce(ibdev, port, props);
|
||||
}
|
||||
|
||||
static int mlx5_ib_rep_query_pkey(struct ib_device *ibdev, u8 port, u16 index,
|
||||
|
||||
Reference in new issue
Block a user