http://downloads.netgear.com/files/GPL/GPL_Source_V361j_DM111PSP_series_consumer_rele...
[bcm963xx.git] / bcmdrivers / broadcom / include / bcm963xx / atmapidrv.h
1 /*
2 # <:copyright-gpl
3 # Copyright 2004 Broadcom Corp. All Rights Reserved.
4 # This program is free software; you can distribute it and/or modify it
5 # under the terms of the GNU General Public License (Version 2) as
6 # published by the Free Software Foundation.
7 # This program is distributed in the hope it will be useful, but WITHOUT
8 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
9 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
10 # for more details.
11 # You should have received a copy of the GNU General Public License along
12 # with this program; if not, write to the Free Software Foundation, Inc.,
13 # 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
14 # :>
15 */
16 /***************************************************************************
17  * File Name  : AtmApiDrv.h
18  *
19  * Description: This file contains the definitions and structures for the
20  *              Linux IOCTL interface that used between the user mode ATM
21  *              API library and the kernel ATM API driver.
22  *
23  * Updates    : 09/15/2000  lat.  Created.
24  ***************************************************************************/
25
26 #if !defined(_ATMAPIDRV_H_)
27 #define _ATMAPIDRV_H_
28
29 #if defined(__cplusplus)
30 extern "C" {
31 #endif
32
33 /* Incldes. */
34 #include <bcmatmapi.h>
35
36 /* Defines. */
37 #define ATMDRV_MAJOR            205 /* arbitrary unused value */
38
39 #define ATMIOCTL_INITIALIZE \
40     _IOWR(ATMDRV_MAJOR, 0, ATMDRV_INITIALIZE)
41 #define ATMIOCTL_UNINITIALIZE \
42     _IOR(ATMDRV_MAJOR, 1, ATMDRV_STATUS_ONLY)
43 #define ATMIOCTL_GET_INTERFACE_ID \
44     _IOWR(ATMDRV_MAJOR, 2, ATMDRV_INTERFACE_ID)
45 #define ATMIOCTL_GET_TRAFFIC_DESCR_TABLE_SIZE \
46     _IOR(ATMDRV_MAJOR, 3, ATMDRV_TRAFFIC_DESCR_TABLE_SIZE)
47 #define ATMIOCTL_GET_TRAFFIC_DESCR_TABLE \
48     _IOWR(ATMDRV_MAJOR, 4, ATMDRV_TRAFFIC_DESCR_TABLE)
49 #define ATMIOCTL_SET_TRAFFIC_DESCR_TABLE \
50     _IOWR(ATMDRV_MAJOR, 5, ATMDRV_TRAFFIC_DESCR_TABLE)
51 #define ATMIOCTL_GET_INTERFACE_CFG \
52     _IOWR(ATMDRV_MAJOR, 6, ATMDRV_INTERFACE_CFG)
53 #define ATMIOCTL_SET_INTERFACE_CFG \
54     _IOWR(ATMDRV_MAJOR, 7, ATMDRV_INTERFACE_CFG)
55 #define ATMIOCTL_GET_VCC_CFG \
56     _IOWR(ATMDRV_MAJOR, 8, ATMDRV_VCC_CFG)
57 #define ATMIOCTL_SET_VCC_CFG \
58     _IOWR(ATMDRV_MAJOR, 9, ATMDRV_VCC_CFG)
59 #define ATMIOCTL_GET_VCC_ADDRS \
60     _IOWR(ATMDRV_MAJOR, 10, ATMDRV_VCC_ADDRS)
61 #define ATMIOCTL_GET_INTERFACE_STATISTICS \
62     _IOWR(ATMDRV_MAJOR, 11, ATMDRV_INTERFACE_STATISTICS)
63 #define ATMIOCTL_GET_VCC_STATISTICS \
64     _IOWR(ATMDRV_MAJOR, 12, ATMDRV_VCC_STATISTICS)
65 #define ATMIOCTL_SET_INTERFACE_LINK_INFO \
66     _IOWR(ATMDRV_MAJOR, 13, ATMDRV_INTERFACE_LINK_INFO)
67 #define ATMIOCTL_TEST \
68     _IOWR(ATMDRV_MAJOR, 14, ATMDRV_TEST)
69 #define ATMIOCTL_OAM_LOOPBACK_TEST \
70     _IOWR(ATMDRV_MAJOR, 15, ATMDRV_OAM_LOOPBACK)
71 #define ATMIOCTL_PORT_MIRRORING   \
72     _IOWR(ATMDRV_MAJOR, 16, MirrorCfg)
73 #define ATMIOCTL_GET_PRIORITY_PACKET_GROUP \
74     _IOWR(ATMDRV_MAJOR, 17, ATMDRV_PRIORITY_PACKET_GROUP)
75 #define ATMIOCTL_SET_PRIORITY_PACKET_GROUP \
76     _IOWR(ATMDRV_MAJOR, 18, ATMDRV_PRIORITY_PACKET_GROUP)
77 #define ATMIOCTL_SET_TRAFFIC_TYPE \
78     _IOWR(ATMDRV_MAJOR, 19, ATMDRV_TRAFFIC_TYPE)
79
80
81 #define MAX_ATMDRV_IOCTL_COMMANDS   20
82
83 /* Typedefs. */
84 typedef struct
85 {
86     BCMATM_STATUS baStatus;
87 } ATMDRV_STATUS_ONLY, *PATMDRV_STATUS_ONLY;
88
89 typedef struct
90 {   PATM_INITIALIZATION_PARMS pInit;
91     BCMATM_STATUS baStatus;
92 } ATMDRV_INITIALIZE, *PATMDRV_INITIALIZE;
93
94 typedef struct
95 {
96     UINT8 ucPhyPort;
97     UINT8 ucReserved[3];
98     UINT32 ulInterfaceId;
99     BCMATM_STATUS baStatus;
100 } ATMDRV_INTERFACE_ID, *PATMDRV_INTERFACE_ID;
101
102 typedef struct
103 {
104     UINT32 ulTrafficDescrTableSize;
105     BCMATM_STATUS baStatus;
106 } ATMDRV_TRAFFIC_DESCR_TABLE_SIZE, *PATMDRV_TRAFFIC_DESCR_TABLE_SIZE;
107
108 typedef struct
109 {
110     UINT32 ulGroupNumber;
111     PATM_PRIORITY_PACKET_ENTRY pPriorityPackets;
112     UINT32 ulPriorityPacketsSize;
113     BCMATM_STATUS baStatus;
114 } ATMDRV_PRIORITY_PACKET_GROUP, *PATMDRV_PRIORITY_PACKET_GROUP;
115
116 typedef struct
117 {
118     PATM_TRAFFIC_DESCR_PARM_ENTRY pTrafficDescrTable;
119     UINT32 ulTrafficDescrTableSize;
120     BCMATM_STATUS baStatus;
121 } ATMDRV_TRAFFIC_DESCR_TABLE, *PATMDRV_TRAFFIC_DESCR_TABLE;
122
123 typedef struct
124 {
125     UINT32 ulInterfaceId;
126     PATM_INTERFACE_CFG pInterfaceCfg;
127     BCMATM_STATUS baStatus;
128 } ATMDRV_INTERFACE_CFG, *PATMDRV_INTERFACE_CFG;
129
130 typedef struct
131 {
132     ATM_VCC_ADDR VccAddr;
133     PATM_VCC_CFG pVccCfg;
134     BCMATM_STATUS baStatus;
135 } ATMDRV_VCC_CFG, *PATMDRV_VCC_CFG;
136
137 typedef struct
138 {
139     UINT32 ulInterfaceId;
140     PATM_VCC_ADDR pVccAddrs;
141     UINT32 ulNumVccs;
142     UINT32 ulNumReturned;
143     BCMATM_STATUS baStatus;
144 } ATMDRV_VCC_ADDRS, *PATMDRV_VCC_ADDRS;
145
146 typedef struct
147 {
148     UINT32 ulInterfaceId;
149     PATM_INTERFACE_STATS pStatistics;
150     UINT32 ulReset;
151     BCMATM_STATUS baStatus;
152 } ATMDRV_INTERFACE_STATISTICS, *PATMDRV_INTERFACE_STATISTICS;
153
154 typedef struct
155 {
156     ATM_VCC_ADDR VccAddr;
157     PATM_VCC_STATS pVccStatistics;
158     UINT32 ulReset;
159     BCMATM_STATUS baStatus;
160 } ATMDRV_VCC_STATISTICS, *PATMDRV_VCC_STATISTICS;
161
162 typedef struct
163 {
164     UINT32 ulInterfaceId;
165     ATM_INTERFACE_LINK_INFO InterfaceCfg;
166     BCMATM_STATUS baStatus;
167 } ATMDRV_INTERFACE_LINK_INFO, *PATMDRV_INTERFACE_LINK_INFO;
168
169 typedef struct
170 {
171     ATM_VCC_ADDR VccAddr;
172     UINT32 ulNumToSend;
173     BCMATM_STATUS baStatus;
174 } ATMDRV_TEST, *PATMDRV_TEST;
175
176 typedef struct
177 {
178     int ulTrafficType;
179     BCMATM_STATUS baStatus;
180 }
181 ATMDRV_TRAFFIC_TYPE, *PATMDRV_TRAFFIC_TYPE;
182
183 typedef struct
184 {
185     ATM_VCC_ADDR VccAddr;
186     UINT32 type;
187     BCMATM_STATUS baStatus;
188     UINT32 repetition;
189     UINT32 timeout;
190     UINT32 sent;
191     UINT32 received;
192     UINT32 minResponseTime;
193     UINT32 maxResponseTime;
194     UINT32 avgResponseTime;
195 } ATMDRV_OAM_LOOPBACK, *PATMDRV_OAM_LOOPBACK;
196
197 #include "portMirror.h"
198
199 #define OAM_TYPE_FUNCTION_BYTE_OFFSET       0
200 #define OAM_LB_INDICATION_BYTE_OFFSET       1
201 #define OAM_LB_CORRELATION_TAG_BYTE_OFFSET  2
202 #define OAM_LB_LOCATION_ID_BYTE_OFFSET      6
203 #define OAM_LB_SRC_ID_BYTE_OFFSET           22
204 #define OAM_LB_UNUSED_BYTE_OFFSET           38
205 #define OAM_RDI_UNUSED_BYTE_OFFSET          1
206 #define OAM_LB_CRC_BYTE_OFFSET              46
207 #define OAM_RDI_CRC_BYTE_OFFSET             46
208 #define OAM_LB_CORRELATION_TAG_LEN          4
209 #define OAM_LB_LOCATION_ID_LEN              16
210 #define OAM_LB_SRC_ID_LEN                   16
211 #define OAM_LB_UNUSED_BYTE_LEN              8
212 #define OAM_RDI_UNUSED_BYTE_LEN             45
213 #define OAM_LB_CRC_BYTE_LEN                 2
214 #define OAM_RDI_CRC_BYTE_LEN                2
215 #define OAM_FAULT_MANAGEMENT_LB             0x18
216 #define OAM_FAULT_MANAGEMENT_RDI            0x11
217 #define OAM_FAULT_MANAGEMENT_LB_REQUEST     1
218 #define OAM_FAULT_MANAGEMENT_LB_RESPOND     0
219 #define OAM_FAULT_MANAGEMENT_CORRELATION_VAL  0xbcbcbcbc
220 #define OAM_FAULT_MANAGEMENT_SRC_ID_3       0xffffffff
221 #define OAM_FAULT_MANAGEMENT_SRC_ID_2       0xffffffff
222 #define OAM_FAULT_MANAGEMENT_SRC_ID_1       0xffffffff
223 #define OAM_FAULT_MANAGEMENT_SRC_ID_0       0xffffffff
224 #define OAM_FAULT_MANAGEMENT_LOCATION_ID_3  0xffffffff
225 #define OAM_FAULT_MANAGEMENT_LOCATION_ID_2  0xffffffff    
226 #define OAM_FAULT_MANAGEMENT_LOCATION_ID_1  0xffffffff
227 #define OAM_FAULT_MANAGEMENT_LOCATION_ID_0  0xffffffff
228 #define OAM_LB_UNUSED_BYTE_DEFAULT          0x6a
229 #define OAM_LB_SEGMENT_TYPE                 0
230 #define OAM_LB_END_TO_END_TYPE              1
231 #define OAM_F4_LB_SEGMENT_TYPE              2
232 #define OAM_F4_LB_END_TO_END_TYPE           3
233 #define RM_PROT_ID_OFFSET                   0
234 #define RM_MESSAGE_TYPE_OFFSET              1
235 #define RM_PROTOCOL_ID                      1
236 #define RM_TYPE_DEFAULT                     0x20 /* forward/source_generated/congested */
237 #define RM_UNUSED_BYTES_OFFSET              2
238 #define RM_UNUSED_BYTES_LEN                 46
239 #define OAM_LOOPBACK_DEFAULT_REPETITION     1
240 #define OAM_LOOPBACK_DEFAULT_TIMEOUT        1000    /* msec */
241 #define OAM_LOOPBACK_RX_TIMEOUT_INTERVAL    10     /* check receive of OAM response every 10 ms */
242
243 #if defined(__cplusplus)
244 }
245 #endif
246
247 #endif // _ATMAPIDRV_H_
248