a7457765247045ea36dfdbd0093f605d707afe1d
[mirror/winof/.git] / core / al / al_cm_shared.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  *\r
5  * This software is available to you under the OpenIB.org BSD license\r
6  * below:\r
7  *\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
11  *\r
12  *      - Redistributions of source code must retain the above\r
13  *        copyright notice, this list of conditions and the following\r
14  *        disclaimer.\r
15  *\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
20  *\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
28  * SOFTWARE.\r
29  *\r
30  * $Id$\r
31  */\r
32 \r
33 #if !defined(__IB_AL_CM_SHARED_H__)\r
34 #define __IB_AL_CM_SHARED_H__\r
35 \r
36 #include <iba/ib_al.h>\r
37 #include "al_qp.h"\r
38 \r
39 #if defined(CL_KERNEL)\r
40 #include "al_cm.h"\r
41 #else\r
42 #include "ual_cm.h"\r
43 #endif\r
44 \r
45 \r
46 \r
47 ib_api_status_t\r
48 cm_reset_qp(\r
49         IN              const   ib_qp_handle_t                          h_qp,\r
50         IN              const   uint32_t                                        timewait );\r
51 \r
52 ib_api_status_t\r
53 cm_init_qp(\r
54         IN              const   ib_qp_handle_t                          h_qp,\r
55         IN                              ib_gid_t * const                        p_gid,\r
56         IN              const   uint16_t                                        pkey,\r
57         IN              const   ib_access_t                                     access_ctrl );\r
58 \r
59 ib_api_status_t\r
60 cm_rts_qp(\r
61         IN              const   ib_qp_handle_t                          h_qp,\r
62         IN                              ib_qp_mod_t     * const                 p_qp_mod_rtr,\r
63         IN                              ib_qp_mod_t * const                     p_qp_mod_rts );\r
64 \r
65 void\r
66 cm_save_rep_qp_attr(\r
67         IN              const   ib_cm_rep_t * const                     p_cm_rep,\r
68         IN              const   ib_port_attr_t * const          p_port_attr,\r
69         IN              const   ib_path_rec_t * const           p_path_rec,\r
70         IN              const   ib_path_rec_t * const           p_alt_path_rec,\r
71         IN OUT                  ib_qp_mod_t * const                     p_qp_mod_rtr,\r
72         IN OUT                  ib_qp_mod_t * const                     p_qp_mod_rts );\r
73 \r
74 void\r
75 cm_save_rtu_qp_attr(\r
76         IN              const   ib_cm_rtu_t * const                     p_cm_rtu,\r
77         IN      OUT                     ib_qp_mod_t     * const                 p_qp_mod_rtr );\r
78 \r
79 void\r
80 cm_save_path_av(\r
81         IN              const   ib_port_attr_t * const          p_port_attr,\r
82         IN              const   ib_path_rec_t * const           p_path_rec,\r
83         IN              const   uint8_t                                         retry_cnt,\r
84         IN              const   uint8_t                                         rnr_retry_cnt,\r
85                 OUT                     ib_av_attr_t * const            p_av );\r
86 \r
87 \r
88 #define MAX_LOCAL_ACK_TIMEOUT           0x1F            /* limited to 5 bits */\r
89 uint8_t\r
90 cm_local_ack_timeout(\r
91         IN              const   uint8_t                                         pkt_lifetime,\r
92         IN              const   uint8_t                                         target_ack_delay );\r
93 \r
94 /* Called by the QP upon destruction if still connected. */\r
95 void\r
96 cm_conn_destroy(\r
97         IN                              al_conn_qp_t * const            p_conn_qp );\r
98 \r
99 /*\r
100  * Called by AL to destroy connection objects that were not destroyed\r
101  * properly.\r
102  */\r
103 void\r
104 cm_cleanup_conn(\r
105         IN              const   ib_cm_handle_t                          h_conn );\r
106 \r
107 \r
108 /*\r
109  * Remove the link between the connection object and QP, but continue\r
110  * holding any references\r
111  */\r
112 void\r
113 cm_unbind_qp(\r
114         IN              const   ib_cm_handle_t                  h_conn );\r
115 \r
116 \r
117 #endif /* __IB_AL_CM_SHARED_H__ */\r