Committing patch that sets the timeout value for sent messages to the
correct timeout value, including setting the timeout to 0 for messages
that do not generate a response.  Also added recording the timeout
on the passive side of a connection.

- Sean

signed-off-by: Sean Hefty <[EMAIL PROTECTED]>

Index: core/cm.c
===================================================================
--- core/cm.c   (revision 1568)
+++ core/cm.c   (working copy)
@@ -161,7 +161,7 @@
        m->send_wr.wr.ud.mad_hdr = &m->mad.mad_hdr;
        m->send_wr.wr.ud.remote_qpn = 1;
        m->send_wr.wr.ud.remote_qkey = IB_QP1_QKEY;
-       m->send_wr.wr.ud.timeout_ms = cm_id_priv->timeout_ms;
+       /* Timeout set by caller if response is expected. */
        m->send_wr.wr.ud.pkey_index = cm_id_priv->pkey_index;
 
        atomic_inc(&cm_id_priv->refcount);
@@ -755,6 +755,7 @@
                goto out;
 
        cm_format_req((struct cm_req_msg *)&msg->mad, cm_id_priv, param);
+       msg->send_wr.wr.ud.timeout_ms = cm_id_priv->timeout_ms;
 
        spin_lock_irqsave(&cm_id_priv->lock, flags);
        if (cm_id->state == IB_CM_IDLE)
@@ -912,6 +913,8 @@
                cm_id_priv = cur_cm_id_priv;
        }
        cm_id_priv->port = port;
+       cm_id_priv->timeout_ms = cm_convert_to_ms(
+                                       cm_req_get_local_resp_timeout(req_msg));
        cm_id_priv->max_cm_retries = cm_req_get_max_cm_retries(req_msg);
        cm_id_priv->remote_qpn = cm_req_get_local_qpn(req_msg);
        cm_id_priv->remote_port_gid = req_msg->primary_local_gid;
@@ -1015,6 +1018,7 @@
                goto out;
 
        cm_format_rep((struct cm_rep_msg *)&msg->mad, cm_id_priv, param);
+       msg->send_wr.wr.ud.timeout_ms = cm_id_priv->timeout_ms;
 
        spin_lock_irqsave(&cm_id_priv->lock, flags);
        if (cm_id->state == IB_CM_REQ_RCVD ||
@@ -1279,6 +1283,7 @@
 
        cm_format_dreq((struct cm_dreq_msg *)&msg->mad, cm_id_priv,
                       private_data, private_data_len);
+       msg->send_wr.wr.ud.timeout_ms = cm_id_priv->timeout_ms;
 
        spin_lock_irqsave(&cm_id_priv->lock, flags);
        if (cm_id->state == IB_CM_ESTABLISHED)
@@ -1696,6 +1701,7 @@
 
        cm_format_lap((struct cm_lap_msg *)&msg->mad, cm_id_priv,
                      alternate_path, private_data, private_data_len);
+       msg->send_wr.wr.ud.timeout_ms = cm_id_priv->timeout_ms;
 
        spin_lock_irqsave(&cm_id_priv->lock, flags);
        if (cm_id->state == IB_CM_ESTABLISHED &&
@@ -1956,6 +1962,7 @@
 
        cm_format_sidr_req((struct cm_sidr_req_msg *)&msg->mad, cm_id_priv,
                           param);
+       msg->send_wr.wr.ud.timeout_ms = cm_id_priv->timeout_ms;
 
        spin_lock_irqsave(&cm_id_priv->lock, flags);
        if (cm_id->state == IB_CM_IDLE)
_______________________________________________
openib-general mailing list
[email protected]
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

Reply via email to