From: Jianxin Xiong Date: Fri, 10 Aug 2012 00:55:04 +0000 (-0700) Subject: Port numbers need to be unique within each physical IB device (md), X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=cc6aefd02eb7ce6928332f7c63c884d524556f7f;p=~ardavis%2Fdapl.git Port numbers need to be unique within each physical IB device (md), otherwise connection requests between multiple clients of the same proxy server can be matched incorrectly. --- diff --git a/dapl/svc/mpxyd.c b/dapl/svc/mpxyd.c index 0319503..8d444b8 100644 --- a/dapl/svc/mpxyd.c +++ b/dapl/svc/mpxyd.c @@ -803,7 +803,7 @@ void m_cm_free(mcm_cm_t *cm) { /* client, release local conn id port */ if (!cm->l_ep && cm->msg.sport) - mcm_free_port(cm->smd->ports, ntohs(cm->msg.sport)); + mcm_free_port(cm->md->ports, ntohs(cm->msg.sport)); pthread_mutex_destroy(&cm->lock); cm->smd->ref_count--; @@ -831,7 +831,7 @@ mcm_cm_t *m_cm_create(mcm_scif_dev_t *smd, mcm_qp_t *m_qp) /* ACTIVE: init source address QP info from MPXYD and MIC client */ if (m_qp) { - cm->msg.sport = htons(mcm_get_port(smd->ports, 0, (uint64_t)smd)); + cm->msg.sport = htons(mcm_get_port(smd->md->ports, 0, (uint64_t)smd)); if (!cm->msg.sport) { pthread_mutex_destroy(&cm->lock); goto bail; @@ -1439,7 +1439,7 @@ static int mix_listen_free(mcm_scif_dev_t *smd, dat_mix_hdr_t *pmsg) while (cm) { if (cm->sid == (uint16_t)pmsg->req_id) { remove_entry(&cm->entry); - mcm_free_port(smd->ports, (uint16_t)pmsg->req_id); + mcm_free_port(smd->md->ports, (uint16_t)pmsg->req_id); m_cm_free(cm); break; } @@ -1480,12 +1480,12 @@ static int mix_listen(mcm_scif_dev_t *smd, dat_mix_listen_t *pmsg) pmsg->sid, pmsg->backlog, smd->md->qp->qp_num, ntohs(smd->md->lid)); /* create listen EP for provided SID */ - lport = mcm_get_port(smd->ports, pmsg->sid, (uint64_t)smd); + lport = mcm_get_port(smd->md->ports, pmsg->sid, (uint64_t)smd); if (lport == pmsg->sid) { cm = m_cm_create(smd, NULL); if (cm == NULL) { pmsg->hdr.status = MIX_ENOMEM; - mcm_free_port(smd->ports, lport); + mcm_free_port(smd->md->ports, lport); } else { cm->state = MCM_LISTEN; cm->sid = lport;