mirror of
https://github.com/torvalds/linux.git
synced 2024-12-13 14:43:03 +00:00
IB/mlx4: Add and improve logging
Add missing check for success after call to mlx4_ib_send_to_wire() in
mlx4_ib_multiplex_mad().
Amended the existing pr_debug() in mlx4_ib_multiplex_cm_handler() and
mlx4_ib_demux_cm_handler() with attr_id during a lookup failure.
Removed two noisy pr_debug() in mad.c
Fixes: 3cf69cc8db
("IB/mlx4: Add CM paravirtualization")
Link: https://lore.kernel.org/r/20200803061941.1139994-2-haakon.bugge@oracle.com
Signed-off-by: Håkon Bugge <haakon.bugge@oracle.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
This commit is contained in:
parent
c0f4979e90
commit
094619449a
@ -314,8 +314,8 @@ int mlx4_ib_multiplex_cm_handler(struct ib_device *ibdev, int port, int slave_id
|
||||
}
|
||||
|
||||
if (!id) {
|
||||
pr_debug("id{slave: %d, sl_cm_id: 0x%x} is NULL!\n",
|
||||
slave_id, sl_cm_id);
|
||||
pr_debug("id{slave: %d, sl_cm_id: 0x%x} is NULL! attr_id: 0x%x\n",
|
||||
slave_id, sl_cm_id, be16_to_cpu(mad->mad_hdr.attr_id));
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
@ -354,7 +354,8 @@ int mlx4_ib_demux_cm_handler(struct ib_device *ibdev, int port, int *slave,
|
||||
id = id_map_get(ibdev, (int *)&pv_cm_id, -1, -1);
|
||||
|
||||
if (!id) {
|
||||
pr_debug("Couldn't find an entry for pv_cm_id 0x%x\n", pv_cm_id);
|
||||
pr_debug("Couldn't find an entry for pv_cm_id 0x%x, attr_id 0x%x\n",
|
||||
pv_cm_id, be16_to_cpu(mad->mad_hdr.attr_id));
|
||||
return -ENOENT;
|
||||
}
|
||||
|
||||
|
@ -500,6 +500,13 @@ static int get_gids_from_l3_hdr(struct ib_grh *grh, union ib_gid *sgid,
|
||||
sgid, dgid);
|
||||
}
|
||||
|
||||
static int is_proxy_qp0(struct mlx4_ib_dev *dev, int qpn, int slave)
|
||||
{
|
||||
int proxy_start = dev->dev->phys_caps.base_proxy_sqpn + 8 * slave;
|
||||
|
||||
return (qpn >= proxy_start && qpn <= proxy_start + 1);
|
||||
}
|
||||
|
||||
int mlx4_ib_send_to_slave(struct mlx4_ib_dev *dev, int slave, u8 port,
|
||||
enum ib_qp_type dest_qpt, struct ib_wc *wc,
|
||||
struct ib_grh *grh, struct ib_mad *mad)
|
||||
@ -520,8 +527,10 @@ int mlx4_ib_send_to_slave(struct mlx4_ib_dev *dev, int slave, u8 port,
|
||||
u16 cached_pkey;
|
||||
u8 is_eth = dev->dev->caps.port_type[port] == MLX4_PORT_TYPE_ETH;
|
||||
|
||||
if (dest_qpt > IB_QPT_GSI)
|
||||
if (dest_qpt > IB_QPT_GSI) {
|
||||
pr_debug("dest_qpt (%d) > IB_QPT_GSI\n", dest_qpt);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
tun_ctx = dev->sriov.demux[port-1].tun[slave];
|
||||
|
||||
@ -538,12 +547,20 @@ int mlx4_ib_send_to_slave(struct mlx4_ib_dev *dev, int slave, u8 port,
|
||||
if (dest_qpt) {
|
||||
u16 pkey_ix;
|
||||
ret = ib_get_cached_pkey(&dev->ib_dev, port, wc->pkey_index, &cached_pkey);
|
||||
if (ret)
|
||||
if (ret) {
|
||||
pr_debug("unable to get %s cached pkey for index %d, ret %d\n",
|
||||
is_proxy_qp0(dev, wc->src_qp, slave) ? "SMI" : "GSI",
|
||||
wc->pkey_index, ret);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
ret = find_slave_port_pkey_ix(dev, slave, port, cached_pkey, &pkey_ix);
|
||||
if (ret)
|
||||
if (ret) {
|
||||
pr_debug("unable to get %s pkey ix for pkey 0x%x, ret %d\n",
|
||||
is_proxy_qp0(dev, wc->src_qp, slave) ? "SMI" : "GSI",
|
||||
cached_pkey, ret);
|
||||
return -EINVAL;
|
||||
}
|
||||
tun_pkey_ix = pkey_ix;
|
||||
} else
|
||||
tun_pkey_ix = dev->pkeys.virt2phys_pkey[slave][port - 1][0];
|
||||
@ -715,7 +732,8 @@ static int mlx4_ib_demux_mad(struct ib_device *ibdev, u8 port,
|
||||
|
||||
err = mlx4_ib_send_to_slave(dev, slave, port, wc->qp->qp_type, wc, grh, mad);
|
||||
if (err)
|
||||
pr_debug("failed sending to slave %d via tunnel qp (%d)\n",
|
||||
pr_debug("failed sending %s to slave %d via tunnel qp (%d)\n",
|
||||
is_proxy_qp0(dev, wc->src_qp, slave) ? "SMI" : "GSI",
|
||||
slave, err);
|
||||
return 0;
|
||||
}
|
||||
@ -794,7 +812,8 @@ static int mlx4_ib_demux_mad(struct ib_device *ibdev, u8 port,
|
||||
|
||||
err = mlx4_ib_send_to_slave(dev, slave, port, wc->qp->qp_type, wc, grh, mad);
|
||||
if (err)
|
||||
pr_debug("failed sending to slave %d via tunnel qp (%d)\n",
|
||||
pr_debug("failed sending %s to slave %d via tunnel qp (%d)\n",
|
||||
is_proxy_qp0(dev, wc->src_qp, slave) ? "SMI" : "GSI",
|
||||
slave, err);
|
||||
return 0;
|
||||
}
|
||||
@ -807,27 +826,6 @@ static int ib_process_mad(struct ib_device *ibdev, int mad_flags, u8 port_num,
|
||||
int err;
|
||||
struct ib_port_attr pattr;
|
||||
|
||||
if (in_wc && in_wc->qp) {
|
||||
pr_debug("received MAD: port:%d slid:%d sqpn:%d "
|
||||
"dlid_bits:%d dqpn:%d wc_flags:0x%x tid:%016llx cls:%x mtd:%x atr:%x\n",
|
||||
port_num,
|
||||
in_wc->slid, in_wc->src_qp,
|
||||
in_wc->dlid_path_bits,
|
||||
in_wc->qp->qp_num,
|
||||
in_wc->wc_flags,
|
||||
be64_to_cpu(in_mad->mad_hdr.tid),
|
||||
in_mad->mad_hdr.mgmt_class, in_mad->mad_hdr.method,
|
||||
be16_to_cpu(in_mad->mad_hdr.attr_id));
|
||||
if (in_wc->wc_flags & IB_WC_GRH) {
|
||||
pr_debug("sgid_hi:0x%016llx sgid_lo:0x%016llx\n",
|
||||
be64_to_cpu(in_grh->sgid.global.subnet_prefix),
|
||||
be64_to_cpu(in_grh->sgid.global.interface_id));
|
||||
pr_debug("dgid_hi:0x%016llx dgid_lo:0x%016llx\n",
|
||||
be64_to_cpu(in_grh->dgid.global.subnet_prefix),
|
||||
be64_to_cpu(in_grh->dgid.global.interface_id));
|
||||
}
|
||||
}
|
||||
|
||||
slid = in_wc ? ib_lid_cpu16(in_wc->slid) : be16_to_cpu(IB_LID_PERMISSIVE);
|
||||
|
||||
if (in_mad->mad_hdr.method == IB_MGMT_METHOD_TRAP && slid == 0) {
|
||||
@ -1341,14 +1339,6 @@ static int mlx4_ib_multiplex_sa_handler(struct ib_device *ibdev, int port,
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int is_proxy_qp0(struct mlx4_ib_dev *dev, int qpn, int slave)
|
||||
{
|
||||
int proxy_start = dev->dev->phys_caps.base_proxy_sqpn + 8 * slave;
|
||||
|
||||
return (qpn >= proxy_start && qpn <= proxy_start + 1);
|
||||
}
|
||||
|
||||
|
||||
int mlx4_ib_send_to_wire(struct mlx4_ib_dev *dev, int slave, u8 port,
|
||||
enum ib_qp_type dest_qpt, u16 pkey_index,
|
||||
u32 remote_qpn, u32 qkey, struct rdma_ah_attr *attr,
|
||||
@ -1484,6 +1474,7 @@ static void mlx4_ib_multiplex_mad(struct mlx4_ib_demux_pv_ctx *ctx, struct ib_wc
|
||||
u16 vlan_id;
|
||||
u8 qos;
|
||||
u8 *dmac;
|
||||
int sts;
|
||||
|
||||
/* Get slave that sent this packet */
|
||||
if (wc->src_qp < dev->dev->phys_caps.base_proxy_sqpn ||
|
||||
@ -1580,13 +1571,17 @@ static void mlx4_ib_multiplex_mad(struct mlx4_ib_demux_pv_ctx *ctx, struct ib_wc
|
||||
&vlan_id, &qos))
|
||||
rdma_ah_set_sl(&ah_attr, qos);
|
||||
|
||||
mlx4_ib_send_to_wire(dev, slave, ctx->port,
|
||||
is_proxy_qp0(dev, wc->src_qp, slave) ?
|
||||
IB_QPT_SMI : IB_QPT_GSI,
|
||||
be16_to_cpu(tunnel->hdr.pkey_index),
|
||||
be32_to_cpu(tunnel->hdr.remote_qpn),
|
||||
be32_to_cpu(tunnel->hdr.qkey),
|
||||
&ah_attr, wc->smac, vlan_id, &tunnel->mad);
|
||||
sts = mlx4_ib_send_to_wire(dev, slave, ctx->port,
|
||||
is_proxy_qp0(dev, wc->src_qp, slave) ?
|
||||
IB_QPT_SMI : IB_QPT_GSI,
|
||||
be16_to_cpu(tunnel->hdr.pkey_index),
|
||||
be32_to_cpu(tunnel->hdr.remote_qpn),
|
||||
be32_to_cpu(tunnel->hdr.qkey),
|
||||
&ah_attr, wc->smac, vlan_id, &tunnel->mad);
|
||||
if (sts)
|
||||
pr_debug("failed sending %s to wire on behalf of slave %d (%d)\n",
|
||||
is_proxy_qp0(dev, wc->src_qp, slave) ? "SMI" : "GSI",
|
||||
slave, sts);
|
||||
}
|
||||
|
||||
static int mlx4_ib_alloc_pv_bufs(struct mlx4_ib_demux_pv_ctx *ctx,
|
||||
@ -1744,9 +1739,6 @@ static void mlx4_ib_tunnel_comp_worker(struct work_struct *work)
|
||||
"buf:%lld\n", wc.wr_id);
|
||||
break;
|
||||
case IB_WC_SEND:
|
||||
pr_debug("received tunnel send completion:"
|
||||
"wrid=0x%llx, status=0x%x\n",
|
||||
wc.wr_id, wc.status);
|
||||
rdma_destroy_ah(tun_qp->tx_ring[wc.wr_id &
|
||||
(MLX4_NUM_TUNNEL_BUFS - 1)].ah, 0);
|
||||
tun_qp->tx_ring[wc.wr_id & (MLX4_NUM_TUNNEL_BUFS - 1)].ah
|
||||
|
Loading…
Reference in New Issue
Block a user