IN ib_recv_wr_t* const p_recv_wr,\r
IN ib_recv_wr_t **p_recv_failure OPTIONAL );\r
\r
+typedef ib_api_status_t\r
+(*ib_pfn_rdma_send_t)(\r
+ IN const ib_qp_handle_t h_qp,\r
+ IN uint64_t wr_id,\r
+ IN const ib_local_ds_t* __ptr64 ds_array,\r
+ IN uint32_t num_ds,\r
+ IN uint32_t send_opt);\r
+\r
+typedef ib_api_status_t\r
+(*ib_pfn_rdma_recv_t)(\r
+ IN const ib_qp_handle_t h_qp,\r
+ IN uint64_t wr_id,\r
+ IN const ib_local_ds_t* __ptr64 ds_array,\r
+ IN uint32_t num_ds);\r
+\r
+\r
+typedef ib_api_status_t\r
+(*ib_pfn_rdma_write_t)(\r
+ IN const void* __ptr64 h_qp,\r
+ IN uint64_t wr_id,\r
+ IN const ib_local_ds_t* __ptr64 ds_array,\r
+ IN uint32_t num_ds,\r
+ IN const void* __ptr64 view,\r
+ IN uint64_t offset,\r
+ IN uint32_t send_opt);\r
+\r
+\r
+typedef ib_api_status_t\r
+(*ib_pfn_rdma_read_t)(\r
+ IN const void* __ptr64 h_qp,\r
+ IN uint64_t wr_id,\r
+ IN const ib_local_ds_t* __ptr64 ds_array,\r
+ IN uint32_t num_ds,\r
+ IN const void* __ptr64 view,\r
+ IN uint64_t offset,\r
+ IN uint32_t send_opt);\r
+\r
+\r
typedef ib_api_status_t\r
(*ib_pfn_init_dgrm_svc_t)(\r
IN const ib_qp_handle_t h_qp,\r
ib_pfn_modify_qp_t pfn_modify_qp;\r
ib_pfn_post_recv_t pfn_post_recv;\r
ib_pfn_post_send_t pfn_post_send;\r
+ /*RDMA interface*/\r
+ ib_pfn_rdma_send_t pfn_rdma_send;\r
+ ib_pfn_rdma_recv_t pfn_rdma_recv;\r
+ ib_pfn_rdma_write_t pfn_rdma_write;\r
+ ib_pfn_rdma_read_t pfn_rdma_read;\r
+ \r
ib_pfn_reg_mad_svc_t pfn_reg_mad_svc;\r
ib_pfn_dereg_mad_svc_t pfn_dereg_mad_svc;\r
ib_pfn_queue_mad_t pfn_queue_mad;\r
--- /dev/null
+/*\r
+ * Copyright (c) 2005 SilverStorm Technologies. All rights reserved.\r
+ * Copyright (c) 1996-2003 Intel Corporation. All rights reserved. \r
+ *\r
+ * This software is available to you under the OpenIB.org BSD license\r
+ * below:\r
+ *\r
+ * Redistribution and use in source and binary forms, with or\r
+ * without modification, are permitted provided that the following\r
+ * conditions are met:\r
+ *\r
+ * - Redistributions of source code must retain the above\r
+ * copyright notice, this list of conditions and the following\r
+ * disclaimer.\r
+ *\r
+ * - Redistributions in binary form must reproduce the above\r
+ * copyright notice, this list of conditions and the following\r
+ * disclaimer in the documentation and/or other materials\r
+ * provided with the distribution.\r
+ *\r
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,\r
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\r
+ * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\r
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\r
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r
+ * SOFTWARE.\r
+ *\r
+ * $Id: al_rdma.c 1793 2006-11-12 19:01:34Z leonid $\r
+ */\r
+\r
+#include "al_debug.h"\r
+#if defined(EVENT_TRACING)\r
+#ifdef offsetof\r
+#undef offsetof\r
+#endif\r
+#include "al_rdma.tmh"\r
+#endif\r
+\r
+#include "al_qp.h"\r
+\r
+\r
+\r
+\r
+/*\r
+ * Post a work request to the send queue of the RDMA QP.\r
+ */\r
+ib_api_status_t\r
+ib_rdma_send(\r
+ IN ib_qp_handle_t h_qp,\r
+ IN uint64_t wr_id,\r
+ IN const ib_local_ds_t* __ptr64 ds_array,\r
+ IN uint32_t num_ds,\r
+ IN uint32_t send_opt)\r
+{\r
+ ib_api_status_t status;\r
+ AL_ENTER( AL_DBG_QP );\r
+\r
+ if( AL_OBJ_INVALID_HANDLE( h_qp, AL_OBJ_TYPE_H_QP ) )\r
+ {\r
+ AL_PRINT_EXIT( TRACE_LEVEL_ERROR, AL_DBG_ERROR, ("IB_INVALID_QP_HANDLE\n") );\r
+ return IB_INVALID_QP_HANDLE;\r
+ }\r
+ if( !ds_array )\r
+ {\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_rdma_send( h_qp->h_send_qp, wr_id, ds_array, num_ds, send_opt);\r
+\r
+ AL_EXIT( AL_DBG_QP );\r
+ return status;\r
+}\r
+\r
+\r
+/*\r
+ * Post a work request to the recv queue of the RDMA QP.\r
+ */\r
+ib_api_status_t\r
+ib_rdma_recv(\r
+ IN ib_qp_handle_t h_qp,\r
+ IN uint64_t wr_id,\r
+ IN const ib_local_ds_t* __ptr64 ds_array,\r
+ IN uint32_t num_ds)\r
+{\r
+ ib_api_status_t status;\r
+ AL_ENTER( AL_DBG_QP );\r
+\r
+ if( AL_OBJ_INVALID_HANDLE( h_qp, AL_OBJ_TYPE_H_QP ) )\r
+ {\r
+ AL_PRINT_EXIT( TRACE_LEVEL_ERROR, AL_DBG_ERROR, ("IB_INVALID_QP_HANDLE\n") );\r
+ return IB_INVALID_QP_HANDLE;\r
+ }\r
+ if( !ds_array )\r
+ {\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_rdma_recv( h_qp->h_recv_qp, wr_id, ds_array, num_ds);\r
+\r
+ AL_EXIT( AL_DBG_QP );\r
+ return status;\r
+}\r
+\r
+\r
+/*\r
+ * Post a RDMA write work request to the send queue of the RDMA QP.\r
+ */\r
+ib_api_status_t\r
+ib_rdma_write(\r
+ IN ib_qp_handle_t h_qp,\r
+ IN uint64_t wr_id,\r
+ IN const ib_local_ds_t* __ptr64 ds_array,\r
+ IN uint32_t num_ds,\r
+ IN const void* __ptr64 view,\r
+ IN uint64_t offset,\r
+ IN uint32_t send_opt)\r
+{\r
+ ib_api_status_t status;\r
+ AL_ENTER( AL_DBG_QP );\r
+\r
+ if( AL_OBJ_INVALID_HANDLE( h_qp, AL_OBJ_TYPE_H_QP ) )\r
+ {\r
+ AL_PRINT_EXIT( TRACE_LEVEL_ERROR, AL_DBG_ERROR, ("IB_INVALID_QP_HANDLE\n") );\r
+ return IB_INVALID_QP_HANDLE;\r
+ }\r
+ if( !ds_array )\r
+ {\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_rdma_write( h_qp->h_send_qp, wr_id, ds_array, num_ds, view, offset, send_opt);\r
+\r
+ AL_EXIT( AL_DBG_QP );\r
+ return status;\r
+}\r
+\r
+\r
+\r
+/*\r
+ * Post a RDMA read work request to the send queue of the RDMA QP.\r
+ */\r
+ib_api_status_t\r
+ib_rdma_read(\r
+ IN ib_qp_handle_t h_qp,\r
+ IN uint64_t wr_id,\r
+ IN const ib_local_ds_t* __ptr64 ds_array,\r
+ IN uint32_t num_ds,\r
+ IN const void* __ptr64 view,\r
+ IN uint64_t offset,\r
+ IN uint32_t send_opt)\r
+{\r
+ ib_api_status_t status;\r
+ AL_ENTER( AL_DBG_QP );\r
+\r
+ if( AL_OBJ_INVALID_HANDLE( h_qp, AL_OBJ_TYPE_H_QP ) )\r
+ {\r
+ AL_PRINT_EXIT( TRACE_LEVEL_ERROR, AL_DBG_ERROR, ("IB_INVALID_QP_HANDLE\n") );\r
+ return IB_INVALID_QP_HANDLE;\r
+ }\r
+ if( !ds_array )\r
+ {\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_rdma_read( h_qp->h_send_qp, wr_id, ds_array, num_ds, view, offset, send_opt);\r
+\r
+ AL_EXIT( AL_DBG_QP );\r
+ return status;\r
+}\r
+\r
+\r
..\al_reg_svc.c \\r
..\al_res_mgr.c \\r
..\al_srq.c \\r
+ ..\al_rdma.c \\r
..\al_sub.c \\r
..\ib_common.c \\r
..\ib_statustext.c\r
h_qp->h_send_qp = h_qp;\r
h_qp->pfn_post_send = ual_post_send;\r
}\r
+ if(h_qp->type == IB_QPT_RELIABLE_CONN)\r
+ {\r
+ if( uvp_intf.rdma_send && uvp_intf.rdma_recv)\r
+ {\r
+ \r
+ h_qp->pfn_rdma_send = uvp_intf.rdma_send;\r
+ h_qp->pfn_rdma_recv = uvp_intf.rdma_recv;\r
+ h_qp->pfn_rdma_write = uvp_intf.rdma_write;\r
+ h_qp->pfn_rdma_read = uvp_intf.rdma_read;\r
+ }\r
+ else\r
+ {\r
+ \r
+ //TODO add kernel support\r
+ //h_qp->pfn_post_send = ual_rdma_send;\r
+ //h_qp->pfn_post_recv = ual_rdma_recv;\r
+ }\r
+ \r
+ }\r
}\r
else\r
{\r
h_qp->pfn_post_recv = ual_post_recv;\r
h_qp->h_send_qp = h_qp;\r
h_qp->pfn_post_send = ual_post_send;\r
+ if(h_qp->type == IB_QPT_RELIABLE_CONN)\r
+ {\r
+ //h_qp->h_rdma_qp = h_qp;\r
+ //TODO add kernel support\r
+ //h_qp->pfn_rdma_recv = ual_rdma_recv;\r
+ //h_qp->pfn_rdma_send = ual_rdma_send;\r
+ }\r
+ \r
}\r
\r
\r
IN ib_recv_wr_t* const p_recv_wr,\r
OUT ib_recv_wr_t **pp_recv_failure OPTIONAL );\r
\r
+typedef ib_api_status_t\r
+(*ib_pfn_post_srq_recv_t)(\r
+ IN const ib_srq_handle_t h_srq,\r
+ IN ib_recv_wr_t* const p_recv_wr,\r
+ OUT ib_recv_wr_t **pp_recv_failure OPTIONAL );\r
+\r
+\r
+//**********************************************\r
+\r
+\r
+typedef ib_api_status_t\r
+(*ib_pfn_rdma_send_t)(\r
+ IN const ib_qp_handle_t h_qp,\r
+ IN uint64_t wr_id,\r
+ IN const ib_local_ds_t* __ptr64 ds_array,\r
+ IN uint32_t num_ds,\r
+ IN uint32_t send_opt);\r
+\r
+typedef ib_api_status_t\r
+(*ib_pfn_rdma_recv_t)(\r
+ IN const ib_qp_handle_t h_qp,\r
+ IN uint64_t wr_id,\r
+ IN const ib_local_ds_t* __ptr64 ds_array,\r
+ IN uint32_t num_ds);\r
+\r
+typedef ib_api_status_t\r
+(*ib_pfn_rdma_write_t)(\r
+ IN const void* __ptr64 h_qp,\r
+ IN uint64_t wr_id,\r
+ IN const ib_local_ds_t* __ptr64 ds_array,\r
+ IN uint32_t num_ds,\r
+ IN const void* __ptr64 view,\r
+ IN uint64_t offset,\r
+ IN uint32_t send_opt);\r
+\r
+\r
+typedef ib_api_status_t\r
+(*ib_pfn_rdma_read_t)(\r
+ IN const void* __ptr64 h_qp,\r
+ IN uint64_t wr_id,\r
+ IN const ib_local_ds_t* __ptr64 ds_array,\r
+ IN uint32_t num_ds,\r
+ IN const void* __ptr64 view,\r
+ IN uint64_t offset,\r
+ IN uint32_t send_opt);\r
+\r
+\r
+//***************************************\r
typedef ib_api_status_t\r
(*ib_pfn_send_mad_t)(\r
IN const ib_mad_svc_handle_t h_mad_svc,\r
*\r
********/\r
\r
-/********/\r
+/****f* user-mode Verbs/uvp_rdma_send\r
+* NAME\r
+* uvp_rdma_send -- TODO\r
+*\r
+* SYNOPSIS\r
+*/\r
+\r
+typedef ib_api_status_t\r
+(AL_API *uvp_rdma_send) (\r
+ IN const void* __ptr64 h_qp,\r
+ IN uint64_t wr_id,\r
+ IN const ib_local_ds_t* __ptr64 ds_array,\r
+ IN uint32_t num_ds,\r
+ IN uint32_t send_opt);\r
+/*\r
+* DESCRIPTION\r
+* TODO\r
+* PARAMETERS\r
+* TODO\r
+* RETURN VALUE\r
+*TODO\r
+* PORTABILITY\r
+* Kernel & User mode.\r
+*\r
+* NOTES\r
+TODO*\r
+* SEE ALSO\r
+* uvp_rdma_recv\r
+*\r
+********/\r
+\r
+\r
+/****f* user-mode Verbs/uvp_rdma_recv\r
+* NAME\r
+* uvp_rdma_recv -- TODO\r
+*\r
+* SYNOPSIS\r
+*/\r
+\r
+typedef ib_api_status_t\r
+(AL_API *uvp_rdma_recv) (\r
+ IN const void* __ptr64 h_qp,\r
+ IN uint64_t wr_id,\r
+ IN const ib_local_ds_t* __ptr64 ds_array,\r
+ IN uint32_t num_ds);\r
+/*\r
+* DESCRIPTION\r
+*TODO\r
+*\r
+* PARAMETERS\r
+*TODO\r
+* RETURN VALUE\r
+*TODO\r
+* PORTABILITY\r
+*TODO\r
+*\r
+* SEE ALSO\r
+* uvp_rdma_send\r
+*\r
+********/\r
+\r
+/****f* user-mode Verbs/uvp_rdma_write\r
+* NAME\r
+* uvp_rdma_write -- TODO\r
+*\r
+* SYNOPSIS\r
+*/\r
+\r
+typedef ib_api_status_t\r
+(AL_API *uvp_rdma_write) (\r
+ IN const void* __ptr64 h_qp,\r
+ IN uint64_t wr_id,\r
+ IN const ib_local_ds_t* __ptr64 ds_array,\r
+ IN uint32_t num_ds,\r
+ IN const void* __ptr64 view,\r
+ IN uint64_t offset,\r
+ IN uint32_t send_opt);\r
+/*\r
+* DESCRIPTION\r
+*TODO\r
+*\r
+* PARAMETERS\r
+*TODO\r
+* RETURN VALUE\r
+*TODO\r
+* PORTABILITY\r
+*TODO\r
+*\r
+* SEE ALSO\r
+* uvp_rdma_send\r
+*\r
+********/\r
+\r
+\r
+/****f* user-mode Verbs/uvp_rdma_read\r
+* NAME\r
+* uvp_rdma_read -- TODO\r
+*\r
+* SYNOPSIS\r
+*/\r
+\r
+typedef ib_api_status_t\r
+(AL_API *uvp_rdma_read) (\r
+ IN const void* __ptr64 h_qp,\r
+ IN uint64_t wr_id,\r
+ IN const ib_local_ds_t* __ptr64 ds_array,\r
+ IN uint32_t num_ds,\r
+ IN const void* __ptr64 view,\r
+ IN uint64_t offset,\r
+ IN uint32_t send_opt);\r
+/*\r
+* DESCRIPTION\r
+*TODO\r
+*\r
+* PARAMETERS\r
+*TODO\r
+* RETURN VALUE\r
+*TODO\r
+* PORTABILITY\r
+*TODO\r
+*\r
+* SEE ALSO\r
+* uvp_rdma_send\r
+*\r
+********/\r
+\r
\r
/****f* user-mode Verbs/uvp_peek_cq\r
* NAME\r
uvp_pre_detach_mcast pre_detach_mcast;\r
uvp_post_detach_mcast post_detach_mcast;\r
\r
+ /*\r
+ * RDMA interface Verbs\r
+ */\r
+ uvp_rdma_send rdma_send;\r
+ uvp_rdma_recv rdma_recv;\r
+ uvp_rdma_write rdma_write;\r
+ uvp_rdma_read rdma_read;\r
+ \r
} uvp_interface_t;\r
\r
/********/\r