From 02a69fd30069eb05c1a829d058170a169b359ea4 Mon Sep 17 00:00:00 2001 From: Arlin Davis Date: Wed, 5 Mar 2014 14:07:43 -0800 Subject: [PATCH] mpxyd: move to CONN state immediately on RTU_IN reject RW_imm messages from remote proxy-in if in disconnected state. Signed-off-by: Arlin Davis --- dapl/svc/mcm.c | 1 + dapl/svc/mix.c | 6 ++---- dapl/svc/mpxy_in.c | 4 ++-- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/dapl/svc/mcm.c b/dapl/svc/mcm.c index 1f300f3..39babdc 100644 --- a/dapl/svc/mcm.c +++ b/dapl/svc/mcm.c @@ -995,6 +995,7 @@ static void mcm_process_recv(mcm_ib_dev_t *md, dat_mcm_msg_t *msg, mcm_cm_t *cm, case MCM_RTU_PENDING: /* passive */ mlog(2, "RTU_PENDING: cm %p, my_id %d, cm_id %d\n", cm, cm->entry.tid, cm->cm_id); + cm->state = MCM_CONNECTED; mpxy_unlock(&cm->lock); MCNTR(md, MCM_CM_RTU_IN); mix_cm_rtu_in(cm, msg, len); diff --git a/dapl/svc/mix.c b/dapl/svc/mix.c index 93f1ee1..cd95d42 100644 --- a/dapl/svc/mix.c +++ b/dapl/svc/mix.c @@ -189,7 +189,7 @@ err: mlog(0, " ERR: snd on new_ep %d, ret %d, exp %d\n", op_ep, ret, len); if (smd) { mix_close_device(smd->md, smd); - return; + smd = NULL; } } @@ -1464,12 +1464,10 @@ int mix_cm_rtu_in(mcm_cm_t *m_cm, dat_mcm_msg_t *pkt, int pkt_len) mpxy_lock(&m_cm->smd->evlock); if (scif_send_msg(m_cm->smd->scif_ev_ep, (void*)&msg, len)) { mpxy_unlock(&m_cm->smd->evlock); + mcm_cm_disc(m_cm); return -1; } mpxy_unlock(&m_cm->smd->evlock); - mpxy_lock(&m_cm->lock); - m_cm->state = MCM_CONNECTED; - mpxy_unlock(&m_cm->lock); return 0; } diff --git a/dapl/svc/mpxy_in.c b/dapl/svc/mpxy_in.c index 6446402..25bcd71 100644 --- a/dapl/svc/mpxy_in.c +++ b/dapl/svc/mpxy_in.c @@ -1111,8 +1111,8 @@ retry: ntohl(wc[i].imm_data), m_qp->ib_qp2->state); continue; } - if (m_qp->cm && (m_qp->cm->state != MCM_CONNECTED)) { - mlog(1," WARN: RX data on DISC m_qp %p qp1 %p qp2 %p\n", + if (m_qp->cm && (m_qp->cm->state == MCM_DISCONNECTED)) { + mlog(1," WARN: RX data on DISC m_qp %p qp1 %p qp2 %p %s\n", m_qp, m_qp->ib_qp1, m_qp->ib_qp2, mcm_state_str(m_qp->cm->state)); continue; -- 2.41.0