free_wclist = &wclist[0];\r
done_wclist = NULL;\r
\r
+ cl_spinlock_acquire(&cq_tinfo->cq_spinlock);\r
+\r
status = ib_poll_cq( cq_tinfo->cq, &free_wclist, &done_wclist );\r
\r
IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_WQ,\r
* execution thread was calling lpWPUCompleteOverlappedRequest. */\r
IBSP_ERROR( (\r
"ib_poll_cq returned IB_INVLALID_CQ_HANDLE\n") );\r
+ cl_spinlock_release(&cq_tinfo->cq_spinlock);\r
goto done;\r
\r
default:\r
\r
done_wclist = done_wclist->p_next;\r
}\r
+ cl_spinlock_release(&cq_tinfo->cq_spinlock);\r
\r
for( i = 0; i < cb_idx; i++ )\r
{\r
/* Upon allocation, the new CQ becomes the primary. */\r
hca->cq_tinfo = cq_tinfo;\r
\r
+ cl_spinlock_init(&cq_tinfo->cq_spinlock);\r
+\r
IBSP_EXIT( IBSP_DBG_HW );\r
return (cq_tinfo);\r
}\r
CL_ASSERT( cq_tinfo );\r
CL_ASSERT( cq_tinfo->qp_count == 0 );\r
\r
+ cl_spinlock_destroy(&cq_tinfo->cq_spinlock);\r
+\r
if( cq_tinfo->cq )\r
{\r
wclist.p_next = NULL;\r