2 * Copyright (c) 2008 Intel Corporation. All rights reserved.
\r
4 * This software is available to you under the OpenIB.org BSD license
\r
7 * Redistribution and use in source and binary forms, with or
\r
8 * without modification, are permitted provided that the following
\r
9 * conditions are met:
\r
11 * - Redistributions of source code must retain the above
\r
12 * copyright notice, this list of conditions and the following
\r
15 * - Redistributions in binary form must reproduce the above
\r
16 * copyright notice, this list of conditions and the following
\r
17 * disclaimer in the documentation and/or other materials
\r
18 * provided with the distribution.
\r
20 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
\r
21 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
\r
22 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AWV
\r
23 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
\r
24 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
\r
25 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
\r
26 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
\r
32 #ifndef _WV_IOCTL_H_
\r
33 #define _WV_IOCTL_H_
\r
35 typedef UINT16 NET16;
\r
36 typedef UINT32 NET32;
\r
37 typedef UINT64 NET64;
\r
39 #define WV_IOCTL(f) CTL_CODE(FILE_DEVICE_INFINIBAND, f, METHOD_BUFFERED,\
\r
40 FILE_READ_DATA | FILE_WRITE_DATA)
\r
42 // input parameter / output parameter
\r
44 #define WV_IO_FUNCTION_BASE 0x800
\r
48 WV_IO_FUNCTION_GUID_QUERY,
\r
49 WV_IO_FUNCTION_LIBRARY_QUERY,
\r
50 WV_IO_FUNCTION_DEVICE_OPEN,
\r
51 WV_IO_FUNCTION_DEVICE_CLOSE,
\r
52 WV_IO_FUNCTION_DEVICE_QUERY,
\r
53 WV_IO_FUNCTION_DEVICE_PORT_QUERY,
\r
54 WV_IO_FUNCTION_DEVICE_GID_QUERY,
\r
55 WV_IO_FUNCTION_DEVICE_PKEY_QUERY,
\r
56 WV_IO_FUNCTION_DEVICE_NOTIFY,
\r
57 WV_IO_FUNCTION_DEVICE_CANCEL,
\r
58 WV_IO_FUNCTION_PD_ALLOCATE,
\r
59 WV_IO_FUNCTION_PD_DEALLOCATE,
\r
60 WV_IO_FUNCTION_MEMORY_REGISTER,
\r
61 WV_IO_FUNCTION_MEMORY_DEREGISTER,
\r
62 WV_IO_FUNCTION_MW_ALLOCATE,
\r
63 WV_IO_FUNCTION_MW_DEALLOCATE,
\r
64 WV_IO_FUNCTION_AH_CREATE,
\r
65 WV_IO_FUNCTION_AH_DESTROY,
\r
66 WV_IO_FUNCTION_CQ_CREATE,
\r
67 WV_IO_FUNCTION_CQ_DESTROY,
\r
68 WV_IO_FUNCTION_CQ_RESIZE,
\r
69 WV_IO_FUNCTION_CQ_NOTIFY,
\r
70 WV_IO_FUNCTION_CQ_CANCEL,
\r
71 WV_IO_FUNCTION_SRQ_CREATE,
\r
72 WV_IO_FUNCTION_SRQ_DESTROY,
\r
73 WV_IO_FUNCTION_SRQ_QUERY,
\r
74 WV_IO_FUNCTION_SRQ_MODIFY,
\r
75 WV_IO_FUNCTION_SRQ_NOTIFY,
\r
76 WV_IO_FUNCTION_SRQ_CANCEL,
\r
77 WV_IO_FUNCTION_QP_CREATE,
\r
78 WV_IO_FUNCTION_QP_DESTROY,
\r
79 WV_IO_FUNCTION_QP_QUERY,
\r
80 WV_IO_FUNCTION_QP_MODIFY,
\r
81 WV_IO_FUNCTION_QP_ATTACH,
\r
82 WV_IO_FUNCTION_QP_DETACH,
\r
83 WV_IO_FUNCTION_QP_CANCEL,
\r
84 WV_IO_FUNCTION_EP_CREATE,
\r
85 WV_IO_FUNCTION_EP_DESTROY,
\r
86 WV_IO_FUNCTION_EP_MODIFY,
\r
87 WV_IO_FUNCTION_EP_BIND,
\r
88 WV_IO_FUNCTION_EP_REJECT,
\r
89 WV_IO_FUNCTION_EP_CONNECT,
\r
90 WV_IO_FUNCTION_EP_ACCEPT,
\r
91 WV_IO_FUNCTION_EP_DISCONNECT,
\r
92 WV_IO_FUNCTION_EP_DISCONNECT_NOTIFY,
\r
93 WV_IO_FUNCTION_EP_QUERY,
\r
94 WV_IO_FUNCTION_EP_LOOKUP,
\r
95 WV_IO_FUNCTION_EP_MULTICAST_JOIN,
\r
96 WV_IO_FUNCTION_EP_MULTICAST_LEAVE,
\r
97 WV_IO_FUNCTION_EP_CANCEL,
\r
98 WV_IO_FUNCTION_EP_LISTEN,
\r
99 WV_IO_FUNCTION_EP_GET_REQUEST,
\r
100 WV_IO_FUNCTION_PD_CANCEL,
\r
104 // none / WV_IO_GUID_LIST
\r
105 #define WV_IOCTL_GUID_QUERY WV_IOCTL(WV_IO_FUNCTION_BASE + \
\r
106 WV_IO_FUNCTION_GUID_QUERY)
\r
108 // NET64 Guid / LibraryName
\r
109 #define WV_IOCTL_LIBRARY_QUERY WV_IOCTL(WV_IO_FUNCTION_BASE + \
\r
110 WV_IO_FUNCTION_LIBRARY_QUERY)
\r
112 // WV_IO_ID / WV_IO_ID
\r
113 #define WV_IOCTL_DEVICE_OPEN WV_IOCTL(WV_IO_FUNCTION_BASE + \
\r
114 WV_IO_FUNCTION_DEVICE_OPEN)
\r
116 // UINT64 Id / none
\r
117 #define WV_IOCTL_DEVICE_CLOSE WV_IOCTL(WV_IO_FUNCTION_BASE + \
\r
118 WV_IO_FUNCTION_DEVICE_CLOSE)
\r
120 // UINT64 Id / WV_IO_DEVICE_ATTRIBUTES
\r
121 #define WV_IOCTL_DEVICE_QUERY WV_IOCTL(WV_IO_FUNCTION_BASE + \
\r
122 WV_IO_FUNCTION_DEVICE_QUERY)
\r
124 // WV_IO_DEVICE_PORT_QUERY / WV_IO_PORT_ATTRIBUTES == WV_PORT_ATTRIBUTES
\r
125 #define WV_IOCTL_DEVICE_PORT_QUERY WV_IOCTL(WV_IO_FUNCTION_BASE + \
\r
126 WV_IO_FUNCTION_DEVICE_PORT_QUERY)
\r
128 // WV_IO_DEVICE_PORT_QUERY / WV_IO_GID[] == WV_GID[]
\r
129 #define WV_IOCTL_DEVICE_GID_QUERY WV_IOCTL(WV_IO_FUNCTION_BASE + \
\r
130 WV_IO_FUNCTION_DEVICE_GID_QUERY)
\r
132 // WV_IO_DEVICE_PORT_QUERY / NET16 Pkey[]
\r
133 #define WV_IOCTL_DEVICE_PKEY_QUERY WV_IOCTL(WV_IO_FUNCTION_BASE + \
\r
134 WV_IO_FUNCTION_DEVICE_PKEY_QUERY)
\r
136 // WV_IO_ID / DWORD
\r
137 #define WV_IOCTL_DEVICE_NOTIFY WV_IOCTL(WV_IO_FUNCTION_BASE + \
\r
138 WV_IO_FUNCTION_DEVICE_NOTIFY)
\r
140 // UINT64 Id / none
\r
141 #define WV_IOCTL_DEVICE_CANCEL WV_IOCTL(WV_IO_FUNCTION_BASE + \
\r
142 WV_IO_FUNCTION_DEVICE_CANCEL)
\r
144 // WV_IO_ID / WV_IO_ID
\r
145 #define WV_IOCTL_PD_ALLOCATE WV_IOCTL(WV_IO_FUNCTION_BASE + \
\r
146 WV_IO_FUNCTION_PD_ALLOCATE)
\r
148 // UINT64 Id / none
\r
149 #define WV_IOCTL_PD_DEALLOCATE WV_IOCTL(WV_IO_FUNCTION_BASE + \
\r
150 WV_IO_FUNCTION_PD_DEALLOCATE)
\r
152 // UINT64 Id / none
\r
153 #define WV_IOCTL_PD_CANCEL WV_IOCTL(WV_IO_FUNCTION_BASE + \
\r
154 WV_IO_FUNCTION_PD_CANCEL)
\r
156 // WV_IO_MEMORY_REGISTER / WV_IO_MEMORY_KEYS
\r
157 #define WV_IOCTL_MEMORY_REGISTER WV_IOCTL(WV_IO_FUNCTION_BASE + \
\r
158 WV_IO_FUNCTION_MEMORY_REGISTER)
\r
161 #define WV_IOCTL_MEMORY_DEREGISTER WV_IOCTL(WV_IO_FUNCTION_BASE + \
\r
162 WV_IO_FUNCTION_MEMORY_DEREGISTER)
\r
164 // WV_IO_ID / WV_IO_ID
\r
165 #define WV_IOCTL_MW_ALLOCATE WV_IOCTL(WV_IO_FUNCTION_BASE + \
\r
166 WV_IO_FUNCTION_MW_ALLOCATE)
\r
168 // UINT64 Id / none
\r
169 #define WV_IOCTL_MW_DEALLOCATE WV_IOCTL(WV_IO_FUNCTION_BASE + \
\r
170 WV_IO_FUNCTION_MW_DEALLOCATE)
\r
172 // WV_IO_AH_CREATE / WV_IO_AH_CREATE
\r
173 #define WV_IOCTL_AH_CREATE WV_IOCTL(WV_IO_FUNCTION_BASE + \
\r
174 WV_IO_FUNCTION_AH_CREATE)
\r
176 // UINT64 Id / none
\r
177 #define WV_IOCTL_AH_DESTROY WV_IOCTL(WV_IO_FUNCTION_BASE + \
\r
178 WV_IO_FUNCTION_AH_DESTROY)
\r
180 // WV_IO_ID / WV_IO_ID
\r
181 #define WV_IOCTL_CQ_CREATE WV_IOCTL(WV_IO_FUNCTION_BASE + \
\r
182 WV_IO_FUNCTION_CQ_CREATE)
\r
184 // UINT64 Id / none
\r
185 #define WV_IOCTL_CQ_DESTROY WV_IOCTL(WV_IO_FUNCTION_BASE + \
\r
186 WV_IO_FUNCTION_CQ_DESTROY)
\r
188 // WV_IO_ID / WV_IO_ID
\r
189 #define WV_IOCTL_CQ_RESIZE WV_IOCTL(WV_IO_FUNCTION_BASE + \
\r
190 WV_IO_FUNCTION_CQ_RESIZE)
\r
193 #define WV_IOCTL_CQ_NOTIFY WV_IOCTL(WV_IO_FUNCTION_BASE + \
\r
194 WV_IO_FUNCTION_CQ_NOTIFY)
\r
196 // UINT64 Id / none
\r
197 #define WV_IOCTL_CQ_CANCEL WV_IOCTL(WV_IO_FUNCTION_BASE + \
\r
198 WV_IO_FUNCTION_CQ_CANCEL)
\r
200 // WV_IO_SRQ_ATTRIBUTES / WV_IO_SRQ_ATTRIBUTES
\r
201 #define WV_IOCTL_SRQ_CREATE WV_IOCTL(WV_IO_FUNCTION_BASE + \
\r
202 WV_IO_FUNCTION_SRQ_CREATE)
\r
204 // UINT64 Id / none
\r
205 #define WV_IOCTL_SRQ_DESTROY WV_IOCTL(WV_IO_FUNCTION_BASE + \
\r
206 WV_IO_FUNCTION_SRQ_DESTROY)
\r
208 // WV_IO_SRQ_ATTRIBUTES / WV_IO_SRQ_ATTRIBUTES
\r
209 #define WV_IOCTL_SRQ_QUERY WV_IOCTL(WV_IO_FUNCTION_BASE + \
\r
210 WV_IO_FUNCTION_SRQ_QUERY)
\r
212 // WV_IO_SRQ_ATTRIBUTES / WV_IO_SRQ_ATTRIBUTES
\r
213 #define WV_IOCTL_SRQ_MODIFY WV_IOCTL(WV_IO_FUNCTION_BASE + \
\r
214 WV_IO_FUNCTION_SRQ_MODIFY)
\r
216 // UINT64 Id / none
\r
217 #define WV_IOCTL_SRQ_NOTIFY WV_IOCTL(WV_IO_FUNCTION_BASE + \
\r
218 WV_IO_FUNCTION_SRQ_NOTIFY)
\r
220 // UINT64 Id / none
\r
221 #define WV_IOCTL_SRQ_CANCEL WV_IOCTL(WV_IO_FUNCTION_BASE + \
\r
222 WV_IO_FUNCTION_SRQ_CANCEL)
\r
224 // WV_IO_QP_CREATE / WV_IO_QP_CREATE
\r
225 #define WV_IOCTL_QP_CREATE WV_IOCTL(WV_IO_FUNCTION_BASE + \
\r
226 WV_IO_FUNCTION_QP_CREATE)
\r
228 // UINT64 Id / none
\r
229 #define WV_IOCTL_QP_DESTROY WV_IOCTL(WV_IO_FUNCTION_BASE + \
\r
230 WV_IO_FUNCTION_QP_DESTROY)
\r
232 // WV_IO_ID / WV_IO_QP_ATTRIBUTES
\r
233 #define WV_IOCTL_QP_QUERY WV_IOCTL(WV_IO_FUNCTION_BASE + \
\r
234 WV_IO_FUNCTION_QP_QUERY)
\r
236 // WV_IO_QP_ATTRIBUTES / verbs specific
\r
237 #define WV_IOCTL_QP_MODIFY WV_IOCTL(WV_IO_FUNCTION_BASE + \
\r
238 WV_IO_FUNCTION_QP_MODIFY)
\r
240 // WV_IO_QP_MULTICAST / none
\r
241 #define WV_IOCTL_QP_ATTACH WV_IOCTL(WV_IO_FUNCTION_BASE + \
\r
242 WV_IO_FUNCTION_QP_ATTACH)
\r
244 // WV_IO_QP_MULTICAST / none
\r
245 #define WV_IOCTL_QP_DETACH WV_IOCTL(WV_IO_FUNCTION_BASE + \
\r
246 WV_IO_FUNCTION_QP_DETACH)
\r
248 // UINT64 Id / none
\r
249 #define WV_IOCTL_QP_CANCEL WV_IOCTL(WV_IO_FUNCTION_BASE + \
\r
250 WV_IO_FUNCTION_QP_CANCEL)
\r
252 // UINT64 EpType / UINT64 Id
\r
253 #define WV_IOCTL_EP_CREATE WV_IOCTL(WV_IO_FUNCTION_BASE + \
\r
254 WV_IO_FUNCTION_EP_CREATE)
\r
256 // UINT64 Id / none
\r
257 #define WV_IOCTL_EP_DESTROY WV_IOCTL(WV_IO_FUNCTION_BASE + \
\r
258 WV_IO_FUNCTION_EP_DESTROY)
\r
260 // WV_IO_ID + UINT8[] / none
\r
261 #define WV_IOCTL_EP_MODIFY WV_IOCTL(WV_IO_FUNCTION_BASE + \
\r
262 WV_IO_FUNCTION_EP_MODIFY)
\r
264 // WV_IO_EP_BIND / WV_IO_EP_BIND
\r
265 #define WV_IOCTL_EP_BIND WV_IOCTL(WV_IO_FUNCTION_BASE + \
\r
266 WV_IO_FUNCTION_EP_BIND)
\r
268 // WV_IO_ID + UINT8[] / none
\r
269 #define WV_IOCTL_EP_REJECT WV_IOCTL(WV_IO_FUNCTION_BASE + \
\r
270 WV_IO_FUNCTION_EP_REJECT)
\r
272 // WV_IO_EP_CONNECT / none
\r
273 #define WV_IOCTL_EP_CONNECT WV_IOCTL(WV_IO_FUNCTION_BASE + \
\r
274 WV_IO_FUNCTION_EP_CONNECT)
\r
276 // WV_IO_EP_ACCEPT / verbs specific
\r
277 #define WV_IOCTL_EP_ACCEPT WV_IOCTL(WV_IO_FUNCTION_BASE + \
\r
278 WV_IO_FUNCTION_EP_ACCEPT)
\r
280 // WV_IO_EP_DISCONNECT/ verbs specific
\r
281 #define WV_IOCTL_EP_DISCONNECT WV_IOCTL(WV_IO_FUNCTION_BASE + \
\r
282 WV_IO_FUNCTION_EP_DISCONNECT)
\r
284 // UINT64 Id / none
\r
285 #define WV_IOCTL_EP_DISCONNECT_NOTIFY WV_IOCTL(WV_IO_FUNCTION_BASE + \
\r
286 WV_IO_FUNCTION_EP_DISCONNECT_NOTIFY)
\r
288 // UINT64 Id / WV_IO_EP_ATTRIBUTES
\r
289 #define WV_IOCTL_EP_QUERY WV_IOCTL(WV_IO_FUNCTION_BASE + \
\r
290 WV_IO_FUNCTION_EP_QUERY)
\r
293 #define WV_IOCTL_EP_LOOKUP WV_IOCTL(WV_IO_FUNCTION_BASE + \
\r
294 WV_IO_FUNCTION_EP_LOOKUP)
\r
297 #define WV_IOCTL_EP_MULTICAST_JOIN WV_IOCTL(WV_IO_FUNCTION_BASE + \
\r
298 WV_IO_FUNCTION_EP_MULTICAST_JOIN)
\r
301 #define WV_IOCTL_EP_MULTICAST_LEAVE WV_IOCTL(WV_IO_FUNCTION_BASE + \
\r
302 WV_IO_FUNCTION_EP_MULTICAST_LEAVE)
\r
304 // UINT64 Id / none
\r
305 #define WV_IOCTL_EP_CANCEL WV_IOCTL(WV_IO_FUNCTION_BASE + \
\r
306 WV_IO_FUNCTION_EP_CANCEL)
\r
308 // WV_IO_EP_LISTEN / none
\r
309 #define WV_IOCTL_EP_LISTEN WV_IOCTL(WV_IO_FUNCTION_BASE + \
\r
310 WV_IO_FUNCTION_EP_LISTEN)
\r
312 // WV_IO_EP_GET_REQUEST / none
\r
313 #define WV_IOCTL_EP_GET_REQUEST WV_IOCTL(WV_IO_FUNCTION_BASE + \
\r
314 WV_IO_FUNCTION_EP_GET_REQUEST)
\r
316 #define WV_IOCTL_MIN WV_IO_FUNCTION_BASE + WV_IO_FUNCTION_MIN
\r
317 #define WV_IOCTL_MAX WV_IO_FUNCTION_BASE + WV_IO_FUNCTION_MAX
\r
319 // Device specific data follows input / output structures.
\r
320 typedef struct _WV_IO_ID
\r
328 typedef struct _WV_IO_GUID_LIST
\r
335 #define WV_MAX_LIB_NAME 32
\r
337 // Device/port capability flags
\r
338 #define WV_IO_RESIZE_MAX_WR 0x00000001
\r
339 #define WV_IO_BAD_PKEY_COUNTER 0x00000002
\r
340 #define WV_IO_BAD_QKEY_COUNTER 0x00000004
\r
341 // reserved 0x00000008
\r
342 #define WV_IO_PATH_MIGRATION 0x00000010
\r
343 #define WV_IO_CHANGE_PHYSICAL_PORT 0x00000020
\r
344 #define WV_IO_AH_PORT_CHECKING 0x00000040
\r
345 #define WV_IO_QP_STATE_MODIFIER 0x00000080
\r
346 #define WV_IO_SHUTDOWN_PORT 0x00000100
\r
347 #define WV_IO_INIT_TYPE 0x00000200
\r
348 #define WV_IO_PORT_ACTIVE_EVENT 0x00000400
\r
349 #define WV_IO_SYSTEM_IMAGE_GUID 0x00000800
\r
350 #define WV_IO_RC_RNR_NAK_GENERATION 0x00001000
\r
351 #define WV_IO_SRQ_RESIZE 0x00002000
\r
352 #define WV_IO_BATCH_NOTIFY_CQ 0x00004000
\r
354 #define WV_DEVICE_UNKNOWN 0
\r
355 #define WV_DEVICE_INFINIBAND 1
\r
356 #define WV_DEVICE_IWARP 2
\r
358 #define WV_IO_ATOMIC_NONE 0
\r
359 #define WV_IO_ATOMIC_HCA 1
\r
360 #define WV_IO_ATOMIC_NODE 2
\r
362 typedef struct _WV_IO_DEVICE_ATTRIBUTES
\r
366 NET64 SystemImageGuid;
\r
368 UINT32 VendorPartId;
\r
370 UINT32 CapabilityFlags;
\r
371 UINT32 AtomicCapability;
\r
372 UINT32 PageSizeCapabilityFlags;
\r
378 UINT32 MaxCqEntries;
\r
381 UINT32 MaxQpResponderResources;
\r
382 UINT32 MaxResponderResources;
\r
383 UINT32 MaxQpInitiatorDepth;
\r
384 UINT32 MaxInlineSend;
\r
386 UINT32 MaxMulticast;
\r
387 UINT32 MaxQpAttach;
\r
388 UINT32 MaxMulticastQp;
\r
391 UINT32 MaxMapPerFmr;
\r
397 UINT8 LocalAckDelay;
\r
398 UINT8 PhysPortCount;
\r
401 } WV_IO_DEVICE_ATTRIBUTES;
\r
403 typedef struct _WV_IO_DEVICE_PORT_QUERY
\r
409 } WV_IO_DEVICE_PORT_QUERY;
\r
411 #define WV_IO_PORT_NOP 0
\r
412 #define WV_IO_PORT_DOWN 1
\r
413 #define WV_IO_PORT_INIT 2
\r
414 #define WV_IO_PORT_ARMED 3
\r
415 #define WV_IO_PORT_ACTIVE 4
\r
416 #define WV_IO_PORT_ACTIVEDEFER 5
\r
418 typedef struct _WV_IO_PORT_ATTRIBUTES
\r
420 UINT32 PortCabilityFlags;
\r
424 UINT32 GidTableLength;
\r
425 UINT32 MaxMessageSize;
\r
426 UINT32 BadPkeyCounter;
\r
427 UINT32 QkeyViolationCounter;
\r
428 UINT16 PkeyTableLength;
\r
434 UINT8 SubnetTimeout;
\r
435 UINT8 InitTypeReply;
\r
438 UINT8 PhysicalState;
\r
441 } WV_IO_PORT_ATTRIBUTES;
\r
443 // Port notification flags
\r
444 #define WV_IO_EVENT_ERROR 0x00000001
\r
445 #define WV_IO_EVENT_STATE 0x00000002
\r
446 #define WV_IO_EVENT_ADDRESS 0x00000004
\r
447 #define WV_IO_EVENT_LINK_ADDRESS 0x00000008
\r
448 #define WV_IO_EVENT_PARTITION 0x00000010
\r
449 #define WV_IO_EVENT_MANAGEMENT 0x00000020
\r
451 typedef struct _WV_IO_GID
\r
457 typedef struct _WV_IO_EVENT
\r
466 typedef struct _WV_IO_MEMORY_REGISTER
\r
470 UINT64 BufferLength;
\r
471 UINT32 AccessFlags;
\r
474 } WV_IO_MEMORY_REGISTER;
\r
476 typedef struct _WV_IO_MEMORY_KEYS
\r
481 } WV_IO_MEMORY_KEYS;
\r
483 typedef struct _WV_IO_AV
\r
485 UINT8 NetworkRouteValid;
\r
488 UINT8 TrafficClass;
\r
495 UINT8 ServiceLevel;
\r
496 UINT8 SourcePathBits;
\r
502 typedef struct _WV_IO_AH_CREATE
\r
505 WV_IO_AV AddressVector;
\r
509 #define WV_CQ_ERROR 0
\r
510 #define WV_CQ_NEXT_COMPLETION 1
\r
511 #define WV_CQ_SOLICITED 2
\r
513 typedef struct _WV_IO_SRQ_ATTRIBUTES
\r
521 } WV_IO_SRQ_ATTRIBUTES;
\r
523 #define WV_IO_QP_SIGNAL_SENDS 0x00000001
\r
524 #define WV_IO_QP_MEMORY_MANAGEMENT 0x00000002
\r
526 typedef struct _WV_IO_QP_CREATE
\r
530 UINT64 ReceiveCqId;
\r
535 UINT32 ReceiveDepth;
\r
537 UINT32 MaxInlineSend;
\r
538 UINT32 InitiatorDepth;
\r
539 UINT32 ResponderResources;
\r
547 #define WV_IO_QP_STATE_RESET 0
\r
548 #define WV_IO_QP_STATE_INIT 1
\r
549 #define WV_IO_QP_STATE_RTR 2
\r
550 #define WV_IO_QP_STATE_RTS 3
\r
551 #define WV_IO_QP_STATE_SQD 4
\r
552 #define WV_IO_QP_STATE_SQERROR 5
\r
553 #define WV_IO_QP_STATE_ERROR 6
\r
555 #define WV_IO_QP_ATTR_CAPABILITIES 0x00000001
\r
556 #define WV_IO_QP_ATTR_INITIATOR_DEPTH 0x00000002
\r
557 #define WV_IO_QP_ATTR_RESPONDER_RESOURCES 0x00000004
\r
558 #define WV_IO_QP_ATTR_CURRENT_STATE 0x00000008
\r
559 #define WV_IO_QP_ATTR_STATE 0x00000010
\r
560 #define WV_IO_QP_ATTR_PATH_MIG_STATE 0x00000020
\r
561 #define WV_IO_QP_ATTR_DESTINATION_QPN 0x00000040
\r
562 #define WV_IO_QP_ATTR_QKEY 0x00000080
\r
563 #define WV_IO_QP_ATTR_SEND_PSN 0x00000100
\r
564 #define WV_IO_QP_ATTR_RECEIVE_PSN 0x00000200
\r
565 #define WV_IO_QP_ATTR_FLAGS 0x00000400
\r
566 #define WV_IO_QP_ATTR_ACCESS_FLAGS 0x00000800
\r
567 #define WV_IO_QP_ATTR_AV 0x00001000
\r
568 #define WV_IO_QP_ATTR_ALTERNATE_AV 0x00002000
\r
569 #define WV_IO_QP_ATTR_PORT_NUMBER 0x00004000
\r
570 #define WV_IO_QP_ATTR_PKEY_INDEX 0x00008000
\r
571 #define WV_IO_QP_ATTR_ACK_TIMEOUT 0x00010000
\r
572 #define WV_IO_QP_ATTR_RNR_NAK_TIMEOUT 0x00020000
\r
573 #define WV_IO_QP_ATTR_ERROR_RETRY_COUNT 0x00040000
\r
574 #define WV_IO_QP_ATTR_RNR_RETRY_COUNT 0x00080000
\r
576 typedef struct _WV_IO_QP_ATTRIBUTES
\r
581 UINT32 ReceiveDepth;
\r
583 UINT32 MaxInlineSend;
\r
584 UINT32 InitiatorDepth;
\r
585 UINT32 ResponderResources;
\r
589 UINT8 CurrentQpState;
\r
593 NET32 DestinationQpn;
\r
598 WV_IO_AV AddressVector;
\r
599 WV_IO_AV AlternateAddressVector;
\r
601 UINT32 AlternatePathMtu;
\r
603 UINT16 AlternatePkeyIndex;
\r
604 UINT8 LocalAckTimeout;
\r
605 UINT8 AlternateLocalAckTimeout;
\r
607 UINT8 RnrNakTimeout;
\r
608 UINT8 SequenceErrorRetryCount;
\r
609 UINT8 RnrRetryCount;
\r
615 } WV_IO_QP_ATTRIBUTES;
\r
617 typedef struct _WV_IO_QP_MULTICAST
\r
622 } WV_IO_QP_MULTICAST;
\r
624 // Windows kernel does not define sockaddr* pre-Vista
\r
625 typedef struct _WV_IO_SOCKADDR
\r
632 typedef struct _WV_IO_SOCKADDR_IN
\r
639 } WV_IO_SOCKADDR_IN;
\r
641 typedef struct _WV_IO_SOCKADDR_IN6
\r
645 UINT32 Sin6FlowInfo;
\r
646 UINT8 Sin6Addr[16];
\r
647 UINT32 Sin6ScopeId;
\r
649 } WV_IO_SOCKADDR_IN6;
\r
651 typedef struct _WV_IO_SOCKADDR_DATA
\r
656 WV_IO_SOCKADDR_IN In;
\r
657 WV_IO_SOCKADDR_IN6 In6;
\r
663 } WV_IO_SOCKADDR_DATA;
\r
665 typedef struct _WV_IO_DEVICE_ADDRESS
\r
672 } WV_IO_DEVICE_ADDRESS;
\r
674 typedef struct _WV_IO_EP_BIND
\r
677 WV_IO_SOCKADDR_DATA Address;
\r
678 WV_IO_DEVICE_ADDRESS Device;
\r
682 #define WV_IO_EP_OPTION_ROUTE 0x00000001
\r
684 #define WV_IO_EP_TYPE_CONNECT 0x0106
\r
685 #define WV_IO_EP_TYPE_DATAGRAM 0x0111
\r
687 typedef struct _WV_IO_EP_LISTEN
\r
694 typedef struct _WV_IO_EP_GET_REQUEST
\r
699 } WV_IO_EP_GET_REQUEST;
\r
701 typedef struct _WV_IO_CONNECT_PARAM
\r
703 UINT64 ResponderResources;
\r
704 UINT64 InitiatorDepth;
\r
706 UINT8 RnrRetryCount;
\r
711 } WV_IO_CONNECT_PARAM;
\r
713 typedef struct _WV_IO_EP_CONNECT
\r
717 WV_IO_SOCKADDR_DATA PeerAddress;
\r
718 WV_IO_CONNECT_PARAM Param;
\r
720 } WV_IO_EP_CONNECT;
\r
722 typedef struct _WV_IO_EP_ACCEPT
\r
726 WV_IO_CONNECT_PARAM Param;
\r
730 typedef struct _WV_IO_EP_ATTRIBUTES
\r
732 WV_IO_SOCKADDR_DATA LocalAddress;
\r
733 WV_IO_SOCKADDR_DATA PeerAddress;
\r
734 WV_IO_DEVICE_ADDRESS Device;
\r
737 WV_IO_CONNECT_PARAM Connect;
\r
743 } WV_IO_EP_ATTRIBUTES;
\r
745 typedef struct _WV_IO_EP_DISCONNECT
\r
750 } WV_IO_EP_DISCONNECT;
\r
752 #endif // _WV_IOCTL_H_
\r