Whamcloud - gitweb
Landing b_hd_newconfig on HEAD
[fs/lustre-release.git] / lnet / include / lnet / winnt / lnet.h
1 /* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*-
2  * vim:expandtab:shiftwidth=8:tabstop=8:
3  */
4 #ifndef __LNET_LINUX_LNET_H__
5 #define __LNET_LINUX_LNET_H__
6
7 #ifndef __LNET_H__
8 #error Do not #include this file directly. #include <lnet/lnet.h> instead
9 #endif
10
11 #ifdef __KERNEL__
12
13 #include <libcfs/libcfs.h>
14 #include <lnet/lib-lnet.h>
15
16 /*
17  * tdilnd routines
18  */
19
20
21 PUCHAR
22 KsNtStatusToString (IN NTSTATUS Status);
23
24
25 VOID
26 KsPrintf(
27     IN LONG  DebugPrintLevel,
28     IN PCHAR DebugMessage,
29     IN ...
30     );
31
32
33 ksock_mdl_t *
34 ks_lock_iovs(
35     IN struct iovec  *iov,
36     IN int            niov,
37     IN int            recv,
38     IN int *          len
39     );
40
41 ksock_mdl_t *
42 ks_lock_kiovs(
43     IN lnet_kiov_t *   kiov,
44     IN int            nkiov,
45     IN int            recv,
46     IN int *          len
47     );
48
49 int
50 ks_send_mdl(
51     ksock_tconn_t * tconn,
52     void *          tx,
53     ksock_mdl_t *   mdl,
54     int             len,
55     int             flags
56     );
57
58 int
59 ks_query_data(
60     ksock_tconn_t * tconn,
61     size_t *        size,
62     int             bIsExpedited);
63
64 int
65 ks_recv_mdl(
66     ksock_tconn_t * tconn,
67     ksock_mdl_t *   mdl,
68     int             size,
69     int             flags
70     );
71
72 int
73 ks_get_tcp_option (
74     ksock_tconn_t *     tconn,
75     ULONG               ID,
76     PVOID               OptionValue,
77     PULONG              Length
78     );
79
80 NTSTATUS
81 ks_set_tcp_option (
82     ksock_tconn_t * tconn,
83     ULONG           ID,
84     PVOID           OptionValue,
85     ULONG           Length
86     );
87
88 int
89 ks_bind_tconn (
90     ksock_tconn_t * tconn,
91     ksock_tconn_t * parent,
92     ulong_ptr   addr,
93     unsigned short  port
94     );
95
96 int
97 ks_build_tconn(
98     ksock_tconn_t *                 tconn,
99     ulong_ptr                   addr,
100     unsigned short                  port
101     );
102
103 int
104 ks_disconnect_tconn(
105     ksock_tconn_t *     tconn,
106     ulong_ptr       flags
107     );
108
109 void
110 ks_abort_tconn(
111     ksock_tconn_t *     tconn
112     );
113
114 int
115 ks_query_local_ipaddr(
116     ksock_tconn_t *     tconn
117     );
118
119 int
120 ks_tconn_write (ksock_tconn_t *tconn, void *buffer, int nob);
121
122 int
123 ks_tconn_read (ksock_tconn_t * tconn, void *buffer, int nob);
124
125 NTSTATUS
126 KsTcpCompletionRoutine(
127     IN PDEVICE_OBJECT   DeviceObject,
128     IN PIRP             Irp,
129     IN PVOID            Context
130     );
131
132 NTSTATUS
133 KsDisconectCompletionRoutine (
134     IN PDEVICE_OBJECT   DeviceObject,
135     IN PIRP             Irp,
136     IN PVOID            Context
137     );
138
139 NTSTATUS
140 KsTcpReceiveCompletionRoutine(
141     IN PIRP                         Irp,
142     IN PKS_TCP_COMPLETION_CONTEXT   Context
143     );
144
145 NTSTATUS
146 KsTcpSendCompletionRoutine(
147     IN PIRP                         Irp,
148     IN PKS_TCP_COMPLETION_CONTEXT   Context
149     );
150
151 NTSTATUS
152 KsAcceptCompletionRoutine(
153     IN PDEVICE_OBJECT   DeviceObject,
154     IN PIRP             Irp,
155     IN PVOID            Context
156     );
157
158
159 NTSTATUS
160 KsConnectEventHandler(
161     IN PVOID                    TdiEventContext,
162     IN LONG                     RemoteAddressLength,
163     IN PVOID                    RemoteAddress,
164     IN LONG                     UserDataLength,
165     IN PVOID                    UserData,
166     IN LONG                     OptionsLength,
167     IN PVOID                    Options,
168     OUT CONNECTION_CONTEXT *    ConnectionContext,
169     OUT PIRP *                  AcceptIrp
170     );
171
172 NTSTATUS 
173 KsDisconnectEventHandler(
174     IN PVOID                TdiEventContext,
175     IN CONNECTION_CONTEXT   ConnectionContext,
176     IN LONG                 DisconnectDataLength,
177     IN PVOID                DisconnectData,
178     IN LONG                 DisconnectInformationLength,
179     IN PVOID                DisconnectInformation,
180     IN ULONG                DisconnectFlags
181     );
182
183 NTSTATUS
184 KsTcpReceiveEventHandler(
185     IN PVOID                TdiEventContext, 
186     IN CONNECTION_CONTEXT   ConnectionContext,
187     IN ULONG                ReceiveFlags,
188     IN ULONG                BytesIndicated,
189     IN ULONG                BytesAvailable,
190     OUT ULONG *             BytesTaken,
191     IN PVOID                Tsdu,
192     OUT PIRP *              IoRequestPacket
193    );
194
195 NTSTATUS
196 KsTcpReceiveExpeditedEventHandler(
197     IN PVOID                TdiEventContext, 
198     IN CONNECTION_CONTEXT   ConnectionContext,
199     IN ULONG                ReceiveFlags,
200     IN ULONG                BytesIndicated,
201     IN ULONG                BytesAvailable,
202     OUT ULONG *             BytesTaken,
203     IN PVOID                Tsdu,
204     OUT PIRP *              IoRequestPacket
205     );
206
207 NTSTATUS
208 KsTcpChainedReceiveEventHandler (
209     IN PVOID TdiEventContext,       // the event context
210     IN CONNECTION_CONTEXT ConnectionContext,
211     IN ULONG ReceiveFlags, 
212     IN ULONG ReceiveLength,
213     IN ULONG StartingOffset,        // offset of start of client data in TSDU
214     IN PMDL  Tsdu,                  // TSDU data chain
215     IN PVOID TsduDescriptor         // for call to TdiReturnChainedReceives
216     );
217
218 NTSTATUS
219 KsTcpChainedReceiveExpeditedEventHandler (
220     IN PVOID                TdiEventContext,       // the event context
221     IN CONNECTION_CONTEXT   ConnectionContext,
222     IN ULONG                ReceiveFlags, 
223     IN ULONG                ReceiveLength,
224     IN ULONG                StartingOffset,        // offset of start of client data in TSDU
225     IN PMDL                 Tsdu,                  // TSDU data chain
226     IN PVOID                TsduDescriptor         // for call to TdiReturnChainedReceives
227     );
228
229
230
231 VOID
232 KsDisconnectHelper(PKS_DISCONNECT_WORKITEM WorkItem);
233
234
235 ULONG
236 ks_tdi_send_flags(ULONG SockFlags);
237
238 PIRP
239 KsBuildTdiIrp(
240     IN PDEVICE_OBJECT    DeviceObject
241     );
242
243 NTSTATUS
244 KsSubmitTdiIrp(
245     IN PDEVICE_OBJECT   DeviceObject,
246     IN PIRP             Irp,
247     IN BOOLEAN          bSynchronous,
248     OUT PULONG          Information
249     );
250
251 NTSTATUS
252 KsOpenControl(
253     IN PUNICODE_STRING      DeviceName,
254     OUT HANDLE *            Handle,
255     OUT PFILE_OBJECT *      FileObject
256    );
257
258 NTSTATUS
259 KsCloseControl(
260     IN HANDLE             Handle,
261     IN PFILE_OBJECT       FileObject
262    );
263
264 NTSTATUS
265 KsOpenAddress(
266     IN PUNICODE_STRING      DeviceName,
267     IN PTRANSPORT_ADDRESS   pAddress,
268     IN ULONG                AddressLength,
269     OUT HANDLE *            Handle,
270     OUT PFILE_OBJECT *      FileObject
271    );
272
273 NTSTATUS
274 KsCloseAddress(
275     IN HANDLE             Handle,
276     IN PFILE_OBJECT       FileObject
277     );
278
279 NTSTATUS
280 KsOpenConnection(
281     IN PUNICODE_STRING      DeviceName,
282     IN CONNECTION_CONTEXT   ConnectionContext,
283     OUT HANDLE *            Handle,
284     OUT PFILE_OBJECT *      FileObject
285    );
286
287 NTSTATUS
288 KsCloseConnection(
289     IN HANDLE             Handle,
290     IN PFILE_OBJECT       FileObject
291     );
292
293 NTSTATUS
294 KsAssociateAddress(
295     IN HANDLE           AddressHandle,
296     IN PFILE_OBJECT     ConnectionObject
297     );
298
299
300 NTSTATUS
301 KsDisassociateAddress(
302     IN PFILE_OBJECT     ConnectionObject
303     );
304
305
306 NTSTATUS
307 KsSetEventHandlers(
308     IN PFILE_OBJECT         AddressObject,
309     IN PVOID                EventContext,
310     IN PKS_EVENT_HANDLERS   Handlers
311    );
312
313
314 NTSTATUS
315 KsQueryProviderInfo(
316     PWSTR               TdiDeviceName,
317     PTDI_PROVIDER_INFO  ProviderInfo
318    );
319
320 NTSTATUS
321 KsQueryAddressInfo(
322     IN PFILE_OBJECT         FileObject,
323     OUT PTDI_ADDRESS_INFO   AddressInfo,
324     OUT PULONG              AddressSize
325    );
326
327 NTSTATUS
328 KsQueryConnectionInfo(
329     IN PFILE_OBJECT            ConnectionObject,
330     OUT PTDI_CONNECTION_INFO   ConnectionInfo,
331     OUT PULONG                 ConnectionSize
332    );
333
334 ULONG
335 KsInitializeTdiAddress(
336     IN OUT PTA_IP_ADDRESS   pTransportAddress,
337     IN ULONG                IpAddress,
338     IN USHORT               IpPort
339     );
340
341 ULONG
342 KsQueryMdlsSize (IN PMDL Mdl);
343
344
345 ULONG
346 KsQueryTdiAddressLength(
347     OUT PTRANSPORT_ADDRESS   pTransportAddress
348     );
349
350 NTSTATUS
351 KsQueryIpAddress(
352     IN PFILE_OBJECT     FileObject,
353     OUT PVOID           TdiAddress,
354     OUT ULONG*          AddressLength
355     );
356
357
358 NTSTATUS
359 KsErrorEventHandler(
360     IN PVOID            TdiEventContext,
361     IN NTSTATUS         Status
362    );
363
364 int
365 ks_set_handlers(
366     ksock_tconn_t *     tconn
367     );
368
369
370 VOID
371 KsPrintProviderInfo(
372    PWSTR DeviceName,
373    PTDI_PROVIDER_INFO ProviderInfo
374    );
375
376 ksock_tconn_t *
377 ks_create_tconn();
378
379 void
380 ks_free_tconn(
381     ksock_tconn_t * tconn
382     );
383
384 void
385 ks_init_listener(
386     ksock_tconn_t * tconn
387     );
388
389 void
390 ks_init_sender(
391     ksock_tconn_t * tconn
392     );
393
394 void
395 ks_init_child(
396     ksock_tconn_t * tconn
397     );
398
399 void
400 ks_get_tconn(
401     ksock_tconn_t * tconn
402     );
403
404 void
405 ks_put_tconn(
406     ksock_tconn_t * tconn
407     );
408
409 int
410 ks_reset_handlers(
411     ksock_tconn_t *     tconn
412     );
413
414 void
415 ks_destroy_tconn(
416     ksock_tconn_t *     tconn
417     );
418
419
420 PKS_TSDU
421 KsAllocateKsTsdu();
422
423 VOID
424 KsPutKsTsdu(
425     PKS_TSDU  KsTsdu
426     );
427
428 VOID
429 KsFreeKsTsdu(
430     PKS_TSDU  KsTsdu
431     );
432
433 VOID
434 KsInitializeKsTsdu(
435     PKS_TSDU    KsTsdu,
436     ULONG       Length
437     );
438
439
440 VOID
441 KsInitializeKsTsduMgr(
442     PKS_TSDUMGR     TsduMgr
443     );
444
445 VOID
446 KsInitializeKsChain(
447     PKS_CHAIN       KsChain
448     );
449
450 NTSTATUS
451 KsCleanupTsduMgr(
452     PKS_TSDUMGR     KsTsduMgr
453     );
454
455 NTSTATUS
456 KsCleanupKsChain(
457     PKS_CHAIN   KsChain
458     );
459
460 NTSTATUS
461 KsCleanupTsdu(
462     ksock_tconn_t * tconn
463     );
464
465 NTSTATUS
466 KsCopyMdlChainToMdlChain(
467     IN PMDL     SourceMdlChain,
468     IN ULONG    SourceOffset,
469     IN PMDL     DestinationMdlChain,
470     IN ULONG    DestinationOffset,
471     IN ULONG    BytesTobecopied,
472     OUT PULONG  BytesCopied
473     );
474
475 ULONG
476 KsQueryMdlsSize (PMDL Mdl);
477
478 NTSTATUS
479 KsLockUserBuffer (
480     IN PVOID            UserBuffer,
481     IN BOOLEAN          bPaged,
482     IN ULONG            Length,
483     IN LOCK_OPERATION   Operation,
484     OUT PMDL *          pMdl
485     );
486
487 PVOID
488 KsMapMdlBuffer (PMDL    Mdl);
489
490 VOID
491 KsReleaseMdl ( IN PMDL   Mdl,
492                IN int    Paged );
493
494 int
495 ks_lock_buffer (
496     void *            buffer,
497     int               paged,
498     int               length,
499     LOCK_OPERATION    access,
500     ksock_mdl_t **    kmdl
501     );
502
503 void *
504 ks_map_mdl (ksock_mdl_t * mdl);
505
506 void
507 ks_release_mdl (ksock_mdl_t *mdl, int paged);
508
509 #endif /* __KERNEL__ */
510
511 #endif