[ofw] [PATCH] Cleanup how the CEP manager handles requested initiator depth

Fab Tillier ftillier at windows.microsoft.com
Tue Jul 1 14:53:44 PDT 2008


The CEP manager currently keeps a separate field to store the initiator depth requested in a REQ.  When the user sends the REP, the CEP stored the responder resources as the minimum of the requested depth or the CA's capabilities.

This change eliminates the separate field, and uses the responder resources to store the received REQ's initiator depth.  This simplifies the code a bit.

Signed-off-by: Fab Tillier <ftillier at microsoft.com>

diff -up -r -X trunk\docs\dontdiff.txt -I \$Id: old\core\al\kernel\al_cm_cep.c trunk\core\al\kernel\al_cm_cep.c
--- old\core\al\kernel\al_cm_cep.c      Tue Jul 01 13:27:39 2008
+++ trunk\core\al\kernel\al_cm_cep.c    Tue Jul 01 13:26:53 2008
@@ -279,6 +279,10 @@ typedef struct _al_kcep
        /* Parameters to format QP modification structure. */
        net32_t                                         sq_psn;
        net32_t                                         rq_psn;
+       /*
+     * Note that we store the requested initiator depth as received in the REQ
+     * and cap it when sending the REP to the actual capabilities of the HCA.
+     */
        uint8_t                                         resp_res;
        uint8_t                                         init_depth;
        uint8_t                                         rnr_nak_timeout;
@@ -292,9 +296,6 @@ typedef struct _al_kcep
        /* PKEY to make sure a LAP is on the same partition. */
        net16_t                                         pkey;

-       /* Initiator depth as received in the REQ. */
-       uint8_t                                         req_init_depth;
-
        /*
         * Primary and alternate path info, used to create the address vectors for
         * sending MADs, to locate the port CM agent to use for outgoing sends,
@@ -832,7 +833,7 @@ __save_wire_req(
        p_cep->target_ack_delay = 0;

        /* Store the requested initiator depth. */
-       p_cep->req_init_depth = conn_req_get_init_depth( p_req );
+       p_cep->resp_res = conn_req_get_init_depth( p_req );

        /*
         * Store the provided responder resources.  These turn into the local
@@ -4818,7 +4819,7 @@ __save_user_rep(
        ci_ca_lock_attr( p_cm_rep->h_qp->obj.p_ci_ca );
        /* Check the CA's responder resource max and trim if necessary. */
        if( (p_cm_rep->h_qp->obj.p_ci_ca->p_pnp_attr->max_qp_resp_res <
-               p_cep->req_init_depth) )
+               p_cep->resp_res) )
        {
                /*
                 * The CA cannot handle the requested responder resources.
@@ -4827,11 +4828,6 @@ __save_user_rep(
                p_cep->resp_res =
                        p_cm_rep->h_qp->obj.p_ci_ca->p_pnp_attr->max_qp_resp_res;
        }
-       else
-       {
-               /* The CA supports the requested responder resources. */
-               p_cep->resp_res = p_cep->req_init_depth;
-       }
        ci_ca_unlock_attr( p_cm_rep->h_qp->obj.p_ci_ca );

        p_cep->rnr_nak_timeout = p_cm_rep->rnr_nak_timeout;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: req_init_depth.patch
Type: application/octet-stream
Size: 2063 bytes
Desc: req_init_depth.patch
URL: <http://lists.openfabrics.org/pipermail/ofw/attachments/20080701/ba73de43/attachment.obj>


More information about the ofw mailing list