if( h_ca->obj.p_ci_ca->h_ci_ca && uvp_intf.pre_query_ca )\r
{\r
/* Pre call to the UVP library */\r
- status = uvp_intf.pre_query_ca(\r
- h_ca->obj.p_ci_ca->h_ci_ca, &ca_ioctl );\r
+ status = uvp_intf.pre_query_ca( h_ca->obj.p_ci_ca->h_ci_ca,\r
+ p_ca_attr, *p_size, &ca_ioctl.in.umv_buf );\r
\r
if( status != IB_SUCCESS )\r
{\r
- if (ca_ioctl.out.status == IB_INSUFFICIENT_MEMORY )\r
- {\r
- *p_size = ca_ioctl.out.byte_cnt;\r
- }\r
- AL_EXIT( AL_DBG_CA );\r
- return status;\r
+ AL_EXIT( AL_DBG_CA );\r
+ return status;\r
}\r
}\r
\r
mlnx_ual_av.c \\r
mlnx_ual_ca.c \\r
mlnx_ual_cq.c \\r
- mlnx_ual_errh.c \\r
mlnx_ual_main.c \\r
mlnx_ual_mcast.c \\r
mlnx_ual_mrw.c \\r
--- /dev/null
+/*\r
+ * Copyright (c) 2005 SilverStorm Technologies. 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$\r
+ */\r
+\r
+#include <iba/ib_types.h>\r
+#include <iba/ib_uvp.h>\r
+\r
+\r
+typedef struct _ib_ca\r
+{\r
+ HH_hca_dev_t *p_hca_ul_info;\r
+ void *p_hca_ul_resources;\r
+ ib_ca_attr_t *p_hca_attr;\r
+ HHUL_hca_hndl_t hhul_hca_hndl;\r
+ u_int32_t priv_op;\r
+ void *p_al_ci_ca;\r
+\r
+} mlnx_ual_hobul_t;\r
+\r
+\r
+typedef struct _ib_pd\r
+{\r
+ mlnx_ual_hobul_t *p_hobul;\r
+ void *p_pd_ul_resources;\r
+ HHUL_pd_hndl_t hhul_pd_hndl;\r
+ u_int32_t pd_idx;\r
+\r
+#define MLNX_MAX_AVS_PER_PD 0xFFFFFFFF\r
+\r
+} mlnx_ual_pd_info_t;\r
+\r
+\r
+typedef struct _ib_cq\r
+{\r
+ mlnx_ual_hobul_t *p_hobul; \r
+ void *p_cq_ul_resources;\r
+ HHUL_cq_hndl_t hhul_cq_hndl;\r
+ u_int32_t cq_idx;\r
+ u_int32_t cq_size;\r
+\r
+} mlnx_ual_cq_info_t;\r
+\r
+\r
+typedef struct _ib_qp\r
+{\r
+ ib_pd_handle_t h_uvp_pd; \r
+ void *p_qp_ul_resources;\r
+ HHUL_qp_hndl_t hhul_qp_hndl;\r
+ u_int32_t qp_idx;\r
+ VAPI_qp_cap_t ul_qp_cap;\r
+ IB_ts_t type;\r
+\r
+} mlnx_ual_qp_info_t;\r
+\r
+\r
+typedef struct _ib_mw\r
+{\r
+ ib_pd_handle_t h_uvp_pd; \r
+ u_int32_t rkey;\r
+ HHUL_mw_hndl_t hhul_mw_hndl;\r
+\r
+} mlnx_ual_mw_info_t;\r
+\r
+\r
+typedef struct _ib_av\r
+{\r
+ ib_pd_handle_t h_uvp_pd; \r
+ ib_av_attr_t *p_i_av_attr;\r
+ HHUL_ud_av_hndl_t h_av;\r
+\r
+} mlnx_ual_av_info_t;\r
\r
ib_api_status_t\r
mlnx_pre_create_av (\r
- IN const uvp_pd_handle_t h_uvp_pd,\r
+ IN const ib_pd_handle_t h_uvp_pd,\r
IN const ib_av_attr_t *p_av_attr,\r
IN OUT ci_umv_buf_t *p_umv_buf)\r
{\r
THHUL_pdm_create_ud_av (p_hobul->hhul_hca_hndl,\r
p_pd_info->hhul_pd_hndl,\r
&hhul_av,\r
- &p_new_av->hhul_av_hndl))\r
+ &p_new_av->h_av))\r
{\r
CL_TRACE (MLNX_TRACE_LVL_1, mlnx_dbg_lvl,\r
("FAILED to create usermode UD AV\n"));\r
\r
p_new_av->p_i_av_attr = p_av_attr;\r
p_new_av->h_uvp_pd = h_uvp_pd;\r
- *ph_uvp_av = (uvp_av_handle_t) p_new_av;\r
+ *ph_uvp_av = p_new_av;\r
p_umv_buf->p_inout_buf = NULL;\r
}\r
\r
\r
ib_api_status_t\r
mlnx_pre_query_av (\r
- IN const uvp_av_handle_t h_uvp_av,\r
+ IN const ib_av_handle_t h_uvp_av,\r
IN OUT ci_umv_buf_t *p_umv_buf )\r
{\r
FUNC_ENTER;\r
\r
ib_api_status_t\r
mlnx_pre_modify_av (\r
- IN const uvp_av_handle_t h_uvp_av,\r
+ IN const ib_av_handle_t h_uvp_av,\r
IN const ib_av_attr_t *p_addr_vector,\r
IN OUT ci_umv_buf_t *p_umv_buf)\r
{\r
\r
if (HH_OK !=\r
THHUL_pdm_modify_ud_av (p_hobul->hhul_hca_hndl, \r
- p_av_info->hhul_av_hndl,\r
+ p_av_info->h_av,\r
&hhul_av))\r
{\r
CL_TRACE (MLNX_TRACE_LVL_1, mlnx_dbg_lvl,\r
\r
void\r
mlnx_post_modify_av (\r
- IN const uvp_av_handle_t h_uvp_av,\r
+ IN const ib_av_handle_t h_uvp_av,\r
IN ib_api_status_t ioctl_status,\r
IN OUT ci_umv_buf_t *p_umv_buf)\r
{\r
\r
ib_api_status_t\r
mlnx_pre_destroy_av (\r
- IN const uvp_av_handle_t h_uvp_av)\r
+ IN const ib_av_handle_t h_uvp_av)\r
{\r
FUNC_ENTER;\r
FUNC_EXIT;\r
\r
void\r
mlnx_post_destroy_av (\r
- IN const uvp_av_handle_t h_uvp_av,\r
+ IN const ib_av_handle_t h_uvp_av,\r
IN ib_api_status_t ioctl_status)\r
{\r
mlnx_ual_hobul_t *p_hobul;\r
\r
if (HH_OK !=\r
THHUL_pdm_destroy_ud_av (p_hobul->hhul_hca_hndl,\r
- p_av_info->hhul_av_hndl))\r
+ p_av_info->h_av))\r
{\r
CL_TRACE (MLNX_TRACE_LVL_1, mlnx_dbg_lvl,\r
("Failed to destroy av\n"));\r
\r
ib_api_status_t\r
mlnx_pre_query_ca (\r
- IN uvp_ca_handle_t h_uvp_ca,\r
- IN OUT ual_query_ca_ioctl_t *p_ca_ioctl )\r
+ IN ib_ca_handle_t h_uvp_ca,\r
+ IN ib_ca_attr_t *p_ca_attr,\r
+ IN size_t byte_count,\r
+ IN ci_umv_buf_t *p_umv_buf )\r
{\r
- ib_api_status_t status = IB_SUCCESS;\r
- mlnx_ual_hobul_t *p_hobul = (mlnx_ual_hobul_t *)((void*)h_uvp_ca);\r
+ ib_api_status_t status = IB_SUCCESS;\r
\r
- FUNC_ENTER;\r
+ FUNC_ENTER;\r
\r
- CL_ASSERT(p_hobul);\r
- CL_ASSERT(p_ca_ioctl);\r
+ CL_ASSERT(h_uvp_ca);\r
\r
- /* hca_ul_info should be filled up by open_ca() */\r
- if ( p_hobul->p_hca_ul_info->status != HH_HCA_STATUS_OPENED )\r
- {\r
- CL_TRACE (MLNX_TRACE_LVL_1, mlnx_dbg_lvl,\r
- ("Device is not opened\n"));\r
- status = IB_INVALID_CA_HANDLE;\r
- return status;\r
- }\r
- /* first time call query_ca */\r
- if ( !p_hobul->p_hca_attr ) \r
- {\r
- /* assume if user buffer is valid then byte_cnt is valid too \r
- * so we can preallocate ca attr buffer for post ioctl data saving\r
- */\r
- if ( p_ca_ioctl->in.p_ca_attr != NULL )\r
+ /* hca_ul_info should be filled up by open_ca() */\r
+ if ( h_uvp_ca->p_hca_ul_info->status != HH_HCA_STATUS_OPENED )\r
{\r
- p_hobul->p_hca_attr = cl_zalloc(p_ca_ioctl->in.byte_cnt);\r
- if (! p_hobul->p_hca_attr )\r
- {\r
- CL_TRACE (MLNX_TRACE_LVL_1, mlnx_dbg_lvl,\r
- ("Failed to alloc new_ca\n"));\r
- status = IB_INSUFFICIENT_RESOURCES;\r
- return status;\r
- }\r
- }\r
- p_ca_ioctl->in.umv_buf.input_size = sizeof(HH_hca_dev_t)+sizeof(u_int32_t);\r
- if (p_ca_ioctl->in.umv_buf.input_size) \r
- { \r
- p_ca_ioctl->in.umv_buf.output_size = p_ca_ioctl->in.umv_buf.input_size; \r
- p_ca_ioctl->in.umv_buf.p_inout_buf = cl_zalloc(p_ca_ioctl->in.umv_buf.input_size);\r
- if (p_ca_ioctl->in.umv_buf.p_inout_buf == NULL) \r
- {\r
CL_TRACE (MLNX_TRACE_LVL_1, mlnx_dbg_lvl,\r
- ("Failed to alloc priv buffer memory\n"));\r
- status = IB_INSUFFICIENT_RESOURCES;\r
- }\r
- }\r
- }\r
- else\r
- {\r
- /* user query for attr size */\r
- if ( ! p_ca_ioctl->in.p_ca_attr ) \r
- {\r
- p_ca_ioctl->out.byte_cnt = p_hobul->p_hca_attr->size;\r
- status = IB_INSUFFICIENT_MEMORY;\r
- p_ca_ioctl->out.status = status ;\r
+ ("Device is not opened\n"));\r
+ status = IB_INVALID_CA_HANDLE;\r
+ return status;\r
}\r
- /* user query for ca attributes */\r
- else\r
+ /*\r
+ * First time call query_ca - populate our internal cached attributes\r
+ * so we can access the GID table. Note that query_ca calls *always*\r
+ * get their attributes from the kernel.\r
+ */\r
+ if ( !h_uvp_ca->p_hca_attr )\r
{\r
- cl_memcpy (p_ca_ioctl->in.p_ca_attr, p_hobul->p_hca_attr, \r
- min (p_ca_ioctl->in.byte_cnt, p_hobul->p_hca_attr->size ));\r
+ /*\r
+ * Assume if user buffer is valid then byte_cnt is valid too \r
+ * so we can preallocate ca attr buffer for post ioctl data saving\r
+ *\r
+ * Note that we squirel the buffer away into the umv_buf and only\r
+ * set it into the HCA if the query is successful.\r
+ */\r
+ if ( p_ca_attr != NULL )\r
+ {\r
+ p_umv_buf->p_inout_buf = cl_zalloc(byte_count);\r
+ if ( !p_umv_buf->p_inout_buf )\r
+ {\r
+ CL_TRACE (MLNX_TRACE_LVL_1, mlnx_dbg_lvl,\r
+ ("Failed to alloc new_ca\n"));\r
+ status = IB_INSUFFICIENT_RESOURCES;\r
+ return status;\r
+ }\r
+ }\r
+ p_umv_buf->input_size = p_umv_buf->output_size = 0;\r
}\r
- }\r
\r
- FUNC_EXIT;\r
- return status;\r
+ FUNC_EXIT;\r
+ return status;\r
}\r
\r
\r
IN size_t byte_count,\r
IN ci_umv_buf_t *p_umv_buf )\r
{\r
- mlnx_ual_hobul_t *p_hobul = (mlnx_ual_hobul_t *)((void*)h_uvp_ca);\r
+ FUNC_ENTER;\r
\r
- FUNC_ENTER;\r
+ CL_ASSERT(h_uvp_ca);\r
+ CL_ASSERT(p_umv_buf);\r
\r
- CL_ASSERT(p_hobul);\r
- CL_ASSERT(p_umv_buf);\r
-\r
- /* \r
- * The umv_buf query is only done as part of open_ca().\r
- * Verify that we performed a query before checking the results\r
- */\r
- if ((IB_SUCCESS == p_umv_buf->status) && (IB_SUCCESS == ioctl_status))\r
- {\r
- if ( p_ca_attr && byte_count )\r
+ if ( ioctl_status == IB_SUCCESS && p_ca_attr &&\r
+ byte_count && !h_uvp_ca->p_hca_attr )\r
{\r
- cl_memcpy (p_hobul->p_hca_attr, p_ca_attr , byte_count );\r
- CL_TRACE (MLNX_TRACE_LVL_1, mlnx_dbg_lvl,\r
- ("got ca_attr %d\n", byte_count));\r
+ h_uvp_ca->p_hca_attr = p_umv_buf->p_inout_buf;\r
+ }\r
+ else if (p_umv_buf->p_inout_buf) \r
+ {\r
+ cl_free (p_umv_buf->p_inout_buf);\r
}\r
- }\r
-\r
- if (p_umv_buf->p_inout_buf) \r
- {\r
- cl_free (p_umv_buf->p_inout_buf);\r
- p_umv_buf->p_inout_buf = NULL;\r
- }\r
\r
- FUNC_EXIT;\r
- return;\r
+ FUNC_EXIT;\r
+ return;\r
}\r
\r
\r
ib_api_status_t\r
mlnx_pre_modify_ca (\r
- IN uvp_ca_handle_t h_uvp_ca,\r
+ IN ib_ca_handle_t h_uvp_ca,\r
IN uint8_t port_num,\r
IN ib_ca_mod_t ca_mod,\r
IN const ib_port_attr_mod_t* p_port_attr_mod)\r
\r
void\r
mlnx_post_modify_ca (\r
- IN uvp_ca_handle_t h_uvp_ca,\r
+ IN ib_ca_handle_t h_uvp_ca,\r
IN ib_api_status_t ioctl_status)\r
{\r
FUNC_ENTER;\r
\r
ib_api_status_t\r
mlnx_pre_close_ca (\r
- IN uvp_ca_handle_t h_uvp_ca)\r
+ IN ib_ca_handle_t h_uvp_ca)\r
{\r
FUNC_ENTER;\r
FUNC_EXIT;\r
\r
ib_api_status_t\r
mlnx_post_close_ca (\r
- IN uvp_ca_handle_t h_uvp_ca,\r
+ IN ib_ca_handle_t h_uvp_ca,\r
IN ib_api_status_t ioctl_status )\r
{\r
mlnx_ual_hobul_t *p_hobul = (mlnx_ual_hobul_t *)((void*)h_uvp_ca);\r
sizeof (mlnx_ual_cq_info_t *));\r
CL_ASSERT(p_new_cq);\r
\r
- *ph_uvp_cq = (uvp_cq_handle_t) p_new_cq;\r
+ *ph_uvp_cq = p_new_cq;\r
\r
if ( ioctl_status == IB_SUCCESS )\r
{\r
\r
void\r
mlnx_post_resize_cq (\r
- IN const uvp_cq_handle_t h_uvp_cq,\r
+ IN const ib_cq_handle_t h_uvp_cq,\r
IN ib_api_status_t ioctl_status,\r
IN const uint32_t size,\r
IN OUT ci_umv_buf_t *p_umv_buf)\r
\r
ib_api_status_t\r
mlnx_pre_query_cq (\r
- IN const uvp_cq_handle_t h_uvp_cq,\r
+ IN const ib_cq_handle_t h_uvp_cq,\r
IN OUT ci_umv_buf_t *p_umv_buf)\r
{\r
FUNC_ENTER;\r
\r
void\r
mlnx_post_query_cq (\r
- IN const uvp_cq_handle_t h_uvp_cq,\r
+ IN const ib_cq_handle_t h_uvp_cq,\r
IN ib_api_status_t ioctl_status,\r
IN OUT ci_umv_buf_t *p_umv_buf)\r
{\r
\r
ib_api_status_t\r
mlnx_pre_destroy_cq (\r
- IN const uvp_cq_handle_t h_uvp_cq)\r
+ IN const ib_cq_handle_t h_uvp_cq)\r
{\r
FUNC_ENTER;\r
FUNC_EXIT;\r
\r
void\r
mlnx_post_destroy_cq (\r
- IN const uvp_cq_handle_t h_uvp_cq,\r
+ IN const ib_cq_handle_t h_uvp_cq,\r
IN ib_api_status_t ioctl_status)\r
{\r
mlnx_ual_cq_info_t *p_cq_info = (mlnx_ual_cq_info_t *) ((void*)h_uvp_cq);\r
+++ /dev/null
-/*\r
- * Copyright (c) 2005 SilverStorm Technologies. All rights reserved.\r
- * Copyright (c) 2004-2005 Mellanox Technologies, Inc. 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$\r
- */\r
-\r
-#include "mlnx_ual_main.h"\r
-\r
-extern u_int32_t mlnx_dbg_lvl;\r
-\r
-void\r
-mlnx_get_errh_interface (\r
- IN OUT uvp_interface_t *p_uvp )\r
-{\r
- FUNC_ENTER;\r
-\r
- CL_ASSERT(p_uvp);\r
-\r
-\r
- /*\r
- * Error notification\r
- * If the vendor provides these functions, UAL will\r
- * invoke these functions when a QP/CQ error is reported by AL.\r
- * \r
- */\r
- p_uvp->err_handler = mlnx_err_handler;\r
- \r
- FUNC_EXIT;\r
-}\r
-\r
-\r
-void\r
-mlnx_err_handler (\r
- IN const ib_async_event_rec_t *const p_err_rec)\r
-{\r
- FUNC_ENTER;\r
- FUNC_EXIT;\r
-}\r
-\r
-\r
*/\r
mlnx_get_cq_interface (p_uvp);\r
\r
- /*\r
- * EE Management\r
- */\r
-// mlnx_get_eec_interface (p_uvp);\r
-\r
/*\r
* AV Management\r
*/\r
mlnx_get_av_interface(p_uvp);\r
\r
- /*\r
- * RDD Management\r
- */\r
-// mlnx_get_rdd_interface(p_uvp);\r
-\r
/*\r
* Memory Region / Window Management Verbs\r
*/\r
*/\r
mlnx_get_mcast_interface (p_uvp);\r
\r
- /*\r
- * Error notification\r
- * If the vendor provides these functions, UAL will\r
- * invoke these functions when a QP/CQ error is reported by AL.\r
- * \r
- */\r
- mlnx_get_errh_interface (p_uvp);\r
-\r
/*\r
* OS bypass (send, receive, poll/notify cq)\r
*/\r
#include <thhul_mwm.h>\r
\r
//#include <iba/ib_ci.h>\r
-#include <iba/ib_types.h>\r
-#include <iba/ib_uvp.h>\r
-#include <complib/cl_types.h>\r
+#include "hca_data.h"\r
#include <complib/cl_debug.h>\r
#include <complib/cl_byteswap.h>\r
#include <complib/cl_memory.h>\r
#define MLNX_UAL_ALLOC_HCA_UL_RES 1\r
#define MLNX_UAL_FREE_HCA_UL_RES 2\r
\r
-typedef void* __ptr64 uvp_ca_handle_t;\r
-typedef void* __ptr64 uvp_pd_handle_t;\r
-typedef void* __ptr64 uvp_av_handle_t;\r
-typedef void* __ptr64 uvp_cq_handle_t;\r
-typedef void* __ptr64 uvp_qp_handle_t;\r
-typedef void* __ptr64 uvp_mr_handle_t;\r
-typedef void* __ptr64 uvp_mw_handle_t;\r
-typedef void* __ptr64 uvp_mcast_handle_t;\r
-typedef void* __ptr64 uvp_rdd_handle_t;\r
-typedef void* __ptr64 uvp_eec_handle_t;\r
-\r
typedef unsigned __int3264 cl_dev_handle_t;\r
-typedef struct hobul {\r
- HH_hca_dev_t *p_hca_ul_info;\r
- void *p_hca_ul_resources;\r
- ib_ca_attr_t *p_hca_attr;\r
- HHUL_hca_hndl_t hhul_hca_hndl;\r
- u_int32_t priv_op;\r
- void *p_al_ci_ca;\r
-} mlnx_ual_hobul_t;\r
-\r
-typedef struct pd_info {\r
- mlnx_ual_hobul_t *p_hobul;\r
- void *p_pd_ul_resources;\r
- HHUL_pd_hndl_t hhul_pd_hndl;\r
- u_int32_t pd_idx;\r
-#define MLNX_MAX_AVS_PER_PD 0xFFFFFFFF\r
-} mlnx_ual_pd_info_t;\r
-\r
-typedef struct cq_info {\r
- mlnx_ual_hobul_t *p_hobul; \r
- void *p_cq_ul_resources;\r
- HHUL_cq_hndl_t hhul_cq_hndl;\r
- u_int32_t cq_idx;\r
- u_int32_t cq_size;\r
-} mlnx_ual_cq_info_t;\r
-\r
-typedef struct qp_info {\r
- uvp_pd_handle_t h_uvp_pd; \r
- void *p_qp_ul_resources;\r
- HHUL_qp_hndl_t hhul_qp_hndl;\r
- u_int32_t qp_idx;\r
- VAPI_qp_cap_t ul_qp_cap;\r
- IB_ts_t type;\r
-\r
-} mlnx_ual_qp_info_t;\r
-\r
-typedef struct av_info {\r
- uvp_pd_handle_t h_uvp_pd; \r
- ib_av_attr_t *p_i_av_attr;\r
- HHUL_ud_av_hndl_t hhul_av_hndl;\r
-} mlnx_ual_av_info_t;\r
-\r
-typedef struct mw_info {\r
- uvp_pd_handle_t h_uvp_pd; \r
- u_int32_t rkey;\r
- HHUL_mw_hndl_t hhul_mw_hndl;\r
-} mlnx_ual_mw_info_t;\r
\r
\r
/*\r
\r
ib_api_status_t \r
mlnx_pre_query_ca (\r
- IN uvp_ca_handle_t h_uvp_ca,\r
- IN OUT ual_query_ca_ioctl_t *p_ca_ioctl );\r
+ IN ib_ca_handle_t h_uvp_ca,\r
+ IN ib_ca_attr_t *p_ca_attr,\r
+ IN size_t byte_count,\r
+ IN ci_umv_buf_t *p_umv_buf );\r
\r
void \r
mlnx_post_query_ca (\r
\r
ib_api_status_t \r
mlnx_pre_modify_ca (\r
- IN uvp_ca_handle_t h_uvp_ca,\r
+ IN ib_ca_handle_t h_uvp_ca,\r
IN uint8_t port_num,\r
IN ib_ca_mod_t modca_cmd,\r
IN const ib_port_attr_mod_t* p_port_attr_mod );\r
\r
void \r
mlnx_post_modify_ca (\r
- IN uvp_ca_handle_t h_uvp_ca,\r
+ IN ib_ca_handle_t h_uvp_ca,\r
IN ib_api_status_t ioctl_status);\r
\r
ib_api_status_t \r
mlnx_pre_close_ca (\r
- IN uvp_ca_handle_t h_uvp_ca );\r
+ IN ib_ca_handle_t h_uvp_ca );\r
\r
ib_api_status_t\r
mlnx_post_close_ca (\r
- IN uvp_ca_handle_t h_uvp_ca,\r
+ IN ib_ca_handle_t h_uvp_ca,\r
IN ib_api_status_t ioctl_status );\r
\r
\r
\r
ib_api_status_t \r
mlnx_pre_allocate_pd (\r
- IN const uvp_ca_handle_t h_uvp_ca,\r
+ IN const ib_ca_handle_t h_uvp_ca,\r
IN OUT ci_umv_buf_t *p_umv_buf);\r
\r
void \r
\r
ib_api_status_t \r
mlnx_pre_deallocate_pd (\r
- IN const uvp_pd_handle_t h_uvp_pd);\r
+ IN const ib_pd_handle_t h_uvp_pd);\r
\r
void \r
mlnx_post_deallocate_pd (\r
- IN const uvp_pd_handle_t h_uvp_pd,\r
+ IN const ib_pd_handle_t h_uvp_pd,\r
IN ib_api_status_t ioctl_status );\r
\r
\r
\r
ib_api_status_t \r
mlnx_pre_create_av (\r
- IN const uvp_pd_handle_t h_uvp_pd,\r
+ IN const ib_pd_handle_t h_uvp_pd,\r
IN const ib_av_attr_t *p_addr_vector,\r
IN OUT ci_umv_buf_t *p_umv_buf);\r
\r
\r
ib_api_status_t \r
mlnx_pre_query_av (\r
- IN const uvp_av_handle_t h_uvp_av,\r
+ IN const ib_av_handle_t h_uvp_av,\r
IN OUT ci_umv_buf_t *p_umv_buf );\r
\r
void \r
\r
ib_api_status_t \r
mlnx_pre_modify_av (\r
- IN const uvp_av_handle_t h_uvp_av,\r
+ IN const ib_av_handle_t h_uvp_av,\r
IN const ib_av_attr_t *p_addr_vector,\r
IN OUT ci_umv_buf_t *p_umv_buf);\r
\r
void \r
mlnx_post_modify_av (\r
- IN const uvp_av_handle_t h_uvp_av,\r
+ IN const ib_av_handle_t h_uvp_av,\r
IN ib_api_status_t ioctl_status,\r
IN OUT ci_umv_buf_t *p_umv_buf);\r
\r
ib_api_status_t \r
mlnx_pre_destroy_av (\r
- IN const uvp_av_handle_t h_uvp_av);\r
+ IN const ib_av_handle_t h_uvp_av);\r
\r
void \r
mlnx_post_destroy_av (\r
- IN const uvp_av_handle_t h_uvp_av,\r
+ IN const ib_av_handle_t h_uvp_av,\r
IN ib_api_status_t ioctl_status);\r
\r
\r
\r
void \r
mlnx_post_resize_cq (\r
- IN const uvp_cq_handle_t h_uvp_cq,\r
+ IN const ib_cq_handle_t h_uvp_cq,\r
IN ib_api_status_t ioctl_status,\r
IN const uint32_t size,\r
IN OUT ci_umv_buf_t *p_umv_buf);\r
\r
ib_api_status_t \r
mlnx_pre_query_cq (\r
- IN const uvp_cq_handle_t h_uvp_cq,\r
+ IN const ib_cq_handle_t h_uvp_cq,\r
IN OUT ci_umv_buf_t *p_umv_buf);\r
\r
void \r
mlnx_post_query_cq (\r
- IN const uvp_cq_handle_t h_uvp_cq,\r
+ IN const ib_cq_handle_t h_uvp_cq,\r
IN ib_api_status_t ioctl_status,\r
IN OUT ci_umv_buf_t *p_umv_buf);\r
\r
ib_api_status_t \r
mlnx_pre_destroy_cq (\r
- IN const uvp_cq_handle_t h_uvp_cq);\r
+ IN const ib_cq_handle_t h_uvp_cq);\r
\r
void \r
mlnx_post_destroy_cq (\r
- IN const uvp_cq_handle_t h_uvp_cq,\r
+ IN const ib_cq_handle_t h_uvp_cq,\r
IN ib_api_status_t ioctl_status);\r
\r
/************* QP Management *************************/\r
\r
ib_api_status_t \r
mlnx_pre_create_qp (\r
- IN const uvp_pd_handle_t h_uvp_pd,// Fix me: if needed\r
+ IN const ib_pd_handle_t h_uvp_pd,// Fix me: if needed\r
IN const ib_qp_create_t *p_create_attr,\r
IN OUT ci_umv_buf_t *p_umv_buf);\r
\r
\r
ib_api_status_t \r
mlnx_pre_modify_qp (\r
- IN const uvp_qp_handle_t h_uvp_qp,\r
+ IN const ib_qp_handle_t h_uvp_qp,\r
IN const ib_qp_mod_t *p_modify_attr, // Fixme\r
IN OUT ci_umv_buf_t *p_umv_buf);\r
\r
void \r
mlnx_post_modify_qp (\r
- IN const uvp_qp_handle_t h_uvp_qp,\r
+ IN const ib_qp_handle_t h_uvp_qp,\r
IN ib_api_status_t ioctl_status,\r
IN OUT ci_umv_buf_t *p_umv_buf);\r
\r
ib_api_status_t \r
mlnx_pre_query_qp (\r
- IN uvp_qp_handle_t h_uvp_qp,\r
+ IN ib_qp_handle_t h_uvp_qp,\r
IN OUT ci_umv_buf_t *p_umv_buf);\r
\r
void \r
mlnx_post_query_qp (\r
- IN uvp_qp_handle_t h_uvp_qp,\r
+ IN ib_qp_handle_t h_uvp_qp,\r
IN ib_api_status_t ioctl_status,\r
IN ib_qp_attr_t *p_query_attr,\r
IN OUT ci_umv_buf_t *p_umv_buf);\r
\r
ib_api_status_t \r
mlnx_pre_destroy_qp (\r
- IN const uvp_qp_handle_t h_uvp_qp);\r
+ IN const ib_qp_handle_t h_uvp_qp);\r
\r
void \r
mlnx_post_destroy_qp (\r
- IN const uvp_qp_handle_t h_uvp_qp,\r
+ IN const ib_qp_handle_t h_uvp_qp,\r
IN ib_api_status_t ioctl_status );\r
\r
/************* MR/MW Management *************************/\r
\r
ib_api_status_t \r
mlnx_pre_register_mr (\r
- IN const uvp_pd_handle_t h_uvp_pd,\r
+ IN const ib_pd_handle_t h_uvp_pd,\r
IN const ib_mr_create_t *p_mr_create,\r
IN OUT ci_umv_buf_t *p_umv_buf);\r
\r
void \r
mlnx_post_register_mr (\r
- IN const uvp_pd_handle_t h_uvp_pd,\r
+ IN const ib_pd_handle_t h_uvp_pd,\r
IN ib_api_status_t ioctl_status,\r
IN const uint32_t *p_lkey,\r
IN const uint32_t *p_rkey,\r
- OUT const uvp_mr_handle_t *ph_uvp_mr,\r
+ OUT const ib_mr_handle_t *ph_uvp_mr,\r
IN OUT ci_umv_buf_t *p_umv_buf);\r
\r
ib_api_status_t \r
mlnx_pre_query_mr (\r
- IN const uvp_mr_handle_t h_uvp_mr,\r
+ IN const ib_mr_handle_t h_uvp_mr,\r
IN OUT ci_umv_buf_t *p_umv_buf);\r
\r
void \r
mlnx_post_query_mr (\r
- IN const uvp_mr_handle_t h_uvp_mr,\r
+ IN const ib_mr_handle_t h_uvp_mr,\r
IN ib_api_status_t ioctl_status,\r
IN const ib_mr_attr_t *p_mr_query,\r
IN OUT ci_umv_buf_t *p_umv_buf);\r
\r
ib_api_status_t \r
mlnx_pre_modify_mr (\r
- IN const uvp_mr_handle_t h_uvp_mr,\r
- IN const uvp_pd_handle_t h_uvp_pd OPTIONAL,\r
+ IN const ib_mr_handle_t h_uvp_mr,\r
+ IN const ib_pd_handle_t h_uvp_pd OPTIONAL,\r
IN const ib_mr_mod_t mr_mod_mask,\r
IN const ib_mr_create_t *p_mr_create OPTIONAL,\r
IN OUT ci_umv_buf_t *p_umv_buf);\r
\r
void \r
mlnx_post_modify_mr (\r
- IN const uvp_mr_handle_t h_uvp_mr,\r
- IN const uvp_pd_handle_t h_uvp_pd OPTIONAL,\r
+ IN const ib_mr_handle_t h_uvp_mr,\r
+ IN const ib_pd_handle_t h_uvp_pd OPTIONAL,\r
IN ib_api_status_t ioctl_status,\r
IN const uint32_t *p_lkey,\r
IN const uint32_t *p_rkey,\r
\r
ib_api_status_t \r
mlnx_pre_register_smr (\r
- IN const uvp_pd_handle_t h_uvp_pd,\r
- IN const uvp_mr_handle_t h_uvp_mr,\r
+ IN const ib_pd_handle_t h_uvp_pd,\r
+ IN const ib_mr_handle_t h_uvp_mr,\r
IN const ib_access_t access_ctrl,\r
IN void *p_vaddr,\r
IN OUT ci_umv_buf_t *p_umv_buf);\r
\r
void \r
mlnx_post_register_smr (\r
- IN const uvp_pd_handle_t h_uvp_pd,\r
- IN const uvp_mr_handle_t h_uvp_mr,\r
+ IN const ib_pd_handle_t h_uvp_pd,\r
+ IN const ib_mr_handle_t h_uvp_mr,\r
IN ib_api_status_t ioctl_status,\r
IN const void *p_vaddr,\r
IN const uint32_t *p_lkey,\r
IN const uint32_t *p_rkey,\r
- OUT const uvp_mr_handle_t *ph_uvp_smr,\r
+ OUT const ib_mr_handle_t *ph_uvp_smr,\r
IN OUT ci_umv_buf_t *p_umv_buf);\r
\r
ib_api_status_t \r
mlnx_pre_deregister_mr (\r
- IN const uvp_mr_handle_t h_uvp_mr,\r
+ IN const ib_mr_handle_t h_uvp_mr,\r
IN OUT ci_umv_buf_t *p_umv_buf);\r
\r
void \r
mlnx_post_deregister_mr (\r
- IN const uvp_mr_handle_t h_uvp_mr,\r
+ IN const ib_mr_handle_t h_uvp_mr,\r
IN OUT ci_umv_buf_t *p_umv_buf);\r
\r
ib_api_status_t \r
mlnx_pre_create_mw (\r
- IN const uvp_pd_handle_t h_uvp_pd,\r
+ IN const ib_pd_handle_t h_uvp_pd,\r
IN OUT ci_umv_buf_t *p_umv_buf);\r
\r
void \r
\r
ib_api_status_t \r
mlnx_pre_query_mw (\r
- IN const uvp_mw_handle_t h_uvp_mw,\r
+ IN const ib_mw_handle_t h_uvp_mw,\r
IN OUT ci_umv_buf_t *p_umv_buf);\r
\r
void \r
\r
ib_api_status_t \r
mlnx_pre_destroy_mw (\r
- IN const uvp_mw_handle_t h_uvp_mw);\r
+ IN const ib_mw_handle_t h_uvp_mw);\r
// IN OUT ci_umv_buf_t *p_umv_buf);\r
\r
void \r
mlnx_post_destroy_mw (\r
- IN const uvp_mw_handle_t h_uvp_mw,\r
+ IN const ib_mw_handle_t h_uvp_mw,\r
IN ib_api_status_t ioctl_status);\r
\r
\r
\r
ib_api_status_t \r
mlnx_pre_attach_mcast (\r
- IN const uvp_qp_handle_t h_uvp_qp,\r
+ IN const ib_qp_handle_t h_uvp_qp,\r
IN const ib_gid_t *p_mcast_gid,\r
IN const uint16_t mcast_lid,\r
IN OUT ci_umv_buf_t *p_umv_buf);\r
\r
void \r
mlnx_post_attach_mcast (\r
- IN const uvp_qp_handle_t h_uvp_qp,\r
+ IN const ib_qp_handle_t h_uvp_qp,\r
IN ib_api_status_t ioctl_status,\r
- OUT uvp_mcast_handle_t *ph_mcast,\r
+ OUT ib_mcast_handle_t *ph_mcast,\r
IN OUT ci_umv_buf_t *p_umv_buf);\r
\r
ib_api_status_t \r
mlnx_pre_detach_mcast (\r
- IN uvp_mcast_handle_t h_uvp_mcast,\r
+ IN ib_mcast_handle_t h_uvp_mcast,\r
IN OUT ci_umv_buf_t *p_umv_buf);\r
\r
void \r
mlnx_post_detach_mcast (\r
- IN uvp_mcast_handle_t h_uvp_mcast,\r
+ IN ib_mcast_handle_t h_uvp_mcast,\r
IN ib_api_status_t ioctl_status,\r
IN OUT ci_umv_buf_t *p_umv_buf);\r
\r
IN const void* __ptr64 h_cq,\r
OUT uint32_t* const p_n_cqes );\r
\r
-/************* ERROR Handler *************************/\r
-void \r
-mlnx_get_errh_interface (\r
- IN OUT uvp_interface_t *p_uvp );\r
-\r
-\r
-void \r
-mlnx_err_handler (\r
- IN const ib_async_event_rec_t *const p_err_rec);\r
-\r
-/************* RDD Management *************************/\r
-void \r
-mlnx_get_rdd_interface (\r
- IN OUT uvp_interface_t *p_uvp );\r
-\r
-ib_api_status_t \r
-mlnx_pre_allocate_rdd (\r
- IN const uvp_ca_handle_t h_uvp_ca,\r
- IN OUT ci_umv_buf_t *p_umv_buf);\r
-\r
-void \r
-mlnx_post_allocate_rdd (\r
- IN const uvp_ca_handle_t h_uvp_ca,\r
- IN ib_api_status_t ioctl_status,\r
- OUT uvp_rdd_handle_t *ph_uvp_rdd,\r
- IN OUT ci_umv_buf_t *p_umv_buf);\r
-\r
-ib_api_status_t \r
-mlnx_pre_deallocate_rdd (\r
- IN const uvp_rdd_handle_t h_uvp_rdd,\r
- IN OUT ci_umv_buf_t *p_umv_buf);\r
-\r
-void \r
-mlnx_post_deallocate_rdd (\r
- IN const uvp_rdd_handle_t h_uvp_rdd);\r
-\r
-/************* EEC Management *************************/\r
-#ifdef EEC_MANAGEMENT\r
-void \r
-mlnx_get_eec_interface (\r
- IN OUT uvp_interface_t *p_uvp );\r
-\r
-ib_api_status_t \r
-mlnx_pre_create_eec (\r
- IN const uvp_rdd_handle_t h_uvp_rdd,\r
- IN OUT ci_umv_buf_t *p_umv_buf);\r
-\r
-void \r
-mlnx_post_create_eec (\r
- IN const uvp_rdd_handle_t h_uvp_rdd,\r
- IN ib_api_status_t ioctl_status,\r
- OUT uvp_eec_handle_t *p_uvp_eec,\r
- IN OUT ci_umv_buf_t *p_umv_buf);\r
-\r
-ib_api_status_t \r
-mlnx_pre_query_eec (\r
- IN const uvp_eec_handle_t h_uvp_eec,\r
- IN OUT ci_umv_buf_t *p_umv_buf);\r
-\r
-void \r
-mlnx_post_query_eec (\r
- IN const uvp_eec_handle_t h_uvp_eec,\r
- IN ib_api_status_t ioctl_status,\r
- IN ib_eec_attr_t *p_query_attr,\r
- IN OUT ci_umv_buf_t *p_umv_buf);\r
-\r
-ib_api_status_t \r
-mlnx_pre_modify_eec (\r
- IN const uvp_eec_handle_t h_uvp_eec,\r
- IN const ib_eec_mod_t *p_modify_attr,\r
- IN OUT ci_umv_buf_t *p_umv_buf);\r
-\r
-void \r
-mlnx_post_modify_eec (\r
- IN const uvp_eec_handle_t h_uvp_eec,\r
- IN ib_api_status_t ioctl_status,\r
- IN OUT ci_umv_buf_t *p_umv_buf);\r
-\r
-ib_api_status_t\r
-mlnx_pre_destroy_eec (\r
- IN const uvp_eec_handle_t h_uvp_eec);\r
-\r
-void\r
-mlnx_post_destroy_eec (\r
- IN const uvp_eec_handle_t h_uvp_eec);\r
-\r
-#endif // EEC_MANAGEMENT\r
#endif\r
\r
ib_api_status_t\r
mlnx_pre_attach_mcast (\r
- IN const uvp_qp_handle_t h_uvp_qp,\r
+ IN const ib_qp_handle_t h_uvp_qp,\r
IN const ib_gid_t *p_mcast_gid,\r
IN const uint16_t mcast_lid,\r
IN OUT ci_umv_buf_t *p_umv_buf)\r
\r
void\r
mlnx_post_attach_mcast (\r
- IN const uvp_qp_handle_t h_uvp_qp,\r
+ IN const ib_qp_handle_t h_uvp_qp,\r
IN ib_api_status_t ioctl_status,\r
- OUT uvp_mcast_handle_t *ph_mcast,\r
+ OUT ib_mcast_handle_t *ph_mcast,\r
IN OUT ci_umv_buf_t *p_umv_buf)\r
{\r
FUNC_ENTER;\r
\r
ib_api_status_t\r
mlnx_pre_detach_mcast (\r
- IN uvp_mcast_handle_t h_uvp_mcast,\r
+ IN ib_mcast_handle_t h_uvp_mcast,\r
IN OUT ci_umv_buf_t *p_umv_buf)\r
{\r
FUNC_ENTER;\r
\r
void\r
mlnx_post_detach_mcast (\r
- IN uvp_mcast_handle_t h_uvp_mcast,\r
+ IN ib_mcast_handle_t h_uvp_mcast,\r
IN ib_api_status_t ioctl_status,\r
IN OUT ci_umv_buf_t *p_umv_buf)\r
{\r
\r
ib_api_status_t\r
mlnx_pre_register_mr (\r
- IN const uvp_pd_handle_t h_uvp_pd,\r
+ IN const ib_pd_handle_t h_uvp_pd,\r
IN const ib_mr_create_t *p_mr_create,\r
IN OUT ci_umv_buf_t *p_umv_buf)\r
{\r
\r
void\r
mlnx_post_register_mr (\r
- IN const uvp_pd_handle_t h_uvp_pd,\r
+ IN const ib_pd_handle_t h_uvp_pd,\r
IN ib_api_status_t ioctl_status,\r
IN const uint32_t *p_lkey,\r
IN const uint32_t *p_rkey,\r
- OUT const uvp_mr_handle_t *ph_uvp_mr,\r
+ OUT const ib_mr_handle_t *ph_uvp_mr,\r
IN OUT ci_umv_buf_t *p_umv_buf)\r
{\r
FUNC_ENTER;\r
\r
ib_api_status_t\r
mlnx_pre_query_mr (\r
- IN const uvp_mr_handle_t h_uvp_mr,\r
+ IN const ib_mr_handle_t h_uvp_mr,\r
IN OUT ci_umv_buf_t *p_umv_buf)\r
{\r
FUNC_ENTER;\r
\r
void\r
mlnx_post_query_mr (\r
- IN const uvp_mr_handle_t h_uvp_mr,\r
+ IN const ib_mr_handle_t h_uvp_mr,\r
IN ib_api_status_t ioctl_status,\r
IN const ib_mr_attr_t *p_mr_query,\r
IN OUT ci_umv_buf_t *p_umv_buf)\r
\r
ib_api_status_t\r
mlnx_pre_modify_mr (\r
- IN const uvp_mr_handle_t h_uvp_mr,\r
- IN const uvp_pd_handle_t h_uvp_pd OPTIONAL,\r
+ IN const ib_mr_handle_t h_uvp_mr,\r
+ IN const ib_pd_handle_t h_uvp_pd OPTIONAL,\r
IN const ib_mr_mod_t mr_mod_mask,\r
IN const ib_mr_create_t *p_mr_create OPTIONAL,\r
IN OUT ci_umv_buf_t *p_umv_buf)\r
\r
void\r
mlnx_post_modify_mr (\r
- IN const uvp_mr_handle_t h_uvp_mr,\r
- IN const uvp_pd_handle_t h_uvp_pd OPTIONAL,\r
+ IN const ib_mr_handle_t h_uvp_mr,\r
+ IN const ib_pd_handle_t h_uvp_pd OPTIONAL,\r
IN ib_api_status_t ioctl_status,\r
IN const uint32_t *p_lkey,\r
IN const uint32_t *p_rkey,\r
\r
ib_api_status_t\r
mlnx_pre_register_smr (\r
- IN const uvp_pd_handle_t h_uvp_pd,\r
- IN const uvp_mr_handle_t h_uvp_mr,\r
+ IN const ib_pd_handle_t h_uvp_pd,\r
+ IN const ib_mr_handle_t h_uvp_mr,\r
IN const ib_access_t access_ctrl,\r
IN void *p_vaddr,\r
IN OUT ci_umv_buf_t *p_umv_buf)\r
\r
void\r
mlnx_post_register_smr (\r
- IN const uvp_pd_handle_t h_uvp_pd,\r
- IN const uvp_mr_handle_t h_uvp_mr,\r
+ IN const ib_pd_handle_t h_uvp_pd,\r
+ IN const ib_mr_handle_t h_uvp_mr,\r
IN ib_api_status_t ioctl_status,\r
IN const void *p_vaddr,\r
IN const uint32_t *p_lkey,\r
IN const uint32_t *p_rkey,\r
- OUT const uvp_mr_handle_t *ph_uvp_smr,\r
+ OUT const ib_mr_handle_t *ph_uvp_smr,\r
IN OUT ci_umv_buf_t *p_umv_buf)\r
{\r
FUNC_ENTER;\r
\r
ib_api_status_t\r
mlnx_pre_deregister_mr (\r
- IN const uvp_mr_handle_t h_uvp_mr,\r
+ IN const ib_mr_handle_t h_uvp_mr,\r
IN OUT ci_umv_buf_t *p_umv_buf)\r
{\r
FUNC_ENTER;\r
\r
void\r
mlnx_post_deregister_mr (\r
- IN const uvp_mr_handle_t h_uvp_mr,\r
+ IN const ib_mr_handle_t h_uvp_mr,\r
IN OUT ci_umv_buf_t *p_umv_buf)\r
{\r
FUNC_ENTER;\r
\r
ib_api_status_t\r
mlnx_pre_create_mw (\r
- IN const uvp_pd_handle_t h_uvp_pd,\r
+ IN const ib_pd_handle_t h_uvp_pd,\r
IN OUT ci_umv_buf_t *p_umv_buf)\r
{\r
ib_api_status_t status = IB_SUCCESS;\r
cl_memcpy (&p_new_mw, p_umv_buf->p_inout_buf, p_umv_buf->input_size);\r
\r
\r
- *ph_uvp_mw = (uvp_mw_handle_t) p_new_mw;\r
+ *ph_uvp_mw = (ib_mw_handle_t) p_new_mw;\r
\r
if (IB_SUCCESS == status)\r
{\r
\r
ib_api_status_t\r
mlnx_pre_query_mw (\r
- IN const uvp_mw_handle_t h_uvp_mw,\r
+ IN const ib_mw_handle_t h_uvp_mw,\r
IN OUT ci_umv_buf_t *p_umv_buf)\r
{\r
FUNC_ENTER;\r
\r
ib_api_status_t\r
mlnx_pre_destroy_mw (\r
- IN const uvp_mw_handle_t h_uvp_mw)\r
+ IN const ib_mw_handle_t h_uvp_mw)\r
{\r
FUNC_ENTER;\r
FUNC_EXIT;\r
\r
void\r
mlnx_post_destroy_mw (\r
- IN const uvp_mw_handle_t h_uvp_mw,\r
+ IN const ib_mw_handle_t h_uvp_mw,\r
IN ib_api_status_t ioctl_status)\r
{\r
ib_api_status_t status = IB_SUCCESS;\r
}\r
\r
\r
-inline static VAPI_wr_opcode_t\r
-map_itom_wr_opcode (\r
- IN ib_wr_type_t ibal_opcode,\r
- IN boolean_t imm)\r
-{\r
- VAPI_wr_opcode_t vapi_opcode;\r
-\r
- switch (ibal_opcode)\r
- {\r
- case WR_SEND:\r
- vapi_opcode = VAPI_SEND;\r
- break;\r
- case WR_RDMA_WRITE:\r
- vapi_opcode = VAPI_RDMA_WRITE;\r
- break;\r
- case WR_RDMA_READ:\r
- vapi_opcode = VAPI_RDMA_READ;\r
- break;\r
- case WR_COMPARE_SWAP:\r
- vapi_opcode = VAPI_ATOMIC_FETCH_AND_ADD;\r
- break;\r
- default:\r
- vapi_opcode = VAPI_SEND;\r
- break;\r
- }\r
-\r
- if (imm & (VAPI_SEND == vapi_opcode || VAPI_RDMA_WRITE == vapi_opcode))\r
- {\r
- vapi_opcode++;\r
- }\r
-\r
- return vapi_opcode;\r
-}\r
-\r
-\r
-ib_api_status_t\r
-map_itom_send_desc (\r
- IN IB_ts_t qp_type,\r
- IN ib_send_wr_t *p_i_wqe,\r
- OUT VAPI_sr_desc_t *p_m_swqe,\r
- OUT u_int64_t *p_tot_len)\r
-{\r
- boolean_t imm = FALSE;\r
- u_int32_t idx;\r
- register VAPI_sg_lst_entry_t *p_sg_list;\r
- register ib_local_ds_t *p_i_ds;\r
-\r
- switch (qp_type)\r
- {\r
- case IB_TS_UD:\r
- {\r
- mlnx_ual_av_info_t *p_av_info = NULL;\r
-\r
- CL_TRACE (MLNX_TRACE_LVL_8, mlnx_dbg_lvl, ("Mapping UD QP\n"));\r
-\r
- p_av_info = (mlnx_ual_av_info_t *) p_i_wqe->dgrm.ud.h_av;\r
- CL_ASSERT (p_av_info);\r
-\r
- p_m_swqe->remote_qp = CL_NTOH32 (p_i_wqe->dgrm.ud.remote_qp);\r
- p_m_swqe->remote_qkey = CL_NTOH32 (p_i_wqe->dgrm.ud.remote_qkey);\r
- p_m_swqe->remote_ah = p_av_info->hhul_av_hndl;\r
- break;\r
- }\r
- case IB_TS_RC:\r
- {\r
- CL_TRACE (MLNX_TRACE_LVL_8, mlnx_dbg_lvl, ("Mapping RC QP\n"));\r
- p_m_swqe->remote_addr = p_i_wqe->remote_ops.vaddr;\r
- p_m_swqe->r_key = p_i_wqe->remote_ops.rkey; \r
- p_m_swqe->compare_add = p_i_wqe->remote_ops.atomic1; \r
- p_m_swqe->swap = p_i_wqe->remote_ops.atomic2; \r
- break;\r
- }\r
- case IB_TS_RD:\r
- case IB_TS_UC:\r
- default:\r
- CL_TRACE (MLNX_TRACE_LVL_1, mlnx_dbg_lvl, \r
- ("Mapping RD/UC QP (unsupported\n"));\r
- return IB_UNSUPPORTED;\r
- }\r
-\r
- imm = (0 != (p_i_wqe->send_opt & IB_SEND_OPT_IMMEDIATE));\r
- p_m_swqe->fence = (MT_bool)(0 != (p_i_wqe->send_opt & IB_SEND_OPT_FENCE));\r
- p_m_swqe->set_se = (MT_bool)(0 != (p_i_wqe->send_opt & IB_SEND_OPT_SOLICITED));\r
- p_m_swqe->comp_type = (p_i_wqe->send_opt & IB_SEND_OPT_SIGNALED) ?\r
- VAPI_SIGNALED : VAPI_UNSIGNALED;\r
- p_m_swqe->id = p_i_wqe->wr_id;\r
- p_m_swqe->opcode = map_itom_wr_opcode (p_i_wqe->wr_type, imm);\r
- \r
- if (imm)\r
- {\r
- p_m_swqe->imm_data = CL_NTOH32 (p_i_wqe->immediate_data);\r
- }\r
-\r
- p_m_swqe->sg_lst_len = p_i_wqe->num_ds;\r
- p_sg_list = p_m_swqe->sg_lst_p;\r
- p_i_ds = p_i_wqe->ds_array;\r
- *p_tot_len = 0;\r
-\r
- for (idx = 0; idx < p_i_wqe->num_ds; idx++)\r
- {\r
- p_sg_list->addr = (VAPI_virt_addr_t) (MT_virt_addr_t) p_i_ds->vaddr;\r
- p_sg_list->len = p_i_ds->length;\r
- p_sg_list->lkey = p_i_ds->lkey;\r
- p_sg_list++;\r
- *p_tot_len += p_i_ds->length + 4; // in_line data size + 4-byte length\r
- p_i_ds++;\r
- }\r
-\r
- CL_TRACE (MLNX_TRACE_LVL_8, mlnx_dbg_lvl, ("send: rqpn 0x%x qkey 0x%x\n",\r
- p_m_swqe->remote_qp, p_m_swqe->remote_qkey));\r
-\r
- return IB_SUCCESS;\r
-}\r
-\r
-\r
-ib_api_status_t\r
-map_itom_recv_desc (\r
- IN ib_recv_wr_t *p_i_wqe,\r
- OUT VAPI_rr_desc_t *p_m_rwqe)\r
-{\r
- u_int32_t idx;\r
- register VAPI_sg_lst_entry_t *p_sg_list;\r
- register ib_local_ds_t *p_i_ds;\r
-\r
- p_m_rwqe->id = (VAPI_wr_id_t)p_i_wqe->wr_id;\r
- p_m_rwqe->sg_lst_len = p_i_wqe->num_ds;\r
- p_m_rwqe->comp_type = VAPI_SIGNALED;\r
-\r
- p_sg_list = p_m_rwqe->sg_lst_p;\r
- p_i_ds = p_i_wqe->ds_array;\r
- for (idx = 0; idx < p_i_wqe->num_ds; idx++)\r
- {\r
- p_sg_list->addr = (VAPI_virt_addr_t) (MT_virt_addr_t) p_i_ds->vaddr;\r
- p_sg_list->len = p_i_ds->length;\r
- p_sg_list->lkey = (VAPI_lkey_t)p_i_ds->lkey;\r
- p_sg_list++;\r
- p_i_ds++;\r
- }\r
-\r
- return IB_SUCCESS;\r
-}\r
-\r
-\r
-int\r
-map_mtoi_cqe_status (\r
- IN VAPI_wc_status_t m_status)\r
-{\r
- switch (m_status)\r
- {\r
- case IB_COMP_SUCCESS: return (IB_WCS_SUCCESS);\r
- case IB_COMP_LOC_LEN_ERR: return (IB_WCS_LOCAL_LEN_ERR);\r
- case IB_COMP_LOC_QP_OP_ERR: return (IB_WCS_LOCAL_OP_ERR);\r
-// case IB_COMP_LOC_EE_OP_ERR: return (IB_WCS_LOCAL_EEC_OP_ERR);\r
- case IB_COMP_LOC_PROT_ERR: return (IB_WCS_LOCAL_PROTECTION_ERR);\r
- case IB_COMP_WR_FLUSH_ERR: return (IB_WCS_WR_FLUSHED_ERR);\r
- case IB_COMP_MW_BIND_ERR: return (IB_WCS_MEM_WINDOW_BIND_ERR);\r
- case IB_COMP_REM_INV_REQ_ERR: return (IB_WCS_REM_INVALID_REQ_ERR);\r
- case IB_COMP_REM_ACCESS_ERR: return (IB_WCS_REM_ACCESS_ERR);\r
- case IB_COMP_REM_OP_ERR: return (IB_WCS_REM_OP_ERR);\r
- case IB_COMP_RETRY_EXC_ERR: return (IB_WCS_TIMEOUT_RETRY_ERR);\r
- case IB_COMP_RNR_RETRY_EXC_ERR: return (IB_WCS_RNR_RETRY_ERR);\r
-// case IB_COMP_REM_INV_RD_REQ_ERR: return (IB_WCS_REM_INVALID_RD_REQ_ERR);\r
- case IB_COMP_REM_ABORT_ERR: return (IB_WCS_REM_ACCESS_ERR);\r
-// case IB_COMP_INV_EECN_ERR: return (IB_WCS_INVALID_EECN);\r
-// case IB_COMP_INV_EEC_STATE_ERR: return (IB_WCS_INVALID_EEC_STATE);\r
- case IB_COMP_FATAL_ERR: return (IB_WCS_REM_ACCESS_ERR);\r
- case IB_COMP_GENERAL_ERR: return (IB_WCS_REM_ACCESS_ERR);\r
- default:\r
- CL_TRACE (MLNX_TRACE_LVL_1, mlnx_dbg_lvl, \r
- ("Failed to map m_cqe->status %d\n", m_status));\r
- return IB_WCS_REM_ACCESS_ERR;\r
- }\r
-\r
-}\r
-\r
-\r
-int\r
-map_mtoi_cqe_type (\r
- IN VAPI_cqe_opcode_t m_op)\r
-{\r
- switch (m_op)\r
- {\r
- case VAPI_CQE_SQ_SEND_DATA: return IB_WC_SEND;\r
- case VAPI_CQE_SQ_RDMA_WRITE: return IB_WC_RDMA_WRITE;\r
- case VAPI_CQE_SQ_RDMA_READ: return IB_WC_RDMA_READ;\r
- case VAPI_CQE_SQ_COMP_SWAP: return IB_WC_COMPARE_SWAP;\r
- case VAPI_CQE_SQ_FETCH_ADD: return IB_WC_FETCH_ADD;\r
- case VAPI_CQE_SQ_BIND_MRW: return IB_WC_MW_BIND;\r
- case VAPI_CQE_RQ_SEND_DATA: return IB_WC_RECV;\r
- case VAPI_CQE_RQ_RDMA_WITH_IMM: return IB_WC_RECV_RDMA_WRITE;\r
- default:\r
- return IB_WC_SEND;\r
- }\r
-}\r
-\r
-\r
static VAPI_mrw_acl_t\r
map_itom_access_ctrl (\r
IN ib_access_t i_acl)\r
\r
ib_api_status_t\r
mlnx_pre_allocate_pd (\r
- IN const uvp_ca_handle_t h_uvp_ca,\r
+ IN const ib_ca_handle_t h_uvp_ca,\r
IN OUT ci_umv_buf_t *p_umv_buf)\r
{\r
ib_api_status_t status = IB_SUCCESS;\r
sizeof (mlnx_ual_pd_info_t*)),\r
sizeof (mlnx_ual_pd_info_t *));\r
CL_ASSERT(p_new_pd);\r
- *ph_uvp_pd = (uvp_pd_handle_t) p_new_pd;\r
+ *ph_uvp_pd = (ib_pd_handle_t) p_new_pd;\r
\r
if ( ioctl_status == IB_SUCCESS )\r
{\r
\r
ib_api_status_t\r
mlnx_pre_deallocate_pd (\r
- IN const uvp_pd_handle_t h_uvp_pd)\r
+ IN const ib_pd_handle_t h_uvp_pd)\r
{\r
ib_api_status_t status = IB_SUCCESS;\r
mlnx_ual_pd_info_t *p_pd_info = (mlnx_ual_pd_info_t *)((void *)h_uvp_pd);\r
\r
void\r
mlnx_post_deallocate_pd (\r
- IN const uvp_pd_handle_t h_uvp_pd,\r
+ IN const ib_pd_handle_t h_uvp_pd,\r
IN ib_api_status_t ioctl_status )\r
{\r
mlnx_ual_pd_info_t *p_pd_info = (mlnx_ual_pd_info_t *)((void *)h_uvp_pd);\r
\r
ib_api_status_t\r
mlnx_pre_create_qp (\r
- IN const uvp_pd_handle_t h_uvp_pd,\r
+ IN const ib_pd_handle_t h_uvp_pd,\r
IN const ib_qp_create_t *p_create_attr,\r
IN OUT ci_umv_buf_t *p_umv_buf)\r
{\r
sizeof (mlnx_ual_qp_info_t *)), sizeof (mlnx_ual_qp_info_t *));\r
CL_ASSERT(p_new_qp);\r
\r
- *ph_uvp_qp = (uvp_qp_handle_t) p_new_qp;\r
+ *ph_uvp_qp = (ib_qp_handle_t) p_new_qp;\r
\r
if ( ioctl_status == IB_SUCCESS )\r
{\r
\r
ib_api_status_t\r
mlnx_pre_modify_qp (\r
- IN const uvp_qp_handle_t h_uvp_qp,\r
+ IN const ib_qp_handle_t h_uvp_qp,\r
IN const ib_qp_mod_t *p_modify_attr,\r
IN OUT ci_umv_buf_t *p_umv_buf)\r
{\r
\r
void\r
mlnx_post_modify_qp (\r
- IN const uvp_qp_handle_t h_uvp_qp,\r
+ IN const ib_qp_handle_t h_uvp_qp,\r
IN ib_api_status_t ioctl_status,\r
IN OUT ci_umv_buf_t *p_umv_buf)\r
{\r
\r
ib_api_status_t\r
mlnx_pre_query_qp (\r
- IN uvp_qp_handle_t h_uvp_qp,\r
+ IN ib_qp_handle_t h_uvp_qp,\r
IN OUT ci_umv_buf_t *p_umv_buf)\r
{\r
UNREFERENCED_PARAMETER(h_uvp_qp);\r
\r
void\r
mlnx_post_query_qp (\r
- IN uvp_qp_handle_t h_uvp_qp,\r
+ IN ib_qp_handle_t h_uvp_qp,\r
IN ib_api_status_t ioctl_status,\r
IN OUT ib_qp_attr_t *p_query_attr,\r
IN OUT ci_umv_buf_t *p_umv_buf)\r
\r
ib_api_status_t\r
mlnx_pre_destroy_qp (\r
- IN const uvp_qp_handle_t h_uvp_qp)\r
+ IN const ib_qp_handle_t h_uvp_qp)\r
{\r
UNREFERENCED_PARAMETER(h_uvp_qp);\r
FUNC_ENTER;\r
\r
void\r
mlnx_post_destroy_qp (\r
- IN const uvp_qp_handle_t h_uvp_qp,\r
+ IN const ib_qp_handle_t h_uvp_qp,\r
IN ib_api_status_t ioctl_status)\r
{\r
mlnx_ual_qp_info_t *p_qp_info = (mlnx_ual_qp_info_t *)((void *) h_uvp_qp);\r
THH_HOME=$(MT_HOME)\hca\hcahal\tavor\r
\r
INCLUDES= \\r
+ ..\..\user; \\r
$(MT_HOME)\mlxsys\tools; \\r
$(MT_HOME)\tavor_arch_db; \\r
$(MT_HOME)\Hca\verbs; \\r
+++ /dev/null
-/*\r
- * Copyright (c) 2005 SilverStorm Technologies. 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$\r
- */\r
-\r
-#include <iba/ib_types.h>\r
-#include <iba/ib_uvp.h>\r
-\r
-\r
-typedef struct _ib_av\r
-{\r
- HHUL_ud_av_hndl_t h_av;\r
-};\r
#include <complib/cl_types.h>\r
#include <iba/ib_types.h>\r
#include <iba/ib_ci.h>\r
-#include <iba/ib_al.h>\r
-#include <iba/ib_al_ioctl.h>\r
\r
/****h* UAL_UVP_Interface/Overview user-mode Verbs\r
* NAME\r
*\r
* SYNOPSIS\r
*/\r
-\r
typedef ib_api_status_t\r
(AL_API *uvp_pre_query_ca) (\r
IN ib_ca_handle_t h_uvp_ca,\r
- IN OUT ual_query_ca_ioctl_t *p_ca_ioctl );\r
-\r
+ IN ib_ca_attr_t *p_ca_attr,\r
+ IN size_t byte_count,\r
+ IN ci_umv_buf_t *p_umv_buf );\r
/*\r
* DESCRIPTION\r
* uvp_pre_query_ca() is implemented by vendor. It is the pre-ioctl routine\r
* PARAMETERS\r
* h_uvp_ca\r
* [in] Vendor's user-mode library handle to the open instance of the CA\r
+* p_ca_attr\r
+* [in] Pointer to the user's CA attribute buffer.\r
+* byte_count\r
+* [in] User-supplied size of the CA attribute buffer.\r
* p_umv_buf\r
* [in out] On input, UAL provides this buffer template.\r
* On return from this function, p_umv_buf contains any vendor-specific\r
\r
/********/\r
\r
-/****f* user-mode Verbs/uvp_err_handler\r
-* NAME\r
-* uvp_err_handler -- Vendor's handler for QP/CQ error notification\r
-*\r
-* SYNOPSIS\r
-*/\r
-\r
-typedef void\r
-(AL_API *uvp_err_handler) (\r
- IN const ib_async_event_rec_t* const p_err_rec );\r
-\r
-/*\r
-* DESCRIPTION\r
-* uvp_err_handler() is an optional error handler implemented by vendor.\r
-* If the handler is provided, UAL will notify asynchronous errors for\r
-* resources (e.g QP/CQ errors). Vendor could do any tracking as needed.\r
-*\r
-* PARAMETERS\r
-* p_err_rec\r
-* [in ] On input, the error record contains the code for resource error.\r
-* The context is as appropriate for the resource. The vendor's\r
-* error handler could take appropriate action based on the type\r
-* of error and the context provided. The following table\r
-* provides how to interpret the context based on the error code.\r
-* Update for any more error code.\r
-* -----------------------------------\r
-* Error Context\r
-* -----------------------------------\r
-* QPERROR ib_qp_handle_t\r
-* CQERROR ib_cq_handle_t\r
-*\r
-* RETURN VALUE\r
-* NONE\r
-*\r
-* PORTABILITY\r
-* User mode.\r
-*\r
-* SEE ALSO\r
-*\r
-********/\r
-\r
/********/\r
\r
/****s* user-mode Verbs/uvp_interface_t\r
uvp_pre_detach_mcast pre_detach_mcast;\r
uvp_post_detach_mcast_t post_detach_mcast;\r
\r
- /*\r
- * Error notification\r
- * If the vendor provides these functions, UAL will\r
- * invoke these functions when a QP/CQ error is reported by AL.\r
- *\r
- */\r
- uvp_err_handler err_handler;\r
-\r
} uvp_interface_t;\r
\r
/********/\r