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