#include "al_cm_cep.h"\r
#include "al_cq.h"\r
#include "al_debug.h"\r
+#if defined(EVENT_TRACING)\r
+#ifdef offsetof\r
+#undef offsetof\r
+#endif\r
+#include "al_qp.tmh"\r
+#endif\r
#include "al_mad.h"\r
#include "al_mad_pool.h"\r
#include "al_mcast.h"\r
\r
if( !p_qp_create || !ph_qp )\r
{\r
- CL_TRACE_EXIT( AL_DBG_ERROR, g_al_dbg_lvl, ("IB_INVALID_PARAMETER\n") );\r
+ AL_PRINT_EXIT( TRACE_LEVEL_ERROR, AL_DBG_ERROR, ("IB_INVALID_PARAMETER\n") );\r
return IB_INVALID_PARAMETER;\r
}\r
\r
\r
if( !p_qp_create || !ph_qp )\r
{\r
- CL_TRACE_EXIT( AL_DBG_ERROR, g_al_dbg_lvl, ("IB_INVALID_PARAMETER\n") );\r
+ AL_PRINT_EXIT( TRACE_LEVEL_ERROR, AL_DBG_ERROR, ("IB_INVALID_PARAMETER\n") );\r
return IB_INVALID_PARAMETER;\r
}\r
\r
status = ib_reg_mad_pool( gh_mad_pool, h_pd,\r
&((al_qp_alias_t*)h_qp)->pool_key );\r
if( status == IB_SUCCESS )\r
+ {\r
+ /*\r
+ * Take a reference on the pool key since we don't have a\r
+ * mechanism for the pool key to clear the QP's pointer to it.\r
+ */\r
+ ref_al_obj( &((al_qp_alias_t*)h_qp)->pool_key->obj );\r
*p_pool_key = ((al_qp_alias_t*)h_qp)->pool_key;\r
+ }\r
}\r
break;\r
\r
IN const ib_qp_handle_t h_qp,\r
IN const ib_pfn_destroy_cb_t pfn_destroy_cb OPTIONAL )\r
{\r
- CL_ENTER( AL_DBG_QP, g_al_dbg_lvl );\r
+ AL_ENTER( AL_DBG_QP );\r
\r
if( AL_OBJ_INVALID_HANDLE( h_qp, AL_OBJ_TYPE_H_QP ) )\r
{\r
- CL_TRACE_EXIT( AL_DBG_ERROR, g_al_dbg_lvl, ("IB_INVALID_QP_HANDLE\n") );\r
+ AL_PRINT_EXIT( TRACE_LEVEL_ERROR, AL_DBG_ERROR, ("IB_INVALID_QP_HANDLE\n") );\r
return IB_INVALID_QP_HANDLE;\r
}\r
\r
ref_al_obj( &h_qp->obj );\r
h_qp->obj.pfn_destroy( &h_qp->obj, pfn_destroy_cb );\r
\r
- CL_EXIT( AL_DBG_QP, g_al_dbg_lvl );\r
+ AL_EXIT( AL_DBG_QP );\r
return IB_SUCCESS;\r
}\r
\r
{\r
ib_api_status_t status;\r
/* Deregister the pool_key. */\r
- ref_al_obj( &p_qp_alias->pool_key->obj );\r
status = dereg_mad_pool( p_qp_alias->pool_key, AL_KEY_ALIAS );\r
if( status != IB_SUCCESS )\r
{\r
- AL_TRACE( AL_DBG_ERROR, ("dereg_mad_pool returned %s.\n",\r
+ AL_PRINT( TRACE_LEVEL_ERROR, AL_DBG_ERROR,\r
+ ("dereg_mad_pool returned %s.\n",\r
ib_get_err_str(status)) );\r
+ /* Release the reference taken when we created the pool key. */\r
deref_al_obj( &p_qp_alias->pool_key->obj );\r
}\r
p_qp_alias->pool_key = NULL;\r
status = verbs_destroy_qp( h_qp );\r
if( status != IB_SUCCESS )\r
{\r
- CL_TRACE( AL_DBG_ERROR, g_al_dbg_lvl,\r
+ AL_PRINT( TRACE_LEVEL_ERROR, AL_DBG_ERROR,\r
("verbs_destroy_qp failed with status %s.\n",\r
ib_get_err_str(status)) );\r
}\r
{\r
ib_api_status_t status;\r
\r
- CL_ENTER( AL_DBG_QP, g_al_dbg_lvl );\r
+ AL_ENTER( AL_DBG_QP );\r
\r
if( AL_OBJ_INVALID_HANDLE( h_qp, AL_OBJ_TYPE_H_QP ) )\r
{\r
- CL_TRACE_EXIT( AL_DBG_ERROR, g_al_dbg_lvl, ("IB_INVALID_QP_HANDLE\n") );\r
+ AL_PRINT_EXIT( TRACE_LEVEL_ERROR, AL_DBG_ERROR, ("IB_INVALID_QP_HANDLE\n") );\r
return IB_INVALID_QP_HANDLE;\r
}\r
if( !p_qp_attr )\r
{\r
- CL_TRACE_EXIT( AL_DBG_ERROR, g_al_dbg_lvl, ("IB_INVALID_PARAMETER\n") );\r
+ AL_PRINT_EXIT( TRACE_LEVEL_ERROR, AL_DBG_ERROR, ("IB_INVALID_PARAMETER\n") );\r
return IB_INVALID_PARAMETER;\r
}\r
\r
status = verbs_query_qp( h_qp, p_qp_attr );\r
if( status != IB_SUCCESS )\r
{\r
- CL_EXIT( AL_DBG_QP, g_al_dbg_lvl );\r
+ AL_EXIT( AL_DBG_QP );\r
return status;\r
}\r
\r
p_qp_attr->h_sq_cq = h_qp->h_send_cq;\r
p_qp_attr->qp_type = h_qp->type;\r
\r
- CL_EXIT( AL_DBG_QP, g_al_dbg_lvl );\r
+ AL_EXIT( AL_DBG_QP );\r
return IB_SUCCESS;\r
}\r
\r
{\r
ib_api_status_t status;\r
\r
- CL_ENTER( AL_DBG_QP, g_al_dbg_lvl );\r
+ AL_ENTER( AL_DBG_QP );\r
\r
if( AL_OBJ_INVALID_HANDLE( h_qp, AL_OBJ_TYPE_H_QP ) )\r
{\r
- CL_TRACE_EXIT( AL_DBG_ERROR, g_al_dbg_lvl, ("IB_INVALID_QP_HANDLE\n") );\r
+ AL_PRINT_EXIT( TRACE_LEVEL_ERROR, AL_DBG_ERROR, ("IB_INVALID_QP_HANDLE\n") );\r
return IB_INVALID_QP_HANDLE;\r
}\r
if( !p_qp_mod )\r
{\r
- CL_TRACE_EXIT( AL_DBG_ERROR, g_al_dbg_lvl, ("IB_INVALID_PARAMETER\n") );\r
+ AL_PRINT_EXIT( TRACE_LEVEL_ERROR, AL_DBG_ERROR, ("IB_INVALID_PARAMETER\n") );\r
return IB_INVALID_PARAMETER;\r
}\r
\r
status = h_qp->pfn_modify_qp( h_qp, p_qp_mod, p_umv_buf );\r
\r
- CL_EXIT( AL_DBG_QP, g_al_dbg_lvl );\r
+ AL_EXIT( AL_DBG_QP );\r
return status;\r
}\r
\r
{\r
ib_api_status_t status;\r
\r
- CL_ENTER( AL_DBG_QP, g_al_dbg_lvl );\r
+ AL_ENTER( AL_DBG_QP );\r
\r
if( AL_OBJ_INVALID_HANDLE( h_qp, AL_OBJ_TYPE_H_QP ) )\r
{\r
- CL_TRACE_EXIT( AL_DBG_ERROR, g_al_dbg_lvl, ("IB_INVALID_QP_HANDLE\n") );\r
+ AL_PRINT_EXIT( TRACE_LEVEL_ERROR, AL_DBG_ERROR, ("IB_INVALID_QP_HANDLE\n") );\r
return IB_INVALID_QP_HANDLE;\r
}\r
\r
case IB_QPT_MAD:\r
if( !p_dgrm_info )\r
{\r
- CL_TRACE_EXIT( AL_DBG_ERROR, g_al_dbg_lvl,\r
+ AL_PRINT_EXIT( TRACE_LEVEL_ERROR, AL_DBG_ERROR,\r
("IB_INVALID_PARAMETER\n") );\r
return IB_INVALID_PARAMETER;\r
}\r
break;\r
\r
default:\r
- CL_TRACE_EXIT( AL_DBG_ERROR, g_al_dbg_lvl, ("IB_INVALID_PARAMETER\n") );\r
+ AL_PRINT_EXIT( TRACE_LEVEL_ERROR, AL_DBG_ERROR, ("IB_INVALID_PARAMETER\n") );\r
return IB_INVALID_PARAMETER;\r
}\r
\r
status = h_qp->pfn_init_dgrm_svc( h_qp, p_dgrm_info );\r
\r
- CL_EXIT( AL_DBG_QP, g_al_dbg_lvl );\r
+ AL_EXIT( AL_DBG_QP );\r
return status;\r
}\r
\r
{\r
ib_api_status_t status;\r
\r
- CL_ENTER( AL_DBG_MAD_SVC, g_al_dbg_lvl );\r
+ AL_ENTER( AL_DBG_MAD_SVC );\r
\r
if( AL_OBJ_INVALID_HANDLE( h_qp, AL_OBJ_TYPE_H_QP ) )\r
{\r
- CL_TRACE_EXIT( AL_DBG_ERROR, g_al_dbg_lvl, ("IB_INVALID_QP_HANDLE\n") );\r
+ AL_PRINT_EXIT( TRACE_LEVEL_ERROR, AL_DBG_ERROR, ("IB_INVALID_QP_HANDLE\n") );\r
return IB_INVALID_QP_HANDLE;\r
}\r
\r
if( status == IB_SUCCESS )\r
deref_al_obj( &(*ph_mad_svc)->obj );\r
\r
- CL_EXIT( AL_DBG_MAD_SVC, g_al_dbg_lvl );\r
+ AL_EXIT( AL_DBG_MAD_SVC );\r
return status;\r
}\r
\r
{\r
ib_api_status_t status;\r
\r
- CL_ENTER( AL_DBG_MCAST, g_al_dbg_lvl );\r
+ AL_ENTER( AL_DBG_MCAST );\r
\r
if( AL_OBJ_INVALID_HANDLE( h_qp, AL_OBJ_TYPE_H_QP ) )\r
{\r
- CL_TRACE_EXIT( AL_DBG_ERROR, g_al_dbg_lvl, ("IB_INVALID_QP_HANDLE\n") );\r
+ AL_PRINT_EXIT( TRACE_LEVEL_ERROR, AL_DBG_ERROR, ("IB_INVALID_QP_HANDLE\n") );\r
return IB_INVALID_QP_HANDLE;\r
}\r
if( !p_mcast_req )\r
{\r
- CL_TRACE_EXIT( AL_DBG_ERROR, g_al_dbg_lvl, ("IB_INVALID_PARAMETER\n") );\r
+ AL_PRINT_EXIT( TRACE_LEVEL_ERROR, AL_DBG_ERROR, ("IB_INVALID_PARAMETER\n") );\r
return IB_INVALID_PARAMETER;\r
}\r
\r
status = h_qp->pfn_join_mcast( h_qp, p_mcast_req );\r
\r
- CL_EXIT( AL_DBG_MCAST, g_al_dbg_lvl );\r
+ AL_EXIT( AL_DBG_MCAST );\r
return status;\r
}\r
\r
PERF_DECLARE( PostSend );\r
\r
cl_perf_start( IbPostSend );\r
- CL_ENTER( AL_DBG_QP, g_al_dbg_lvl );\r
+ AL_ENTER( AL_DBG_QP );\r
\r
if( AL_OBJ_INVALID_HANDLE( h_qp, AL_OBJ_TYPE_H_QP ) )\r
{\r
- CL_TRACE_EXIT( AL_DBG_ERROR, g_al_dbg_lvl, ("IB_INVALID_QP_HANDLE\n") );\r
+ AL_PRINT_EXIT( TRACE_LEVEL_ERROR, AL_DBG_ERROR, ("IB_INVALID_QP_HANDLE\n") );\r
return IB_INVALID_QP_HANDLE;\r
}\r
if( !p_send_wr || ( p_send_wr->p_next && !pp_send_failure ) )\r
{\r
- CL_TRACE_EXIT( AL_DBG_ERROR, g_al_dbg_lvl, ("IB_INVALID_PARAMETER\n") );\r
+ AL_PRINT_EXIT( TRACE_LEVEL_ERROR, AL_DBG_ERROR, ("IB_INVALID_PARAMETER\n") );\r
return IB_INVALID_PARAMETER;\r
}\r
\r
h_qp->pfn_post_send( h_qp->h_send_qp, p_send_wr, pp_send_failure );\r
cl_perf_stop( &g_perf, PostSend );\r
\r
- CL_EXIT( AL_DBG_QP, g_al_dbg_lvl );\r
+ AL_EXIT( AL_DBG_QP );\r
cl_perf_stop( &g_perf, IbPostSend );\r
return status;\r
}\r
{\r
ib_api_status_t status;\r
\r
- CL_ENTER( AL_DBG_QP, g_al_dbg_lvl );\r
+ AL_ENTER( AL_DBG_QP );\r
\r
if( AL_OBJ_INVALID_HANDLE( h_qp, AL_OBJ_TYPE_H_QP ) )\r
{\r
- CL_TRACE_EXIT( AL_DBG_ERROR, g_al_dbg_lvl, ("IB_INVALID_QP_HANDLE\n") );\r
+ AL_PRINT_EXIT( TRACE_LEVEL_ERROR, AL_DBG_ERROR, ("IB_INVALID_QP_HANDLE\n") );\r
return IB_INVALID_QP_HANDLE;\r
}\r
if( !p_recv_wr || ( p_recv_wr->p_next && !pp_recv_failure ) )\r
{\r
- CL_TRACE_EXIT( AL_DBG_ERROR, g_al_dbg_lvl, ("IB_INVALID_PARAMETER\n") );\r
+ AL_PRINT_EXIT( TRACE_LEVEL_ERROR, AL_DBG_ERROR, ("IB_INVALID_PARAMETER\n") );\r
return IB_INVALID_PARAMETER;\r
}\r
\r
status =\r
h_qp->pfn_post_recv( h_qp->h_recv_qp, p_recv_wr, pp_recv_failure );\r
\r
- CL_EXIT( AL_DBG_QP, g_al_dbg_lvl );\r
+ AL_EXIT( AL_DBG_QP );\r
return status;\r
}\r
\r
ib_mr_handle_t h_mr;\r
ib_api_status_t status;\r
\r
- CL_ENTER( AL_DBG_MW, g_al_dbg_lvl );\r
+ AL_ENTER( AL_DBG_MW );\r
\r
if( AL_OBJ_INVALID_HANDLE( h_mw, AL_OBJ_TYPE_H_MW ) )\r
{\r
- CL_TRACE_EXIT( AL_DBG_ERROR, g_al_dbg_lvl, ("IB_INVALID_MW_HANDLE\n") );\r
+ AL_PRINT_EXIT( TRACE_LEVEL_ERROR, AL_DBG_ERROR, ("IB_INVALID_MW_HANDLE\n") );\r
return IB_INVALID_MW_HANDLE;\r
}\r
if( AL_OBJ_INVALID_HANDLE( h_qp, AL_OBJ_TYPE_H_QP ) )\r
{\r
- CL_TRACE_EXIT( AL_DBG_ERROR, g_al_dbg_lvl, ("IB_INVALID_QP_HANDLE\n") );\r
+ AL_PRINT_EXIT( TRACE_LEVEL_ERROR, AL_DBG_ERROR, ("IB_INVALID_QP_HANDLE\n") );\r
return IB_INVALID_QP_HANDLE;\r
}\r
if( !p_mw_bind || !p_rkey )\r
{\r
- CL_TRACE_EXIT( AL_DBG_ERROR, g_al_dbg_lvl, ("IB_INVALID_PARAMETER\n") );\r
+ AL_PRINT_EXIT( TRACE_LEVEL_ERROR, AL_DBG_ERROR, ("IB_INVALID_PARAMETER\n") );\r
return IB_INVALID_PARAMETER;\r
}\r
\r
\r
p_mw_bind->h_mr = h_mr;\r
\r
- CL_EXIT( AL_DBG_MW, g_al_dbg_lvl );\r
+ AL_EXIT( AL_DBG_MW );\r
return status;\r
}\r