94bea711db104ff803024365a4b211b51885c408
[mirror/winof/.git] / ulp / ipoib / kernel / ipoib_driver.h
1 /*\r
2  * Copyright (c) 2005 SilverStorm Technologies.  All rights reserved.\r
3  *\r
4  * This software is available to you under the OpenIB.org BSD license\r
5  * below:\r
6  *\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
10  *\r
11  *      - Redistributions of source code must retain the above\r
12  *        copyright notice, this list of conditions and the following\r
13  *        disclaimer.\r
14  *\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
19  *\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 AND\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
27  * SOFTWARE.\r
28  *\r
29  * $Id$\r
30  */\r
31 \r
32 \r
33 #ifndef _IPOIB_DRIVER_H_\r
34 #define _IPOIB_DRIVER_H_\r
35 \r
36 \r
37 #include "ipoib_adapter.h"\r
38 #include <complib/cl_spinlock.h>\r
39 #include <complib/cl_qlist.h>\r
40 #include <complib/cl_debug.h>\r
41 \r
42 \r
43 /*\r
44  * Definitions\r
45  */\r
46 #define MAX_BUNDLE_ID_LENGTH    32\r
47 \r
48 \r
49 #define IB_MTU                  2048\r
50 /*\r
51  * Header length as defined by IPoIB spec:\r
52  * http://www.ietf.org/internet-drafts/draft-ietf-ipoib-ip-over-infiniband-04.txt\r
53  */\r
54 #define PAYLOAD_MTU             (IB_MTU - sizeof(ipoib_hdr_t))\r
55 /*\r
56  * Only the protocol type is sent as part of the UD payload\r
57  * since the rest of the Ethernet header is encapsulated in the\r
58  * various IB headers.  We report out buffer space as if we\r
59  * transmit the ethernet headers.\r
60  */\r
61 #define XFER_BLOCK_SIZE         (sizeof(eth_hdr_t) + PAYLOAD_MTU)\r
62 \r
63 \r
64 typedef struct _ipoib_globals\r
65 {\r
66         KSPIN_LOCK              lock;\r
67         LIST_ENTRY              adapter_list;\r
68         cl_qlist_t              bundle_list;\r
69 \r
70         atomic32_t              laa_idx;\r
71 \r
72 }       ipoib_globals_t;\r
73 /*\r
74 * FIELDS\r
75 *       lock\r
76 *               Spinlock to protect list access.\r
77 *\r
78 *       adapter_list\r
79 *               List of all adapter instances.  Used for address translation support.\r
80 *\r
81 *       bundle_list\r
82 *               List of all adapter bundles.\r
83 *\r
84 *       laa_idx\r
85 *               Global counter for generating LAA MACs\r
86 *********/\r
87 \r
88 extern ipoib_globals_t  g_ipoib;\r
89 \r
90 \r
91 typedef struct _ipoib_bundle\r
92 {\r
93         cl_list_item_t  list_item;\r
94         char                    bundle_id[MAX_BUNDLE_ID_LENGTH];\r
95         cl_qlist_t              adapter_list;\r
96 \r
97 }       ipoib_bundle_t;\r
98 /*\r
99 * FIELDS\r
100 *       list_item\r
101 *               List item for storing the bundle in a quick list.\r
102 *\r
103 *       bundle_id\r
104 *               Bundle identifier.\r
105 *\r
106 *       adapter_list\r
107 *               List of adapters in the bundle.  The adapter at the head is the\r
108 *               primary adapter of the bundle.\r
109 *********/\r
110 \r
111 \r
112 \r
113 void\r
114 ipoib_resume_oids(\r
115         IN                              ipoib_adapter_t* const          p_adapter );\r
116 \r
117 #endif  /* _IPOIB_DRIVER_H_ */\r