From 59b163f7785a986b68f2a248cb3a01a88c00863b Mon Sep 17 00:00:00 2001 From: Ajaykumar Hotchandani Date: Mon, 12 Jan 2015 18:01:44 -0800 Subject: [PATCH] rdma_cm: extend debug for remote mapping This fetches local_id, remote_id, and qpn which helps to map corresponding remote cm_id Signed-off-by: Ajaykumar Hotchandani --- drivers/infiniband/core/cma.c | 57 ++++++++++++++++++++++++++++++----- 1 file changed, 49 insertions(+), 8 deletions(-) diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c index f2df86d70549..c2445f9047a2 100644 --- a/drivers/infiniband/core/cma.c +++ b/drivers/infiniband/core/cma.c @@ -74,7 +74,7 @@ static int debug_level = 0; printk(level "CMA: %p: %s: " format, ((struct rdma_id_priv *) priv) , __func__, ## arg) #define cma_dbg(priv, format, arg...) \ - do { if (debug_level) cma_pr(KERN_DEBUG, priv, format, ## arg); } while (0) + do { if (debug_level) cma_pr(KERN_INFO, priv, format, ## arg); } while (0) #define cma_warn(priv, format, arg...) \ cma_pr(KERN_WARNING, priv, format, ## arg) @@ -1140,7 +1140,9 @@ static int cma_rep_recv(struct rdma_id_private *id_priv) if (ret) goto reject; - cma_dbg(id_priv, "sending RTU\n"); + cma_dbg(id_priv, "sending RTU local_id=%u remote_id=%u \n", + id_priv->cm_id.ib->local_id, + id_priv->cm_id.ib->remote_id); ret = ib_send_cm_rtu(id_priv->cm_id.ib, NULL, 0); if (ret) goto reject; @@ -1168,6 +1170,31 @@ static void cma_set_rep_event_data(struct rdma_cm_event *event, event->param.conn.qp_num = rep_data->remote_qpn; } +static const char *cm_event_str(enum ib_cm_event_type event) +{ + switch (event) { + case IB_CM_REQ_ERROR: return "IB_CM_REQ_ERROR"; + case IB_CM_REQ_RECEIVED: return "IB_CM_REQ_RECEIVED"; + case IB_CM_REP_ERROR: return "IB_CM_REP_ERROR"; + case IB_CM_REP_RECEIVED: return "IB_CM_REP_RECEIVED"; + case IB_CM_RTU_RECEIVED: return "IB_CM_RTU_RECEIVED"; + case IB_CM_USER_ESTABLISHED: return "IB_CM_USER_ESTABLISHED"; + case IB_CM_DREQ_ERROR: return "IB_CM_DREQ_ERROR"; + case IB_CM_DREQ_RECEIVED: return "IB_CM_DREQ_RECEIVED"; + case IB_CM_DREP_RECEIVED: return "IB_CM_DREP_RECEIVED"; + case IB_CM_TIMEWAIT_EXIT: return "IB_CM_TIMEWAIT_EXIT"; + case IB_CM_MRA_RECEIVED: return "IB_CM_MRA_RECEIVED"; + case IB_CM_REJ_RECEIVED: return "IB_CM_REJ_RECEIVED"; + case IB_CM_LAP_ERROR: return "IB_CM_LAP_ERROR"; + case IB_CM_LAP_RECEIVED: return "IB_CM_LAP_RECEIVED"; + case IB_CM_APR_RECEIVED: return "IB_CM_APR_RECEIVED"; + case IB_CM_SIDR_REQ_ERROR: return "IB_CM_SIDR_REQ_ERROR"; + case IB_CM_SIDR_REQ_RECEIVED: return "IB_CM_SIDR_REQ_RECEIVED"; + case IB_CM_SIDR_REP_RECEIVED: return "IB_CM_SIDR_REP_RECEIVED"; + default: return "unknown CM event"; + } +} + static int cma_ib_handler(struct ib_cm_id *cm_id, struct ib_cm_event *ib_event) { struct rdma_id_private *id_priv = cm_id->context; @@ -1350,6 +1377,10 @@ static int cma_req_handler(struct ib_cm_id *cm_id, struct ib_cm_event *ib_event) int offset, ret; listen_id = cm_id->context; + cma_dbg(listen_id, "received %s local_id=%u remote_id=%u \n", + cm_event_str(ib_event->event), + cm_id->local_id, cm_id->remote_id); + if (!cma_check_req_qp_type(&listen_id->id, ib_event)) return -EINVAL; @@ -2884,7 +2915,10 @@ static int cma_connect_ib(struct rdma_id_private *id_priv, req.max_cm_retries = CMA_MAX_CM_RETRIES; req.srq = id_priv->srq ? 1 : 0; - cma_dbg(id_priv, "sending REQ\n"); + cma_dbg(id_priv, "sending REQ local_id=%u remote_id=%u qp_num=%u\n", + id_priv->cm_id.ib->local_id, + id_priv->cm_id.ib->remote_id, + id_priv->qp_num); ret = ib_send_cm_req(id_priv->cm_id.ib, &req); out: if (ret && !IS_ERR(id)) { @@ -3000,7 +3034,10 @@ static int cma_accept_ib(struct rdma_id_private *id_priv, rep.flow_control = conn_param->flow_control; rep.rnr_retry_count = min_t(u8, 7, conn_param->rnr_retry_count); rep.srq = id_priv->srq ? 1 : 0; - cma_dbg(id_priv, "sending REP\n"); + cma_dbg(id_priv, "sending REP local_id=%u remote_id=%u qp_num=%u\n", + id_priv->cm_id.ib->local_id, + id_priv->cm_id.ib->remote_id, + id_priv->qp_num); ret = ib_send_cm_rep(id_priv->cm_id.ib, &rep); out: return ret; @@ -3145,7 +3182,9 @@ int rdma_reject(struct rdma_cm_id *id, const void *private_data, ret = cma_send_sidr_rep(id_priv, IB_SIDR_REJECT, 0, private_data, private_data_len); else { - cma_dbg(id_priv, "sending REJ\n"); + cma_dbg(id_priv, "sending REJ local_id=%u remote_id=%u \n", + id_priv->cm_id.ib->local_id, + id_priv->cm_id.ib->remote_id); ret = ib_send_cm_rej(id_priv->cm_id.ib, IB_CM_REJ_CONSUMER_DEFINED, NULL, 0, private_data, private_data_len); @@ -3178,10 +3217,12 @@ int rdma_disconnect(struct rdma_cm_id *id) if (ret) goto out; /* Initiate or respond to a disconnect. */ - cma_dbg(id_priv, "sending DREQ\n"); + cma_dbg(id_priv, "attempt disconnect\n"); if (ib_send_cm_dreq(id_priv->cm_id.ib, NULL, 0)) { - cma_dbg(id_priv, "sending DREP\n"); - ib_send_cm_drep(id_priv->cm_id.ib, NULL, 0); + if (!(ib_send_cm_drep(id_priv->cm_id.ib, NULL, 0))) + cma_dbg(id_priv, "DREP sent\n"); + } else { + cma_dbg(id_priv, "DREQ sent\n"); } break; case RDMA_TRANSPORT_IWARP: -- 2.50.1