www.usr.com/support/gpl/USR9113_release1.0.tar.gz
[bcm963xx.git] / bcmdrivers / broadcom / include / bcm963xx / bcmatmapi.h
index 703dd49..751aa51 100755 (executable)
@@ -26,6 +26,8 @@
 #if !defined(_BCMATMAPI_H_)
 #define _BCMATMAPI_H_
 
+//define CONFIG_ATM_EOP_MONITORING
+
 #if defined(__cplusplus)
 extern "C" {
 #endif
@@ -34,6 +36,10 @@ extern "C" {
 // Constant Definitions
 //**************************************************************************
 
+/* Values for traffic type */
+#define ATM_TRAFFIC 0
+#define PTM_TRAFFIC 1
+
 // ATM physical port constants.
 #define PHY_NUM_PORTS                       4
 #define PHY_0                               0
@@ -55,10 +61,18 @@ extern "C" {
 #define PT_ADSL_INTERLEAVED                 4 // [BCM6345 Only]
 #define PT_ADSL_FAST                        5 // [BCM6345 Only]
 
+// Values for ATM_PORT_CFG ucPortFlags.
+#define PF_UTOPIA_LEVEL_2                   0x01
+#define PF_UTOPIA_NEG_EDGE_SEL              0x02
+
 // Wildcard definitions.
 #define ALL_INTERFACES                      0xffffffff
 #define ANY_PRIORITY                        0xff
 
+// Values for priority packet groups.
+#define NUM_PRI_PKT_GROUPS                  16
+#define NUM_ENTRIES_PER_PRI_PKT_GROUP       6
+
 // Values for ATM_TRAFFIC_DESCR_PARM_ENTRY ulTrafficDescrType.
 #define TDT_ATM_NO_TRAFFIC_DESCRIPTOR       1
 #define TDT_ATM_NO_CLP_NO_SCR               2
@@ -263,7 +277,7 @@ typedef struct AtmPortCfg
 {
     UINT32 ulInterfaceId;
     UINT8 ucPortType;
-    UINT8 ucPortAddr;
+    UINT8 ucPortFlags;
     UINT8 ucReserved[2];
 } ATM_PORT_CFG, *PATM_PORT_CFG;
 
@@ -281,11 +295,26 @@ typedef struct AtmInitialization
     UINT16 usReceiveCellQSize;
     UINT16 usReceivePktQSize;
     UINT8  ucTransmitFifoPriority; // [BCM635x Only]
-    UINT8  ucReserved;
+    UINT8  ucPrioritizeReceivePkts;
     UINT16 usAal5CpcsMaxSduLength;
     UINT16 usAal2SscsMaxSsarSduLength; // [BCM635x Only]
     ATM_PORT_CFG PortCfg[PHY_NUM_PORTS];
 } ATM_INITIALIZATION_PARMS, *PATM_INITIALIZATION_PARMS;
+// USR9109/9113
+typedef struct 
+{
+    unsigned char* ucMacAddr;
+} ATM_MAC_PARMS, *PATM_MAC_PARMS;
+
+// ATM_PRIORITY_PACKET_ENTRY contains fields for identifying a received packet.
+#define ID_ATM_PRIORITY_PACKET_ENTRY        1
+typedef struct AtmPriorityPacketEntry
+{
+    UINT32 ulStructureId;
+    UINT32 ulPacketOffset;
+    UINT16 usPacketValue;
+    UINT16 usValueMask;
+} ATM_PRIORITY_PACKET_ENTRY, *PATM_PRIORITY_PACKET_ENTRY;
 
 
 // ATM_TRAFFIC_DESCR_PARM_ENTRY contains the fields needed to create a Traffic
@@ -308,7 +337,7 @@ typedef struct AtmTrafficDescrParmEntry
 
 
 // ATM_INTERFACE_CFG contains configuration fields for an ATM interface.
-#define ID_ATM_INTERFACE_CFG                3
+#define ID_ATM_INTERFACE_CFG                4
 typedef struct AtmInterfaceCfg
 {
     UINT32 ulStructureId;
@@ -322,8 +351,9 @@ typedef struct AtmInterfaceCfg
     UINT32 ulIfOperStatus;                  // read-only
     UINT32 ulSendNullCells;
     UINT32 ulTcScramble;
-    UINT32 ulPortType;                      // read-only
+    UINT32 ulPortType;
     UINT32 ulIfLastChange;
+    UINT32 ulPortFlags;
 } ATM_INTERFACE_CFG, *PATM_INTERFACE_CFG;
 
 
@@ -372,7 +402,7 @@ typedef struct AtmAal0VccCfg
 
 // ATM_VCC_CFG contains configuration fields for an ATM Virtual Channel
 // Connection (VCC).
-#define ID_ATM_VCC_CFG                      2
+#define ID_ATM_VCC_CFG                      3
 #define TX_Q_PARM_SIZE                      8
 typedef struct AtmVccCfg
 {
@@ -384,6 +414,7 @@ typedef struct AtmVccCfg
     UINT32 ulAtmVclReceiveTrafficDescrIndex;
     UINT32 ulAtmVclTransmitTrafficDescrIndex;
     UINT32 ulTransmitQParmsSize;
+    UINT32 ulPriorityPacketGroupNumbers[NUM_PRI_PKT_GROUPS];
     ATM_VCC_TRANSMIT_QUEUE_PARMS TransmitQParms[TX_Q_PARM_SIZE];
     union
     {
@@ -440,6 +471,7 @@ typedef struct AtmIntfAal5Aal0Stats
     UINT32 ulIfOutErrors;
     UINT32 ulIfInDiscards;
     UINT32 ulIfOutDiscards;
+    UINT32 ulIfInPriPkts;
 } ATM_INTF_AAL5_AAL0_STATS, *PATM_INTF_AAL5_AAL0_STATS;
 
 
@@ -459,7 +491,7 @@ typedef struct AtmIntfAal2Stats
 
 
 // ATM_INTERFACE_STATS contains statistics for an ATM interface.
-#define ID_ATM_INTERFACE_STATS              1
+#define ID_ATM_INTERFACE_STATS              2
 typedef struct AtmInterfaceStats
 {
     UINT32 ulStructureId;
@@ -653,6 +685,10 @@ typedef struct AtmVccDataParms
 BCMATM_STATUS BcmAtm_Initialize( PATM_INITIALIZATION_PARMS pInitValues );
 BCMATM_STATUS BcmAtm_Uninitialize( void );
 BCMATM_STATUS BcmAtm_GetInterfaceId( UINT8 ucPhyPort, UINT32 *pulInterfaceId );
+BCMATM_STATUS BcmAtm_GetPriorityPacketGroup(UINT32 ulGroupNumber,
+    PATM_PRIORITY_PACKET_ENTRY pPriorityPackets, UINT32 *pulPriorityPacketsSize);
+BCMATM_STATUS BcmAtm_SetPriorityPacketGroup(UINT32 ulGroupNumber,
+    PATM_PRIORITY_PACKET_ENTRY pPriorityPackets, UINT32 ulPriorityPacketsSize);
 BCMATM_STATUS BcmAtm_GetTrafficDescrTableSize(UINT32 *pulTrafficDescrTableSize);
 BCMATM_STATUS BcmAtm_GetTrafficDescrTable( PATM_TRAFFIC_DESCR_PARM_ENTRY
     pTrafficDescTable, UINT32 ulTrafficDescrTableSize );
@@ -690,6 +726,7 @@ BCMATM_STATUS BcmAtm_SendMgmtData( UINT32 ulHandle, PATM_VCC_ADDR pVccAddr,
     PATM_VCC_DATA_PARMS pDataParms );
 BCMATM_STATUS BcmAtm_SendTransparentData( UINT32 ulHandle, UINT32 ulInterfaceId,
     PATM_VCC_DATA_PARMS pDataParms );
+BCMATM_STATUS BcmAtm_Mac( PATM_MAC_PARMS pMacParms );  // USR9109/9113
 
 #if defined(__cplusplus)
 }