]> git.openfabrics.org - ~shefty/rdma-win.git/commitdiff
refresh (create temporary patch)
authorSean Hefty <sean.hefty@intel.com>
Thu, 23 Sep 2010 20:59:48 +0000 (13:59 -0700)
committerSean Hefty <sean.hefty@intel.com>
Thu, 23 Sep 2010 20:59:48 +0000 (13:59 -0700)
meta
patches/refresh-temp [new file with mode: 0644]

diff --git a/meta b/meta
index c2e4e9ed08bcd0ee2d873a86f2702a3eb23c3b85..ab816c87d85d7cb27bc5d1f6caa729a0588f2254 100644 (file)
--- a/meta
+++ b/meta
@@ -1,11 +1,12 @@
 Version: 1
-Previous: e2683538fc54f47a129e5e3109304d895595b8f2
-Head: cbeac59b641ada456b6f329bf1df0c24f2f6ac46
+Previous: 96b795bed356859163908c85fd98cf2e932e0f0b
+Head: 249df8f4f74e7c84ff37057d8b9657e815b87110
 Applied:
   dapl-update: 2df1438b75e945d48a63fbda74079a77978f315d
   cma-priv-data: 83299e9a772068a302a4d39ff4e7ba45d4bd26b5
   ibal-disc: 203f6240e2d31e82f784623a8b5a514fdf2f1f7c
   ibal-drep: cbeac59b641ada456b6f329bf1df0c24f2f6ac46
+  refresh-temp: 249df8f4f74e7c84ff37057d8b9657e815b87110
 Unapplied:
   dapl-cookie: dba881d08766e12ba2863c4f57b6a1877b5a8ecf
   dapl-evd: ede541a6ba3d7d2a69f95b691f69eb9a315bb75d
diff --git a/patches/refresh-temp b/patches/refresh-temp
new file mode 100644 (file)
index 0000000..f651359
--- /dev/null
@@ -0,0 +1,100 @@
+Bottom: f7f2d544218a134f3c4d7ef793f728f1ee392dbf
+Top:    d03a34e5e593ef8cb83cb0c43ec3bc6d468d5ee1
+Author: Sean Hefty <sean.hefty@intel.com>
+Date:   2010-09-23 13:59:43 -0700
+
+Refresh of ibal-drep
+
+---
+
+diff --git a/trunk/core/al/kernel/al_cm_cep.c b/trunk/core/al/kernel/al_cm_cep.c
+index 6255846..ee360d1 100644
+--- a/trunk/core/al/kernel/al_cm_cep.c
++++ b/trunk/core/al/kernel/al_cm_cep.c
+@@ -1586,6 +1586,33 @@ done:
+       AL_EXIT( AL_DBG_CM );\r
+ }\r
\r
++static void\r
++__issue_drep(\r
++      IN                              cep_agent_t* const                      p_port_cep,\r
++      IN                              ib_mad_element_t* const         p_mad )\r
++{\r
++      mad_cm_drep_t   *p_drep;\r
++      uint32_t                comm_id;\r
++\r
++      AL_ENTER( AL_DBG_CM );\r
++\r
++      p_drep = (mad_cm_drep_t *) p_mad->p_mad_buf;\r
++\r
++      p_drep->hdr.attr_id = CM_DREP_ATTR_ID;\r
++      comm_id = p_drep->remote_comm_id;\r
++      p_drep->remote_comm_id = p_drep->local_comm_id;\r
++      p_drep->local_comm_id = comm_id;\r
++      conn_drep_set_pdata( NULL, 0, p_drep );\r
++\r
++      p_mad->retry_cnt = 0;\r
++      p_mad->send_opt = 0;\r
++      p_mad->timeout_ms = 0;\r
++      p_mad->resp_expected = FALSE;\r
++\r
++      __cep_send_mad( p_port_cep, p_mad );\r
++\r
++      AL_EXIT( AL_DBG_CM );\r
++}\r
\r
+ static void\r
+ __dreq_handler(\r
+@@ -1610,8 +1637,14 @@ __dreq_handler(
+       /* Find the connection by connection IDs. */\r
+       KeAcquireInStackQueuedSpinLockAtDpcLevel( &gp_cep_mgr->lock, &hdl );\r
+       p_cep = __lookup_cep( NULL, p_dreq->remote_comm_id );\r
+-      if( !p_cep ||\r
+-              p_cep->remote_comm_id != p_dreq->local_comm_id ||\r
++      if( !p_cep )\r
++      {\r
++              __issue_drep( p_port_cep, p_mad );\r
++              AL_EXIT( AL_DBG_CM );\r
++              return;\r
++      }\r
++\r
++      if(     p_cep->remote_comm_id != p_dreq->local_comm_id ||\r
+               p_cep->local_qpn != conn_dreq_get_remote_qpn( p_dreq ) )\r
+       {\r
+               AL_PRINT( TRACE_LEVEL_INFORMATION, AL_DBG_CM, ("DREQ received that could not be matched.\n") );\r
+diff --git a/trunk/ulp/dapl2/dapl/ibal/dapl_ibal_cm.c b/trunk/ulp/dapl2/dapl/ibal/dapl_ibal_cm.c
+index 37e158b..a638571 100644
+--- a/trunk/ulp/dapl2/dapl/ibal/dapl_ibal_cm.c
++++ b/trunk/ulp/dapl2/dapl/ibal/dapl_ibal_cm.c
+@@ -228,7 +228,8 @@ dapli_ib_cm_dreq_cb (
+ {
+     DAPL_EP             *ep_ptr;
+     dp_ib_cm_handle_t cm_ptr;
+-    
++    enum dapl_ibal_cm_state state;
++ 
+     dapl_os_assert (p_cm_dreq_rec);
+     ep_ptr  = (DAPL_EP * __ptr64) p_cm_dreq_rec->qp_context;
+@@ -275,17 +276,17 @@ dapli_ib_cm_dreq_cb (
+     ep_ptr->param.ep_state = DAT_EP_STATE_DISCONNECT_PENDING;
++    state = cm_ptr->state;
+     if (cm_ptr->state == IBAL_CM_CONNECT)
+     {
+           cm_ptr->state = IBAL_CM_DREQ;
+           cm_ptr->ib_cm = p_cm_dreq_rec->h_cm_dreq;
+     }
+-    else
+-    {
+-          dapli_send_ib_cm_drep(p_cm_dreq_rec->h_cm_dreq);
+-    }
+     dapl_os_unlock (&ep_ptr->header.lock);
++    if (state == IBAL_CM_DISCONNECT)
++          dapli_send_ib_cm_drep(p_cm_dreq_rec->h_cm_dreq);
++
+     if (ep_ptr->cr_ptr)
+     {
+         /* passive side */