break;
default:
dapl_log(DAPL_DBG_TYPE_WARN,
- " ucm_recv: UNKNOWN state"
- " <- op %s, %s spsp %x sqpn %x\n",
- dapl_cm_op_str(ntohs(msg->op)),
- dapl_cm_state_str(cm->state),
- ntohs(msg->sport), ntohl(msg->sqpn));
+ " ucm_recv: Warning, UNKNOWN state"
+ " <- op %s, %s spsp %x sqpn %x slid %x\n",
+ dapl_cm_op_str(ntohs(msg->op)),
+ dapl_cm_state_str(cm->state),
+ ntohs(msg->sport), ntohl(msg->sqpn),
+ ntohs(msg->saddr.ib.lid));
dapl_os_unlock(&cm->lock);
break;
}
event = IB_CME_CONNECTED;
else if (ntohs(msg->op) == DCM_REJ_USER)
event = IB_CME_DESTINATION_REJECT_PRIVATE_DATA;
- else
+ else {
+ dapl_log(DAPL_DBG_TYPE_WARN,
+ " Warning, non-user CR REJECT:"
+ " cm %p op %s, st %s dlid %x iqp %x port %x <-"
+ " slid %x iqp %x port %x\n", cm,
+ dapl_cm_op_str(ntohs(msg->op)),
+ dapl_cm_state_str(cm->state),
+ ntohs(msg->daddr.ib.lid), ntohl(msg->daddr.ib.qpn),
+ ntohs(msg->dport), ntohs(msg->saddr.ib.lid),
+ ntohl(msg->saddr.ib.qpn), ntohs(msg->sport));
+
event = IB_CME_DESTINATION_REJECT;
-
+ }
if (event != IB_CME_CONNECTED) {
dapl_log(DAPL_DBG_TYPE_CM,
" ACTIVE: CM_REQ REJECTED:"
(DAT_COUNT)ntohs(cm->msg.p_size),
(DAT_PVOID *)cm->msg.p_data,
(DAT_PVOID *)&xevent);
+
+ if (event != DAT_IB_UD_CONNECTION_EVENT_ESTABLISHED)
+ dapli_cm_free(cm);
} else
#endif
{
cm->msg.saddr.ib.qp_type = cm->msg.daddr.ib.qp_type;
dapl_os_memcpy(&cm->msg.saddr.ib.gid[0],
&cm->hca->ib_trans.addr.ib.gid, 16);
- cm->msg.op = htons(DCM_REJ_USER);
+ if (reason == IB_CM_REJ_REASON_CONSUMER_REJ)
+ cm->msg.op = htons(DCM_REJ_USER);
+ else
+ cm->msg.op = htons(DCM_REJ_CM);
+
if (ucm_send(&cm->hca->ib_trans, &cm->msg, pdata, psize)) {
dapl_log(DAPL_DBG_TYPE_WARN,
" cm_reject: send ERR: %s\n", strerror(errno));