[openib-general] Question about QP's in timewait state and CM stale conn rejects
Or Gerlitz
ogerlitz at voltaire.com
Sun Aug 20 04:45:19 PDT 2006
>>> + } else
>>> + cm_issue_rej(work->port, work->mad_recv_wc,
>>> + IB_CM_REJ_STALE_CONN,
>>> CM_MSG_RESPONSE_REQ,
>>> + NULL, 0);
>>
>>
>> what is this case? there is no <local_id,remote_id> entry but there is
>> remote <id,ca_guid> or <qpn,ca_guid> entries???
> If we get here, this means that the REQ was a new REQ and not a
> duplicate, but the remote_id or remote_qpn is already in use. We need
> to reject the new REQ as containing stale data.
I don't follow, if we get to the else case its as of cm_get_id()
returning NULL. This holds when idr_find() returns NULL or when the
entry returned is associated with a different remote_id, so what makes
you to conclude that "the remote_id or remote_qpn is already in use"???
> +static struct cm_id_private * cm_get_id(__be32 local_id, __be32 remote_id)
> +{
> + struct cm_id_private *cm_id_priv;
> +
> + cm_id_priv = idr_find(&cm.local_id_table, (__force int) local_id);
> + if (cm_id_priv) {
> + if (cm_id_priv->id.remote_id == remote_id)
> + atomic_inc(&cm_id_priv->refcount);
> + else
> + cm_id_priv = NULL;
> + }
> +
> + return cm_id_priv;
> +}
Or.
More information about the general
mailing list