2 * Copyright (c) 2005 SilverStorm Technologies. All rights reserved.
\r
3 * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
\r
5 * This software is available to you under the OpenIB.org BSD license
\r
8 * Redistribution and use in source and binary forms, with or
\r
9 * without modification, are permitted provided that the following
\r
10 * conditions are met:
\r
12 * - Redistributions of source code must retain the above
\r
13 * copyright notice, this list of conditions and the following
\r
16 * - Redistributions in binary form must reproduce the above
\r
17 * copyright notice, this list of conditions and the following
\r
18 * disclaimer in the documentation and/or other materials
\r
19 * provided with the distribution.
\r
21 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
\r
22 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
\r
23 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
\r
24 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
\r
25 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
\r
26 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
\r
27 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
\r
35 #ifndef __IB_UAL_IOCTL_H__
\r
36 #define __IB_UAL_IOCTL_H__
\r
38 #include <complib/cl_types.h>
\r
39 #include <iba/ib_types.h>
\r
40 #include <iba/ib_ci.h>
\r
41 #include <iba/ib_al.h>
\r
50 * ual_close_ca_ioctl:
\r
52 * It is sufficient to pass the ca handle to the kernel proxy on close_ca
\r
53 * The UAL context for this CA instance maintains the application callback
\r
54 * So, when the proxy notifies for a close_ca_callback, we know which
\r
55 * app callback to call
\r
60 /****s* User-mode Access Layer/ual_bind_file_ioctl_t
\r
62 * ual_bind_file_ioctl_t
\r
65 * IOCTL structure containing the input and output parameters for
\r
66 * binding a file handle to an existing proxy context.
\r
70 typedef struct _ual_bind_file_ioctl
\r
72 void* __ptr64 h_file;
\r
74 } ual_bind_file_ioctl_t;
\r
78 * File handle from the user-mode process intended for asynchronous requests.
\r
79 * The IOCTL code will specify the type of asynchronous requests to be
\r
80 * performed on this file handle.
\r
88 /****s* User-mode Access Layer/ual_get_uvp_name_t
\r
90 * ual_get_uvp_name_t
\r
93 * IOCTL structure containing the input and output parameters for
\r
94 * getting the user library information.
\r
98 typedef union _ual_get_uvp_name
\r
100 struct _ual_get_uvp_name_in
\r
102 ib_net64_t ca_guid;
\r
105 struct _ual_get_uvp_name_out
\r
107 ib_api_status_t status;
\r
108 char uvp_lib_name[MAX_LIB_NAME];
\r
112 } ual_get_uvp_name_ioctl_t;
\r
116 * The GUID of the channel adapter
\r
119 * Status of the operation
\r
122 * The vendor's library name associated with the CA
\r
132 /****s* User-mode Access Layer/ual_open_ca_ioctl_t
\r
134 * ual_open_ca_ioctl_t
\r
137 * IOCTL structure containing the input and output parameters for
\r
142 typedef union _ual_open_ca_ioctl
\r
144 struct _ual_open_ca_ioctl_in
\r
146 ci_umv_buf_t umv_buf;
\r
148 void* __ptr64 context;
\r
152 struct _ual_open_ca_ioctl_out
\r
154 ci_umv_buf_t umv_buf;
\r
155 ib_api_status_t status;
\r
160 } ual_open_ca_ioctl_t;
\r
164 * Opaque to IBAL buffer descriptor to allow the user-mode HCA library to
\r
165 * exchange private information with the kernel-mode HCA driver.
\r
168 * The GUID of the channel adapter to open.
\r
171 * A caller-specified context to associate with this opened instance
\r
172 * of the channel adapter. This context is returned to the user when
\r
173 * invoking asynchronous callbacks referencing this channel adapter.
\r
176 * Returns the status from the HCA driver to the user-mode HCA library,
\r
177 * along with any vendor specific output information.
\r
180 * Status of the operation
\r
183 * On return from IOCTL, contains the CA Handle from AL.
\r
188 /****s* User-mode Access Layer/ual_query_ca_ioctl_t
\r
190 * ual_query_ca_ioctl_t
\r
193 * IOCTL structure containing the input and output parameters for
\r
198 typedef union _ual_query_ca_ioctl
\r
200 struct _ual_query_ca_ioctl_in
\r
202 ci_umv_buf_t umv_buf;
\r
205 ib_ca_attr_t* __ptr64 p_ca_attr;
\r
208 struct _ual_query_ca_ioctl_out
\r
210 ci_umv_buf_t umv_buf;
\r
211 ib_api_status_t status;
\r
216 } ual_query_ca_ioctl_t;
\r
220 * Opaque to IBAL buffer descriptor to allow the user-mode HCA library to
\r
221 * exchange private information with the kernel-mode HCA driver.
\r
224 * The handle to an open instance of CA returned via a
\r
225 * ual_open_ca_ioctl structure.
\r
228 * Specifies the size of the data buffer referenced by the p_ca_attr
\r
232 * A reference to a buffer where the channel adapter attributes,
\r
233 * including port attribute information will be copied. If this parameter
\r
234 * is NULL, then the required buffer size needed to return all of the CA
\r
235 * attribute information is returned through the out.byte_cnt parameter.
\r
236 * The ib_ca_attr_t structure for the specified channel adapter is stored
\r
237 * at the top of this buffer.
\r
240 * Returns the status from the HCA driver to the user-mode HCA library,
\r
241 * along with any vendor specific output information.
\r
244 * Status of the operation
\r
247 * Contains the number of bytes used or needed to copy all CA attributes.
\r
252 /****s* User-mode Access Layer/ual_modify_ca_ioctl_t
\r
254 * ual_modify_ca_ioctl_t
\r
257 * IOCTL structure containing the input and output parameters for
\r
262 typedef union _ual_modify_ca_ioctl
\r
264 struct _ual_modify_ca_ioctl_in
\r
268 ib_ca_mod_t ca_mod;
\r
269 ib_port_attr_mod_t port_attr_mod;
\r
272 struct _ual_modify_ca_ioclt_out
\r
274 ib_api_status_t status;
\r
279 } ual_modify_ca_ioctl_t;
\r
283 * The handle to an open instance of CA (in KAL space).
\r
286 * An index of the port that is being modified.
\r
289 * The mask of the attributes and counters to modify.
\r
292 * List of port attribute information to modify.
\r
295 * Status of the operation
\r
300 /****s* User-mode Access Layer/ual_close_ca_ioctl_t
\r
302 * ual_close_ca_ioctl_t
\r
305 * IOCTL structure containing the input and output parameters for
\r
310 typedef union _ual_close_ca_ioctl
\r
312 struct _ual_close_ca_ioctl_in
\r
317 struct _ual_close_ca_ioctl_out
\r
319 ib_api_status_t status;
\r
323 } ual_close_ca_ioctl_t;
\r
327 * The handle to an open instance of CA (in KAL space).
\r
330 * Status of the operation
\r
333 /****s* User-mode Access Layer/ual_ci_call_ioctl_t
\r
335 * ual_ci_call_ioctl_t
\r
338 * IOCTL structure containing the input and output parameters for
\r
343 typedef union _ual_ci_call_ioctl
\r
345 struct _ual_ci_call_ioctl_in
\r
347 ci_umv_buf_t umv_buf;
\r
350 uint32_t num_handles;
\r
351 uint64_t handle_array[1];
\r
354 struct _ual_ci_call_ioctl_out
\r
356 ci_umv_buf_t umv_buf;
\r
358 ib_api_status_t status;
\r
362 } ual_ci_call_ioctl_t;
\r
366 * Opaque to IBAL buffer descriptor to allow the user-mode HCA library to
\r
367 * exchange private information with the kernel-mode HCA driver.
\r
370 * Contains information on the operation that needs to be performed
\r
371 * by the verbs provider. The proxy marshals the data buffer between
\r
372 * user mode and kernel space.
\r
375 * The handle to an open instance of CA returned by a ual_open_ca_ioctl.
\r
378 * The number of handles in the array at in.p_handle_array.
\r
381 * First entry in an array of handles used for this operation. Ignored if
\r
382 * in.num_handles is zero.
\r
385 * Returns the status from the HCA driver to the user-mode HCA library,
\r
386 * along with any vendor specific output information.
\r
389 * Status of the operation
\r
392 * Contains information on the operation that needs to be performed
\r
393 * by the verbs provider. The proxy marshals the data buffer between
\r
394 * user mode and kernel space.
\r
399 /****s* User-mode Access Layer/ual_alloc_pd_ioctl_t
\r
401 * ual_alloc_pd_ioctl_t
\r
404 * IOCTL structure containing the input and output parameters for
\r
409 typedef union _ual_alloc_pd_ioctl
\r
411 struct _ual_alloc_pd_ioctl_in
\r
413 ci_umv_buf_t umv_buf;
\r
416 void* __ptr64 context;
\r
419 struct _ual_alloc_pd_ioctl_out
\r
421 ci_umv_buf_t umv_buf;
\r
422 ib_api_status_t status;
\r
427 } ual_alloc_pd_ioctl_t;
\r
431 * Opaque to IBAL buffer descriptor to allow the user-mode HCA library to
\r
432 * exchange private information with the kernel-mode HCA driver.
\r
435 * The handle to an open instance of CA returned in a ual_open_ca_ioctl.
\r
438 * UAL's pd context. This context will be provided on destroy callback.
\r
441 * Returns the status from the HCA driver to the user-mode HCA library,
\r
442 * along with any vendor specific output information.
\r
445 * Status of the operation
\r
448 * The handle to the PD to use in further PD-related IOCTLs.
\r
453 /****s* User-mode Access Layer/ual_dealloc_pd_ioctl_t
\r
455 * ual_dealloc_pd_ioctl_t
\r
458 * IOCTL structure containing the input and output parameters for
\r
463 typedef union _ual_dealloc_pd_ioctl
\r
465 struct _ual_dealloc_pd_ioctl_in
\r
470 struct _ual_dealloc_pd_ioctl_out
\r
472 ib_api_status_t status;
\r
476 } ual_dealloc_pd_ioctl_t;
\r
480 * The handle of the PD that is going to be deallocated.
\r
483 * Status of the operation
\r
488 /****s* User-mode Access Layer/ual_create_av_ioctl_t
\r
490 * ual_create_av_ioctl_t
\r
493 * IOCTL structure containing the input and output parameters for
\r
498 typedef union _ual_create_av_ioctl
\r
500 struct _ual_create_av_ioctl_in
\r
502 ci_umv_buf_t umv_buf;
\r
507 struct _ual_create_av_ioctl_out
\r
509 ci_umv_buf_t umv_buf;
\r
510 ib_api_status_t status;
\r
515 } ual_create_av_ioctl_t;
\r
519 * Opaque to IBAL buffer descriptor to allow the user-mode HCA library to
\r
520 * exchange private information with the kernel-mode HCA driver.
\r
523 * The handle to an already allocated PD (in KAL space).
\r
526 * Attributes of the address vector that needs to be created.
\r
529 * Returns the status from the HCA driver to the user-mode HCA library,
\r
530 * along with any vendor specific output information.
\r
533 * Status of the operation.
\r
536 * Handle to the newly created address vector.
\r
541 /****s* User-mode Access Layer/ual_query_av_ioctl_t
\r
543 * ual_query_av_ioctl_t
\r
546 * IOCTL structure containing the input and output parameters for
\r
551 typedef union _ual_query_av_ioctl
\r
553 struct _ual_query_av_ioctl_in
\r
555 ci_umv_buf_t umv_buf;
\r
559 struct _ual_query_av_ioctl_out
\r
561 ci_umv_buf_t umv_buf;
\r
562 ib_api_status_t status;
\r
564 void* __ptr64 pd_context;
\r
568 } ual_query_av_ioctl_t;
\r
572 * Opaque to IBAL buffer descriptor to allow the user-mode HCA library to
\r
573 * exchange private information with the kernel-mode HCA driver.
\r
576 * A handle to an existing address vector.
\r
579 * Returns the status from the HCA driver to the user-mode HCA library,
\r
580 * along with any vendor specific output information.
\r
583 * Status of the operation.
\r
586 * Attributes of the address vector.
\r
589 * Context associated with the PD when created.
\r
594 /****s* User-mode Access Layer/ual_modify_av_ioctl_t
\r
596 * ual_modify_av_ioctl_t
\r
599 * IOCTL structure containing the input and output parameters for
\r
604 typedef union _ual_modify_av_ioctl
\r
606 struct _ual_modify_av_ioctl_in
\r
608 ci_umv_buf_t umv_buf;
\r
613 struct _ual_modify_av_ioctl_out
\r
615 ci_umv_buf_t umv_buf;
\r
616 ib_api_status_t status;
\r
620 } ual_modify_av_ioctl_t;
\r
624 * Opaque to IBAL buffer descriptor to allow the user-mode HCA library to
\r
625 * exchange private information with the kernel-mode HCA driver.
\r
628 * A handle to an existing address vector.
\r
631 * The requested attributes to be used for modifying the address vector.
\r
634 * Returns the status from the HCA driver to the user-mode HCA library,
\r
635 * along with any vendor specific output information.
\r
638 * Status of the operation
\r
643 /****s* User-mode Access Layer/ual_destroy_av_ioctl_t
\r
645 * ual_destroy_av_ioctl_t
\r
648 * IOCTL structure containing the input and output parameters for
\r
653 typedef union _ual_destroy_av_ioctl
\r
655 struct _ual_destroy_av_ioctl_in
\r
660 struct _ual_destroy_av_ioctl_out
\r
662 ib_api_status_t status;
\r
666 } ual_destroy_av_ioctl_t;
\r
670 * A handle to an existing address vector.
\r
673 * Status of the operation.
\r
678 /****s* User-mode Access Layer/ual_create_qp_ioctl_t
\r
680 * ual_create_qp_ioctl_t
\r
683 * IOCTL structure containing the input and output parameters for
\r
688 typedef union _ual_create_qp_ioctl
\r
690 struct _ual_create_qp_ioctl_in
\r
692 ci_umv_buf_t umv_buf;
\r
694 ib_qp_create_t qp_create;
\r
695 void* __ptr64 context;
\r
696 boolean_t ev_notify;
\r
699 struct _ual_create_qp_ioctl_out
\r
701 ci_umv_buf_t umv_buf;
\r
702 ib_api_status_t status;
\r
708 } ual_create_qp_ioctl_t;
\r
712 * Opaque to IBAL buffer descriptor to allow the user-mode HCA library to
\r
713 * exchange private information with the kernel-mode HCA driver.
\r
716 * Protection domain on which to create the QP.
\r
719 * Attributes necessary for creating the QP.
\r
722 * UAL's qp context that needs to be returned on a callback.
\r
725 * Boolean indicating whether asynchronous events should be
\r
726 * forwarded to user-mode.
\r
729 * Returns the status from the HCA driver to the user-mode HCA library,
\r
730 * along with any vendor specific output information.
\r
733 * Status of the operation.
\r
736 * Actual attributes of the newly created QP.
\r
739 * Handle for the newly created QP.
\r
744 /****s* User-mode Access Layer/ual_modify_qp_ioctl_t
\r
746 * ual_modify_qp_ioctl_t
\r
749 * IOCTL structure containing the input and output parameters for
\r
754 typedef union _ual_modify_qp_ioctl
\r
756 struct _ual_modify_qp_ioctl_in
\r
758 ci_umv_buf_t umv_buf;
\r
760 ib_qp_mod_t modify_attr;
\r
763 struct _ual_modify_qp_ioctl_out
\r
765 ci_umv_buf_t umv_buf;
\r
766 ib_api_status_t status;
\r
767 //ib_qp_query_t query_attr; // Not returned by AL
\r
771 } ual_modify_qp_ioctl_t;
\r
775 * Opaque to IBAL buffer descriptor to allow the user-mode HCA library to
\r
776 * exchange private information with the kernel-mode HCA driver.
\r
779 * A handle to an existing Queue Pair.
\r
782 * Attributes used for modifying the QP.
\r
785 * Returns the status from the HCA driver to the user-mode HCA library,
\r
786 * along with any vendor specific output information.
\r
789 * Status of the operation.
\r
792 * On return from the ioctl, contains the actual attributes of
\r
793 * the QP just modified.
\r
798 /****s* User-mode Access Layer/ual_query_qp_ioctl_t
\r
800 * ual_query_qp_ioctl_t
\r
803 * IOCTL structure containing the input and output parameters for
\r
808 typedef union _ual_query_qp_ioctl
\r
810 struct _ual_query_qp_ioctl_in
\r
812 ci_umv_buf_t umv_buf;
\r
816 struct _ual_query_qp_ioctl_out
\r
818 ci_umv_buf_t umv_buf;
\r
819 ib_api_status_t status;
\r
824 } ual_query_qp_ioctl_t;
\r
828 * Opaque to IBAL buffer descriptor to allow the user-mode HCA library to
\r
829 * exchange private information with the kernel-mode HCA driver.
\r
832 * Handle to the QP whose attributes to query.
\r
835 * Returns the status from the HCA driver to the user-mode HCA library,
\r
836 * along with any vendor specific output information.
\r
839 * Status of the operation.
\r
842 * Attributes of the QP.
\r
847 /****s* User-mode Access Layer/ual_destroy_qp_ioctl_t
\r
849 * ual_destroy_qp_ioctl_t
\r
852 * IOCTL structure containing the input and output parameters for
\r
857 typedef union _ual_destroy_qp_ioctl
\r
859 struct _ual_destroy_qp_ioctl_in
\r
864 struct _ual_destroy_qp_ioctl_out
\r
866 ib_api_status_t status;
\r
870 } ual_destroy_qp_ioctl_t;
\r
874 * Handle of the QP that needs to be destroyed.
\r
877 * Status of the operation.
\r
882 /****s* User-mode Access Layer/ual_create_cq_ioctl_t
\r
884 * ual_create_cq_ioctl_t
\r
887 * IOCTL structure containing the input and output parameters for
\r
892 typedef union _ual_create_cq_ioctl
\r
894 struct _ual_create_cq_ioctl_in
\r
896 ci_umv_buf_t umv_buf;
\r
898 void* __ptr64 h_wait_obj;
\r
899 void* __ptr64 context;
\r
901 boolean_t ev_notify;
\r
904 struct _ual_create_cq_ioctl_out
\r
906 ci_umv_buf_t umv_buf;
\r
907 ib_api_status_t status;
\r
913 } ual_create_cq_ioctl_t;
\r
917 * Opaque to IBAL buffer descriptor to allow the user-mode HCA library to
\r
918 * exchange private information with the kernel-mode HCA driver.
\r
921 * CA handle on which to create the CQ.
\r
924 * Attributes necessary for creating the cq.
\r
927 * UAL's cq context that needs to be returned on a callback.
\r
930 * Boolean indicating whether asynchronous events should be
\r
931 * forwared to user-mode.
\r
934 * Returns the status from the HCA driver to the user-mode HCA library,
\r
935 * along with any vendor specific output information.
\r
938 * Status of the operation.
\r
941 * Handle to the newly created CQ.
\r
944 * Actual size of the newly created CQ.
\r
949 /****s* User-mode Access Layer/ual_modify_cq_ioctl_t
\r
951 * ual_modify_cq_ioctl_t
\r
954 * IOCTL structure containing the input and output parameters for
\r
959 typedef union _ual_modify_cq_ioctl
\r
961 struct _ual_modify_cq_ioctl_in
\r
963 ci_umv_buf_t umv_buf;
\r
968 struct _ual_modify_cq_ioctl_out
\r
970 ci_umv_buf_t umv_buf;
\r
971 ib_api_status_t status;
\r
976 } ual_modify_cq_ioctl_t;
\r
980 * Opaque to IBAL buffer descriptor to allow the user-mode HCA library to
\r
981 * exchange private information with the kernel-mode HCA driver.
\r
984 * A handle to the CQ to modify.
\r
987 * The requested new size of the CQ.
\r
990 * Returns the status from the HCA driver to the user-mode HCA library,
\r
991 * along with any vendor specific output information.
\r
994 * Status of the operation.
\r
997 * The actual size of the CQ.
\r
1002 /****s* User-mode Access Layer/ual_query_cq_ioctl_t
\r
1004 * ual_query_cq_ioctl_t
\r
1007 * IOCTL structure containing the input and output parameters for
\r
1012 typedef union _ual_query_cq_ioctl
\r
1014 struct _ual_query_cq_ioctl_in
\r
1016 ci_umv_buf_t umv_buf;
\r
1020 struct _ual_query_cq_ioctl_out
\r
1022 ci_umv_buf_t umv_buf;
\r
1023 ib_api_status_t status;
\r
1028 } ual_query_cq_ioctl_t;
\r
1032 * Opaque to IBAL buffer descriptor to allow the user-mode HCA library to
\r
1033 * exchange private information with the kernel-mode HCA driver.
\r
1036 * A handle to an existing CQ.
\r
1039 * Returns the status from the HCA driver to the user-mode HCA library,
\r
1040 * along with any vendor specific output information.
\r
1043 * Status of the operation.
\r
1046 * The size of the CQ.
\r
1051 /****s* User-mode Access Layer/ual_destroy_cq_ioctl_t
\r
1053 * ual_destroy_cq_ioctl_t
\r
1056 * IOCTL structure containing the input and output parameters for
\r
1061 typedef union _ual_destroy_cq_ioctl
\r
1063 struct _ual_destroy_cq_ioctl_in
\r
1068 struct _ual_destroy_cq_ioctl_out
\r
1070 ib_api_status_t status;
\r
1074 } ual_destroy_cq_ioctl_t;
\r
1078 * Handle of the cq that needs to be destroyed.
\r
1081 * Status of the operation.
\r
1086 /****s* User-mode Access Layer/ual_reg_mem_ioctl_t
\r
1088 * ual_reg_mem_ioctl_t
\r
1091 * IOCTL structure containing the input and output parameters for
\r
1096 typedef union _ual_reg_mem_ioctl
\r
1098 struct _ual_reg_mem_ioctl_in
\r
1101 ib_mr_create_t mem_create;
\r
1104 struct _ual_reg_mem_ioctl_out
\r
1106 ib_api_status_t status;
\r
1113 } ual_reg_mem_ioctl_t;
\r
1117 * Handle to the protection domain on which to register the memory.
\r
1120 * Information for registering the memory region.
\r
1123 * Status of the operation.
\r
1126 * LKey value returned by verb.
\r
1129 * RKey value returned by verb.
\r
1132 * Handle to the registered memory region.
\r
1137 /****s* User-mode Access Layer/ual_query_mr_ioctl_t
\r
1139 * ual_query_mr_ioctl_t
\r
1142 * IOCTL structure containing the input and output parameters for
\r
1147 typedef union _ual_query_mr_ioctl
\r
1149 struct _ual_query_mr_ioctl_in
\r
1154 struct _ual_query_mr_ioctl_out
\r
1156 ib_api_status_t status;
\r
1157 ib_mr_attr_t attr;
\r
1161 } ual_query_mr_ioctl_t;
\r
1165 * A handle to a registered memory region.
\r
1168 * Status of the operation.
\r
1171 * Attributes of the registered memory region.
\r
1176 /****s* User-mode Access Layer/ual_rereg_mem_ioctl_t
\r
1178 * ual_rereg_mem_ioctl_t
\r
1181 * IOCTL structure containing the input and output parameters for
\r
1186 typedef union _ual_rereg_mem_ioctl
\r
1188 struct _ual_rereg_mem_ioctl_in
\r
1191 ib_mr_mod_t mem_mod_mask;
\r
1192 ib_mr_create_t mem_create;
\r
1196 struct _ual_rereg_mem_ioctl_out
\r
1198 ib_api_status_t status;
\r
1204 } ual_rereg_mem_ioctl_t;
\r
1208 * A handle to a registered memory region that is being modified.
\r
1211 * The attributes to use when modifying the memory region.
\r
1214 * Information to use for modifying the memory region. Required only
\r
1215 * for changes other than the PD.
\r
1218 * PD Handle for changing protection domains.
\r
1221 * Status of the operation.
\r
1224 * LKey of the memory region.
\r
1227 * RKey of the memory region.
\r
1232 /****s* User-mode Access Layer/ual_reg_shared_ioctl_t
\r
1234 * ual_reg_shared_ioctl_t
\r
1237 * IOCTL structure containing the input and output parameters for
\r
1242 typedef union _ual_reg_shared_ioctl
\r
1244 struct _ual_reg_shared_ioctl_in
\r
1248 ib_access_t access_ctrl;
\r
1252 struct _ual_reg_shared_ioctl_out
\r
1254 ib_api_status_t status;
\r
1258 uint64_t h_new_mr;
\r
1262 } ual_reg_shared_ioctl_t;
\r
1266 * A handle to the existing registered memory region.
\r
1269 * A handle to the PD on which memory is being registered.
\r
1272 * Access control for the new memory region.
\r
1275 * Requested virtual address.
\r
1278 * Status of the operation.
\r
1281 * Actual virtual address of the registered region.
\r
1284 * LKey of the memory region.
\r
1287 * RKey of the memory region.
\r
1290 * Handle to the registered memory region.
\r
1295 /****s* User-mode Access Layer/ual_dereg_mr_ioctl_t
\r
1297 * ual_dereg_mr_ioctl_t
\r
1300 * IOCTL structure containing the input and output parameters for
\r
1305 typedef union _ual_dereg_mr_ioctl
\r
1307 struct _ual_dereg_mr_ioctl_in
\r
1312 struct _ual_dereg_mr_ioctl_out
\r
1314 ib_api_status_t status;
\r
1318 } ual_dereg_mr_ioctl_t;
\r
1322 * A handle to a registered memory region.
\r
1325 * Status of the operation.
\r
1330 /****s* User-mode Access Layer/ual_create_mw_ioctl_t
\r
1332 * ual_create_mw_ioctl_t
\r
1335 * IOCTL structure containing the input and output parameters for
\r
1340 typedef union _ual_create_mw_ioctl
\r
1342 struct _ual_create_mw_ioctl_in
\r
1344 ci_umv_buf_t umv_buf;
\r
1348 struct _ual_create_mw_ioctl_out
\r
1350 ci_umv_buf_t umv_buf;
\r
1351 ib_api_status_t status;
\r
1357 } ual_create_mw_ioctl_t;
\r
1361 * Opaque to IBAL buffer descriptor to allow the user-mode HCA library to
\r
1362 * exchange private information with the kernel-mode HCA driver.
\r
1365 * A handle to the protection domain on which the memory window should
\r
1369 * Returns the status from the HCA driver to the user-mode HCA library,
\r
1370 * along with any vendor specific output information.
\r
1373 * Status of the operation.
\r
1376 * RKey associated with the memory window.
\r
1379 * Handle to the newly created MW.
\r
1384 /****s* User-mode Access Layer/ual_query_mw_ioctl_t
\r
1386 * ual_query_mw_ioctl_t
\r
1389 * IOCTL structure containing the input and output parameters for
\r
1394 typedef union _ual_query_mw_ioctl
\r
1396 struct _ual_query_mw_ioctl_in
\r
1398 ci_umv_buf_t umv_buf;
\r
1402 struct _ual_query_mw_ioctl_out
\r
1404 ci_umv_buf_t umv_buf;
\r
1405 ib_api_status_t status;
\r
1406 void* __ptr64 pd_context;
\r
1411 } ual_query_mw_ioctl_t;
\r
1415 * Opaque to IBAL buffer descriptor to allow the user-mode HCA library to
\r
1416 * exchange private information with the kernel-mode HCA driver.
\r
1419 * A handle to an existing memory window.
\r
1422 * Returns the status from the HCA driver to the user-mode HCA library,
\r
1423 * along with any vendor specific output information.
\r
1426 * Status of the operation.
\r
1429 * This user-mode context for the protection domain
\r
1430 * associated with the memory window.
\r
1433 * RKey associated with the memory window.
\r
1438 /****s* User-mode Access Layer/ual_bind_mw_ioctl_t
\r
1440 * ual_bind_mw_ioctl_t
\r
1443 * IOCTL structure containing the input and output parameters for
\r
1448 typedef union _ual_bind_mw_ioctl
\r
1450 struct _ual_bind_mw_ioctl_in
\r
1454 ib_bind_wr_t mw_bind;
\r
1457 struct _ual_bind_mw_ioctl_out
\r
1459 ib_api_status_t status;
\r
1464 } ual_bind_mw_ioctl_t;
\r
1468 * A handle to an existing memory window.
\r
1471 * The qp handle to post the bind request.
\r
1477 * Status of the operation.
\r
1480 * RKey for the memory window.
\r
1485 /****s* User-mode Access Layer/ual_destroy_mw_ioctl_t
\r
1487 * ual_destroy_mw_ioctl_t
\r
1490 * IOCTL structure containing the input and output parameters for
\r
1495 typedef union _ual_destroy_mw_ioctl
\r
1497 struct _ual_destroy_mw_ioctl_in
\r
1502 struct _ual_destroy_mw_ioctl_out
\r
1504 ib_api_status_t status;
\r
1508 } ual_destroy_mw_ioctl_t;
\r
1512 * A handle to an existing memory window.
\r
1515 * Status of the operation
\r
1520 /****s* User-mode Access Layer/ual_post_send_ioctl_t
\r
1522 * ual_post_send_ioctl_t
\r
1525 * IOCTL structure containing the input and output parameters for
\r
1530 typedef union _ual_post_send_ioctl
\r
1532 struct _ual_post_send_ioctl_in
\r
1537 ib_send_wr_t send_wr[1];
\r
1538 /* Additional work requests follow, followed by data segments. */
\r
1541 struct _ual_post_send_ioctl_out
\r
1543 ib_api_status_t status;
\r
1544 uint32_t failed_cnt;
\r
1548 } ual_post_send_ioctl_t;
\r
1552 * A handle to QP where the work request is being posted.
\r
1555 * Number of work request items in the array of work requests.
\r
1558 * Number of data segments following the array of work requests.
\r
1561 * First work request in the array of work requests being posted.
\r
1564 * Status of the operation.
\r
1567 * Number of work request that failed.
\r
1572 /****s* User-mode Access Layer/ual_post_recv_ioctl_t
\r
1574 * ual_post_recv_ioctl_t
\r
1577 * IOCTL structure containing the input and output parameters for
\r
1582 typedef union _ual_post_recv_ioctl
\r
1584 struct _ual_post_recv_ioctl_in
\r
1589 ib_recv_wr_t recv_wr[1];
\r
1590 /* Additional work requests follow, followed by data segments. */
\r
1593 struct _ual_post_recv_ioctl_out
\r
1595 ib_api_status_t status;
\r
1596 uint32_t failed_cnt;
\r
1600 } ual_post_recv_ioctl_t;
\r
1604 * A handle to QP where the work request is being posted.
\r
1607 * Number of work request items in the array of work requests.
\r
1610 * Number of data segments following the array of work requests.
\r
1613 * First work request in the array of work requests being posted.
\r
1616 * Status of the operation.
\r
1619 * Number of work request that failed.
\r
1624 /****s* User-mode Access Layer/ual_peek_cq_ioctl_t
\r
1626 * ual_peek_cq_ioctl_t
\r
1629 * IOCTL structure containing the input and output parameters for
\r
1634 typedef union _ual_peek_cq_ioctl
\r
1636 struct _ual_peek_cq_ioctl_in
\r
1641 struct _ual_peek_cq_ioctl_out
\r
1643 ib_api_status_t status;
\r
1648 } ual_peek_cq_ioctl_t;
\r
1652 * A handle to a CQ.
\r
1655 * Status of the operation.
\r
1658 * The number of completion queue entries currently on the CQ.
\r
1663 /****s* User-mode Access Layer/ual_poll_cq_ioctl_t
\r
1665 * ual_poll_cq_ioctl_t
\r
1668 * IOCTL structure containing the input and output parameters for
\r
1673 typedef union _ual_poll_cq_ioctl
\r
1675 struct _ual_poll_cq_ioctl_in
\r
1681 struct _ual_poll_cq_ioctl_out
\r
1683 ib_api_status_t status;
\r
1686 /* Additional WC's follow. */
\r
1689 } ual_poll_cq_ioctl_t;
\r
1693 * A handle to cq that is going to be polled for completions.
\r
1696 * Number of work completions in the output array.
\r
1699 * Status of the operation.
\r
1702 * Number of work completions polled.
\r
1705 * First work completion in the array to use for polling.
\r
1710 /****s* User-mode Access Layer/ual_rearm_cq_ioctl_t
\r
1712 * ual_rearm_cq_ioctl_t
\r
1715 * IOCTL structure containing the input and output parameters for
\r
1720 typedef union _ual_rearm_cq_ioctl
\r
1722 struct _ual_rearm_cq_ioctl_in
\r
1725 boolean_t solicited;
\r
1728 struct _ual_rearm_cq_ioctl_out
\r
1730 ib_api_status_t status;
\r
1734 } ual_rearm_cq_ioctl_t;
\r
1738 * A handle to a CQ.
\r
1741 * Flag for rearm CQ.
\r
1744 * Status of the operation.
\r
1749 /****s* User-mode Access Layer/ual_rearm_n_cq_ioctl_t
\r
1751 * ual_rearm_n_cq_ioctl_t
\r
1754 * IOCTL structure containing the input and output parameters for
\r
1759 typedef union _ual_rearm_n_cq_ioctl
\r
1761 struct _ual_rearm_n_cq_ioctl_in
\r
1767 struct _ual_rearm_n_cq_ioctl_out
\r
1769 ib_api_status_t status;
\r
1773 } ual_rearm_n_cq_ioctl_t;
\r
1777 * A handle to a CQ.
\r
1780 * Rearm the CQ to signal when the next N completions are added.
\r
1783 * Status of the operation.
\r
1788 /****s* User-mode Access Layer/ual_attach_mcast_ioctl_t
\r
1790 * ual_attach_mcast_ioctl_t
\r
1793 * IOCTL structure containing the input and output parameters for
\r
1794 * verbs attach multicast call.
\r
1798 typedef union _ual_attach_mcast_ioctl
\r
1800 struct _ual_attach_mcast_ioctl_in
\r
1802 ci_umv_buf_t umv_buf;
\r
1808 struct _ual_attach_mcast_ioctl_out
\r
1810 ci_umv_buf_t umv_buf;
\r
1811 ib_api_status_t status;
\r
1812 uint64_t h_attach;
\r
1816 } ual_attach_mcast_ioctl_t;
\r
1820 * Opaque to IBAL buffer descriptor to allow the user-mode HCA library to
\r
1821 * exchange private information with the kernel-mode HCA driver.
\r
1824 * Handle to the QP that is joining the multicast group.
\r
1827 * Multicast GID address for this multicast group.
\r
1830 * Multicast LID for this multicast group.
\r
1833 * Returns the status from the HCA driver to the user-mode HCA library,
\r
1834 * along with any vendor specific output information.
\r
1837 * Status of the operation.
\r
1840 * Multicast group handle.
\r
1845 /****s* User-mode Access Layer/ual_detach_mcast_ioctl_t
\r
1847 * ual_detach_mcast_ioctl_t
\r
1850 * IOCTL structure containing the input and output parameters for
\r
1851 * verbs detach call.
\r
1855 typedef union _ual_detach_mcast_ioctl
\r
1857 struct _ual_detach_mcast_ioctl_in
\r
1859 uint64_t h_attach;
\r
1862 struct _ual_detach_mcast_ioctl_out
\r
1864 ib_api_status_t status;
\r
1868 } ual_detach_mcast_ioctl_t;
\r
1872 * A handle to the multicast group.
\r
1875 * Status of the operation.
\r
1880 /****s* User-mode Access Layer/ual_reg_mad_svc_ioctl_t
\r
1882 * ual_reg_mad_svc_ioctl_t
\r
1885 * IOCTL structure containing the input and output parameters for
\r
1890 typedef union _ual_reg_mad_svc_ioctl
\r
1892 struct _ual_reg_mad_svc_ioctl_in
\r
1895 ib_mad_svc_t mad_svc;
\r
1898 struct _ual_reg_mad_svc_ioctl_out
\r
1900 ib_api_status_t status;
\r
1901 uint64_t h_mad_svc;
\r
1905 } ual_reg_mad_svc_ioctl_t;
\r
1909 * Handle to the special QP or MAD QP.
\r
1912 * Mad service definition.
\r
1915 * Status of the operation.
\r
1918 * Handle to the mad service.
\r
1923 /****s* User-mode Access Layer/ual_dereg_mad_svc_ioctl_t
\r
1925 * ual_dereg_mad_svc_ioctl_t
\r
1928 * IOCTL structure containing the input and output parameters for
\r
1929 * ib_dereg_mad_svc
\r
1933 typedef union _ual_dereg_mad_svc_ioctl
\r
1935 struct _ual_dereg_mad_svc_ioctl_in
\r
1937 uint64_t h_mad_svc;
\r
1940 struct _ual_dereg_mad_svc_ioctl_out
\r
1942 ib_api_status_t status;
\r
1946 } ual_dereg_mad_svc_ioctl_t;
\r
1950 * Handle to the mad service.
\r
1953 * Status of the operation.
\r
1958 /****s* User-mode Access Layer/ual_reg_mad_pool_ioctl_t
\r
1960 * ual_reg_mad_pool_ioctl_t
\r
1963 * IOCTL structure containing the input and output parameters for
\r
1964 * registering a mad pool to be used with special qp. This ioctl
\r
1965 * will result in user-mode pool registered. Additionally,
\r
1966 * the kernel proxy will allocate a kernel mad pool and register it
\r
1967 * so that later mad_sends will have the appropriate pool in kernel.
\r
1971 typedef union _ual_reg_mad_pool_ioctl
\r
1973 struct _ual_reg_mad_pool_ioctl_in
\r
1978 struct _ual_reg_mad_pool_ioctl_out
\r
1980 ib_api_status_t status;
\r
1981 uint64_t pool_key;
\r
1985 } ual_reg_mad_pool_ioctl_t;
\r
1989 * PD associated with the pool
\r
1992 * Status of the operation.
\r
1995 * Pool key to the mad pool in kernel space
\r
2000 /****s* User-mode Access Layer/ual_dereg_mad_pool_ioctl_t
\r
2002 * ual_dereg_mad_pool_ioctl_t
\r
2005 * IOCTL structure containing the input and output parameters for
\r
2006 * deregistering a mad pool to be used with special qp.
\r
2007 * The kernel proxy will deregister and destroy the mad pool
\r
2008 * created on behalf of the user process.
\r
2012 typedef union _ual_dereg_mad_pool_ioctl
\r
2014 struct _ual_dereg_mad_pool_ioctl_in
\r
2016 uint64_t pool_key;
\r
2019 struct _ual_dereg_mad_pool_ioctl_out
\r
2021 ib_api_status_t status;
\r
2025 } ual_dereg_mad_pool_ioctl_t;
\r
2029 * Pool key to the mad pool in kernel space.
\r
2032 * Status of the operation
\r
2037 /****s* User-mode Access Layer/ual_send_mad_ioctl_t
\r
2039 * ual_send_mad_ioctl_t
\r
2042 * IOCTL structure containing the input and output parameters for
\r
2047 typedef union _ual_send_mad_ioctl
\r
2049 struct _ual_send_mad_ioctl_in
\r
2051 uint64_t h_mad_svc;
\r
2052 uint64_t pool_key;
\r
2054 ib_mad_element_t* __ptr64 p_mad_element;
\r
2056 void* __ptr64* __ptr64 ph_proxy;
\r
2059 struct _ual_send_mad_ioctl_out
\r
2061 ib_api_status_t status;
\r
2065 } ual_send_mad_ioctl_t;
\r
2069 * Handle to the mad service.
\r
2072 * Pool key associated with the pool in kernel space.
\r
2075 * handle to address vector of MAD.
\r
2077 * in.p_mad_element
\r
2078 * Pointer to the user-mode MAD element. The proxy marshals this data.
\r
2081 * size of MAD buffer to send.
\r
2084 * Location to which to write the context used to cancel the MAD.
\r
2087 * Status of the operation.
\r
2092 /****s* User-mode Access Layer/ual_cancel_mad_ioctl_t
\r
2094 * ual_cancel_mad_ioctl_t
\r
2097 * IOCTL structure containing the input and output parameters for
\r
2102 typedef union _ual_cancel_mad_ioctl
\r
2104 struct _ual_cancel_mad_ioctl_in
\r
2106 uint64_t h_mad_svc;
\r
2107 void* __ptr64 h_proxy_element;
\r
2110 struct _ual_cancel_mad_ioctl_out
\r
2112 ib_api_status_t status;
\r
2116 } ual_cancel_mad_ioctl_t;
\r
2120 * contains the handle to the mad service
\r
2123 * this references the handle to the sent MAD operation.
\r
2126 * Status of the operation.
\r
2131 /****s* User-mode Access Layer/ual_spl_qp_ioctl_t
\r
2133 * ual_spl_qp_ioctl_t
\r
2136 * IOCTL structure containing the input and output parameters to get
\r
2137 * the alias qp from KAL.
\r
2141 typedef union _ual_spl_qp_ioctl
\r
2143 struct _ual_spl_qp_ioctl_in
\r
2145 ci_umv_buf_t umv_buf;
\r
2147 ib_net64_t port_guid;
\r
2148 ib_qp_create_t qp_create;
\r
2149 void* __ptr64 context;
\r
2152 struct _ual_spl_qp_ioctl_out
\r
2154 ci_umv_buf_t umv_buf;
\r
2155 ib_api_status_t status;
\r
2160 } ual_spl_qp_ioctl_t;
\r
2164 * Protection domain for the special qp.
\r
2167 * Port GUID on which to allocate the special QP.
\r
2170 * Special QP creation parameters.
\r
2173 * Context to associate with the QP, to be used in any notifications.
\r
2176 * Status of the operation.
\r
2179 * Handle to the special QP.
\r
2184 /****s* User-mode Access Layer/ual_mad_recv_ioctl_t
\r
2186 * ual_mad_recv_ioctl_t
\r
2189 * IOCTL structure containing the input and output parameters to get
\r
2190 * the mad_element information upon receiving MAD.
\r
2194 typedef union _ual_mad_recv_ioctl
\r
2196 struct _ual_mad_recv_comp_ioctl_in
\r
2199 ib_mad_element_t* __ptr64 p_user_mad;
\r
2200 ib_mad_t* __ptr64 p_mad_buf;
\r
2201 ib_grh_t* __ptr64 p_grh;
\r
2204 struct _ual_mad_recv_comp_ioctl_out
\r
2206 ib_api_status_t status;
\r
2210 } ual_mad_recv_ioctl_t;
\r
2214 * Received MAD handle handed to usermode in the MAD recv notification.
\r
2217 * Pointer to a user-mode mad element.
\r
2220 * Pointer to the MAD element's user-mode buffer.
\r
2223 * Ponter to the MAD element's user-mode GRH buffer.
\r
2226 * Status of the operation.
\r
2231 /****s* User-mode Access Layer/ual_local_mad_ioctl_t
\r
2233 * ual_local_mad_ioctl_t
\r
2236 * IOCTL structure containing the input and output parameters for
\r
2241 typedef union _ual_local_mad_ioctl
\r
2243 struct _ual_local_mad_ioctl_in
\r
2247 uint8_t mad_in[MAD_BLOCK_SIZE];
\r
2250 struct _ual_local_mad_ioctl_out
\r
2252 ib_api_status_t status;
\r
2253 uint8_t mad_out[MAD_BLOCK_SIZE];
\r
2257 } ual_local_mad_ioctl_t;
\r
2261 * The handle to an open instance of CA returned via a
\r
2262 * ual_open_ca_ioctl structure.
\r
2264 * Port number this MAD refere to.
\r
2266 * Mad structure from user mode to forward to local HCA.
\r
2269 * Status of the operation.
\r
2271 * Mad structure answer from local HCA for user mode.
\r
2276 /****s* User-mode Access Layer/ual_create_cep_ioctl_t
\r
2278 * ual_create_cep_ioctl_t
\r
2281 * IOCTL structure containing the output parameters to
\r
2286 typedef struct _ual_create_cep_ioctl
\r
2288 ib_api_status_t status;
\r
2291 } ual_create_cep_ioctl_t;
\r
2295 * Status of the operation.
\r
2298 * CID of the created CEP.
\r
2303 /****s* User-mode Access Layer/ual_cep_listen_ioctl_t
\r
2305 * ual_cep_listen_ioctl_t
\r
2308 * IOCTL structure containing the input parameters to
\r
2309 * perform a CM listen request.
\r
2313 typedef struct _ual_cep_listen_ioctl
\r
2316 ib_cep_listen_t cep_listen;
\r
2317 uint8_t compare[IB_REQ_PDATA_SIZE];
\r
2319 } ual_cep_listen_ioctl_t;
\r
2323 * CID of an existing CEP.
\r
2326 * Information used to direct the listen request to match incoming
\r
2327 * connection requests.
\r
2332 /****s* User-mode Access Layer/ual_cm_req_ioctl_t
\r
2334 * ual_cm_req_ioctl_t
\r
2337 * IOCTL structure containing the input and output parameters for
\r
2338 * al_cep_pre_req call.
\r
2342 typedef union _ual_cep_req_ioctl
\r
2344 struct _ual_cep_req_ioctl_in
\r
2347 ib_cm_req_t cm_req;
\r
2348 ib_path_rec_t paths[2];
\r
2349 uint8_t pdata[IB_REQ_PDATA_SIZE];
\r
2350 uint8_t compare[IB_REQ_PDATA_SIZE];
\r
2353 struct _ual_cep_req_ioctl_out
\r
2355 ib_api_status_t status;
\r
2360 } ual_cep_req_ioctl_t;
\r
2364 * CID of the target CEP.
\r
2367 * CM REQ parameters.
\r
2370 * Array of paths, the first being the primary path to use for the REQ.
\r
2373 * Status of the operation
\r
2376 * QP modify paramters for INIT state transition.
\r
2381 /****s* User-mode Access Layer/ual_cep_rep_ioctl_t
\r
2383 * ual_cep_rep_ioctl_t
\r
2386 * IOCTL structure containing the input and output parameters for
\r
2387 * al_cep_pre_rep call.
\r
2391 typedef union _ual_cep_rep_ioctl
\r
2393 struct _ual_cep_rep_ioctl_in
\r
2395 void* __ptr64 context;
\r
2397 ib_cm_rep_t cm_rep;
\r
2398 uint8_t pdata[IB_REP_PDATA_SIZE];
\r
2401 struct _ual_cep_rep_ioctl_out
\r
2403 ib_api_status_t status;
\r
2408 } ual_cep_rep_ioctl_t;
\r
2412 * The cm_req connection handle got on the callback.
\r
2415 * CM REP parameters.
\r
2418 * Status of the operation.
\r
2421 * QP modify paramters for INIT state transition.
\r
2426 /****s* User-mode Access Layer/ual_cep_get_rtr_ioctl_t
\r
2428 * ual_cep_get_rtr_ioctl_t
\r
2431 * IOCTL structure containing the output parameters for
\r
2432 * al_cep_get_rtr_attr call.
\r
2436 typedef struct _ual_cep_get_rtr_ioctl
\r
2438 ib_api_status_t status;
\r
2441 } ual_cep_get_rtr_ioctl_t;
\r
2445 * Status of the operation.
\r
2448 * QP modify paramters for RTR state transition.
\r
2453 /****s* User-mode Access Layer/ual_cep_get_rts_ioctl_t
\r
2455 * ual_cep_get_rts_ioctl_t
\r
2458 * IOCTL structure containing the output parameters for
\r
2459 * al_cep_get_rts_attr call.
\r
2463 typedef struct _ual_cep_get_rts_ioctl
\r
2465 ib_api_status_t status;
\r
2468 } ual_cep_get_rts_ioctl_t;
\r
2472 * Status of the operation.
\r
2475 * QP modify paramters for RTS state transition.
\r
2480 /****s* User-mode Access Layer/ual_cep_rtu_ioctl_t
\r
2482 * ual_cep_rtu_ioctl_t
\r
2485 * IOCTL structure containing the input parameters for
\r
2486 * al_cep_rtu call.
\r
2490 typedef struct _ual_cep_rtu_ioctl
\r
2493 uint8_t pdata_len;
\r
2494 uint8_t pdata[IB_RTU_PDATA_SIZE];
\r
2496 } ual_cep_rtu_ioctl_t;
\r
2500 * The cm_rep connection handle got on the callback.
\r
2503 * Length of private data.
\r
2511 /****s* User-mode Access Layer/ual_cep_rej_ioctl_t
\r
2513 * ual_cep_rej_ioctl_t
\r
2516 * IOCTL structure containing the input parameters for
\r
2521 typedef struct _ual_cep_rej_ioctl
\r
2525 ib_rej_status_t rej_status;
\r
2527 uint8_t pdata_len;
\r
2528 uint8_t ari[IB_ARI_SIZE];
\r
2529 uint8_t pdata[IB_REJ_PDATA_SIZE];
\r
2531 } ual_cep_rej_ioctl_t;
\r
2535 * The CID of the target CEP.
\r
2538 * Rejection status as defined in IB spec.
\r
2541 * Length of the ARI data.
\r
2544 * Length of the private data.
\r
2555 /****s* User-mode Access Layer/ual_cep_handoff_ioctl_t
\r
2557 * ual_cep_handoff_ioctl_t
\r
2560 * IOCTL structure containing the input and output parameters for
\r
2565 typedef union _ual_cep_handoff_ioctl
\r
2567 struct _ual_cep_handoff_ioctl_in
\r
2573 struct _ual_cep_handoff_ioctl_out
\r
2575 ib_api_status_t status;
\r
2579 } ual_cep_handoff_ioctl_t;
\r
2583 * The connection handle got on the callback.
\r
2586 * Service ID to which to handoff the listen.
\r
2589 * Status of the operation
\r
2594 /****s* User-mode Access Layer/ual_cep_mra_ioctl_t
\r
2596 * ual_cep_mra_ioctl_t
\r
2599 * IOCTL structure containing the input parameters for
\r
2604 typedef struct _ual_cep_mra_ioctl
\r
2607 ib_cm_mra_t cm_mra;
\r
2608 uint8_t pdata[IB_MRA_PDATA_SIZE];
\r
2610 } ual_cep_mra_ioctl_t;
\r
2614 * The CID for the target CEP.
\r
2617 * CM MRA parameters.
\r
2622 /****s* User-mode Access Layer/ual_cep_lap_ioctl_t
\r
2624 * ual_cep_lap_ioctl_t
\r
2627 * IOCTL structure containing the input parameters for
\r
2632 typedef struct _ual_cep_lap_ioctl
\r
2635 ib_cm_lap_t cm_lap;
\r
2636 ib_path_rec_t alt_path;
\r
2637 uint8_t pdata[IB_LAP_PDATA_SIZE];
\r
2639 } ual_cep_lap_ioctl_t;
\r
2643 * CM LAP parameters
\r
2646 * Alternate path information.
\r
2651 /****s* User-mode Access Layer/ual_cep_apr_ioctl_t
\r
2653 * ual_cep_apr_ioctl_t
\r
2656 * IOCTL structure containing the input parameters for
\r
2661 typedef union _ual_cep_apr_ioctl
\r
2663 struct _ual_cep_apr_ioctl_in
\r
2666 ib_cm_apr_t cm_apr;
\r
2667 uint8_t apr_info[IB_APR_INFO_SIZE];
\r
2668 uint8_t pdata[IB_APR_PDATA_SIZE];
\r
2672 struct _ual_cep_apr_ioctl_out
\r
2674 ib_api_status_t status;
\r
2679 } ual_cep_apr_ioctl_t;
\r
2683 * The cm_lap connection handle got on the LAP callback.
\r
2686 * CM APR parameters.
\r
2691 /****s* User-mode Access Layer/ual_force_apm_ioctl_t
\r
2693 * ual_force_apm_ioctl_t
\r
2696 * IOCTL structure containing the input and output parameters for
\r
2701 typedef union _ual_force_apm_ioctl
\r
2703 union _ual_force_apm_ioctl_in
\r
2708 struct _ual_force_apm_ioctl_out
\r
2710 ib_api_status_t status;
\r
2714 } ual_force_apm_ioctl_t;
\r
2718 * A handle to the QP to migrate.
\r
2721 * Status of the operation
\r
2726 /****s* User-mode Access Layer/ual_cep_dreq_ioctl_t
\r
2728 * ual_cep_dreq_ioctl_t
\r
2731 * IOCTL structure containing the input parameters for
\r
2736 typedef struct _ual_cep_dreq_ioctl
\r
2739 uint8_t pdata_len;
\r
2740 uint8_t pdata[IB_DREQ_PDATA_SIZE];
\r
2742 } ual_cep_dreq_ioctl_t;
\r
2746 * CM DREQ parameters.
\r
2751 /****s* User-mode Access Layer/ual_cep_drep_ioctl_t
\r
2753 * ual_cep_drep_ioctl_t
\r
2756 * IOCTL structure containing the input and output parameters for
\r
2761 typedef struct _ual_cep_drep_ioctl
\r
2764 ib_cm_drep_t cm_drep;
\r
2765 uint8_t pdata[IB_DREP_PDATA_SIZE];
\r
2767 } ual_cep_drep_ioctl_t;
\r
2771 * The cm_dreq connection handle got on the callback.
\r
2774 * CM DREP parameters.
\r
2779 /****s* User-mode Access Layer/ual_cep_get_timewait_ioctl_t
\r
2781 * ual_cep_get_timewait_ioctl_t
\r
2784 * IOCTL structure containing the output parameters for
\r
2785 * ib_cep_get_timewait
\r
2789 typedef struct _ual_cep_get_timewait_ioctl
\r
2791 ib_api_status_t status;
\r
2792 uint64_t timewait_us;
\r
2794 } ual_cep_get_timewait_ioctl_t;
\r
2798 * Status of the request.
\r
2801 * Timewait value, in microseconds.
\r
2806 /****s* User-mode Access Layer/ual_cep_poll_ioctl_t
\r
2808 * ual_cep_poll_ioctl_t
\r
2811 * IOCTL structure containing the output parameters to
\r
2812 * poll for incoming events on a CEP. The input parameter is the CID.
\r
2816 typedef struct _ual_cep_poll_ioctl
\r
2818 ib_api_status_t status;
\r
2819 void* __ptr64 context;
\r
2821 ib_mad_element_t element;
\r
2823 uint8_t mad_buf[MAD_BLOCK_SIZE];
\r
2825 } ual_cep_poll_ioctl_t;
\r
2829 * Status of the operation.
\r
2832 * For listen requests, CEP information of CEPs created in response
\r
2833 * to incoming REQs.
\r
2836 * Payload of a received MAD (or failed send)
\r
2841 /****s* User-mode Access Layer/ual_reg_shmid_ioctl_t
\r
2843 * ual_reg_shmid_ioctl_t
\r
2846 * IOCTL structure containing the input and output parameters for
\r
2851 typedef union _ual_reg_shmid_ioctl
\r
2853 struct _ual_reg_shmid_ioctl_in
\r
2857 ib_mr_create_t mr_create;
\r
2860 struct _ual_reg_shmid_ioctl_out
\r
2862 ib_api_status_t status;
\r
2870 } ual_reg_shmid_ioctl_t;
\r
2874 * A handle to an existing protection domain that the memory
\r
2875 * should be registered with.
\r
2878 * An identifier to the shared memory region.
\r
2881 * Information describing the attributes of the memory region to
\r
2885 * Status of the operation.
\r
2888 * Assigned I/O virtual address for the memory region.
\r
2891 * The local access key associated with this registered memory
\r
2895 * A key that may be used by a remote end-point when performing RDMA
\r
2896 * or atomic operations to this registered memory region.
\r
2899 * Upon successful completion of this call, this references a handle
\r
2900 * to the registered memory region. This handle is used when performing
\r
2901 * data transfers and to deregister the memory.
\r
2906 /****s* User-mode Access Layer/ual_send_sa_req_t
\r
2908 * ual_send_sa_req_t
\r
2911 * IOCTL structure containing the input and output parameters for
\r
2916 typedef union _ual_send_sa_req_ioctl
\r
2918 struct _ual_send_sa_req_ioctl_in
\r
2920 net64_t port_guid;
\r
2921 uint32_t timeout_ms;
\r
2922 uint32_t retry_cnt;
\r
2923 ib_user_query_t sa_req;
\r
2924 uint8_t attr[IB_SA_DATA_SIZE];
\r
2925 uint64_t* __ptr64 ph_sa_req;
\r
2926 ib_api_status_t* __ptr64 p_status;
\r
2929 struct _ual_send_sa_req_ioctl_out
\r
2931 ib_api_status_t status;
\r
2933 uint32_t resp_size;
\r
2937 } ual_send_sa_req_ioctl_t;
\r
2941 * The SA request to send.
\r
2944 * The SA attribute data to send.
\r
2947 * Pointer to UAL's query handle. The proxy fills this in
\r
2948 * before returning from the IOCTL handler to allow cancelation.
\r
2951 * Pointer to status of the query.
\r
2954 * Status of the query if it was initiated successfully.
\r
2957 * Handle to a response MAD.
\r
2960 * Size, in bytes, of the response MAD's buffer.
\r
2965 /****s* User-mode Access Layer/ual_cancel_sa_req_ioctl_t
\r
2967 * ual_cancel_sa_req_ioctl_t
\r
2970 * IOCTL structure containing the input parameters for cancelling an
\r
2975 typedef struct _ual_cancel_sa_req_ioctl
\r
2977 uint64_t h_sa_req;
\r
2979 } ual_cancel_sa_req_ioctl_t;
\r
2983 * Handle to the query to cancel.
\r
2988 /****s* User-mode Access Layer/ual_reg_pnp_ioctl_in_t
\r
2990 * ual_reg_pnp_ioctl_in_t
\r
2993 * IOCTL structure containing the input parameters for registering
\r
2998 typedef struct _ual_reg_pnp_ioctl_in
\r
3000 ib_pnp_class_t pnp_class;
\r
3001 void* __ptr64 sync_event;
\r
3002 ib_api_status_t* __ptr64 p_status;
\r
3003 uint64_t* __ptr64 p_hdl;
\r
3005 } ual_reg_pnp_ioctl_in_t;
\r
3008 * This is an asynchronous IOCTL.
\r
3010 * The output parameters are a ual_rearm_pnp_ioctl_out_t.
\r
3014 * Class of PnP events for which to register.
\r
3017 * Pointer to user-mode status variable to set in failure case.
\r
3020 * Pointer to user-mode handle variable to set in success case.
\r
3025 /****s* User-mode Access Layer/ual_poll_pnp_ioctl_t
\r
3027 * ual_poll_pnp_ioctl_t
\r
3030 * IOCTL structure containing the parameters for retriveing data for
\r
3035 typedef union _ual_poll_pnp_ioctl
\r
3037 struct _ual_poll_pnp_ioctl_in
\r
3042 struct _ual_poll_pnp_ioctl_out
\r
3044 ib_pnp_rec_t pnp_rec;
\r
3048 } ual_poll_pnp_ioctl_t;
\r
3051 * This is a synchronous IOCTL.
\r
3055 * Handle to a new PnP event.
\r
3058 * Buffer for the new PnP event.
\r
3063 /****s* User-mode Access Layer/ual_rearm_pnp_ioctl_in_t
\r
3065 * ual_rearm_pnp_ioctl_in_t
\r
3068 * IOCTL structure containing the input parameters for requesting
\r
3069 * notification of the next PnP event.
\r
3073 typedef struct _ual_rearm_pnp_ioctl_in
\r
3076 uint64_t last_evt_hdl;
\r
3077 void* __ptr64 last_evt_context;
\r
3078 ib_api_status_t last_evt_status;
\r
3080 } ual_rearm_pnp_ioctl_in_t;
\r
3083 * This is an asynchronous IOCTL.
\r
3085 * The output parameters are a ual_rearm_pnp_ioctl_out_t.
\r
3089 * Handle to the PnP registration to rearm.
\r
3092 * Handle to the last PnP event processed.
\r
3094 * last_evt_context
\r
3095 * Context value to set for the last reported PnP event.
\r
3098 * Status value to return for the last reported PnP event.
\r
3103 /****s* User-mode Access Layer/ual_rearm_pnp_ioctl_out_t
\r
3105 * ual_rearm_pnp_ioctl_out_t
\r
3108 * IOCTL structure containing the output parameters for a PnP event.
\r
3112 typedef struct _ual_rearm_pnp_ioctl_out
\r
3115 uint32_t evt_size;
\r
3117 } ual_rearm_pnp_ioctl_out_t;
\r
3120 * This is an asynchronous IOCTL.
\r
3122 * The output parameters are identical to that of ual_reg_pnp_ioctl_t.
\r
3126 * Handle to a new PnP event.
\r
3129 * Buffer size needed to poll the new PnP event.
\r
3134 /****s* User-mode Access Layer/ual_dereg_pnp_ioctl_t
\r
3136 * ual_dereg_pnp_ioctl_t
\r
3139 * IOCTL structure containing the input parameters for cancelling an
\r
3144 typedef struct _ual_dereg_pnp_ioctl
\r
3148 } ual_dereg_pnp_ioctl_t;
\r
3151 * This is an asynchronous IOCTL.
\r
3155 * Handle to the PnP registration to deregister.
\r
3157 #endif /* __IB_UAL_IOCTL_H__ */
\r