00001
00049 #ifndef IXATMCODELET_P_H
00050 #define IXATMCODELET_P_H
00051
00052
00053
00054
00055
00056
00057
00058
00059 #include "ix_ossl.h"
00060 #include "IxAtmTypes.h"
00061 #include "IxAtmdAcc.h"
00062 #include "IxTypes.h"
00063 #include "IxAtmdAcc.h"
00064 #include "IxAtmm.h"
00065 #include "IxNpeDl.h"
00066 #include "IxOsServicesMemAccess.h"
00067
00068
00069
00070
00071
00075 #define IX_ATMCODELET_MBUF_SIZE (2000)
00076
00080 #define IX_ATMCODELET_RX_FREE_Q_LOW_THRESHOLD (8)
00081
00085 #define IX_ATMCODELET_DEFAULT_CLP (0)
00086
00090 #define IX_ATMCODELET_LOG printf
00091
00095 #define IX_OAM_ITU610_F4_SEG_VCI 3
00096 #define IX_OAM_ITU610_F4_ETE_VCI 4
00097
00101 #define IX_OAM_ITU610_F5_SEG_PTI 4
00102 #define IX_OAM_ITU610_F5_ETE_PTI 5
00103
00107 #define IX_OAM_ITU610_LB_CORRELATION_TAG_LEN 4
00108
00112 #define IX_OAM_ITU610_LOCATION_ID_LEN 16
00113
00117 #define IX_OAM_ITU610_RESERVED_BYTE_VALUE 0x6a
00118 #define IX_OAM_ITU610_GENERIC_PAYLOAD_RESERVED_BYTES_LEN 45
00119 #define IX_OAM_ITU610_LB_RESERVED_BYTES_LEN 8
00120
00124 #define IX_OAM_ITU610_RESERVED_AND_CRC10_LEN 2
00125
00129 #define IX_OAM_ITU610_LB_TIMEOUT_PERIOD_MSECS 5000
00130
00134 #define IX_OAM_ITU610_TYPE_FAULT_MAN_LB 0x18
00135
00139 #define IX_OAM_ITU610_LB_INDICATION_PARENT 1
00140 #define IX_OAM_ITU610_LB_INDICATION_CHILD 0
00141
00142
00143
00144
00145
00149 typedef UINT32 atmCellHeader;
00150
00154 typedef struct
00155 {
00156 UINT32 txPdus;
00157 UINT32 txBytes;
00158 UINT32 rxPdus;
00159 UINT32 rxBytes;
00160 UINT32 txDonePdus;
00161 UINT32 rxFreeBuffers;
00162 UINT32 txPdusSubmitFail;
00163 UINT32 txPdusSubmitBusy;
00164 UINT32 rxPdusInvalid;
00165 } IxAtmCodeletStats;
00166
00170 typedef enum
00171 {
00172 IX_ATMCODELET_UTOPIA_LOOPBACK = 0,
00177 IX_ATMCODELET_SOFTWARE_LOOPBACK,
00179 IX_ATMCODELET_REMOTE_LOOPBACK,
00182 IX_ATMCODELET_UTOPIA_LOOPBACK_PERFORM_OAM_PING_F4F5,
00185 IX_ATMCODELET_SOFTWARE_LOOPBACK_PERFORM_OAM_PING_F4F5
00188 } IxAtmCodeletMode;
00189
00193 typedef enum
00194 {
00195 ixAtmCodeletAalTypeInvalid = 0,
00196 ixAtmCodeletAalType5,
00197 ixAtmCodeletAalType0_48,
00198 ixAtmCodeletAalType0_52,
00199 ixAtmCodeletAalTypeMax
00200 } IxAtmCodeletAalType;
00201
00205 typedef struct
00206 {
00207 UINT8 oamTypeAndFunction;
00208 UINT8 loopbackIndication;
00209 UINT8 correlationTag[IX_OAM_ITU610_LB_CORRELATION_TAG_LEN];
00210 UINT8 llid[IX_OAM_ITU610_LOCATION_ID_LEN];
00211 UINT8 sourceId[IX_OAM_ITU610_LOCATION_ID_LEN];
00212 UINT8 reserved[IX_OAM_ITU610_LB_RESERVED_BYTES_LEN];
00213 UINT8 reservedAndCrc10[IX_OAM_ITU610_RESERVED_AND_CRC10_LEN];
00214 } IxOamITU610LbPayload;
00215
00220 typedef struct
00221 {
00222 UINT8 oamTypeAndFunction;
00223 UINT8 reserved[IX_OAM_ITU610_GENERIC_PAYLOAD_RESERVED_BYTES_LEN];
00224 UINT8 reservedAndCrc10[IX_OAM_ITU610_RESERVED_AND_CRC10_LEN];
00225 } IxOamITU610GenericPayload;
00226
00230 typedef union
00231 {
00232 IxOamITU610LbPayload lbPayload;
00233 IxOamITU610GenericPayload genericPayload;
00234
00235 } IxOamITU610Payload;
00236
00240 typedef struct
00241 {
00242 atmCellHeader header;
00243 IxOamITU610Payload payload;
00244 } IxOamITU610Cell;
00245
00246
00247
00248
00249
00275 PUBLIC IX_STATUS
00276 ixAtmCodeletSystemInit (UINT32 numPorts,
00277 IxAtmCodeletMode mode);
00278
00321 PUBLIC IX_STATUS
00322 ixAtmCodeletInit (UINT32 numPorts,
00323 UINT32 rxToTxRatio);
00324
00393 PUBLIC IX_STATUS
00394 ixAtmCodeletUbrChannelsProvision (UINT32 numPorts,
00395 UINT32 numChannels,
00396 IxAtmdAccAalType aalType);
00397
00441 PUBLIC IX_STATUS
00442 ixAtmCodeletUbrChannelsRemove (void);
00443
00444
00488 PUBLIC IX_STATUS
00489 ixAtmCodeletAal0PacketsSend (UINT32 cellsPerPacket,
00490 UINT32 numPackets);
00491
00513 PUBLIC IX_STATUS
00514 ixAtmCodeletAal5CpcsSdusSend (UINT32 sduSize,
00515 UINT32 numSdus);
00516
00535 PUBLIC IX_STATUS
00536 ixAtmCodeletPortRateModify (IxAtmLogicalPort port,
00537 UINT32 portRate);
00538
00546 PUBLIC void
00547 ixAtmCodeletPortQuery (void);
00548
00559 PUBLIC void
00560 ixAtmCodeletShow (void);
00561
00565 IX_STATUS
00566 ixAtmRxTxInit (IxAtmCodeletStats *stats);
00567
00568
00569
00573 IX_STATUS
00574 ixAtmRxTxChannelsProvision (UINT32 numPorts,
00575 UINT32 numChannels,
00576 IxAtmdAccAalType aalType);
00577
00581 IX_STATUS
00582 ixAtmRxTxChannelsRemove ( void );
00583
00584
00588 void
00589 ixAtmRxTxStatsGet (IxAtmCodeletStats *stats);
00590
00594 void
00595 ixAtmRxTxRxFreeLowReplenish (IxAtmdAccUserId userId);
00596
00600 IX_STATUS
00601 ixAtmRxTxAal5CpcsSdusSend (UINT32 sduSize,
00602 UINT32 numSdus);
00603
00611 IX_STATUS
00612 ixAtmRxTxAal0PacketsSend (UINT32 cellsPerPacket,
00613 UINT32 numPackets);
00614
00618 IX_STATUS
00619 ixAtmSwLbInit (IxAtmCodeletStats *stats, UINT32 rxToTxRatio);
00620
00624 IX_STATUS
00625 ixAtmSwLbChannelsProvision (UINT32 numPorts,
00626 UINT32 numChannels,
00627 IxAtmdAccAalType aalType);
00628
00632 IX_STATUS
00633 ixAtmSwLbChannelsRemove ( void );
00634
00635
00636
00637
00638
00639
00640 void
00641 ixAtmSwLbRxFreeLowReplenish (IxAtmdAccUserId userId);
00642
00643
00644
00645
00646 void
00647 ixAtmSwLbStatsGet (IxAtmCodeletStats *stats);
00648
00664 IX_STATUS
00665 ixOamCodeletInit (UINT32 numPorts);
00666
00700 IX_STATUS
00701 ixOamCodeletOamF5EtePing (IxAtmLogicalPort port,
00702 UINT32 vpi,
00703 UINT32 vci,
00704 UINT32 numCells);
00705
00739 IX_STATUS
00740 ixOamCodeletOamF5SegPing (IxAtmLogicalPort port,
00741 UINT32 vpi,
00742 UINT32 vci,
00743 UINT32 numCells);
00744
00776 IX_STATUS
00777 ixOamCodeletOamF4EtePing (IxAtmLogicalPort port,
00778 UINT32 vpi,
00779 UINT32 numCells);
00780
00812 IX_STATUS
00813 ixOamCodeletOamF4SegPing (IxAtmLogicalPort port,
00814 UINT32 vpi,
00815 UINT32 numCells);
00816
00825 void
00826 ixOamCodeletShow (void);
00827
00861 PUBLIC IX_STATUS
00862 ixAtmUtilsAtmVcRegisterConnect (IxAtmLogicalPort port,
00863 unsigned vpi,
00864 unsigned vci,
00865 IxAtmdAccAalType aalType,
00866 IxAtmServiceCategory atmService,
00867 IxAtmRxQueueId rxQueueId,
00868 IxAtmdAccRxVcRxCallback rxCallback,
00869 UINT32 minimumReplenishCount,
00870 IxAtmdAccTxVcBufferReturnCallback bufferFreeCallback,
00871 IxAtmdAccRxVcFreeLowCallback rxFreeLowCallback,
00872 IxAtmdAccUserId userId,
00873 IxAtmConnId *rxConnId,
00874 IxAtmConnId *txConnId);
00875
00888 PUBLIC IX_STATUS
00889 ixAtmUtilsAtmVcUnregisterDisconnect (IxAtmConnId rxConnId, IxAtmConnId txConnId);
00890
00891
00903 PUBLIC IX_STATUS
00904 ixAtmUtilsAtmAllVcsDisconnect (void);
00905
00925 PUBLIC IX_STATUS
00926 ixAtmUtilsAtmImageDownload (unsigned numPorts,
00927 IxAtmmPhyMode *phyMode);
00928
00940 PUBLIC BOOL
00941 ixAtmUtilsUtopiaFpgaStimulusAsMasterSet(void);
00942
00954 IX_STATUS
00955 ixAtmUtilsMbufPoolInit (void);
00956
00957
00958
00973 void
00974 ixAtmUtilsMbufGet (UINT32 bufSize, IX_MBUF **buf);
00975
00988 void
00989 ixAtmUtilsMbufFree (IX_MBUF *buf);
00990
00997 void
00998 ixAtmUtilsMbufShow (void);
00999
01000 #endif
01001