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
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.
16 /***************************************************************************
17 * File Name : AtmApiDrv.h
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.
23 * Updates : 09/15/2000 lat. Created.
24 ***************************************************************************/
26 #if !defined(_ATMAPIDRV_H_)
29 #if defined(__cplusplus)
34 #include <bcmatmapi.h>
37 #define ATMDRV_MAJOR 205 /* arbitrary unused value */
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)
81 #define MAX_ATMDRV_IOCTL_COMMANDS 20
86 BCMATM_STATUS baStatus;
87 } ATMDRV_STATUS_ONLY, *PATMDRV_STATUS_ONLY;
90 { PATM_INITIALIZATION_PARMS pInit;
91 BCMATM_STATUS baStatus;
92 } ATMDRV_INITIALIZE, *PATMDRV_INITIALIZE;
99 BCMATM_STATUS baStatus;
100 } ATMDRV_INTERFACE_ID, *PATMDRV_INTERFACE_ID;
104 UINT32 ulTrafficDescrTableSize;
105 BCMATM_STATUS baStatus;
106 } ATMDRV_TRAFFIC_DESCR_TABLE_SIZE, *PATMDRV_TRAFFIC_DESCR_TABLE_SIZE;
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;
118 PATM_TRAFFIC_DESCR_PARM_ENTRY pTrafficDescrTable;
119 UINT32 ulTrafficDescrTableSize;
120 BCMATM_STATUS baStatus;
121 } ATMDRV_TRAFFIC_DESCR_TABLE, *PATMDRV_TRAFFIC_DESCR_TABLE;
125 UINT32 ulInterfaceId;
126 PATM_INTERFACE_CFG pInterfaceCfg;
127 BCMATM_STATUS baStatus;
128 } ATMDRV_INTERFACE_CFG, *PATMDRV_INTERFACE_CFG;
132 ATM_VCC_ADDR VccAddr;
133 PATM_VCC_CFG pVccCfg;
134 BCMATM_STATUS baStatus;
135 } ATMDRV_VCC_CFG, *PATMDRV_VCC_CFG;
139 UINT32 ulInterfaceId;
140 PATM_VCC_ADDR pVccAddrs;
142 UINT32 ulNumReturned;
143 BCMATM_STATUS baStatus;
144 } ATMDRV_VCC_ADDRS, *PATMDRV_VCC_ADDRS;
148 UINT32 ulInterfaceId;
149 PATM_INTERFACE_STATS pStatistics;
151 BCMATM_STATUS baStatus;
152 } ATMDRV_INTERFACE_STATISTICS, *PATMDRV_INTERFACE_STATISTICS;
156 ATM_VCC_ADDR VccAddr;
157 PATM_VCC_STATS pVccStatistics;
159 BCMATM_STATUS baStatus;
160 } ATMDRV_VCC_STATISTICS, *PATMDRV_VCC_STATISTICS;
164 UINT32 ulInterfaceId;
165 ATM_INTERFACE_LINK_INFO InterfaceCfg;
166 BCMATM_STATUS baStatus;
167 } ATMDRV_INTERFACE_LINK_INFO, *PATMDRV_INTERFACE_LINK_INFO;
171 ATM_VCC_ADDR VccAddr;
173 BCMATM_STATUS baStatus;
174 } ATMDRV_TEST, *PATMDRV_TEST;
179 BCMATM_STATUS baStatus;
181 ATMDRV_TRAFFIC_TYPE, *PATMDRV_TRAFFIC_TYPE;
185 ATM_VCC_ADDR VccAddr;
187 BCMATM_STATUS baStatus;
192 UINT32 minResponseTime;
193 UINT32 maxResponseTime;
194 UINT32 avgResponseTime;
195 } ATMDRV_OAM_LOOPBACK, *PATMDRV_OAM_LOOPBACK;
197 #include "portMirror.h"
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 */
243 #if defined(__cplusplus)
247 #endif // _ATMAPIDRV_H_