4 Copyright (c) 2002 Broadcom Corporation
6 No portions of this material may be reproduced in any form without the
10 Irvine, California 92619
11 All information contained in this document is Broadcom Corporation
12 company private, proprietary, and trade secret.
16 //**************************************************************************
17 // File Name : BcmAtmApi.h
19 // Description: This file contains the definitions, structures and function
20 // prototypes for the Broadcom Asynchronous Transfer Mode (ATM)
21 // Application Program Interface (API).
23 // Updates : 09/15/2000 lat. Created.
24 //**************************************************************************
26 #if !defined(_BCMATMAPI_H_)
29 //define CONFIG_ATM_EOP_MONITORING
31 #if defined(__cplusplus)
35 //**************************************************************************
36 // Constant Definitions
37 //**************************************************************************
39 /* Values for traffic type */
43 // ATM physical port constants.
44 #define PHY_NUM_PORTS 4
47 #define PHY_2 2 // [BCM635x Only]
48 #define PHY_3 3 // [BCM635x Only]
50 // Used for backwards compatibility.
54 #define PHY_UTOPIA3_TC_LOOPBACK 3
56 // Values for ATM_PORT_CFG ucPortType.
60 #define PT_TC 3 // [BCM635x Only]
61 #define PT_ADSL_INTERLEAVED 4 // [BCM6345 Only]
62 #define PT_ADSL_FAST 5 // [BCM6345 Only]
64 // Values for ATM_PORT_CFG ucPortFlags.
65 #define PF_UTOPIA_LEVEL_2 0x01
66 #define PF_UTOPIA_NEG_EDGE_SEL 0x02
68 // Wildcard definitions.
69 #define ALL_INTERFACES 0xffffffff
70 #define ANY_PRIORITY 0xff
72 // Values for priority packet groups.
73 #define NUM_PRI_PKT_GROUPS 16
74 #define NUM_ENTRIES_PER_PRI_PKT_GROUP 6
76 // Values for ATM_TRAFFIC_DESCR_PARM_ENTRY ulTrafficDescrType.
77 #define TDT_ATM_NO_TRAFFIC_DESCRIPTOR 1
78 #define TDT_ATM_NO_CLP_NO_SCR 2
79 #define TDT_ATM_CLP_NO_TAGGING_NO_SCR 3
80 #define TDT_ATM_CLP_TAGGING_NO_SCR 4
81 #define TDT_ATM_NO_CLP_SCR 5
82 #define TDT_ATM_CLP_NO_TAGGING_SCR 6 // [BCM635x Only]
83 #define TDT_ATM_CLP_TAGGING_SCR 7 // [BCM635x Only]
84 #define TDT_ATM_CLP_NO_TAGGING_MCR 8 // [BCM6348 Only]
85 #define TDT_ATM_CLP_TRANSPARENT_NO_SCR 9
86 #define TDT_ATM_CLP_TRANSPARENT_SCR 10
87 #define TDT_ATM_NO_CLP_TAGGING_NO_SCR 11
88 #define TDT_ATM_NO_CLP_NO_SCR_CDVT 12
89 #define TDT_ATM_NO_CLP_SCR_CDVT 13
90 #define TDT_ATM_CLP_NO_TAGGING_SCR_CDVT 14 // [BCM635x Only]
91 #define TDT_ATM_CLP_TAGGING_SCR_CDVT 15 // [BCM635x Only]
93 // Values for ATM_TRAFFIC_DESCR_PARM_ENTRY ulTrafficDescrRowStatus.
95 #define TDRS_NOT_IN_SERVICE 2
97 // Values for ATM_TRAFFIC_DESCR_PARM_ENTRY ulServiceCategory.
104 // Values for ATM_INTERFACE_CFG ulIfAdminStatus and ATM_VCC_CFG
105 // ulAtmVclAdminStatus.
107 #define ADMSTS_DOWN 2
108 #define ADMSTS_TESTING 3
110 // Values for ATM_INTERFACE_CFG ulIfOperStatus and ATM_VCC_CFG
111 // ulAtmVclOperStatus.
113 #define OPRSTS_DOWN 2
114 #define OPRSTS_UNKNOWN 3
116 // Values for ATM_INTERFACE_LINK_INFO ulLinkState.
120 // Values for ulAalType.
121 #define AAL_2 0 // [BCM635x Only]
122 #define AAL_TRANSPARENT 1
123 #define AAL_0_PACKET 2
124 #define AAL_0_CELL_CRC 3
127 // Values for ATM_VCC_CFG ulAtmVccEncapsType.
128 #define ET_VC_MULTIPLEX_ROUTED_PROTOCOL 1
129 #define ET_VC_MULTIPLEX_BRG_PROTOCOL_8023 2
130 #define ET_VC_MULTIPLEX_BRG_PROTOCOL_8025 3
131 #define ET_VC_MULTIPLEX_BRG_PROTOCOL_8026 4
132 #define ET_VC_MULTIPLEX_LAN_EMULATION_8023 5
133 #define ET_VC_MULTIPLEX_LAN_EMULATION_8025 6
134 #define ET_LLC_ENCAPSULATION 7
135 #define ET_MULTI_PROTOCOL_FRAME_RELAY_SSCS 8
137 #define ET_UNKNOWN 10
139 // [BCM635x Only] Values for ATM_AAL2_VCC_CFG ucAal2CpsOptimisation.
140 #define OPT_SNG_PKT_PER_PDU_NO_OVERLAP 1
141 #define OPT_MULT_PKTS_PER_PDU_OVERLAP 2
143 // [BCM635x Only] Values for ATM_INTERFACE_STATS ulTcAlarmState.
144 #define TCALM_NO_ALARM 1
145 #define TCALM_LCD_FAILURE 2
147 // Values for ATM_NOTIFY_PARMS ulNotificationType.
148 #define ATM_NOTIFY_INTERFACE_CHANGE 1
150 // Values for AN_INTF_CHANGE_PARMS ulInterfaceState.
151 #define ATM_INTERFACE_UP 1
152 #define ATM_INTERFACE_DOWN 2
154 // Values for AN_VCC_CHANGE_PARMS ulInterfaceState.
156 #define ATM_VCC_DOWN 2
158 // Values for ATM_VCC_ATTACH_PARMS ulFlags.
159 #define AVAP_ALLOW_OAM_F5_SEGMENT_CELLS 0x0001
160 #define AVAP_ALLOW_OAM_F5_END_TO_END_CELLS 0x0002
161 #define AVAP_ALLOW_RM_CELLS 0x0004
162 #define AVAP_ALLOW_OAM_F4_SEGMENT_CELLS 0x0008
163 #define AVAP_ALLOW_OAM_F4_END_TO_END_CELLS 0x0010
164 #define AVAP_ALLOW_CELLS_WITH_ERRORS 0x0020
165 #define AVAP_ADD_AAL0_CRC10 0x0040
166 #define AVAP_DSP 0x8000 // [BCM635x Only]
168 // [BCM635x Only] Values for ATM_VCC_AAL2_CHANNEL_ID_PARMS ucVoiceRouting.
169 #define VOICE_ROUTE_MIPS 0
170 #define VOICE_ROUTE_DSP 2
172 // [BCM635x Only] Values for ATM_VCC_AAL2_CHANNEL_ID_PARMS ucFlags.
173 #define CID_USE_FRAME_MODE 0x01
175 // Values for ATM_VCC_DATA_PARMS ucCircuitType.
176 #define CT_AAL0_PACKET 0x02
177 #define CT_AAL0_CELL_CRC 0x03
178 #define CT_OAM_F5_SEGMENT 0x04
179 #define CT_OAM_F5_END_TO_END 0x05
182 #define CT_HDLC_PACKET 0x08 // [BCM6348 Only]
183 #define CT_ANY_AAL2_MASK 0x08 // [BCM635x Only]
184 #define CT_AAL2_ALARM 0x08 // [BCM635x Only]
185 #define CT_AAL2_TYPE_3 0x09 // [BCM635x Only]
186 #define CT_AAL2_TYPE_1 0x0A // [BCM635x Only]
187 #define CT_AAL2_FRAME 0x0B // [BCM635x Only]
188 #define CT_TRANSPARENT 0x10
189 #define CT_OAM_F4_ANY 0x20
191 // OAM F4 VCI values.
192 #define VCI_OAM_F4_SEGMENT 3
193 #define VCI_OAM_F4_END_TO_END 4
196 // Values for ATM_VCC_DATA_PARMS ucFlags.
197 #define ATMDATA_CI 0x04
198 #define ATMDATA_CLP 0x08
200 // [BCM635x Only] DSP specific values.
203 // ATM cell layer interface name
204 #define ATM_CELL_LAYER_IFNAME "atm0"
206 // AAL5 CPCS layer interface name
207 #define AAL5_CPCS_LAYER_IFNAME "cpcs0"
209 //**************************************************************************
211 //**************************************************************************
213 // Return status values
214 typedef enum BcmAtmStatus
228 STS_VCAM_MULT_MATCH_ERROR,
229 STS_CCAM_MULT_MATCH_ERROR,
230 STS_PKTERR_INVALID_VPI_VCI,
231 STS_PKTERR_PORT_NOT_ENABLED,
232 STS_PKTERR_HEC_ERROR,
233 STS_PKTERR_PTI_ERROR,
234 STS_PKTERR_RECEIVED_IDLE_CELL,
235 STS_PKTERR_CIRCUIT_TYPE_ERROR,
236 STS_PKTERR_OAM_RM_CRC_ERROR,
237 STS_PKTERR_GFC_ERROR,
238 STS_PKTERR_AAL5_AAL0_CRC_ERROR,
239 STS_PKTERR_AAL5_AAL0_SHORT_PKT_ERROR,
240 STS_PKTERR_AAL5_AAL0_LENGTH_ERROR,
241 STS_PKTERR_AAL5_AAL0_BIG_PKT_ERROR,
242 STS_PKTERR_AAL5_AAL0_SAR_TIMEOUT_ERROR,
243 STS_PKTERR_AAL2F_HEC_ERROR,
244 STS_PKTERR_AAL2F_SEQ_NUM_ERROR,
245 STS_PKTERR_AAL2F_PARITY_ERROR,
246 STS_PKTERR_AAL2F_CRC_ERROR,
247 STS_PKTERR_AAL2F_CAM_ERROR,
248 STS_PKTERR_AAL2F_BIG_PKT_ERROR,
249 STS_PKTERR_AAL2F_RAS_TIMEOUT_ERROR,
250 STS_PKTERR_AAL2F_SHORT_PKT_ERROR,
251 STS_PKTERR_AAL2F_LENGTH_MISMATCH_ERROR,
252 STS_PKTERR_AAL2V_HEC_ERROR,
253 STS_PKTERR_AAL2V_SEQ_NUM_ERROR,
254 STS_PKTERR_AAL2V_PARITY_ERROR,
255 STS_PKTERR_AAL2V_CRC_ERROR,
256 STS_PKTERR_AAL2V_CAM_ERROR,
257 STS_PKTERR_AAL2V_OSF_MISMATCH_ERROR,
258 STS_PKTERR_AAL2V_OSF_ERROR,
259 STS_PKTERR_AAL2V_HEC_OVERLAP_ERROR,
260 STS_PKTERR_AAL2V_BIG_PKT_ERROR,
261 STS_PKTERR_AAL2V_RAS_ERROR,
262 STS_PKTERR_AAL2V_UUI_ERROR
266 // ATM_VCC_ADDR identifies a Virtual Channel Connection (VCC).
267 typedef struct AtmVccAddr
269 UINT32 ulInterfaceId;
272 } ATM_VCC_ADDR, *PATM_VCC_ADDR;
275 // ATM_PORT_CFG contains ATM physical port configuration parameters.
276 typedef struct AtmPortCfg
278 UINT32 ulInterfaceId;
282 } ATM_PORT_CFG, *PATM_PORT_CFG;
285 // ATM_INITIALIZATION_PARMS contains ATM API module initialization parameters.
286 #define ID_ATM_INITIALIZATION_PARMS 2
287 typedef struct AtmInitialization
289 UINT32 ulStructureId;
290 UINT32 ulThreadPriority;
291 UINT16 usFreeCellQSize;
292 UINT16 usFreePktQSize;
293 UINT16 usFreePktQBufferSize;
294 UINT16 usFreePktQBufferOffset; // offset into buffer to start receiving data
295 UINT16 usReceiveCellQSize;
296 UINT16 usReceivePktQSize;
297 UINT8 ucTransmitFifoPriority; // [BCM635x Only]
298 UINT8 ucPrioritizeReceivePkts;
299 UINT16 usAal5CpcsMaxSduLength;
300 UINT16 usAal2SscsMaxSsarSduLength; // [BCM635x Only]
301 ATM_PORT_CFG PortCfg[PHY_NUM_PORTS];
302 } ATM_INITIALIZATION_PARMS, *PATM_INITIALIZATION_PARMS;
306 unsigned char* ucMacAddr;
307 } ATM_MAC_PARMS, *PATM_MAC_PARMS;
309 // ATM_PRIORITY_PACKET_ENTRY contains fields for identifying a received packet.
310 #define ID_ATM_PRIORITY_PACKET_ENTRY 1
311 typedef struct AtmPriorityPacketEntry
313 UINT32 ulStructureId;
314 UINT32 ulPacketOffset;
315 UINT16 usPacketValue;
317 } ATM_PRIORITY_PACKET_ENTRY, *PATM_PRIORITY_PACKET_ENTRY;
320 // ATM_TRAFFIC_DESCR_PARM_ENTRY contains the fields needed to create a Traffic
321 // Descriptor Table parameter entry.
322 #define ID_ATM_TRAFFIC_DESCR_PARM_ENTRY 1
323 typedef struct AtmTrafficDescrParmEntry
325 UINT32 ulStructureId;
326 UINT32 ulTrafficDescrIndex;
327 UINT32 ulTrafficDescrType;
328 UINT32 ulTrafficDescrParm1;
329 UINT32 ulTrafficDescrParm2;
330 UINT32 ulTrafficDescrParm3;
331 UINT32 ulTrafficDescrParm4;
332 UINT32 ulTrafficDescrParm5;
333 UINT32 ulTrafficDescrRowStatus;
334 UINT32 ulServiceCategory;
335 UINT32 ulTrafficFrameDiscard;
336 } ATM_TRAFFIC_DESCR_PARM_ENTRY, *PATM_TRAFFIC_DESCR_PARM_ENTRY;
339 // ATM_INTERFACE_CFG contains configuration fields for an ATM interface.
340 #define ID_ATM_INTERFACE_CFG 4
341 typedef struct AtmInterfaceCfg
343 UINT32 ulStructureId;
344 UINT32 ulAtmInterfaceMaxVccs;
345 UINT32 ulAtmInterfaceConfVccs;
346 UINT32 ulAtmInterfaceMaxActiveVpiBits;
347 UINT32 ulAtmInterfaceMaxActiveVciBits;
348 UINT32 ulAtmInterfaceCurrentMaxVpiBits;
349 UINT32 ulAtmInterfaceCurrentMaxVciBits;
350 UINT32 ulIfAdminStatus;
351 UINT32 ulIfOperStatus; // read-only
352 UINT32 ulSendNullCells;
355 UINT32 ulIfLastChange;
357 } ATM_INTERFACE_CFG, *PATM_INTERFACE_CFG;
360 // ATM_VCC_TRANSMIT_QUEUE_PARMS contains fields for configuring an transmit
362 #define ID_ATM_VCC_TRANSMIT_QUEUE_PARMS 1
363 typedef struct AtmVccTransmitQueueParms
365 UINT32 ulStructureId;
369 } ATM_VCC_TRANSMIT_QUEUE_PARMS, *PATM_VCC_TRANSMIT_QUEUE_PARMS;
372 // ATM_AAL5_VCC_CFG contains configuration fields for an ATM AAL5 Virtual
373 // Channel Connection (VCC).
374 typedef struct AtmAal5VccCfg
376 UINT32 ulAtmVccEncapsType;
377 UINT32 ulAtmVccCpcsAcceptCorruptedPdus;
378 } ATM_AAL5_VCC_CFG, *PATM_AAL5_VCC_CFG;
381 // [BCM635x Only] ATM_AAL2_VCC_CFG contains configuration fields for an ATM
382 // AAL2 Virtual Channel Connection (VCC).
383 typedef struct AtmAal2VccCfg
385 UINT8 ucAal2CpsMaxMultiplexedChannels;
386 UINT8 ucAal2CpsMaxSduLength;
387 UINT8 ucAal2CpsCidLowerLimit;
388 UINT8 ucAal2CpsCidUpperLimit;
389 UINT8 ucAal2CpsOptimisation;
391 } ATM_AAL2_VCC_CFG, *PATM_AAL2_VCC_CFG;
394 // ATM_AAL0_VCC_CFG contains configuration fields for an ATM AAL0 Virtual
395 // Channel Connection (VCC).
396 typedef struct AtmAal0VccCfg
399 // Reserved for future use.
400 } ATM_AAL0_VCC_CFG, *PATM_AAL0_VCC_CFG;
403 // ATM_VCC_CFG contains configuration fields for an ATM Virtual Channel
405 #define ID_ATM_VCC_CFG 3
406 #define TX_Q_PARM_SIZE 8
407 typedef struct AtmVccCfg
409 UINT32 ulStructureId;
411 UINT32 ulAtmVclAdminStatus;
412 UINT32 ulAtmVclOperStatus;
413 UINT32 ulAtmVclLastChange;
414 UINT32 ulAtmVclReceiveTrafficDescrIndex;
415 UINT32 ulAtmVclTransmitTrafficDescrIndex;
416 UINT32 ulTransmitQParmsSize;
417 UINT32 ulPriorityPacketGroupNumbers[NUM_PRI_PKT_GROUPS];
418 ATM_VCC_TRANSMIT_QUEUE_PARMS TransmitQParms[TX_Q_PARM_SIZE];
421 ATM_AAL5_VCC_CFG Aal5Cfg;
422 ATM_AAL2_VCC_CFG Aal2Cfg; // [BCM635x Only]
423 ATM_AAL0_VCC_CFG Aal0Cfg;
425 } ATM_VCC_CFG, *PATM_VCC_CFG;
428 // ATM_INTF_ATM_STATS contains statistics for the ATM layer of an interface.
429 typedef struct AtmIntfAtmStats
432 UINT32 ulIfOutOctets;
434 UINT32 ulIfInUnknownProtos;
435 UINT32 ulIfOutErrors;
437 // The following fields are added together to calculate ulIfInErrors.
438 UINT32 ulIfInHecErrors;
440 // The following fields are added together to calculate ulIfInUnknownProtos.
441 UINT32 ulIfInInvalidVpiVciErrors;
442 UINT32 ulIfInPortNotEnabledErrors;
443 UINT32 ulIfInPtiErrors;
444 UINT32 ulIfInIdleCells;
445 UINT32 ulIfInCircuitTypeErrors;
446 UINT32 ulIfInOamRmCrcErrors;
447 UINT32 ulIfInGfcErrors;
448 } ATM_INTF_ATM_STATS, *PATM_INTF_ATM_STATS;
451 // [BCM635x Only] ATM_INTF_ATM_STATS contains statistics for the TC layer.
452 typedef struct AtmIntfTcStats
454 UINT32 ulTcInDataCells;
455 UINT32 ulTcInTotalCells;
456 UINT32 ulTcInHecErrors;
457 UINT32 ulTcInOcdEvents;
458 UINT32 ulTcAlarmState;
459 } ATM_INTF_TC_STATS, *PATM_INTF_TC_STATS;
462 // ATM_INTF_AAL5_AAL0_STATS contains statistics for all AAL5/AAL0 VCCs on an
464 typedef struct AtmIntfAal5Aal0Stats
467 UINT32 ulIfOutOctets;
468 UINT32 ulIfInUcastPkts;
469 UINT32 ulIfOutUcastPkts;
471 UINT32 ulIfOutErrors;
472 UINT32 ulIfInDiscards;
473 UINT32 ulIfOutDiscards;
474 UINT32 ulIfInPriPkts;
475 } ATM_INTF_AAL5_AAL0_STATS, *PATM_INTF_AAL5_AAL0_STATS;
478 // [BCM635x Only] ATM_INTF_AAL2_STATS contains statistics for all AAL2 VCCs
479 // on an ATM interface.
480 typedef struct AtmIntfAal2Stats
483 UINT32 ulIfOutOctets;
484 UINT32 ulIfInUcastPkts;
485 UINT32 ulIfOutUcastPkts;
487 UINT32 ulIfOutErrors;
488 UINT32 ulIfInDiscards;
489 UINT32 ulIfOutDiscards;
490 } ATM_INTF_AAL2_STATS, *PATM_INTF_AAL2_STATS;
493 // ATM_INTERFACE_STATS contains statistics for an ATM interface.
494 #define ID_ATM_INTERFACE_STATS 2
495 typedef struct AtmInterfaceStats
497 UINT32 ulStructureId;
498 ATM_INTF_ATM_STATS AtmIntfStats;
499 ATM_INTF_TC_STATS TcIntfStats; // [BCM635x Only]
500 ATM_INTF_AAL5_AAL0_STATS Aal5IntfStats;
501 ATM_INTF_AAL2_STATS Aal2IntfStats; // [BCM635x Only]
502 ATM_INTF_AAL5_AAL0_STATS Aal0IntfStats;
503 } ATM_INTERFACE_STATS, *PATM_INTERFACE_STATS;
506 // ATM_VCC_AAL5_STATS contains statistics for an AAL5 VCC.
507 typedef struct AtmVccAal5Stats
509 UINT32 ulAal5VccCrcErrors;
510 UINT32 ulAal5VccSarTimeOuts;
511 UINT32 ulAal5VccOverSizedSdus;
512 UINT32 ulAal5VccShortPacketErrors;
513 UINT32 ulAal5VccLengthErrors;
514 } ATM_VCC_AAL5_STATS, *PATM_VCC_AAL5_STATS;
517 // [BCM635x Only] ATM_VCC_AAL2_STATS contains statistics for an AAL2 VCC.
518 typedef struct AtmVccAal2Stats
520 UINT32 ulAal2CpsInPkts;
521 UINT32 ulAal2CpsOutPkts;
522 UINT32 ulAal2CpsParityErrors;
523 UINT32 ulAal2CpsSeqNumErrors;
524 UINT32 ulAal2CpsOsfMismatchErrors;
525 UINT32 ulAal2CpsOsfErrors;
526 UINT32 ulAal2CpsHecOverlapErrors;
527 UINT32 ulAal2CpsHecErrors;
528 UINT32 ulAal2CpsOversizedSduErrors;
529 UINT32 ulAal2CpsReassemblyErrors;
530 UINT32 ulAal2CpsUuiErrors;
531 UINT32 ulAal2CpsCidErrors;
532 UINT32 ulAal2SscsOversizedSssarSduErrors;
533 UINT32 ulAal2SscsSssarRasTimerExipiryErrors;
534 UINT32 ulAal2SscsUndersizedSstedPduErrors;
535 UINT32 ulAal2SscsSstedPduLengthMismatchErrors;
536 UINT32 ulAal2SscsSstedCrcMismatchErrors;
537 } ATM_VCC_AAL2_STATS, *PATM_VCC_AAL2_STATS;
540 // ATM_VCC_AAL0PKT_STATS contains statistics for an AAL0 Packet VCC.
541 typedef struct AtmVccAal0PktStats
543 UINT32 ulAal0VccSarTimeOuts;
544 UINT32 ulAal0VccOverSizedSdus;
545 } ATM_VCC_AAL0PKT_STATS, *PATM_VCC_AAL0PKT_STATS;
548 // ATM_VCC_AAL0CELL_STATS contains statistics for an AAL0 Cell with CRC VCC.
549 typedef struct AtmVccAal0CellStats
551 UINT32 ulAal0VccCrcErrors;
552 } ATM_VCC_AAL0CELL_STATS, *PATM_VCC_AAL0CELL_STATS;
555 // ATM_VCC_STATS contains statistics for a VCC.
556 #define ID_ATM_VCC_STATS 1
557 typedef struct AtmVccStatistics
559 UINT32 ulStructureId;
563 ATM_VCC_AAL5_STATS AtmVccAal5Stats;
564 ATM_VCC_AAL2_STATS AtmVccAal2Stats; // [BCM635x Only]
565 ATM_VCC_AAL0PKT_STATS AtmVccAal0PktStats;
566 ATM_VCC_AAL0CELL_STATS AtmVccAal0CellStats;
568 } ATM_VCC_STATS, *PATM_VCC_STATS;
571 // ATM_INTERFACE_LINK_INFO contains fields for the physical link that the
572 // ATM interface is using.
573 #define ID_ATM_INTERFACE_LINK_INFO 1
574 typedef struct AtmInterfaceLinkInfo
576 UINT32 ulStructureId;
579 UINT32 ulReserved[2];
580 } ATM_INTERFACE_LINK_INFO, *PATM_INTERFACE_LINK_INFO;
583 // AN_INTF_CHANGE_PARMS contains notification fields that passed to an
584 // application callback function when the ATM interface goes up or down.
585 #define ID_AN_INTF_CHANGE_PARMS 1
586 typedef struct AnIntfChangeParms
588 UINT32 ulInterfaceId;
589 UINT32 ulInterfaceState;
590 UINT32 ulInterfaceLineRate;
591 } AN_INTF_CHANGE_PARMS, *PAN_INTF_CHANGE_PARMS;
594 // ATM_NOTIFY_PARMS contains notification fields that passed to an application
595 // callback function when an ATM notification event occurs.
596 typedef struct AtmNotifyParms
601 AN_INTF_CHANGE_PARMS IntfChangeParms;
603 // Other fields and structures that are specific
604 // to the type of notification are declared here.
606 } ATM_NOTIFY_PARMS, *PATM_NOTIFY_PARMS;
608 typedef void (*FN_NOTIFY_CB) (PATM_NOTIFY_PARMS pNotifyParms);
611 // ATM_VCC_ATTACH_PARMS contains fields for attaching to a VCC. It is used
612 // by all BcmAtm_Attach... functions.
613 struct AtmVccDataParms;
614 typedef void (*FN_RECEIVE_CB) (UINT32 ulHandle, PATM_VCC_ADDR pVccAddr,
615 struct AtmVccDataParms *pDataParms, UINT32 ulParmReceiveData);
617 #define ID_ATM_VCC_ATTACH_PARMS 1
618 typedef struct AtmAttachParms
620 UINT32 ulStructureId;
622 FN_RECEIVE_CB pFnReceiveDataCb;
623 UINT32 ulParmReceiveData;
624 ATM_VCC_TRANSMIT_QUEUE_PARMS *pTransmitQParms;
625 UINT32 ulTransmitQParmsSize;
628 } ATM_VCC_ATTACH_PARMS, *PATM_VCC_ATTACH_PARMS;
631 // [BCM635x Only] ATM_VCC_AAL2_CHANNEL_ID_PARMS contains fields for
632 // configuring an transmit queue.
633 #define ID_ATM_VCC_AAL2_CHANNEL_ID_PARMS 1
634 typedef struct AtmVccAal2ChannelIdParms
636 UINT32 ulStructureId;
638 UINT8 ucVoiceRouting;
641 } ATM_VCC_AAL2_CHANNEL_ID_PARMS, *PATM_VCC_AAL2_CHANNEL_ID_PARMS;
644 // ATM_BUFFER contains fields for passing data to, and receive data from, the
646 typedef struct AtmBuffer
648 struct AtmBuffer *pNextAtmBuf;
654 } ATM_BUFFER, *PATM_BUFFER;
657 // ATM_VCC_DATA_PARMS contains fields for sending or receiving data on a VCC.
658 // It is used by all BcmAtm_Send... and receive functions.
659 typedef void (*FN_FREE_DATA_PARMS) (struct AtmVccDataParms *pDataParms);
661 #define ID_ATM_VCC_DATA_PARMS 2
662 typedef struct AtmVccDataParms
664 UINT32 ulStructureId;
666 UINT8 ucAal2ChannelId; // [BCM635x Only]
670 UINT8 ucSendPriority;
672 BCMATM_STATUS baReceiveStatus;
673 PATM_BUFFER pAtmBuffer;
674 FN_FREE_DATA_PARMS pFnFreeDataParms;
675 UINT32 ulParmFreeDataParms;
676 struct AtmVccDataParms *pApplicationLink;
677 UINT32 ulApplicationDefined[2];
678 } ATM_VCC_DATA_PARMS, *PATM_VCC_DATA_PARMS;
681 //**************************************************************************
682 // Function Prototypes
683 //**************************************************************************
685 BCMATM_STATUS BcmAtm_Initialize( PATM_INITIALIZATION_PARMS pInitValues );
686 BCMATM_STATUS BcmAtm_Uninitialize( void );
687 BCMATM_STATUS BcmAtm_GetInterfaceId( UINT8 ucPhyPort, UINT32 *pulInterfaceId );
688 BCMATM_STATUS BcmAtm_GetPriorityPacketGroup(UINT32 ulGroupNumber,
689 PATM_PRIORITY_PACKET_ENTRY pPriorityPackets, UINT32 *pulPriorityPacketsSize);
690 BCMATM_STATUS BcmAtm_SetPriorityPacketGroup(UINT32 ulGroupNumber,
691 PATM_PRIORITY_PACKET_ENTRY pPriorityPackets, UINT32 ulPriorityPacketsSize);
692 BCMATM_STATUS BcmAtm_GetTrafficDescrTableSize(UINT32 *pulTrafficDescrTableSize);
693 BCMATM_STATUS BcmAtm_GetTrafficDescrTable( PATM_TRAFFIC_DESCR_PARM_ENTRY
694 pTrafficDescTable, UINT32 ulTrafficDescrTableSize );
695 BCMATM_STATUS BcmAtm_SetTrafficDescrTable( PATM_TRAFFIC_DESCR_PARM_ENTRY
696 pTrafficDescTable, UINT32 ulTrafficDescrTableSize );
697 BCMATM_STATUS BcmAtm_GetInterfaceCfg( UINT32 ulInterfaceId, PATM_INTERFACE_CFG
699 BCMATM_STATUS BcmAtm_SetInterfaceCfg( UINT32 ulInterfaceId, PATM_INTERFACE_CFG
701 BCMATM_STATUS BcmAtm_GetVccCfg( PATM_VCC_ADDR pVccAddr, PATM_VCC_CFG pVccCfg );
702 BCMATM_STATUS BcmAtm_SetVccCfg( PATM_VCC_ADDR pVccAddr, PATM_VCC_CFG pVccCfg );
703 BCMATM_STATUS BcmAtm_GetVccAddrs( UINT32 ulInterfaceId, PATM_VCC_ADDR pVccAddrs,
704 UINT32 ulNumVccs, UINT32 *pulNumReturned );
705 BCMATM_STATUS BcmAtm_GetInterfaceStatistics( UINT32 ulInterfaceId,
706 PATM_INTERFACE_STATS pStatistics, UINT32 ulReset );
707 BCMATM_STATUS BcmAtm_GetVccStatistics( PATM_VCC_ADDR pVccAddr, PATM_VCC_STATS
708 pVccStatistics, UINT32 ulReset );
709 BCMATM_STATUS BcmAtm_SetInterfaceLinkInfo( UINT32 ulInterfaceId,
710 PATM_INTERFACE_LINK_INFO pInterfaceCfg );
711 BCMATM_STATUS BcmAtm_SetNotifyCallback( FN_NOTIFY_CB pFnNotifyCb );
712 BCMATM_STATUS BcmAtm_ResetNotifyCallback( FN_NOTIFY_CB pFnNotifyCb );
713 BCMATM_STATUS BcmAtm_AttachVcc( PATM_VCC_ADDR pVccAddr, PATM_VCC_ATTACH_PARMS
715 BCMATM_STATUS BcmAtm_AttachMgmtCells( UINT32 ulInterfaceId,
716 PATM_VCC_ATTACH_PARMS pAttachParms );
717 BCMATM_STATUS BcmAtm_AttachTransparent( UINT32 ulInterfaceId,
718 PATM_VCC_ATTACH_PARMS pAttachParms );
719 BCMATM_STATUS BcmAtm_Detach( UINT32 ulHandle );
720 BCMATM_STATUS BcmAtm_SetAal2ChannelIds( UINT32 ulHandle,
721 PATM_VCC_AAL2_CHANNEL_ID_PARMS pChannelIdParms, UINT32
722 ulNumChannelIdParms ); // [BCM635x Only]
723 BCMATM_STATUS BcmAtm_SendVccData( UINT32 ulHandle,
724 PATM_VCC_DATA_PARMS pDataParms );
725 BCMATM_STATUS BcmAtm_SendMgmtData( UINT32 ulHandle, PATM_VCC_ADDR pVccAddr,
726 PATM_VCC_DATA_PARMS pDataParms );
727 BCMATM_STATUS BcmAtm_SendTransparentData( UINT32 ulHandle, UINT32 ulInterfaceId,
728 PATM_VCC_DATA_PARMS pDataParms );
729 BCMATM_STATUS BcmAtm_Mac( PATM_MAC_PARMS pMacParms ); // USR9109/9113
731 #if defined(__cplusplus)
735 #endif // _BCMATMAPI_H_