d53d07f700510606531e4d7db10d88a22b496912
[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
72
73 #define MAX_ATMDRV_IOCTL_COMMANDS   16
74
75 /* Typedefs. */
76 typedef struct
77 {
78     BCMATM_STATUS baStatus;
79 } ATMDRV_STATUS_ONLY, *PATMDRV_STATUS_ONLY;
80
81 typedef struct
82 {   PATM_INITIALIZATION_PARMS pInit;
83     BCMATM_STATUS baStatus;
84 } ATMDRV_INITIALIZE, *PATMDRV_INITIALIZE;
85
86 typedef struct
87 {
88     UINT8 ucPhyPort;
89     UINT8 ucReserved[3];
90     UINT32 ulInterfaceId;
91     BCMATM_STATUS baStatus;
92 } ATMDRV_INTERFACE_ID, *PATMDRV_INTERFACE_ID;
93
94 typedef struct
95 {
96     UINT32 ulTrafficDescrTableSize;
97     BCMATM_STATUS baStatus;
98 } ATMDRV_TRAFFIC_DESCR_TABLE_SIZE, *PATMDRV_TRAFFIC_DESCR_TABLE_SIZE;
99
100 typedef struct
101 {
102     PATM_TRAFFIC_DESCR_PARM_ENTRY pTrafficDescrTable;
103     UINT32 ulTrafficDescrTableSize;
104     BCMATM_STATUS baStatus;
105 } ATMDRV_TRAFFIC_DESCR_TABLE, *PATMDRV_TRAFFIC_DESCR_TABLE;
106
107 typedef struct
108 {
109     UINT32 ulInterfaceId;
110     PATM_INTERFACE_CFG pInterfaceCfg;
111     BCMATM_STATUS baStatus;
112 } ATMDRV_INTERFACE_CFG, *PATMDRV_INTERFACE_CFG;
113
114 typedef struct
115 {
116     ATM_VCC_ADDR VccAddr;
117     PATM_VCC_CFG pVccCfg;
118     BCMATM_STATUS baStatus;
119 } ATMDRV_VCC_CFG, *PATMDRV_VCC_CFG;
120
121 typedef struct
122 {
123     UINT32 ulInterfaceId;
124     PATM_VCC_ADDR pVccAddrs;
125     UINT32 ulNumVccs;
126     UINT32 ulNumReturned;
127     BCMATM_STATUS baStatus;
128 } ATMDRV_VCC_ADDRS, *PATMDRV_VCC_ADDRS;
129
130 typedef struct
131 {
132     UINT32 ulInterfaceId;
133     PATM_INTERFACE_STATS pStatistics;
134     UINT32 ulReset;
135     BCMATM_STATUS baStatus;
136 } ATMDRV_INTERFACE_STATISTICS, *PATMDRV_INTERFACE_STATISTICS;
137
138 typedef struct
139 {
140     ATM_VCC_ADDR VccAddr;
141     PATM_VCC_STATS pVccStatistics;
142     UINT32 ulReset;
143     BCMATM_STATUS baStatus;
144 } ATMDRV_VCC_STATISTICS, *PATMDRV_VCC_STATISTICS;
145
146 typedef struct
147 {
148     UINT32 ulInterfaceId;
149     ATM_INTERFACE_LINK_INFO InterfaceCfg;
150     BCMATM_STATUS baStatus;
151 } ATMDRV_INTERFACE_LINK_INFO, *PATMDRV_INTERFACE_LINK_INFO;
152
153 typedef struct
154 {
155     ATM_VCC_ADDR VccAddr;
156     UINT32 ulNumToSend;
157     BCMATM_STATUS baStatus;
158 } ATMDRV_TEST, *PATMDRV_TEST;
159
160 typedef struct
161 {
162     ATM_VCC_ADDR VccAddr;
163     UINT32 type;
164     BCMATM_STATUS baStatus;
165 } ATMDRV_OAM_LOOPBACK, *PATMDRV_OAM_LOOPBACK;
166
167 #define OAM_TYPE_FUNCTION_BYTE_OFFSET       0
168 #define OAM_LB_INDICATION_BYTE_OFFSET       1
169 #define OAM_LB_CORRELATION_TAG_BYTE_OFFSET  2
170 #define OAM_LB_LOCATION_ID_BYTE_OFFSET      6
171 #define OAM_LB_SRC_ID_BYTE_OFFSET           22
172 #define OAM_LB_UNUSED_BYTE_OFFSET           38
173 #define OAM_RDI_UNUSED_BYTE_OFFSET          1
174 #define OAM_LB_CRC_BYTE_OFFSET              46
175 #define OAM_RDI_CRC_BYTE_OFFSET             46
176 #define OAM_LB_CORRELATION_TAG_LEN          4
177 #define OAM_LB_LOCATION_ID_LEN              16
178 #define OAM_LB_SRC_ID_LEN                   16
179 #define OAM_LB_UNUSED_BYTE_LEN              8
180 #define OAM_RDI_UNUSED_BYTE_LEN             45
181 #define OAM_LB_CRC_BYTE_LEN                 2
182 #define OAM_RDI_CRC_BYTE_LEN                2
183 #define OAM_FAULT_MANAGEMENT_LB             0x18
184 #define OAM_FAULT_MANAGEMENT_RDI            0x11
185 #define OAM_FAULT_MANAGEMENT_LB_REQUEST     1
186 #define OAM_FAULT_MANAGEMENT_LB_RESPOND     0
187 #define OAM_FAULT_MANAGEMENT_CORRELATION_VAL  0xbcbcbcbc
188 #define OAM_FAULT_MANAGEMENT_SRC_ID_3       0xffffffff
189 #define OAM_FAULT_MANAGEMENT_SRC_ID_2       0xffffffff
190 #define OAM_FAULT_MANAGEMENT_SRC_ID_1       0xffffffff
191 #define OAM_FAULT_MANAGEMENT_SRC_ID_0       0xffffffff
192 #define OAM_FAULT_MANAGEMENT_LOCATION_ID_3  0xffffffff
193 #define OAM_FAULT_MANAGEMENT_LOCATION_ID_2  0xffffffff    
194 #define OAM_FAULT_MANAGEMENT_LOCATION_ID_1  0xffffffff
195 #define OAM_FAULT_MANAGEMENT_LOCATION_ID_0  0xffffffff
196 #define OAM_LB_UNUSED_BYTE_DEFAULT          0x6a
197 #define OAM_LB_SEGMENT_TYPE                 0
198 #define OAM_LB_END_TO_END_TYPE              1
199 #define OAM_F4_LB_SEGMENT_TYPE              2
200 #define OAM_F4_LB_END_TO_END_TYPE           3
201 #define RM_PROT_ID_OFFSET                   0
202 #define RM_MESSAGE_TYPE_OFFSET              1
203 #define RM_PROTOCOL_ID                      1
204 #define RM_TYPE_DEFAULT                     0x20 /* forward/source_generated/congested */
205 #define RM_UNUSED_BYTES_OFFSET              2
206 #define RM_UNUSED_BYTES_LEN                 46
207 #if defined(__cplusplus)
208 }
209 #endif
210
211 #endif // _ATMAPIDRV_H_
212