[IBAL] This patch removes ATS queries from the ND proxy, with the anticipation that...
[mirror/winof/.git] / core / al / kernel / al_ndi_cm.h
1 /*\r
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
5  *\r
6  * This software is available to you under the OpenIB.org BSD license\r
7  * below:\r
8  *\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
12  *\r
13  *      - Redistributions of source code must retain the above\r
14  *        copyright notice, this list of conditions and the following\r
15  *        disclaimer.\r
16  *\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
21  *\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
29  * SOFTWARE.\r
30  *\r
31  * $Id: al_proxy.h 33 2005-07-11 19:51:17Z ftillier $\r
32  */\r
33 \r
34 /*\r
35  * Abstract:\r
36  *      This header file defines data structures for the kernel-mode NDI support \r
37  *\r
38  * Environment:\r
39  *      Kernel .\r
40  */\r
41 \r
42 \r
43 #ifndef _AL_NDI_CM_H_\r
44 #define _AL_NDI_CM_H_\r
45 \r
46 #include "complib/cl_ioctl_osd.h"\r
47 \r
48 /* QP creation parameters */\r
49 #define QP_ATTRIB_RESPONDER_RESOURCES   4\r
50 #define QP_ATTRIB_INITIATOR_DEPTH               4\r
51 #define QP_ATTRIB_RETRY_COUNT                   6\r
52 #define QP_ATTRIB_RNR_RETRY                             7\r
53 #define QP_ATTRIB_RNR_NAK_TIMEOUT               8 /* 16 ms */\r
54 \r
55 #define QP_ATTRIB_SQ_DEPTH                              16\r
56 \r
57 /* CM timeouts */\r
58 #define CM_MIN_LOCAL_TIMEOUT    (18)\r
59 #define CM_LOCAL_TIMEOUT                (1)\r
60 #define CM_MIN_REMOTE_TIMEOUT   (18)\r
61 #define CM_REMOTE_TIMEOUT               (2)\r
62 #define CM_RETRIES 4\r
63 \r
64 typedef enum _ndi_cm_state \r
65 {\r
66         NDI_CM_IDLE,\r
67         NDI_CM_CONNECTING_QPR_SENT, // QPR = Query path record\r
68         NDI_CM_CONNECTING_REQ_SENT,\r
69         NDI_CM_CONNECTING_REP_SENT,\r
70         NDI_CM_CONNECTING_REP_RCVD,\r
71         NDI_CM_CONNECTED,\r
72     NDI_CM_DISCONNECTING,\r
73         NDI_CM_CONNECTED_DREQ_RCVD,\r
74     NDI_CM_INVALID\r
75 \r
76 } ndi_cm_state_t;\r
77 \r
78 typedef struct _ib_qp   ib_qp_t;\r
79 \r
80 typedef struct _ndi_qp_csq\r
81 {\r
82         IO_CSQ                                          csq;\r
83         LIST_ENTRY                                      queue;\r
84         ib_qp_t*                                        h_qp;\r
85         ib_query_handle_t                       h_query;\r
86         ndi_cm_state_t                          state;\r
87         PIO_WORKITEM                            p_workitem;\r
88 \r
89 } ndi_qp_csq_t;\r
90 \r
91 ib_api_status_t\r
92 ndi_modify_qp(\r
93         IN              const   ib_qp_handle_t                          h_qp,\r
94         IN              const   ib_qp_mod_t* const                      p_qp_mod,\r
95         IN              const   uint32_t                                        buf_size,\r
96         IN                              uint8_t* const                          p_outbuf);\r
97 \r
98 NTSTATUS\r
99 ndi_req_cm(\r
100         IN              ib_qp_handle_t  const                   h_qp,\r
101         IN              cl_ioctl_handle_t                               h_ioctl\r
102         );\r
103 \r
104 NTSTATUS\r
105 ndi_rep_cm(\r
106         IN              ib_qp_handle_t  const                   h_qp,\r
107         IN              PIRP                                                    p_irp\r
108         );\r
109 \r
110 cl_status_t\r
111 ndi_rtu_cm(\r
112         IN              ib_qp_handle_t  const                   h_qp,\r
113         IN              PIRP                                                    p_irp\r
114         );\r
115 \r
116 NTSTATUS\r
117 ndi_dreq_cm(\r
118         IN              ib_qp_handle_t  const                   h_qp,\r
119         IN              PIRP                                                    p_irp\r
120         );\r
121         \r
122 NTSTATUS\r
123 ndi_qp_init(\r
124         IN              ib_qp_handle_t                                  h_qp );\r
125 \r
126 void\r
127 ndi_qp_destroy(\r
128         IN              ib_qp_handle_t                                  h_qp );\r
129 \r
130 void\r
131 ndi_qp_free(\r
132         IN              ib_qp_handle_t                                  h_qp );\r
133 \r
134 #endif\r
135 \r