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 #if defined(__cplusplus)
33 //**************************************************************************
34 // Constant Definitions
35 //**************************************************************************
37 // ATM physical port constants.
38 #define PHY_NUM_PORTS 4
41 #define PHY_2 2 // [BCM635x Only]
42 #define PHY_3 3 // [BCM635x Only]
44 // Used for backwards compatibility.
48 #define PHY_UTOPIA3_TC_LOOPBACK 3
50 // Values for ATM_PORT_CFG ucPortType.
54 #define PT_TC 3 // [BCM635x Only]
55 #define PT_ADSL_INTERLEAVED 4 // [BCM6345 Only]
56 #define PT_ADSL_FAST 5 // [BCM6345 Only]
58 // Wildcard definitions.
59 #define ALL_INTERFACES 0xffffffff
60 #define ANY_PRIORITY 0xff
62 // Values for ATM_TRAFFIC_DESCR_PARM_ENTRY ulTrafficDescrType.
63 #define TDT_ATM_NO_TRAFFIC_DESCRIPTOR 1
64 #define TDT_ATM_NO_CLP_NO_SCR 2
65 #define TDT_ATM_CLP_NO_TAGGING_NO_SCR 3
66 #define TDT_ATM_CLP_TAGGING_NO_SCR 4
67 #define TDT_ATM_NO_CLP_SCR 5
68 #define TDT_ATM_CLP_NO_TAGGING_SCR 6 // [BCM635x Only]
69 #define TDT_ATM_CLP_TAGGING_SCR 7 // [BCM635x Only]
70 #define TDT_ATM_CLP_NO_TAGGING_MCR 8 // [BCM6348 Only]
71 #define TDT_ATM_CLP_TRANSPARENT_NO_SCR 9
72 #define TDT_ATM_CLP_TRANSPARENT_SCR 10
73 #define TDT_ATM_NO_CLP_TAGGING_NO_SCR 11
74 #define TDT_ATM_NO_CLP_NO_SCR_CDVT 12
75 #define TDT_ATM_NO_CLP_SCR_CDVT 13
76 #define TDT_ATM_CLP_NO_TAGGING_SCR_CDVT 14 // [BCM635x Only]
77 #define TDT_ATM_CLP_TAGGING_SCR_CDVT 15 // [BCM635x Only]
79 // Values for ATM_TRAFFIC_DESCR_PARM_ENTRY ulTrafficDescrRowStatus.
81 #define TDRS_NOT_IN_SERVICE 2
83 // Values for ATM_TRAFFIC_DESCR_PARM_ENTRY ulServiceCategory.
90 // Values for ATM_INTERFACE_CFG ulIfAdminStatus and ATM_VCC_CFG
91 // ulAtmVclAdminStatus.
94 #define ADMSTS_TESTING 3
96 // Values for ATM_INTERFACE_CFG ulIfOperStatus and ATM_VCC_CFG
97 // ulAtmVclOperStatus.
100 #define OPRSTS_UNKNOWN 3
102 // Values for ATM_INTERFACE_LINK_INFO ulLinkState.
106 // Values for ulAalType.
107 #define AAL_2 0 // [BCM635x Only]
108 #define AAL_TRANSPARENT 1
109 #define AAL_0_PACKET 2
110 #define AAL_0_CELL_CRC 3
113 // Values for ATM_VCC_CFG ulAtmVccEncapsType.
114 #define ET_VC_MULTIPLEX_ROUTED_PROTOCOL 1
115 #define ET_VC_MULTIPLEX_BRG_PROTOCOL_8023 2
116 #define ET_VC_MULTIPLEX_BRG_PROTOCOL_8025 3
117 #define ET_VC_MULTIPLEX_BRG_PROTOCOL_8026 4
118 #define ET_VC_MULTIPLEX_LAN_EMULATION_8023 5
119 #define ET_VC_MULTIPLEX_LAN_EMULATION_8025 6
120 #define ET_LLC_ENCAPSULATION 7
121 #define ET_MULTI_PROTOCOL_FRAME_RELAY_SSCS 8
123 #define ET_UNKNOWN 10
125 // [BCM635x Only] Values for ATM_AAL2_VCC_CFG ucAal2CpsOptimisation.
126 #define OPT_SNG_PKT_PER_PDU_NO_OVERLAP 1
127 #define OPT_MULT_PKTS_PER_PDU_OVERLAP 2
129 // [BCM635x Only] Values for ATM_INTERFACE_STATS ulTcAlarmState.
130 #define TCALM_NO_ALARM 1
131 #define TCALM_LCD_FAILURE 2
133 // Values for ATM_NOTIFY_PARMS ulNotificationType.
134 #define ATM_NOTIFY_INTERFACE_CHANGE 1
136 // Values for AN_INTF_CHANGE_PARMS ulInterfaceState.
137 #define ATM_INTERFACE_UP 1
138 #define ATM_INTERFACE_DOWN 2
140 // Values for AN_VCC_CHANGE_PARMS ulInterfaceState.
142 #define ATM_VCC_DOWN 2
144 // Values for ATM_VCC_ATTACH_PARMS ulFlags.
145 #define AVAP_ALLOW_OAM_F5_SEGMENT_CELLS 0x0001
146 #define AVAP_ALLOW_OAM_F5_END_TO_END_CELLS 0x0002
147 #define AVAP_ALLOW_RM_CELLS 0x0004
148 #define AVAP_ALLOW_OAM_F4_SEGMENT_CELLS 0x0008
149 #define AVAP_ALLOW_OAM_F4_END_TO_END_CELLS 0x0010
150 #define AVAP_ALLOW_CELLS_WITH_ERRORS 0x0020
151 #define AVAP_ADD_AAL0_CRC10 0x0040
152 #define AVAP_DSP 0x8000 // [BCM635x Only]
154 // [BCM635x Only] Values for ATM_VCC_AAL2_CHANNEL_ID_PARMS ucVoiceRouting.
155 #define VOICE_ROUTE_MIPS 0
156 #define VOICE_ROUTE_DSP 2
158 // [BCM635x Only] Values for ATM_VCC_AAL2_CHANNEL_ID_PARMS ucFlags.
159 #define CID_USE_FRAME_MODE 0x01
161 // Values for ATM_VCC_DATA_PARMS ucCircuitType.
162 #define CT_AAL0_PACKET 0x02
163 #define CT_AAL0_CELL_CRC 0x03
164 #define CT_OAM_F5_SEGMENT 0x04
165 #define CT_OAM_F5_END_TO_END 0x05
168 #define CT_HDLC_PACKET 0x08 // [BCM6348 Only]
169 #define CT_ANY_AAL2_MASK 0x08 // [BCM635x Only]
170 #define CT_AAL2_ALARM 0x08 // [BCM635x Only]
171 #define CT_AAL2_TYPE_3 0x09 // [BCM635x Only]
172 #define CT_AAL2_TYPE_1 0x0A // [BCM635x Only]
173 #define CT_AAL2_FRAME 0x0B // [BCM635x Only]
174 #define CT_TRANSPARENT 0x10
175 #define CT_OAM_F4_ANY 0x20
177 // OAM F4 VCI values.
178 #define VCI_OAM_F4_SEGMENT 3
179 #define VCI_OAM_F4_END_TO_END 4
182 // Values for ATM_VCC_DATA_PARMS ucFlags.
183 #define ATMDATA_CI 0x04
184 #define ATMDATA_CLP 0x08
186 // [BCM635x Only] DSP specific values.
189 // ATM cell layer interface name
190 #define ATM_CELL_LAYER_IFNAME "atm0"
192 // AAL5 CPCS layer interface name
193 #define AAL5_CPCS_LAYER_IFNAME "cpcs0"
195 //**************************************************************************
197 //**************************************************************************
199 // Return status values
200 typedef enum BcmAtmStatus
214 STS_VCAM_MULT_MATCH_ERROR,
215 STS_CCAM_MULT_MATCH_ERROR,
216 STS_PKTERR_INVALID_VPI_VCI,
217 STS_PKTERR_PORT_NOT_ENABLED,
218 STS_PKTERR_HEC_ERROR,
219 STS_PKTERR_PTI_ERROR,
220 STS_PKTERR_RECEIVED_IDLE_CELL,
221 STS_PKTERR_CIRCUIT_TYPE_ERROR,
222 STS_PKTERR_OAM_RM_CRC_ERROR,
223 STS_PKTERR_GFC_ERROR,
224 STS_PKTERR_AAL5_AAL0_CRC_ERROR,
225 STS_PKTERR_AAL5_AAL0_SHORT_PKT_ERROR,
226 STS_PKTERR_AAL5_AAL0_LENGTH_ERROR,
227 STS_PKTERR_AAL5_AAL0_BIG_PKT_ERROR,
228 STS_PKTERR_AAL5_AAL0_SAR_TIMEOUT_ERROR,
229 STS_PKTERR_AAL2F_HEC_ERROR,
230 STS_PKTERR_AAL2F_SEQ_NUM_ERROR,
231 STS_PKTERR_AAL2F_PARITY_ERROR,
232 STS_PKTERR_AAL2F_CRC_ERROR,
233 STS_PKTERR_AAL2F_CAM_ERROR,
234 STS_PKTERR_AAL2F_BIG_PKT_ERROR,
235 STS_PKTERR_AAL2F_RAS_TIMEOUT_ERROR,
236 STS_PKTERR_AAL2F_SHORT_PKT_ERROR,
237 STS_PKTERR_AAL2F_LENGTH_MISMATCH_ERROR,
238 STS_PKTERR_AAL2V_HEC_ERROR,
239 STS_PKTERR_AAL2V_SEQ_NUM_ERROR,
240 STS_PKTERR_AAL2V_PARITY_ERROR,
241 STS_PKTERR_AAL2V_CRC_ERROR,
242 STS_PKTERR_AAL2V_CAM_ERROR,
243 STS_PKTERR_AAL2V_OSF_MISMATCH_ERROR,
244 STS_PKTERR_AAL2V_OSF_ERROR,
245 STS_PKTERR_AAL2V_HEC_OVERLAP_ERROR,
246 STS_PKTERR_AAL2V_BIG_PKT_ERROR,
247 STS_PKTERR_AAL2V_RAS_ERROR,
248 STS_PKTERR_AAL2V_UUI_ERROR
252 // ATM_VCC_ADDR identifies a Virtual Channel Connection (VCC).
253 typedef struct AtmVccAddr
255 UINT32 ulInterfaceId;
258 } ATM_VCC_ADDR, *PATM_VCC_ADDR;
261 // ATM_PORT_CFG contains ATM physical port configuration parameters.
262 typedef struct AtmPortCfg
264 UINT32 ulInterfaceId;
268 } ATM_PORT_CFG, *PATM_PORT_CFG;
271 // ATM_INITIALIZATION_PARMS contains ATM API module initialization parameters.
272 #define ID_ATM_INITIALIZATION_PARMS 2
273 typedef struct AtmInitialization
275 UINT32 ulStructureId;
276 UINT32 ulThreadPriority;
277 UINT16 usFreeCellQSize;
278 UINT16 usFreePktQSize;
279 UINT16 usFreePktQBufferSize;
280 UINT16 usFreePktQBufferOffset; // offset into buffer to start receiving data
281 UINT16 usReceiveCellQSize;
282 UINT16 usReceivePktQSize;
283 UINT8 ucTransmitFifoPriority; // [BCM635x Only]
285 UINT16 usAal5CpcsMaxSduLength;
286 UINT16 usAal2SscsMaxSsarSduLength; // [BCM635x Only]
287 ATM_PORT_CFG PortCfg[PHY_NUM_PORTS];
288 } ATM_INITIALIZATION_PARMS, *PATM_INITIALIZATION_PARMS;
291 // ATM_TRAFFIC_DESCR_PARM_ENTRY contains the fields needed to create a Traffic
292 // Descriptor Table parameter entry.
293 #define ID_ATM_TRAFFIC_DESCR_PARM_ENTRY 1
294 typedef struct AtmTrafficDescrParmEntry
296 UINT32 ulStructureId;
297 UINT32 ulTrafficDescrIndex;
298 UINT32 ulTrafficDescrType;
299 UINT32 ulTrafficDescrParm1;
300 UINT32 ulTrafficDescrParm2;
301 UINT32 ulTrafficDescrParm3;
302 UINT32 ulTrafficDescrParm4;
303 UINT32 ulTrafficDescrParm5;
304 UINT32 ulTrafficDescrRowStatus;
305 UINT32 ulServiceCategory;
306 UINT32 ulTrafficFrameDiscard;
307 } ATM_TRAFFIC_DESCR_PARM_ENTRY, *PATM_TRAFFIC_DESCR_PARM_ENTRY;
310 // ATM_INTERFACE_CFG contains configuration fields for an ATM interface.
311 #define ID_ATM_INTERFACE_CFG 3
312 typedef struct AtmInterfaceCfg
314 UINT32 ulStructureId;
315 UINT32 ulAtmInterfaceMaxVccs;
316 UINT32 ulAtmInterfaceConfVccs;
317 UINT32 ulAtmInterfaceMaxActiveVpiBits;
318 UINT32 ulAtmInterfaceMaxActiveVciBits;
319 UINT32 ulAtmInterfaceCurrentMaxVpiBits;
320 UINT32 ulAtmInterfaceCurrentMaxVciBits;
321 UINT32 ulIfAdminStatus;
322 UINT32 ulIfOperStatus; // read-only
323 UINT32 ulSendNullCells;
325 UINT32 ulPortType; // read-only
326 UINT32 ulIfLastChange;
327 } ATM_INTERFACE_CFG, *PATM_INTERFACE_CFG;
330 // ATM_VCC_TRANSMIT_QUEUE_PARMS contains fields for configuring an transmit
332 #define ID_ATM_VCC_TRANSMIT_QUEUE_PARMS 1
333 typedef struct AtmVccTransmitQueueParms
335 UINT32 ulStructureId;
339 } ATM_VCC_TRANSMIT_QUEUE_PARMS, *PATM_VCC_TRANSMIT_QUEUE_PARMS;
342 // ATM_AAL5_VCC_CFG contains configuration fields for an ATM AAL5 Virtual
343 // Channel Connection (VCC).
344 typedef struct AtmAal5VccCfg
346 UINT32 ulAtmVccEncapsType;
347 UINT32 ulAtmVccCpcsAcceptCorruptedPdus;
348 } ATM_AAL5_VCC_CFG, *PATM_AAL5_VCC_CFG;
351 // [BCM635x Only] ATM_AAL2_VCC_CFG contains configuration fields for an ATM
352 // AAL2 Virtual Channel Connection (VCC).
353 typedef struct AtmAal2VccCfg
355 UINT8 ucAal2CpsMaxMultiplexedChannels;
356 UINT8 ucAal2CpsMaxSduLength;
357 UINT8 ucAal2CpsCidLowerLimit;
358 UINT8 ucAal2CpsCidUpperLimit;
359 UINT8 ucAal2CpsOptimisation;
361 } ATM_AAL2_VCC_CFG, *PATM_AAL2_VCC_CFG;
364 // ATM_AAL0_VCC_CFG contains configuration fields for an ATM AAL0 Virtual
365 // Channel Connection (VCC).
366 typedef struct AtmAal0VccCfg
369 // Reserved for future use.
370 } ATM_AAL0_VCC_CFG, *PATM_AAL0_VCC_CFG;
373 // ATM_VCC_CFG contains configuration fields for an ATM Virtual Channel
375 #define ID_ATM_VCC_CFG 2
376 #define TX_Q_PARM_SIZE 8
377 typedef struct AtmVccCfg
379 UINT32 ulStructureId;
381 UINT32 ulAtmVclAdminStatus;
382 UINT32 ulAtmVclOperStatus;
383 UINT32 ulAtmVclLastChange;
384 UINT32 ulAtmVclReceiveTrafficDescrIndex;
385 UINT32 ulAtmVclTransmitTrafficDescrIndex;
386 UINT32 ulTransmitQParmsSize;
387 ATM_VCC_TRANSMIT_QUEUE_PARMS TransmitQParms[TX_Q_PARM_SIZE];
390 ATM_AAL5_VCC_CFG Aal5Cfg;
391 ATM_AAL2_VCC_CFG Aal2Cfg; // [BCM635x Only]
392 ATM_AAL0_VCC_CFG Aal0Cfg;
394 } ATM_VCC_CFG, *PATM_VCC_CFG;
397 // ATM_INTF_ATM_STATS contains statistics for the ATM layer of an interface.
398 typedef struct AtmIntfAtmStats
401 UINT32 ulIfOutOctets;
403 UINT32 ulIfInUnknownProtos;
404 UINT32 ulIfOutErrors;
406 // The following fields are added together to calculate ulIfInErrors.
407 UINT32 ulIfInHecErrors;
409 // The following fields are added together to calculate ulIfInUnknownProtos.
410 UINT32 ulIfInInvalidVpiVciErrors;
411 UINT32 ulIfInPortNotEnabledErrors;
412 UINT32 ulIfInPtiErrors;
413 UINT32 ulIfInIdleCells;
414 UINT32 ulIfInCircuitTypeErrors;
415 UINT32 ulIfInOamRmCrcErrors;
416 UINT32 ulIfInGfcErrors;
417 } ATM_INTF_ATM_STATS, *PATM_INTF_ATM_STATS;
420 // [BCM635x Only] ATM_INTF_ATM_STATS contains statistics for the TC layer.
421 typedef struct AtmIntfTcStats
423 UINT32 ulTcInDataCells;
424 UINT32 ulTcInTotalCells;
425 UINT32 ulTcInHecErrors;
426 UINT32 ulTcInOcdEvents;
427 UINT32 ulTcAlarmState;
428 } ATM_INTF_TC_STATS, *PATM_INTF_TC_STATS;
431 // ATM_INTF_AAL5_AAL0_STATS contains statistics for all AAL5/AAL0 VCCs on an
433 typedef struct AtmIntfAal5Aal0Stats
436 UINT32 ulIfOutOctets;
437 UINT32 ulIfInUcastPkts;
438 UINT32 ulIfOutUcastPkts;
440 UINT32 ulIfOutErrors;
441 UINT32 ulIfInDiscards;
442 UINT32 ulIfOutDiscards;
443 } ATM_INTF_AAL5_AAL0_STATS, *PATM_INTF_AAL5_AAL0_STATS;
446 // [BCM635x Only] ATM_INTF_AAL2_STATS contains statistics for all AAL2 VCCs
447 // on an ATM interface.
448 typedef struct AtmIntfAal2Stats
451 UINT32 ulIfOutOctets;
452 UINT32 ulIfInUcastPkts;
453 UINT32 ulIfOutUcastPkts;
455 UINT32 ulIfOutErrors;
456 UINT32 ulIfInDiscards;
457 UINT32 ulIfOutDiscards;
458 } ATM_INTF_AAL2_STATS, *PATM_INTF_AAL2_STATS;
461 // ATM_INTERFACE_STATS contains statistics for an ATM interface.
462 #define ID_ATM_INTERFACE_STATS 1
463 typedef struct AtmInterfaceStats
465 UINT32 ulStructureId;
466 ATM_INTF_ATM_STATS AtmIntfStats;
467 ATM_INTF_TC_STATS TcIntfStats; // [BCM635x Only]
468 ATM_INTF_AAL5_AAL0_STATS Aal5IntfStats;
469 ATM_INTF_AAL2_STATS Aal2IntfStats; // [BCM635x Only]
470 ATM_INTF_AAL5_AAL0_STATS Aal0IntfStats;
471 } ATM_INTERFACE_STATS, *PATM_INTERFACE_STATS;
474 // ATM_VCC_AAL5_STATS contains statistics for an AAL5 VCC.
475 typedef struct AtmVccAal5Stats
477 UINT32 ulAal5VccCrcErrors;
478 UINT32 ulAal5VccSarTimeOuts;
479 UINT32 ulAal5VccOverSizedSdus;
480 UINT32 ulAal5VccShortPacketErrors;
481 UINT32 ulAal5VccLengthErrors;
482 } ATM_VCC_AAL5_STATS, *PATM_VCC_AAL5_STATS;
485 // [BCM635x Only] ATM_VCC_AAL2_STATS contains statistics for an AAL2 VCC.
486 typedef struct AtmVccAal2Stats
488 UINT32 ulAal2CpsInPkts;
489 UINT32 ulAal2CpsOutPkts;
490 UINT32 ulAal2CpsParityErrors;
491 UINT32 ulAal2CpsSeqNumErrors;
492 UINT32 ulAal2CpsOsfMismatchErrors;
493 UINT32 ulAal2CpsOsfErrors;
494 UINT32 ulAal2CpsHecOverlapErrors;
495 UINT32 ulAal2CpsHecErrors;
496 UINT32 ulAal2CpsOversizedSduErrors;
497 UINT32 ulAal2CpsReassemblyErrors;
498 UINT32 ulAal2CpsUuiErrors;
499 UINT32 ulAal2CpsCidErrors;
500 UINT32 ulAal2SscsOversizedSssarSduErrors;
501 UINT32 ulAal2SscsSssarRasTimerExipiryErrors;
502 UINT32 ulAal2SscsUndersizedSstedPduErrors;
503 UINT32 ulAal2SscsSstedPduLengthMismatchErrors;
504 UINT32 ulAal2SscsSstedCrcMismatchErrors;
505 } ATM_VCC_AAL2_STATS, *PATM_VCC_AAL2_STATS;
508 // ATM_VCC_AAL0PKT_STATS contains statistics for an AAL0 Packet VCC.
509 typedef struct AtmVccAal0PktStats
511 UINT32 ulAal0VccSarTimeOuts;
512 UINT32 ulAal0VccOverSizedSdus;
513 } ATM_VCC_AAL0PKT_STATS, *PATM_VCC_AAL0PKT_STATS;
516 // ATM_VCC_AAL0CELL_STATS contains statistics for an AAL0 Cell with CRC VCC.
517 typedef struct AtmVccAal0CellStats
519 UINT32 ulAal0VccCrcErrors;
520 } ATM_VCC_AAL0CELL_STATS, *PATM_VCC_AAL0CELL_STATS;
523 // ATM_VCC_STATS contains statistics for a VCC.
524 #define ID_ATM_VCC_STATS 1
525 typedef struct AtmVccStatistics
527 UINT32 ulStructureId;
531 ATM_VCC_AAL5_STATS AtmVccAal5Stats;
532 ATM_VCC_AAL2_STATS AtmVccAal2Stats; // [BCM635x Only]
533 ATM_VCC_AAL0PKT_STATS AtmVccAal0PktStats;
534 ATM_VCC_AAL0CELL_STATS AtmVccAal0CellStats;
536 } ATM_VCC_STATS, *PATM_VCC_STATS;
539 // ATM_INTERFACE_LINK_INFO contains fields for the physical link that the
540 // ATM interface is using.
541 #define ID_ATM_INTERFACE_LINK_INFO 1
542 typedef struct AtmInterfaceLinkInfo
544 UINT32 ulStructureId;
547 UINT32 ulReserved[2];
548 } ATM_INTERFACE_LINK_INFO, *PATM_INTERFACE_LINK_INFO;
551 // AN_INTF_CHANGE_PARMS contains notification fields that passed to an
552 // application callback function when the ATM interface goes up or down.
553 #define ID_AN_INTF_CHANGE_PARMS 1
554 typedef struct AnIntfChangeParms
556 UINT32 ulInterfaceId;
557 UINT32 ulInterfaceState;
558 UINT32 ulInterfaceLineRate;
559 } AN_INTF_CHANGE_PARMS, *PAN_INTF_CHANGE_PARMS;
562 // ATM_NOTIFY_PARMS contains notification fields that passed to an application
563 // callback function when an ATM notification event occurs.
564 typedef struct AtmNotifyParms
569 AN_INTF_CHANGE_PARMS IntfChangeParms;
571 // Other fields and structures that are specific
572 // to the type of notification are declared here.
574 } ATM_NOTIFY_PARMS, *PATM_NOTIFY_PARMS;
576 typedef void (*FN_NOTIFY_CB) (PATM_NOTIFY_PARMS pNotifyParms);
579 // ATM_VCC_ATTACH_PARMS contains fields for attaching to a VCC. It is used
580 // by all BcmAtm_Attach... functions.
581 struct AtmVccDataParms;
582 typedef void (*FN_RECEIVE_CB) (UINT32 ulHandle, PATM_VCC_ADDR pVccAddr,
583 struct AtmVccDataParms *pDataParms, UINT32 ulParmReceiveData);
585 #define ID_ATM_VCC_ATTACH_PARMS 1
586 typedef struct AtmAttachParms
588 UINT32 ulStructureId;
590 FN_RECEIVE_CB pFnReceiveDataCb;
591 UINT32 ulParmReceiveData;
592 ATM_VCC_TRANSMIT_QUEUE_PARMS *pTransmitQParms;
593 UINT32 ulTransmitQParmsSize;
596 } ATM_VCC_ATTACH_PARMS, *PATM_VCC_ATTACH_PARMS;
599 // [BCM635x Only] ATM_VCC_AAL2_CHANNEL_ID_PARMS contains fields for
600 // configuring an transmit queue.
601 #define ID_ATM_VCC_AAL2_CHANNEL_ID_PARMS 1
602 typedef struct AtmVccAal2ChannelIdParms
604 UINT32 ulStructureId;
606 UINT8 ucVoiceRouting;
609 } ATM_VCC_AAL2_CHANNEL_ID_PARMS, *PATM_VCC_AAL2_CHANNEL_ID_PARMS;
612 // ATM_BUFFER contains fields for passing data to, and receive data from, the
614 typedef struct AtmBuffer
616 struct AtmBuffer *pNextAtmBuf;
622 } ATM_BUFFER, *PATM_BUFFER;
625 // ATM_VCC_DATA_PARMS contains fields for sending or receiving data on a VCC.
626 // It is used by all BcmAtm_Send... and receive functions.
627 typedef void (*FN_FREE_DATA_PARMS) (struct AtmVccDataParms *pDataParms);
629 #define ID_ATM_VCC_DATA_PARMS 2
630 typedef struct AtmVccDataParms
632 UINT32 ulStructureId;
634 UINT8 ucAal2ChannelId; // [BCM635x Only]
638 UINT8 ucSendPriority;
640 BCMATM_STATUS baReceiveStatus;
641 PATM_BUFFER pAtmBuffer;
642 FN_FREE_DATA_PARMS pFnFreeDataParms;
643 UINT32 ulParmFreeDataParms;
644 struct AtmVccDataParms *pApplicationLink;
645 UINT32 ulApplicationDefined[2];
646 } ATM_VCC_DATA_PARMS, *PATM_VCC_DATA_PARMS;
649 //**************************************************************************
650 // Function Prototypes
651 //**************************************************************************
653 BCMATM_STATUS BcmAtm_Initialize( PATM_INITIALIZATION_PARMS pInitValues );
654 BCMATM_STATUS BcmAtm_Uninitialize( void );
655 BCMATM_STATUS BcmAtm_GetInterfaceId( UINT8 ucPhyPort, UINT32 *pulInterfaceId );
656 BCMATM_STATUS BcmAtm_GetTrafficDescrTableSize(UINT32 *pulTrafficDescrTableSize);
657 BCMATM_STATUS BcmAtm_GetTrafficDescrTable( PATM_TRAFFIC_DESCR_PARM_ENTRY
658 pTrafficDescTable, UINT32 ulTrafficDescrTableSize );
659 BCMATM_STATUS BcmAtm_SetTrafficDescrTable( PATM_TRAFFIC_DESCR_PARM_ENTRY
660 pTrafficDescTable, UINT32 ulTrafficDescrTableSize );
661 BCMATM_STATUS BcmAtm_GetInterfaceCfg( UINT32 ulInterfaceId, PATM_INTERFACE_CFG
663 BCMATM_STATUS BcmAtm_SetInterfaceCfg( UINT32 ulInterfaceId, PATM_INTERFACE_CFG
665 BCMATM_STATUS BcmAtm_GetVccCfg( PATM_VCC_ADDR pVccAddr, PATM_VCC_CFG pVccCfg );
666 BCMATM_STATUS BcmAtm_SetVccCfg( PATM_VCC_ADDR pVccAddr, PATM_VCC_CFG pVccCfg );
667 BCMATM_STATUS BcmAtm_GetVccAddrs( UINT32 ulInterfaceId, PATM_VCC_ADDR pVccAddrs,
668 UINT32 ulNumVccs, UINT32 *pulNumReturned );
669 BCMATM_STATUS BcmAtm_GetInterfaceStatistics( UINT32 ulInterfaceId,
670 PATM_INTERFACE_STATS pStatistics, UINT32 ulReset );
671 BCMATM_STATUS BcmAtm_GetVccStatistics( PATM_VCC_ADDR pVccAddr, PATM_VCC_STATS
672 pVccStatistics, UINT32 ulReset );
673 BCMATM_STATUS BcmAtm_SetInterfaceLinkInfo( UINT32 ulInterfaceId,
674 PATM_INTERFACE_LINK_INFO pInterfaceCfg );
675 BCMATM_STATUS BcmAtm_SetNotifyCallback( FN_NOTIFY_CB pFnNotifyCb );
676 BCMATM_STATUS BcmAtm_ResetNotifyCallback( FN_NOTIFY_CB pFnNotifyCb );
677 BCMATM_STATUS BcmAtm_AttachVcc( PATM_VCC_ADDR pVccAddr, PATM_VCC_ATTACH_PARMS
679 BCMATM_STATUS BcmAtm_AttachMgmtCells( UINT32 ulInterfaceId,
680 PATM_VCC_ATTACH_PARMS pAttachParms );
681 BCMATM_STATUS BcmAtm_AttachTransparent( UINT32 ulInterfaceId,
682 PATM_VCC_ATTACH_PARMS pAttachParms );
683 BCMATM_STATUS BcmAtm_Detach( UINT32 ulHandle );
684 BCMATM_STATUS BcmAtm_SetAal2ChannelIds( UINT32 ulHandle,
685 PATM_VCC_AAL2_CHANNEL_ID_PARMS pChannelIdParms, UINT32
686 ulNumChannelIdParms ); // [BCM635x Only]
687 BCMATM_STATUS BcmAtm_SendVccData( UINT32 ulHandle,
688 PATM_VCC_DATA_PARMS pDataParms );
689 BCMATM_STATUS BcmAtm_SendMgmtData( UINT32 ulHandle, PATM_VCC_ADDR pVccAddr,
690 PATM_VCC_DATA_PARMS pDataParms );
691 BCMATM_STATUS BcmAtm_SendTransparentData( UINT32 ulHandle, UINT32 ulInterfaceId,
692 PATM_VCC_DATA_PARMS pDataParms );
694 #if defined(__cplusplus)
698 #endif // _BCMATMAPI_H_