2 * Copyright (c) 2005 SilverStorm Technologies. All rights reserved.
\r
3 * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
\r
4 * Portions Copyright (c) 2008 Microsoft Corporation. All rights reserved.
\r
6 * This software is available to you under the OpenIB.org BSD license
\r
9 * Redistribution and use in source and binary forms, with or
\r
10 * without modification, are permitted provided that the following
\r
11 * conditions are met:
\r
13 * - Redistributions of source code must retain the above
\r
14 * copyright notice, this list of conditions and the following
\r
17 * - Redistributions in binary form must reproduce the above
\r
18 * copyright notice, this list of conditions and the following
\r
19 * disclaimer in the documentation and/or other materials
\r
20 * provided with the distribution.
\r
22 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
\r
23 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
\r
24 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
\r
25 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
\r
26 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
\r
27 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
\r
28 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
\r
36 #ifndef __IB_UAL_IOCTL_H__
\r
37 #define __IB_UAL_IOCTL_H__
\r
39 #include <complib/cl_types.h>
\r
40 #include <iba/ib_types.h>
\r
41 #include <iba/ib_ci.h>
\r
42 #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; /* __ptr64 is correct for HANDLE types. */
\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
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 uint64_t 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
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
567 } ual_query_av_ioctl_t;
\r
571 * Opaque to IBAL buffer descriptor to allow the user-mode HCA library to
\r
572 * exchange private information with the kernel-mode HCA driver.
\r
575 * A handle to an existing address vector.
\r
578 * Returns the status from the HCA driver to the user-mode HCA library,
\r
579 * along with any vendor specific output information.
\r
582 * Status of the operation.
\r
585 * Attributes of the address vector.
\r
590 /****s* User-mode Access Layer/ual_modify_av_ioctl_t
\r
592 * ual_modify_av_ioctl_t
\r
595 * IOCTL structure containing the input and output parameters for
\r
600 typedef union _ual_modify_av_ioctl
\r
602 struct _ual_modify_av_ioctl_in
\r
604 ci_umv_buf_t umv_buf;
\r
609 struct _ual_modify_av_ioctl_out
\r
611 ci_umv_buf_t umv_buf;
\r
612 ib_api_status_t status;
\r
616 } ual_modify_av_ioctl_t;
\r
620 * Opaque to IBAL buffer descriptor to allow the user-mode HCA library to
\r
621 * exchange private information with the kernel-mode HCA driver.
\r
624 * A handle to an existing address vector.
\r
627 * The requested attributes to be used for modifying the address vector.
\r
630 * Returns the status from the HCA driver to the user-mode HCA library,
\r
631 * along with any vendor specific output information.
\r
634 * Status of the operation
\r
639 /****s* User-mode Access Layer/ual_destroy_av_ioctl_t
\r
641 * ual_destroy_av_ioctl_t
\r
644 * IOCTL structure containing the input and output parameters for
\r
649 typedef union _ual_destroy_av_ioctl
\r
651 struct _ual_destroy_av_ioctl_in
\r
656 struct _ual_destroy_av_ioctl_out
\r
658 ib_api_status_t status;
\r
662 } ual_destroy_av_ioctl_t;
\r
666 * A handle to an existing address vector.
\r
669 * Status of the operation.
\r
672 /****s* User-mode Access Layer/ual_create_srq_ioctl_t
\r
674 * ual_create_srq_ioctl_t
\r
677 * IOCTL structure containing the input and output parameters for
\r
682 typedef union _ual_create_srq_ioctl
\r
684 struct _ual_create_srq_ioctl_in
\r
686 ci_umv_buf_t umv_buf;
\r
688 ib_srq_attr_t srq_attr;
\r
690 boolean_t ev_notify;
\r
693 struct _ual_create_srq_ioctl_out
\r
695 ci_umv_buf_t umv_buf;
\r
696 ib_api_status_t status;
\r
701 } ual_create_srq_ioctl_t;
\r
705 * Opaque to IBAL buffer descriptor to allow the user-mode HCA library to
\r
706 * exchange private information with the kernel-mode HCA driver.
\r
709 * Protection domain on which to create the srq.
\r
712 * Attributes necessary for creating the srq.
\r
715 * UAL's srq context that needs to be returned on a callback.
\r
718 * Boolean indicating whether asynchronous events should be
\r
719 * forwarded to user-mode.
\r
722 * Returns the status from the HCA driver to the user-mode HCA library,
\r
723 * along with any vendor specific output information.
\r
726 * Status of the operation.
\r
729 * Handle for the newly created srq.
\r
733 /****s* User-mode Access Layer/ual_modify_srq_ioctl_t
\r
735 * ual_modify_srq_ioctl_t
\r
738 * IOCTL structure containing the input and output parameters for
\r
743 typedef union _ual_modify_srq_ioctl
\r
745 struct _ual_modify_srq_ioctl_in
\r
747 ci_umv_buf_t umv_buf;
\r
749 ib_srq_attr_mask_t srq_attr_mask;
\r
750 ib_srq_attr_t srq_attr;
\r
753 struct _ual_modify_srq_ioctl_out
\r
755 ci_umv_buf_t umv_buf;
\r
756 ib_api_status_t status;
\r
760 } ual_modify_srq_ioctl_t;
\r
764 * Opaque to IBAL buffer descriptor to allow the user-mode HCA library to
\r
765 * exchange private information with the kernel-mode HCA driver.
\r
768 * A handle to an existing Queue Pair.
\r
771 * Attributes used for modifying the srq.
\r
774 * Returns the status from the HCA driver to the user-mode HCA library,
\r
775 * along with any vendor specific output information.
\r
778 * Status of the operation.
\r
784 /****s* User-mode Access Layer/ual_query_srq_ioctl_t
\r
786 * ual_query_srq_ioctl_t
\r
789 * IOCTL structure containing the input and output parameters for
\r
794 typedef union _ual_query_srq_ioctl
\r
796 struct _ual_query_srq_ioctl_in
\r
798 ci_umv_buf_t umv_buf;
\r
802 struct _ual_query_srq_ioctl_out
\r
804 ci_umv_buf_t umv_buf;
\r
805 ib_api_status_t status;
\r
806 ib_srq_attr_t srq_attr;
\r
810 } ual_query_srq_ioctl_t;
\r
814 * Opaque to IBAL buffer descriptor to allow the user-mode HCA library to
\r
815 * exchange private information with the kernel-mode HCA driver.
\r
818 * Handle to the srq whose attributes to query.
\r
821 * Returns the status from the HCA driver to the user-mode HCA library,
\r
822 * along with any vendor specific output information.
\r
825 * Status of the operation.
\r
828 * Attributes of the srq.
\r
833 /****s* User-mode Access Layer/ual_destroy_srq_ioctl_t
\r
835 * ual_destroy_srq_ioctl_t
\r
838 * IOCTL structure containing the input and output parameters for
\r
843 typedef union _ual_destroy_srq_ioctl
\r
845 struct _ual_destroy_srq_ioctl_in
\r
850 struct _ual_destroy_srq_ioctl_out
\r
852 ib_api_status_t status;
\r
856 } ual_destroy_srq_ioctl_t;
\r
860 * Handle of the srq that needs to be destroyed.
\r
863 * Status of the operation.
\r
868 /****s* User-mode Access Layer/ual_create_qp_ioctl_t
\r
870 * ual_create_qp_ioctl_t
\r
873 * IOCTL structure containing the input and output parameters for
\r
878 typedef union _ual_create_qp_ioctl
\r
880 struct _ual_create_qp_ioctl_in
\r
882 ci_umv_buf_t umv_buf;
\r
884 ib_qp_create_t qp_create;
\r
886 boolean_t ev_notify;
\r
889 struct _ual_create_qp_ioctl_out
\r
891 ci_umv_buf_t umv_buf;
\r
892 ib_api_status_t status;
\r
898 } ual_create_qp_ioctl_t;
\r
902 * Opaque to IBAL buffer descriptor to allow the user-mode HCA library to
\r
903 * exchange private information with the kernel-mode HCA driver.
\r
906 * Protection domain on which to create the QP.
\r
909 * Attributes necessary for creating the QP.
\r
912 * UAL's qp context that needs to be returned on a callback.
\r
915 * Boolean indicating whether asynchronous events should be
\r
916 * forwarded to user-mode.
\r
919 * Returns the status from the HCA driver to the user-mode HCA library,
\r
920 * along with any vendor specific output information.
\r
923 * Status of the operation.
\r
926 * Actual attributes of the newly created QP.
\r
929 * Handle for the newly created QP.
\r
934 /****s* User-mode Access Layer/ual_modify_qp_ioctl_t
\r
936 * ual_modify_qp_ioctl_t
\r
939 * IOCTL structure containing the input and output parameters for
\r
944 typedef union _ual_modify_qp_ioctl
\r
946 struct _ual_modify_qp_ioctl_in
\r
948 ci_umv_buf_t umv_buf;
\r
950 ib_qp_mod_t modify_attr;
\r
953 struct _ual_modify_qp_ioctl_out
\r
955 ci_umv_buf_t umv_buf;
\r
956 ib_api_status_t status;
\r
957 //ib_qp_query_t query_attr; // Not returned by AL
\r
961 } ual_modify_qp_ioctl_t;
\r
965 * Opaque to IBAL buffer descriptor to allow the user-mode HCA library to
\r
966 * exchange private information with the kernel-mode HCA driver.
\r
969 * A handle to an existing Queue Pair.
\r
972 * Attributes used for modifying the QP.
\r
975 * Returns the status from the HCA driver to the user-mode HCA library,
\r
976 * along with any vendor specific output information.
\r
979 * Status of the operation.
\r
982 * On return from the ioctl, contains the actual attributes of
\r
983 * the QP just modified.
\r
988 /****s* User-mode Access Layer/ual_query_qp_ioctl_t
\r
990 * ual_query_qp_ioctl_t
\r
993 * IOCTL structure containing the input and output parameters for
\r
998 typedef union _ual_query_qp_ioctl
\r
1000 struct _ual_query_qp_ioctl_in
\r
1002 ci_umv_buf_t umv_buf;
\r
1006 struct _ual_query_qp_ioctl_out
\r
1008 ci_umv_buf_t umv_buf;
\r
1009 ib_api_status_t status;
\r
1010 ib_qp_attr_t attr;
\r
1014 } ual_query_qp_ioctl_t;
\r
1018 * Opaque to IBAL buffer descriptor to allow the user-mode HCA library to
\r
1019 * exchange private information with the kernel-mode HCA driver.
\r
1022 * Handle to the QP whose attributes to query.
\r
1025 * Returns the status from the HCA driver to the user-mode HCA library,
\r
1026 * along with any vendor specific output information.
\r
1029 * Status of the operation.
\r
1032 * Attributes of the QP.
\r
1037 /****s* User-mode Access Layer/ual_destroy_qp_ioctl_t
\r
1039 * ual_destroy_qp_ioctl_t
\r
1042 * IOCTL structure containing the input and output parameters for
\r
1047 typedef union _ual_destroy_qp_ioctl
\r
1049 struct _ual_destroy_qp_ioctl_in
\r
1054 struct _ual_destroy_qp_ioctl_out
\r
1056 ib_api_status_t status;
\r
1060 } ual_destroy_qp_ioctl_t;
\r
1064 * Handle of the QP that needs to be destroyed.
\r
1067 * Status of the operation.
\r
1072 /****s* User-mode Access Layer/ual_create_cq_ioctl_t
\r
1074 * ual_create_cq_ioctl_t
\r
1077 * IOCTL structure containing the input and output parameters for
\r
1082 typedef union _ual_create_cq_ioctl
\r
1084 struct _ual_create_cq_ioctl_in
\r
1086 ci_umv_buf_t umv_buf;
\r
1088 void* __ptr64 h_wait_obj; /* __ptr64 is correct for HANDLE types. */
\r
1091 boolean_t ev_notify;
\r
1094 struct _ual_create_cq_ioctl_out
\r
1096 ci_umv_buf_t umv_buf;
\r
1097 ib_api_status_t status;
\r
1103 } ual_create_cq_ioctl_t;
\r
1107 * Opaque to IBAL buffer descriptor to allow the user-mode HCA library to
\r
1108 * exchange private information with the kernel-mode HCA driver.
\r
1111 * CA handle on which to create the CQ.
\r
1114 * Attributes necessary for creating the cq.
\r
1117 * UAL's cq context that needs to be returned on a callback.
\r
1120 * Boolean indicating whether asynchronous events should be
\r
1121 * forwared to user-mode.
\r
1124 * Returns the status from the HCA driver to the user-mode HCA library,
\r
1125 * along with any vendor specific output information.
\r
1128 * Status of the operation.
\r
1131 * Handle to the newly created CQ.
\r
1134 * Actual size of the newly created CQ.
\r
1139 /****s* User-mode Access Layer/ual_modify_cq_ioctl_t
\r
1141 * ual_modify_cq_ioctl_t
\r
1144 * IOCTL structure containing the input and output parameters for
\r
1149 typedef union _ual_modify_cq_ioctl
\r
1151 struct _ual_modify_cq_ioctl_in
\r
1153 ci_umv_buf_t umv_buf;
\r
1158 struct _ual_modify_cq_ioctl_out
\r
1160 ci_umv_buf_t umv_buf;
\r
1161 ib_api_status_t status;
\r
1166 } ual_modify_cq_ioctl_t;
\r
1170 * Opaque to IBAL buffer descriptor to allow the user-mode HCA library to
\r
1171 * exchange private information with the kernel-mode HCA driver.
\r
1174 * A handle to the CQ to modify.
\r
1177 * The requested new size of the CQ.
\r
1180 * Returns the status from the HCA driver to the user-mode HCA library,
\r
1181 * along with any vendor specific output information.
\r
1184 * Status of the operation.
\r
1187 * The actual size of the CQ.
\r
1192 /****s* User-mode Access Layer/ual_query_cq_ioctl_t
\r
1194 * ual_query_cq_ioctl_t
\r
1197 * IOCTL structure containing the input and output parameters for
\r
1202 typedef union _ual_query_cq_ioctl
\r
1204 struct _ual_query_cq_ioctl_in
\r
1206 ci_umv_buf_t umv_buf;
\r
1210 struct _ual_query_cq_ioctl_out
\r
1212 ci_umv_buf_t umv_buf;
\r
1213 ib_api_status_t status;
\r
1218 } ual_query_cq_ioctl_t;
\r
1222 * Opaque to IBAL buffer descriptor to allow the user-mode HCA library to
\r
1223 * exchange private information with the kernel-mode HCA driver.
\r
1226 * A handle to an existing CQ.
\r
1229 * Returns the status from the HCA driver to the user-mode HCA library,
\r
1230 * along with any vendor specific output information.
\r
1233 * Status of the operation.
\r
1236 * The size of the CQ.
\r
1241 /****s* User-mode Access Layer/ual_destroy_cq_ioctl_t
\r
1243 * ual_destroy_cq_ioctl_t
\r
1246 * IOCTL structure containing the input and output parameters for
\r
1251 typedef union _ual_destroy_cq_ioctl
\r
1253 struct _ual_destroy_cq_ioctl_in
\r
1258 struct _ual_destroy_cq_ioctl_out
\r
1260 ib_api_status_t status;
\r
1264 } ual_destroy_cq_ioctl_t;
\r
1268 * Handle of the cq that needs to be destroyed.
\r
1271 * Status of the operation.
\r
1276 /****s* User-mode Access Layer/ual_reg_mem_ioctl_t
\r
1278 * ual_reg_mem_ioctl_t
\r
1281 * IOCTL structure containing the input and output parameters for
\r
1286 typedef union _ual_reg_mem_ioctl
\r
1288 struct _ual_reg_mem_ioctl_in
\r
1291 ib_mr_create_t mem_create;
\r
1294 struct _ual_reg_mem_ioctl_out
\r
1296 ib_api_status_t status;
\r
1303 } ual_reg_mem_ioctl_t;
\r
1307 * Handle to the protection domain on which to register the memory.
\r
1310 * Information for registering the memory region.
\r
1313 * Status of the operation.
\r
1316 * LKey value returned by verb.
\r
1319 * RKey value returned by verb.
\r
1322 * Handle to the registered memory region.
\r
1327 /****s* User-mode Access Layer/ual_query_mr_ioctl_t
\r
1329 * ual_query_mr_ioctl_t
\r
1332 * IOCTL structure containing the input and output parameters for
\r
1337 typedef union _ual_query_mr_ioctl
\r
1339 struct _ual_query_mr_ioctl_in
\r
1344 struct _ual_query_mr_ioctl_out
\r
1346 ib_api_status_t status;
\r
1347 ib_mr_attr_t attr;
\r
1351 } ual_query_mr_ioctl_t;
\r
1355 * A handle to a registered memory region.
\r
1358 * Status of the operation.
\r
1361 * Attributes of the registered memory region.
\r
1366 /****s* User-mode Access Layer/ual_rereg_mem_ioctl_t
\r
1368 * ual_rereg_mem_ioctl_t
\r
1371 * IOCTL structure containing the input and output parameters for
\r
1376 typedef union _ual_rereg_mem_ioctl
\r
1378 struct _ual_rereg_mem_ioctl_in
\r
1381 ib_mr_mod_t mem_mod_mask;
\r
1382 ib_mr_create_t mem_create;
\r
1386 struct _ual_rereg_mem_ioctl_out
\r
1388 ib_api_status_t status;
\r
1394 } ual_rereg_mem_ioctl_t;
\r
1398 * A handle to a registered memory region that is being modified.
\r
1401 * The attributes to use when modifying the memory region.
\r
1404 * Information to use for modifying the memory region. Required only
\r
1405 * for changes other than the PD.
\r
1408 * PD Handle for changing protection domains.
\r
1411 * Status of the operation.
\r
1414 * LKey of the memory region.
\r
1417 * RKey of the memory region.
\r
1422 /****s* User-mode Access Layer/ual_reg_shared_ioctl_t
\r
1424 * ual_reg_shared_ioctl_t
\r
1427 * IOCTL structure containing the input and output parameters for
\r
1432 typedef union _ual_reg_shared_ioctl
\r
1434 struct _ual_reg_shared_ioctl_in
\r
1438 ib_access_t access_ctrl;
\r
1442 struct _ual_reg_shared_ioctl_out
\r
1444 ib_api_status_t status;
\r
1448 uint64_t h_new_mr;
\r
1452 } ual_reg_shared_ioctl_t;
\r
1456 * A handle to the existing registered memory region.
\r
1459 * A handle to the PD on which memory is being registered.
\r
1462 * Access control for the new memory region.
\r
1465 * Requested virtual address.
\r
1468 * Status of the operation.
\r
1471 * Actual virtual address of the registered region.
\r
1474 * LKey of the memory region.
\r
1477 * RKey of the memory region.
\r
1480 * Handle to the registered memory region.
\r
1485 /****s* User-mode Access Layer/ual_dereg_mr_ioctl_t
\r
1487 * ual_dereg_mr_ioctl_t
\r
1490 * IOCTL structure containing the input and output parameters for
\r
1495 typedef union _ual_dereg_mr_ioctl
\r
1497 struct _ual_dereg_mr_ioctl_in
\r
1502 struct _ual_dereg_mr_ioctl_out
\r
1504 ib_api_status_t status;
\r
1508 } ual_dereg_mr_ioctl_t;
\r
1512 * A handle to a registered memory region.
\r
1515 * Status of the operation.
\r
1520 /****s* User-mode Access Layer/ual_create_mw_ioctl_t
\r
1522 * ual_create_mw_ioctl_t
\r
1525 * IOCTL structure containing the input and output parameters for
\r
1530 typedef union _ual_create_mw_ioctl
\r
1532 struct _ual_create_mw_ioctl_in
\r
1534 ci_umv_buf_t umv_buf;
\r
1538 struct _ual_create_mw_ioctl_out
\r
1540 ci_umv_buf_t umv_buf;
\r
1541 ib_api_status_t status;
\r
1547 } ual_create_mw_ioctl_t;
\r
1551 * Opaque to IBAL buffer descriptor to allow the user-mode HCA library to
\r
1552 * exchange private information with the kernel-mode HCA driver.
\r
1555 * A handle to the protection domain on which the memory window should
\r
1559 * Returns the status from the HCA driver to the user-mode HCA library,
\r
1560 * along with any vendor specific output information.
\r
1563 * Status of the operation.
\r
1566 * RKey associated with the memory window.
\r
1569 * Handle to the newly created MW.
\r
1574 /****s* User-mode Access Layer/ual_query_mw_ioctl_t
\r
1576 * ual_query_mw_ioctl_t
\r
1579 * IOCTL structure containing the input and output parameters for
\r
1584 typedef union _ual_query_mw_ioctl
\r
1586 struct _ual_query_mw_ioctl_in
\r
1588 ci_umv_buf_t umv_buf;
\r
1592 struct _ual_query_mw_ioctl_out
\r
1594 ci_umv_buf_t umv_buf;
\r
1595 ib_api_status_t status;
\r
1600 } ual_query_mw_ioctl_t;
\r
1604 * Opaque to IBAL buffer descriptor to allow the user-mode HCA library to
\r
1605 * exchange private information with the kernel-mode HCA driver.
\r
1608 * A handle to an existing memory window.
\r
1611 * Returns the status from the HCA driver to the user-mode HCA library,
\r
1612 * along with any vendor specific output information.
\r
1615 * Status of the operation.
\r
1618 * RKey associated with the memory window.
\r
1623 /****s* User-mode Access Layer/ual_bind_mw_ioctl_t
\r
1625 * ual_bind_mw_ioctl_t
\r
1628 * IOCTL structure containing the input and output parameters for
\r
1633 typedef union _ual_bind_mw_ioctl
\r
1635 struct _ual_bind_mw_ioctl_in
\r
1639 ib_bind_wr_t mw_bind;
\r
1642 struct _ual_bind_mw_ioctl_out
\r
1644 ib_api_status_t status;
\r
1649 } ual_bind_mw_ioctl_t;
\r
1653 * A handle to an existing memory window.
\r
1656 * The qp handle to post the bind request.
\r
1662 * Status of the operation.
\r
1665 * RKey for the memory window.
\r
1670 /****s* User-mode Access Layer/ual_destroy_mw_ioctl_t
\r
1672 * ual_destroy_mw_ioctl_t
\r
1675 * IOCTL structure containing the input and output parameters for
\r
1680 typedef union _ual_destroy_mw_ioctl
\r
1682 struct _ual_destroy_mw_ioctl_in
\r
1687 struct _ual_destroy_mw_ioctl_out
\r
1689 ib_api_status_t status;
\r
1693 } ual_destroy_mw_ioctl_t;
\r
1697 * A handle to an existing memory window.
\r
1700 * Status of the operation
\r
1705 /****s* User-mode Access Layer/ual_post_send_ioctl_t
\r
1707 * ual_post_send_ioctl_t
\r
1710 * IOCTL structure containing the input and output parameters for
\r
1715 typedef union _ual_post_send_ioctl
\r
1717 struct _ual_post_send_ioctl_in
\r
1722 ib_send_wr_t send_wr[1];
\r
1723 /* Additional work requests follow, followed by data segments. */
\r
1726 struct _ual_post_send_ioctl_out
\r
1728 ib_api_status_t status;
\r
1729 uint32_t failed_cnt;
\r
1733 } ual_post_send_ioctl_t;
\r
1737 * A handle to QP where the work request is being posted.
\r
1740 * Number of work request items in the array of work requests.
\r
1743 * Number of data segments following the array of work requests.
\r
1746 * First work request in the array of work requests being posted.
\r
1749 * Status of the operation.
\r
1752 * Number of work request that failed.
\r
1756 /****s* User-mode Access Layer/ual_post_srq_recv_ioctl_t
\r
1758 * ual_post_srq_recv_ioctl_t
\r
1761 * IOCTL structure containing the input and output parameters for
\r
1762 * ib_post_srq_recv
\r
1766 typedef union _ual_post_srq_recv_ioctl
\r
1768 struct _ual_post_srq_recv_ioctl_in
\r
1773 ib_recv_wr_t recv_wr[1];
\r
1774 /* Additional work requests follow, followed by data segments. */
\r
1777 struct _ual_post_srq_recv_ioctl_out
\r
1779 ib_api_status_t status;
\r
1780 uint32_t failed_cnt;
\r
1784 } ual_post_srq_recv_ioctl_t;
\r
1788 * A handle to SRQ where the work request is being posted.
\r
1791 * Number of work request items in the array of work requests.
\r
1794 * Number of data segments following the array of work requests.
\r
1797 * First work request in the array of work requests being posted.
\r
1800 * Status of the operation.
\r
1803 * Number of work request that failed.
\r
1808 /****s* User-mode Access Layer/ual_post_recv_ioctl_t
\r
1810 * ual_post_recv_ioctl_t
\r
1813 * IOCTL structure containing the input and output parameters for
\r
1818 typedef union _ual_post_recv_ioctl
\r
1820 struct _ual_post_recv_ioctl_in
\r
1825 ib_recv_wr_t recv_wr[1];
\r
1826 /* Additional work requests follow, followed by data segments. */
\r
1829 struct _ual_post_recv_ioctl_out
\r
1831 ib_api_status_t status;
\r
1832 uint32_t failed_cnt;
\r
1836 } ual_post_recv_ioctl_t;
\r
1840 * A handle to QP where the work request is being posted.
\r
1843 * Number of work request items in the array of work requests.
\r
1846 * Number of data segments following the array of work requests.
\r
1849 * First work request in the array of work requests being posted.
\r
1852 * Status of the operation.
\r
1855 * Number of work request that failed.
\r
1860 /****s* User-mode Access Layer/ual_peek_cq_ioctl_t
\r
1862 * ual_peek_cq_ioctl_t
\r
1865 * IOCTL structure containing the input and output parameters for
\r
1870 typedef union _ual_peek_cq_ioctl
\r
1872 struct _ual_peek_cq_ioctl_in
\r
1877 struct _ual_peek_cq_ioctl_out
\r
1879 ib_api_status_t status;
\r
1884 } ual_peek_cq_ioctl_t;
\r
1888 * A handle to a CQ.
\r
1891 * Status of the operation.
\r
1894 * The number of completion queue entries currently on the CQ.
\r
1899 /****s* User-mode Access Layer/ual_poll_cq_ioctl_t
\r
1901 * ual_poll_cq_ioctl_t
\r
1904 * IOCTL structure containing the input and output parameters for
\r
1909 typedef union _ual_poll_cq_ioctl
\r
1911 struct _ual_poll_cq_ioctl_in
\r
1917 struct _ual_poll_cq_ioctl_out
\r
1919 ib_api_status_t status;
\r
1922 /* Additional WC's follow. */
\r
1925 } ual_poll_cq_ioctl_t;
\r
1929 * A handle to cq that is going to be polled for completions.
\r
1932 * Number of work completions in the output array.
\r
1935 * Status of the operation.
\r
1938 * Number of work completions polled.
\r
1941 * First work completion in the array to use for polling.
\r
1946 /****s* User-mode Access Layer/ual_rearm_cq_ioctl_t
\r
1948 * ual_rearm_cq_ioctl_t
\r
1951 * IOCTL structure containing the input and output parameters for
\r
1956 typedef union _ual_rearm_cq_ioctl
\r
1958 struct _ual_rearm_cq_ioctl_in
\r
1961 boolean_t solicited;
\r
1964 struct _ual_rearm_cq_ioctl_out
\r
1966 ib_api_status_t status;
\r
1970 } ual_rearm_cq_ioctl_t;
\r
1974 * A handle to a CQ.
\r
1977 * Flag for rearm CQ.
\r
1980 * Status of the operation.
\r
1985 /****s* User-mode Access Layer/ual_rearm_n_cq_ioctl_t
\r
1987 * ual_rearm_n_cq_ioctl_t
\r
1990 * IOCTL structure containing the input and output parameters for
\r
1995 typedef union _ual_rearm_n_cq_ioctl
\r
1997 struct _ual_rearm_n_cq_ioctl_in
\r
2003 struct _ual_rearm_n_cq_ioctl_out
\r
2005 ib_api_status_t status;
\r
2009 } ual_rearm_n_cq_ioctl_t;
\r
2013 * A handle to a CQ.
\r
2016 * Rearm the CQ to signal when the next N completions are added.
\r
2019 * Status of the operation.
\r
2024 /****s* User-mode Access Layer/ual_attach_mcast_ioctl_t
\r
2026 * ual_attach_mcast_ioctl_t
\r
2029 * IOCTL structure containing the input and output parameters for
\r
2030 * verbs attach multicast call.
\r
2034 typedef union _ual_attach_mcast_ioctl
\r
2036 struct _ual_attach_mcast_ioctl_in
\r
2038 ci_umv_buf_t umv_buf;
\r
2044 struct _ual_attach_mcast_ioctl_out
\r
2046 ci_umv_buf_t umv_buf;
\r
2047 ib_api_status_t status;
\r
2048 uint64_t h_attach;
\r
2052 } ual_attach_mcast_ioctl_t;
\r
2056 * Opaque to IBAL buffer descriptor to allow the user-mode HCA library to
\r
2057 * exchange private information with the kernel-mode HCA driver.
\r
2060 * Handle to the QP that is joining the multicast group.
\r
2063 * Multicast GID address for this multicast group.
\r
2066 * Multicast LID for this multicast group.
\r
2069 * Returns the status from the HCA driver to the user-mode HCA library,
\r
2070 * along with any vendor specific output information.
\r
2073 * Status of the operation.
\r
2076 * Multicast group handle.
\r
2081 /****s* User-mode Access Layer/ual_detach_mcast_ioctl_t
\r
2083 * ual_detach_mcast_ioctl_t
\r
2086 * IOCTL structure containing the input and output parameters for
\r
2087 * verbs detach call.
\r
2091 typedef union _ual_detach_mcast_ioctl
\r
2093 struct _ual_detach_mcast_ioctl_in
\r
2095 uint64_t h_attach;
\r
2098 struct _ual_detach_mcast_ioctl_out
\r
2100 ib_api_status_t status;
\r
2104 } ual_detach_mcast_ioctl_t;
\r
2108 * A handle to the multicast group.
\r
2111 * Status of the operation.
\r
2116 /****s* User-mode Access Layer/ual_reg_mad_svc_ioctl_t
\r
2118 * ual_reg_mad_svc_ioctl_t
\r
2121 * IOCTL structure containing the input and output parameters for
\r
2126 typedef union _ual_reg_mad_svc_ioctl
\r
2128 struct _ual_reg_mad_svc_ioctl_in
\r
2131 ib_mad_svc_t mad_svc;
\r
2134 struct _ual_reg_mad_svc_ioctl_out
\r
2136 ib_api_status_t status;
\r
2137 uint64_t h_mad_svc;
\r
2141 } ual_reg_mad_svc_ioctl_t;
\r
2145 * Handle to the special QP or MAD QP.
\r
2148 * Mad service definition.
\r
2151 * Status of the operation.
\r
2154 * Handle to the mad service.
\r
2159 /****s* User-mode Access Layer/ual_dereg_mad_svc_ioctl_t
\r
2161 * ual_dereg_mad_svc_ioctl_t
\r
2164 * IOCTL structure containing the input and output parameters for
\r
2165 * ib_dereg_mad_svc
\r
2169 typedef union _ual_dereg_mad_svc_ioctl
\r
2171 struct _ual_dereg_mad_svc_ioctl_in
\r
2173 uint64_t h_mad_svc;
\r
2176 struct _ual_dereg_mad_svc_ioctl_out
\r
2178 ib_api_status_t status;
\r
2182 } ual_dereg_mad_svc_ioctl_t;
\r
2186 * Handle to the mad service.
\r
2189 * Status of the operation.
\r
2194 /****s* User-mode Access Layer/ual_reg_mad_pool_ioctl_t
\r
2196 * ual_reg_mad_pool_ioctl_t
\r
2199 * IOCTL structure containing the input and output parameters for
\r
2200 * registering a mad pool to be used with special qp. This ioctl
\r
2201 * will result in user-mode pool registered. Additionally,
\r
2202 * the kernel proxy will allocate a kernel mad pool and register it
\r
2203 * so that later mad_sends will have the appropriate pool in kernel.
\r
2207 typedef union _ual_reg_mad_pool_ioctl
\r
2209 struct _ual_reg_mad_pool_ioctl_in
\r
2214 struct _ual_reg_mad_pool_ioctl_out
\r
2216 ib_api_status_t status;
\r
2217 uint64_t pool_key;
\r
2221 } ual_reg_mad_pool_ioctl_t;
\r
2225 * PD associated with the pool
\r
2228 * Status of the operation.
\r
2231 * Pool key to the mad pool in kernel space
\r
2236 /****s* User-mode Access Layer/ual_dereg_mad_pool_ioctl_t
\r
2238 * ual_dereg_mad_pool_ioctl_t
\r
2241 * IOCTL structure containing the input and output parameters for
\r
2242 * deregistering a mad pool to be used with special qp.
\r
2243 * The kernel proxy will deregister and destroy the mad pool
\r
2244 * created on behalf of the user process.
\r
2248 typedef union _ual_dereg_mad_pool_ioctl
\r
2250 struct _ual_dereg_mad_pool_ioctl_in
\r
2252 uint64_t pool_key;
\r
2255 struct _ual_dereg_mad_pool_ioctl_out
\r
2257 ib_api_status_t status;
\r
2261 } ual_dereg_mad_pool_ioctl_t;
\r
2265 * Pool key to the mad pool in kernel space.
\r
2268 * Status of the operation
\r
2273 /****s* User-mode Access Layer/ual_send_mad_ioctl_t
\r
2275 * ual_send_mad_ioctl_t
\r
2278 * IOCTL structure containing the input and output parameters for
\r
2283 typedef union _ual_send_mad_ioctl
\r
2285 struct _ual_send_mad_ioctl_in
\r
2287 uint64_t h_mad_svc;
\r
2288 uint64_t pool_key;
\r
2290 uint64_t p_mad_element;
\r
2292 uint64_t ph_proxy;
\r
2295 struct _ual_send_mad_ioctl_out
\r
2297 ib_api_status_t status;
\r
2301 } ual_send_mad_ioctl_t;
\r
2305 * Handle to the mad service.
\r
2308 * Pool key associated with the pool in kernel space.
\r
2311 * handle to address vector of MAD.
\r
2313 * in.p_mad_element
\r
2314 * Pointer to the user-mode MAD element. The proxy marshals this data.
\r
2317 * size of MAD buffer to send.
\r
2320 * Location to which to write the context used to cancel the MAD.
\r
2323 * Status of the operation.
\r
2328 /****s* User-mode Access Layer/ual_cancel_mad_ioctl_t
\r
2330 * ual_cancel_mad_ioctl_t
\r
2333 * IOCTL structure containing the input and output parameters for
\r
2338 typedef union _ual_cancel_mad_ioctl
\r
2340 struct _ual_cancel_mad_ioctl_in
\r
2342 uint64_t h_mad_svc;
\r
2343 uint64_t h_proxy_element;
\r
2346 struct _ual_cancel_mad_ioctl_out
\r
2348 ib_api_status_t status;
\r
2352 } ual_cancel_mad_ioctl_t;
\r
2356 * contains the handle to the mad service
\r
2359 * this references the handle to the sent MAD operation.
\r
2362 * Status of the operation.
\r
2367 /****s* User-mode Access Layer/ual_spl_qp_ioctl_t
\r
2369 * ual_spl_qp_ioctl_t
\r
2372 * IOCTL structure containing the input and output parameters to get
\r
2373 * the alias qp from KAL.
\r
2377 typedef union _ual_spl_qp_ioctl
\r
2379 struct _ual_spl_qp_ioctl_in
\r
2381 ci_umv_buf_t umv_buf;
\r
2383 ib_net64_t port_guid;
\r
2384 ib_qp_create_t qp_create;
\r
2388 struct _ual_spl_qp_ioctl_out
\r
2390 ci_umv_buf_t umv_buf;
\r
2391 ib_api_status_t status;
\r
2396 } ual_spl_qp_ioctl_t;
\r
2400 * Protection domain for the special qp.
\r
2403 * Port GUID on which to allocate the special QP.
\r
2406 * Special QP creation parameters.
\r
2409 * Context to associate with the QP, to be used in any notifications.
\r
2412 * Status of the operation.
\r
2415 * Handle to the special QP.
\r
2420 /****s* User-mode Access Layer/ual_mad_recv_ioctl_t
\r
2422 * ual_mad_recv_ioctl_t
\r
2425 * IOCTL structure containing the input and output parameters to get
\r
2426 * the mad_element information upon receiving MAD.
\r
2430 typedef union _ual_mad_recv_ioctl
\r
2432 struct _ual_mad_recv_comp_ioctl_in
\r
2435 uint64_t p_user_mad;
\r
2436 uint64_t p_mad_buf;
\r
2440 struct _ual_mad_recv_comp_ioctl_out
\r
2442 ib_api_status_t status;
\r
2446 } ual_mad_recv_ioctl_t;
\r
2450 * Received MAD handle handed to usermode in the MAD recv notification.
\r
2453 * Pointer to a user-mode mad element.
\r
2456 * Pointer to the MAD element's user-mode buffer.
\r
2459 * Ponter to the MAD element's user-mode GRH buffer.
\r
2462 * Status of the operation.
\r
2467 /****s* User-mode Access Layer/ual_local_mad_ioctl_t
\r
2469 * ual_local_mad_ioctl_t
\r
2472 * IOCTL structure containing the input and output parameters for
\r
2477 typedef union _ual_local_mad_ioctl
\r
2479 struct _ual_local_mad_ioctl_in
\r
2482 __declspec(align(8)) uint8_t mad_in[MAD_BLOCK_SIZE];
\r
2487 struct _ual_local_mad_ioctl_out
\r
2489 ib_api_status_t status;
\r
2490 uint32_t _pad; /* 8-byte alignment needed for ia64 */
\r
2491 __declspec(align(8)) uint8_t mad_out[MAD_BLOCK_SIZE];
\r
2495 } ual_local_mad_ioctl_t;
\r
2499 * The handle to an open instance of CA returned via a
\r
2500 * ual_open_ca_ioctl structure.
\r
2502 * Port number this MAD refere to.
\r
2504 * Mad structure from user mode to forward to local HCA.
\r
2507 * Status of the operation.
\r
2509 * Mad structure answer from local HCA for user mode.
\r
2514 /****s* User-mode Access Layer/ual_create_cep_ioctl_t
\r
2516 * ual_create_cep_ioctl_t
\r
2519 * IOCTL structure containing the output parameters to
\r
2524 typedef struct _ual_create_cep_ioctl
\r
2526 ib_api_status_t status;
\r
2529 } ual_create_cep_ioctl_t;
\r
2533 * Status of the operation.
\r
2536 * CID of the created CEP.
\r
2540 /****s* User-mode Access Layer/ual_cep_listen_ioctl_t
\r
2542 * ual_cep_listen_ioctl_t
\r
2545 * IOCTL structure containing the input parameters to
\r
2546 * perform a CM listen request.
\r
2550 typedef struct _ual_cep_listen_ioctl
\r
2553 ib_cep_listen_t cep_listen;
\r
2554 uint8_t compare[IB_REQ_PDATA_SIZE];
\r
2556 } ual_cep_listen_ioctl_t;
\r
2560 * CID of an existing CEP.
\r
2563 * Information used to direct the listen request to match incoming
\r
2564 * connection requests.
\r
2569 /****s* User-mode Access Layer/ual_cm_req_ioctl_t
\r
2571 * ual_cm_req_ioctl_t
\r
2574 * IOCTL structure containing the input and output parameters for
\r
2575 * al_cep_pre_req call.
\r
2579 typedef union _ual_cep_req_ioctl
\r
2581 struct _ual_cep_req_ioctl_in
\r
2584 ib_cm_req_t cm_req;
\r
2585 ib_path_rec_t paths[2];
\r
2586 uint8_t pdata[IB_REQ_PDATA_SIZE];
\r
2587 uint8_t compare[IB_REQ_PDATA_SIZE];
\r
2590 struct _ual_cep_req_ioctl_out
\r
2592 ib_api_status_t status;
\r
2597 } ual_cep_req_ioctl_t;
\r
2601 * CID of the target CEP.
\r
2604 * CM REQ parameters.
\r
2607 * Array of paths, the first being the primary path to use for the REQ.
\r
2610 * Status of the operation
\r
2613 * QP modify paramters for INIT state transition.
\r
2618 /****s* User-mode Access Layer/ual_cep_rep_ioctl_t
\r
2620 * ual_cep_rep_ioctl_t
\r
2623 * IOCTL structure containing the input and output parameters for
\r
2624 * al_cep_pre_rep call.
\r
2628 typedef union _ual_cep_rep_ioctl
\r
2630 struct _ual_cep_rep_ioctl_in
\r
2634 ib_cm_rep_t cm_rep;
\r
2635 uint8_t pdata[IB_REP_PDATA_SIZE];
\r
2638 struct _ual_cep_rep_ioctl_out
\r
2640 ib_api_status_t status;
\r
2645 } ual_cep_rep_ioctl_t;
\r
2649 * The cm_req connection handle got on the callback.
\r
2652 * CM REP parameters.
\r
2655 * Status of the operation.
\r
2658 * QP modify paramters for INIT state transition.
\r
2663 /****s* User-mode Access Layer/ual_cep_get_rtr_ioctl_t
\r
2665 * ual_cep_get_rtr_ioctl_t
\r
2668 * IOCTL structure containing the output parameters for
\r
2669 * al_cep_get_rtr_attr call.
\r
2673 typedef struct _ual_cep_get_rtr_ioctl
\r
2675 ib_api_status_t status;
\r
2678 } ual_cep_get_rtr_ioctl_t;
\r
2682 * Status of the operation.
\r
2685 * QP modify paramters for RTR state transition.
\r
2690 /****s* User-mode Access Layer/ual_cep_get_rts_ioctl_t
\r
2692 * ual_cep_get_rts_ioctl_t
\r
2695 * IOCTL structure containing the output parameters for
\r
2696 * al_cep_get_rts_attr call.
\r
2700 typedef struct _ual_cep_get_rts_ioctl
\r
2702 ib_api_status_t status;
\r
2705 } ual_cep_get_rts_ioctl_t;
\r
2709 * Status of the operation.
\r
2712 * QP modify paramters for RTS state transition.
\r
2717 /****s* User-mode Access Layer/ual_cep_rtu_ioctl_t
\r
2719 * ual_cep_rtu_ioctl_t
\r
2722 * IOCTL structure containing the input parameters for
\r
2723 * al_cep_rtu call.
\r
2727 typedef struct _ual_cep_rtu_ioctl
\r
2730 uint8_t pdata_len;
\r
2731 uint8_t pdata[IB_RTU_PDATA_SIZE];
\r
2733 } ual_cep_rtu_ioctl_t;
\r
2737 * The cm_rep connection handle got on the callback.
\r
2740 * Length of private data.
\r
2748 /****s* User-mode Access Layer/ual_cep_rej_ioctl_t
\r
2750 * ual_cep_rej_ioctl_t
\r
2753 * IOCTL structure containing the input parameters for
\r
2758 typedef struct _ual_cep_rej_ioctl
\r
2762 ib_rej_status_t rej_status;
\r
2764 uint8_t pdata_len;
\r
2765 uint8_t ari[IB_ARI_SIZE];
\r
2766 uint8_t pdata[IB_REJ_PDATA_SIZE];
\r
2768 } ual_cep_rej_ioctl_t;
\r
2772 * The CID of the target CEP.
\r
2775 * Rejection status as defined in IB spec.
\r
2778 * Length of the ARI data.
\r
2781 * Length of the private data.
\r
2792 /****s* User-mode Access Layer/ual_cep_handoff_ioctl_t
\r
2794 * ual_cep_handoff_ioctl_t
\r
2797 * IOCTL structure containing the input and output parameters for
\r
2802 typedef union _ual_cep_handoff_ioctl
\r
2804 struct _ual_cep_handoff_ioctl_in
\r
2810 struct _ual_cep_handoff_ioctl_out
\r
2812 ib_api_status_t status;
\r
2816 } ual_cep_handoff_ioctl_t;
\r
2820 * The connection handle got on the callback.
\r
2823 * Service ID to which to handoff the listen.
\r
2826 * Status of the operation
\r
2831 /****s* User-mode Access Layer/ual_cep_mra_ioctl_t
\r
2833 * ual_cep_mra_ioctl_t
\r
2836 * IOCTL structure containing the input parameters for
\r
2841 typedef struct _ual_cep_mra_ioctl
\r
2844 ib_cm_mra_t cm_mra;
\r
2845 uint8_t pdata[IB_MRA_PDATA_SIZE];
\r
2847 } ual_cep_mra_ioctl_t;
\r
2851 * The CID for the target CEP.
\r
2854 * CM MRA parameters.
\r
2859 /****s* User-mode Access Layer/ual_cep_lap_ioctl_t
\r
2861 * ual_cep_lap_ioctl_t
\r
2864 * IOCTL structure containing the input parameters for
\r
2869 typedef struct _ual_cep_lap_ioctl
\r
2872 ib_cm_lap_t cm_lap;
\r
2873 ib_path_rec_t alt_path;
\r
2874 uint8_t pdata[IB_LAP_PDATA_SIZE];
\r
2876 } ual_cep_lap_ioctl_t;
\r
2880 * CM LAP parameters
\r
2883 * Alternate path information.
\r
2888 /****s* User-mode Access Layer/ual_cep_apr_ioctl_t
\r
2890 * ual_cep_apr_ioctl_t
\r
2893 * IOCTL structure containing the input parameters for
\r
2898 typedef union _ual_cep_apr_ioctl
\r
2900 struct _ual_cep_apr_ioctl_in
\r
2903 ib_cm_apr_t cm_apr;
\r
2904 uint8_t apr_info[IB_APR_INFO_SIZE];
\r
2905 uint8_t pdata[IB_APR_PDATA_SIZE];
\r
2909 struct _ual_cep_apr_ioctl_out
\r
2911 ib_api_status_t status;
\r
2916 } ual_cep_apr_ioctl_t;
\r
2920 * The cm_lap connection handle got on the LAP callback.
\r
2923 * CM APR parameters.
\r
2928 /****s* User-mode Access Layer/ual_force_apm_ioctl_t
\r
2930 * ual_force_apm_ioctl_t
\r
2933 * IOCTL structure containing the input and output parameters for
\r
2938 typedef union _ual_force_apm_ioctl
\r
2940 union _ual_force_apm_ioctl_in
\r
2945 struct _ual_force_apm_ioctl_out
\r
2947 ib_api_status_t status;
\r
2951 } ual_force_apm_ioctl_t;
\r
2955 * A handle to the QP to migrate.
\r
2958 * Status of the operation
\r
2963 /****s* User-mode Access Layer/ual_cep_dreq_ioctl_t
\r
2965 * ual_cep_dreq_ioctl_t
\r
2968 * IOCTL structure containing the input parameters for
\r
2973 typedef struct _ual_cep_dreq_ioctl
\r
2976 uint8_t pdata_len;
\r
2977 uint8_t pdata[IB_DREQ_PDATA_SIZE];
\r
2979 } ual_cep_dreq_ioctl_t;
\r
2983 * CM DREQ parameters.
\r
2988 /****s* User-mode Access Layer/ual_cep_drep_ioctl_t
\r
2990 * ual_cep_drep_ioctl_t
\r
2993 * IOCTL structure containing the input and output parameters for
\r
2998 typedef struct _ual_cep_drep_ioctl
\r
3001 uint8_t pdata_len;
\r
3002 uint8_t pdata[IB_DREP_PDATA_SIZE];
\r
3004 } ual_cep_drep_ioctl_t;
\r
3008 * The cm_dreq connection handle got on the callback.
\r
3011 * CM DREP parameters.
\r
3016 /****s* User-mode Access Layer/ual_cep_get_timewait_ioctl_t
\r
3018 * ual_cep_get_timewait_ioctl_t
\r
3021 * IOCTL structure containing the output parameters for
\r
3022 * ib_cep_get_timewait
\r
3026 typedef struct _ual_cep_get_timewait_ioctl
\r
3028 ib_api_status_t status;
\r
3029 uint64_t timewait_us;
\r
3031 } ual_cep_get_timewait_ioctl_t;
\r
3035 * Status of the request.
\r
3038 * Timewait value, in microseconds.
\r
3043 /****s* User-mode Access Layer/ual_cep_poll_ioctl_t
\r
3045 * ual_cep_poll_ioctl_t
\r
3048 * IOCTL structure containing the output parameters to
\r
3049 * poll for incoming events on a CEP. The input parameter is the CID.
\r
3053 typedef struct _ual_cep_poll_ioctl
\r
3055 ib_api_status_t status;
\r
3057 ib_mad_element_t element;
\r
3059 uint8_t mad_buf[MAD_BLOCK_SIZE];
\r
3061 } ual_cep_poll_ioctl_t;
\r
3065 * Status of the operation.
\r
3068 * For listen requests, CEP information of CEPs created in response
\r
3069 * to incoming REQs.
\r
3072 * Payload of a received MAD (or failed send)
\r
3077 /****s* User-mode Access Layer/ual_cep_get_pdata_t
\r
3079 * ual_cep_get_pdata_t
\r
3082 * IOCTL structure containing the input parameters for
\r
3083 * getting private data of CM RDMA request
\r
3087 typedef union _ual_cep_get_pdata_ioctl
\r
3089 struct _ual_cep_get_pdata_ioctl_in
\r
3095 struct _ual_cep_get_pdata_ioctl_out
\r
3097 uint32_t pdata_len;
\r
3098 uint8_t pdata[IB_REJ_PDATA_SIZE];
\r
3100 uint8_t init_depth;
\r
3104 } ual_cep_get_pdata_ioctl_t;
\r
3108 * The CID for the target CEP.
\r
3111 * The size of the private data
\r
3114 * The private data.
\r
3119 /****s* User-mode Access Layer/ual_reg_shmid_ioctl_t
\r
3121 * ual_reg_shmid_ioctl_t
\r
3124 * IOCTL structure containing the input and output parameters for
\r
3129 typedef union _ual_reg_shmid_ioctl
\r
3131 struct _ual_reg_shmid_ioctl_in
\r
3135 ib_mr_create_t mr_create;
\r
3138 struct _ual_reg_shmid_ioctl_out
\r
3140 ib_api_status_t status;
\r
3148 } ual_reg_shmid_ioctl_t;
\r
3152 * A handle to an existing protection domain that the memory
\r
3153 * should be registered with.
\r
3156 * An identifier to the shared memory region.
\r
3159 * Information describing the attributes of the memory region to
\r
3163 * Status of the operation.
\r
3166 * Assigned I/O virtual address for the memory region.
\r
3169 * The local access key associated with this registered memory
\r
3173 * A key that may be used by a remote end-point when performing RDMA
\r
3174 * or atomic operations to this registered memory region.
\r
3177 * Upon successful completion of this call, this references a handle
\r
3178 * to the registered memory region. This handle is used when performing
\r
3179 * data transfers and to deregister the memory.
\r
3184 /****s* User-mode Access Layer/ual_send_sa_req_t
\r
3186 * ual_send_sa_req_t
\r
3189 * IOCTL structure containing the input and output parameters for
\r
3194 typedef union _ual_send_sa_req_ioctl
\r
3196 struct _ual_send_sa_req_ioctl_in
\r
3198 net64_t port_guid;
\r
3199 uint32_t timeout_ms;
\r
3200 uint32_t retry_cnt;
\r
3201 ib_user_query_t sa_req;
\r
3202 uint8_t attr[IB_SA_DATA_SIZE];
\r
3203 uint64_t ph_sa_req;
\r
3204 uint64_t p_status;
\r
3207 struct _ual_send_sa_req_ioctl_out
\r
3209 ib_api_status_t status;
\r
3211 uint32_t resp_size;
\r
3215 } ual_send_sa_req_ioctl_t;
\r
3219 * The SA request to send.
\r
3222 * The SA attribute data to send.
\r
3225 * Pointer to UAL's query handle. The proxy fills this in
\r
3226 * before returning from the IOCTL handler to allow cancelation.
\r
3229 * Pointer to status of the query.
\r
3232 * Status of the query if it was initiated successfully.
\r
3235 * Handle to a response MAD.
\r
3238 * Size, in bytes, of the response MAD's buffer.
\r
3243 /****s* User-mode Access Layer/ual_cancel_sa_req_ioctl_t
\r
3245 * ual_cancel_sa_req_ioctl_t
\r
3248 * IOCTL structure containing the input parameters for cancelling an
\r
3253 typedef struct _ual_cancel_sa_req_ioctl
\r
3255 uint64_t h_sa_req;
\r
3257 } ual_cancel_sa_req_ioctl_t;
\r
3261 * Handle to the query to cancel.
\r
3266 /****s* User-mode Access Layer/ual_reg_pnp_ioctl_in_t
\r
3268 * ual_reg_pnp_ioctl_in_t
\r
3271 * IOCTL structure containing the input parameters for registering
\r
3276 typedef struct _ual_reg_pnp_ioctl_in
\r
3278 ib_pnp_class_t pnp_class;
\r
3279 void* __ptr64 sync_event; /* __ptr64 is correct for HANDLE types. */
\r
3280 uint64_t p_status;
\r
3283 } ual_reg_pnp_ioctl_in_t;
\r
3286 * This is an asynchronous IOCTL.
\r
3288 * The output parameters are a ual_rearm_pnp_ioctl_out_t.
\r
3292 * Class of PnP events for which to register.
\r
3295 * Pointer to user-mode status variable to set in failure case.
\r
3298 * Pointer to user-mode handle variable to set in success case.
\r
3303 /****s* User-mode Access Layer/ual_poll_pnp_ioctl_t
\r
3305 * ual_poll_pnp_ioctl_t
\r
3308 * IOCTL structure containing the parameters for retriveing data for
\r
3313 typedef union _ual_poll_pnp_ioctl
\r
3315 struct _ual_poll_pnp_ioctl_in
\r
3320 struct _ual_poll_pnp_ioctl_out
\r
3322 ib_pnp_rec_t pnp_rec;
\r
3326 } ual_poll_pnp_ioctl_t;
\r
3329 * This is a synchronous IOCTL.
\r
3333 * Handle to a new PnP event.
\r
3336 * Buffer for the new PnP event.
\r
3341 /****s* User-mode Access Layer/ual_rearm_pnp_ioctl_in_t
\r
3343 * ual_rearm_pnp_ioctl_in_t
\r
3346 * IOCTL structure containing the input parameters for requesting
\r
3347 * notification of the next PnP event.
\r
3351 typedef struct _ual_rearm_pnp_ioctl_in
\r
3354 uint64_t last_evt_hdl;
\r
3355 uint64_t last_evt_context;
\r
3356 ib_api_status_t last_evt_status;
\r
3358 } ual_rearm_pnp_ioctl_in_t;
\r
3361 * This is an asynchronous IOCTL.
\r
3363 * The output parameters are a ual_rearm_pnp_ioctl_out_t.
\r
3367 * Handle to the PnP registration to rearm.
\r
3370 * Handle to the last PnP event processed.
\r
3372 * last_evt_context
\r
3373 * Context value to set for the last reported PnP event.
\r
3376 * Status value to return for the last reported PnP event.
\r
3381 /****s* User-mode Access Layer/ual_rearm_pnp_ioctl_out_t
\r
3383 * ual_rearm_pnp_ioctl_out_t
\r
3386 * IOCTL structure containing the output parameters for a PnP event.
\r
3390 typedef struct _ual_rearm_pnp_ioctl_out
\r
3393 uint32_t evt_size;
\r
3395 } ual_rearm_pnp_ioctl_out_t;
\r
3398 * This is an asynchronous IOCTL.
\r
3400 * The output parameters are identical to that of ual_reg_pnp_ioctl_t.
\r
3404 * Handle to a new PnP event.
\r
3407 * Buffer size needed to poll the new PnP event.
\r
3412 /****s* User-mode Access Layer/ual_dereg_pnp_ioctl_t
\r
3414 * ual_dereg_pnp_ioctl_t
\r
3417 * IOCTL structure containing the input parameters for cancelling an
\r
3422 typedef struct _ual_dereg_pnp_ioctl
\r
3426 } ual_dereg_pnp_ioctl_t;
\r
3429 * This is an asynchronous IOCTL.
\r
3433 * Handle to the PnP registration to deregister.
\r
3436 /****s* User-mode Access Layer/ual_ndi_notify_cq_ioctl_in_t
\r
3438 * ual_ndi_notify_cq_ioctl_in_t
\r
3441 * IOCTL structure containing the input parameters for requesting
\r
3442 * notification of the next event on NDI CQ.
\r
3446 typedef struct _ual_ndi_notify_cq_ioctl_in
\r
3449 boolean_t notify_comps;
\r
3451 } ual_ndi_notify_cq_ioctl_in_t;
\r
3454 * This is an asynchronous IOCTL.
\r
3458 * A handle to the CQ to modify.
\r
3461 * Type of notification, requested. If TRUE - completion events,
\r
3462 * otherwise - errors.
\r
3466 /****s* User-mode Access Layer/ual_ndi_req_cm_ioctl_in_t
\r
3468 * ual_ndi_req_cm_ioctl_in_t
\r
3471 * IOCTL structure containing the input parameters
\r
3472 * sending CM REQ .
\r
3476 typedef struct _ual_ndi_req_cm_ioctl_in
\r
3478 ib_path_rec_t path;
\r
3482 uint16_t dst_port;
\r
3484 uint8_t init_depth;
\r
3486 uint8_t pdata_size;
\r
3487 ib_cm_rdma_req_t pdata;
\r
3489 } ual_ndi_req_cm_ioctl_in_t;
\r
3492 * There is no output parameter.
\r
3496 * A handle to the QP to modify.
\r
3499 * Local port GUID to which to bind to.
\r
3502 * CID of the CEP to use for the connection request.
\r
3505 * Destination port number.
\r
3508 * Path record for the connection.
\r
3511 * Responder resources for the QP.
\r
3514 * Initiator depth for the QP.
\r
3520 * The size of following private RDMA CM data
\r
3523 * Private data in format RDMA CM
\r
3527 /****s* User-mode Access Layer/ual_ndi_rep_cm_ioctl_in_t
\r
3529 * ual_ndi_rep_cm_ioctl_in_t
\r
3532 * IOCTL structure containing the input parameters
\r
3533 * sending CM REP response .
\r
3537 typedef struct _ual_ndi_rep_cm_ioctl_in
\r
3541 uint8_t init_depth;
\r
3543 uint8_t pdata_size;
\r
3544 uint8_t pdata[IB_REJ_PDATA_SIZE];
\r
3546 } ual_ndi_rep_cm_ioctl_in_t;
\r
3549 * The output parameter is the new QP state (RTS).
\r
3553 * A handle to the QP to modify.
\r
3559 * The maximum number of outstanding RDMA read/atomic operations.
\r
3562 * The maximum number of RDMA read/atomic operations from the recipient.
\r
3565 * The size of following private data
\r
3568 * Private data in format RDMA CM
\r