www.usr.com/support/gpl/USR9113_release1.0.tar.gz
[bcm963xx.git] / bcmdrivers / broadcom / include / bcm963xx / atmapidrv.h
1 /*
2 <:copyright-broadcom 
3  
4  Copyright (c) 2002 Broadcom Corporation 
5  All Rights Reserved 
6  No portions of this material may be reproduced in any form without the 
7  written permission of: 
8           Broadcom Corporation 
9           16215 Alton Parkway 
10           Irvine, California 92619 
11  All information contained in this document is Broadcom Corporation 
12  company private, proprietary, and trade secret. 
13  
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 // USR9109/9113
80 #define ATMIOCTL_NVRamCfg \
81     _IOWR(ATMDRV_MAJOR, 20, ATMDRV_SET_MAC)
82
83
84 #define MAX_ATMDRV_IOCTL_COMMANDS   21
85
86 /* Typedefs. */
87 typedef struct
88 {
89     BCMATM_STATUS baStatus;
90 } ATMDRV_STATUS_ONLY, *PATMDRV_STATUS_ONLY;
91
92 typedef struct
93 {   PATM_INITIALIZATION_PARMS pInit;
94     BCMATM_STATUS baStatus;
95 } ATMDRV_INITIALIZE, *PATMDRV_INITIALIZE;
96
97 // USR9109/9113
98 typedef struct
99 {   PATM_MAC_PARMS pMac;
100     BCMATM_STATUS baStatus;
101 } ATMDRV_SET_MAC, *PATMDRV_SET_MAC;
102
103 typedef struct
104 {
105     UINT8 ucPhyPort;
106     UINT8 ucReserved[3];
107     UINT32 ulInterfaceId;
108     BCMATM_STATUS baStatus;
109 } ATMDRV_INTERFACE_ID, *PATMDRV_INTERFACE_ID;
110
111 typedef struct
112 {
113     UINT32 ulTrafficDescrTableSize;
114     BCMATM_STATUS baStatus;
115 } ATMDRV_TRAFFIC_DESCR_TABLE_SIZE, *PATMDRV_TRAFFIC_DESCR_TABLE_SIZE;
116
117 typedef struct
118 {
119     UINT32 ulGroupNumber;
120     PATM_PRIORITY_PACKET_ENTRY pPriorityPackets;
121     UINT32 ulPriorityPacketsSize;
122     BCMATM_STATUS baStatus;
123 } ATMDRV_PRIORITY_PACKET_GROUP, *PATMDRV_PRIORITY_PACKET_GROUP;
124
125 typedef struct
126 {
127     PATM_TRAFFIC_DESCR_PARM_ENTRY pTrafficDescrTable;
128     UINT32 ulTrafficDescrTableSize;
129     BCMATM_STATUS baStatus;
130 } ATMDRV_TRAFFIC_DESCR_TABLE, *PATMDRV_TRAFFIC_DESCR_TABLE;
131
132 typedef struct
133 {
134     UINT32 ulInterfaceId;
135     PATM_INTERFACE_CFG pInterfaceCfg;
136     BCMATM_STATUS baStatus;
137 } ATMDRV_INTERFACE_CFG, *PATMDRV_INTERFACE_CFG;
138
139 typedef struct
140 {
141     ATM_VCC_ADDR VccAddr;
142     PATM_VCC_CFG pVccCfg;
143     BCMATM_STATUS baStatus;
144 } ATMDRV_VCC_CFG, *PATMDRV_VCC_CFG;
145
146 typedef struct
147 {
148     UINT32 ulInterfaceId;
149     PATM_VCC_ADDR pVccAddrs;
150     UINT32 ulNumVccs;
151     UINT32 ulNumReturned;
152     BCMATM_STATUS baStatus;
153 } ATMDRV_VCC_ADDRS, *PATMDRV_VCC_ADDRS;
154
155 typedef struct
156 {
157     UINT32 ulInterfaceId;
158     PATM_INTERFACE_STATS pStatistics;
159     UINT32 ulReset;
160     BCMATM_STATUS baStatus;
161 } ATMDRV_INTERFACE_STATISTICS, *PATMDRV_INTERFACE_STATISTICS;
162
163 typedef struct
164 {
165     ATM_VCC_ADDR VccAddr;
166     PATM_VCC_STATS pVccStatistics;
167     UINT32 ulReset;
168     BCMATM_STATUS baStatus;
169 } ATMDRV_VCC_STATISTICS, *PATMDRV_VCC_STATISTICS;
170
171 typedef struct
172 {
173     UINT32 ulInterfaceId;
174     ATM_INTERFACE_LINK_INFO InterfaceCfg;
175     BCMATM_STATUS baStatus;
176 } ATMDRV_INTERFACE_LINK_INFO, *PATMDRV_INTERFACE_LINK_INFO;
177
178 typedef struct
179 {
180     ATM_VCC_ADDR VccAddr;
181     UINT32 ulNumToSend;
182     BCMATM_STATUS baStatus;
183 } ATMDRV_TEST, *PATMDRV_TEST;
184
185 typedef struct
186 {
187     int ulTrafficType;
188     BCMATM_STATUS baStatus;
189 }
190 ATMDRV_TRAFFIC_TYPE, *PATMDRV_TRAFFIC_TYPE;
191
192 typedef struct
193 {
194     ATM_VCC_ADDR VccAddr;
195     UINT32 type;
196     BCMATM_STATUS baStatus;
197     UINT32 repetition;
198     UINT32 timeout;
199     UINT32 sent;
200     UINT32 received;
201     UINT32 minResponseTime;
202     UINT32 maxResponseTime;
203     UINT32 avgResponseTime;
204 } ATMDRV_OAM_LOOPBACK, *PATMDRV_OAM_LOOPBACK;
205
206 #include "portMirror.h"
207
208 #define OAM_TYPE_FUNCTION_BYTE_OFFSET       0
209 #define OAM_LB_INDICATION_BYTE_OFFSET       1
210 #define OAM_LB_CORRELATION_TAG_BYTE_OFFSET  2
211 #define OAM_LB_LOCATION_ID_BYTE_OFFSET      6
212 #define OAM_LB_SRC_ID_BYTE_OFFSET           22
213 #define OAM_LB_UNUSED_BYTE_OFFSET           38
214 #define OAM_RDI_UNUSED_BYTE_OFFSET          1
215 #define OAM_LB_CRC_BYTE_OFFSET              46
216 #define OAM_RDI_CRC_BYTE_OFFSET             46
217 #define OAM_LB_CORRELATION_TAG_LEN          4
218 #define OAM_LB_LOCATION_ID_LEN              16
219 #define OAM_LB_SRC_ID_LEN                   16
220 #define OAM_LB_UNUSED_BYTE_LEN              8
221 #define OAM_RDI_UNUSED_BYTE_LEN             45
222 #define OAM_LB_CRC_BYTE_LEN                 2
223 #define OAM_RDI_CRC_BYTE_LEN                2
224 #define OAM_FAULT_MANAGEMENT_LB             0x18
225 #define OAM_FAULT_MANAGEMENT_RDI            0x11
226 #define OAM_FAULT_MANAGEMENT_LB_REQUEST     1
227 #define OAM_FAULT_MANAGEMENT_LB_RESPOND     0
228 #define OAM_FAULT_MANAGEMENT_CORRELATION_VAL  0xbcbcbcbc
229 #define OAM_FAULT_MANAGEMENT_SRC_ID_3       0xffffffff
230 #define OAM_FAULT_MANAGEMENT_SRC_ID_2       0xffffffff
231 #define OAM_FAULT_MANAGEMENT_SRC_ID_1       0xffffffff
232 #define OAM_FAULT_MANAGEMENT_SRC_ID_0       0xffffffff
233 #define OAM_FAULT_MANAGEMENT_LOCATION_ID_3  0xffffffff
234 #define OAM_FAULT_MANAGEMENT_LOCATION_ID_2  0xffffffff    
235 #define OAM_FAULT_MANAGEMENT_LOCATION_ID_1  0xffffffff
236 #define OAM_FAULT_MANAGEMENT_LOCATION_ID_0  0xffffffff
237 #define OAM_LB_UNUSED_BYTE_DEFAULT          0x6a
238 #define OAM_LB_SEGMENT_TYPE                 0
239 #define OAM_LB_END_TO_END_TYPE              1
240 #define OAM_F4_LB_SEGMENT_TYPE              2
241 #define OAM_F4_LB_END_TO_END_TYPE           3
242 #define RM_PROT_ID_OFFSET                   0
243 #define RM_MESSAGE_TYPE_OFFSET              1
244 #define RM_PROTOCOL_ID                      1
245 #define RM_TYPE_DEFAULT                     0x20 /* forward/source_generated/congested */
246 #define RM_UNUSED_BYTES_OFFSET              2
247 #define RM_UNUSED_BYTES_LEN                 46
248 #define OAM_LOOPBACK_DEFAULT_REPETITION     1
249 #define OAM_LOOPBACK_DEFAULT_TIMEOUT        1000    /* msec */
250 #define OAM_LOOPBACK_RX_TIMEOUT_INTERVAL    10     /* check receive of OAM response every 10 ms */
251
252 #if defined(__cplusplus)
253 }
254 #endif
255
256 #endif // _ATMAPIDRV_H_
257