wanpipe-kernel-sources/kdrivers/include/sdla_ss7.h

1056 lines
56 KiB
C

/*
****************************************************************************
* *
* SS7L2API.H - the 'C' header file for the Sangoma S508/S514 SS7 code API. *
* *
****************************************************************************
*/
#ifndef _SDLA_SS7_H
#define _SDLA_SS7_H
#pragma pack(1)
/* ----------------------------------------------------------------------------
* Constants defining the shared memory control block (mailbox)
* --------------------------------------------------------------------------*/
#define PRI_BASE_ADDR_MB_STRUCT 0xE000 /* the base address of the mailbox structure (primary port) */
#define NUMBER_MB_RESERVED_BYTES 0x0B /* the number of reserved bytes in the mailbox header area */
#define SIZEOF_MB_DATA_BFR 2032 /* the size of the actual mailbox data area */
/* the control block mailbox structure */
#if 0
typedef struct {
unsigned char opp_flag; /* the opp flag */
unsigned char command; /* the user command */
unsigned short buffer_length; /* the data length */
unsigned char return_code; /* the return code */
char MB_reserved[NUMBER_MB_RESERVED_BYTES]; /* reserved for later use */
char data[SIZEOF_MB_DATA_BFR]; /* the data area */
} SS7_MAILBOX_STRUCT;
#endif
/* ----------------------------------------------------------------------------
* Interface commands
* --------------------------------------------------------------------------*/
/* global interface commands */
#define READ_GLOBAL_EXCEPTION_CONDITION 0x01 /* read a global exception condition from the adapter */
#define SET_GLOBAL_CONFIGURATION 0x02 /* set the global operational configuration */
#define READ_GLOBAL_CONFIGURATION 0x03 /* read the global configuration */
#define READ_GLOBAL_STATISTICS 0x04 /* retrieve the global statistics */
#define FLUSH_GLOBAL_STATISTICS 0x05 /* flush the global statistics */
#define SET_MODEM_STATUS 0x06 /* set the status of DTR and/or RTS */
#define READ_MODEM_STATUS 0x07 /* read the current status of CTS and DCD */
#undef READ_COMMS_ERROR_STATS
#define READ_COMMS_ERROR_STATS 0x08 /* read the communication error statistics */
#undef FLUSH_COMMS_ERROR_STATS
#define FLUSH_COMMS_ERROR_STATS 0x09 /* flush the communication error statistics */
#define SET_TRACE_CONFIGURATION 0x0A /* set the line trace configuration */
#define READ_TRACE_CONFIGURATION 0x0B /* read the line trace configuration */
#define READ_TRACE_STATISTICS 0x0C /* read the trace statistics */
#define FLUSH_TRACE_STATISTICS 0x0D /* flush the trace statistics */
/* SS7-level interface commands */
#define READ_SS7_CODE_VERSION 0x20 /* read the SS7 code version */
#define L2_READ_EXCEPTION_CONDITION 0x21 /* L2 - read an exception condition from the adapter */
#define L2_SET_CONFIGURATION 0x22 /* L2 - set the operational configuration */
#define L2_READ_CONFIGURATION 0x23 /* L2 - read the current configuration */
#define L2_READ_LINK_STATUS 0x24 /* L2 - read the link status */
#define L2_READ_OPERATIONAL_STATS 0x25 /* L2 - retrieve the operational statistics */
#define L2_FLUSH_OPERATIONAL_STATS 0x26 /* L2 - flush the operational statistics */
#define L2_READ_HISTORY_TABLE 0x27 /* L2 - read the history table */
#define L2_FLUSH_HISTORY_TABLE 0x28 /* L2 - flush the history table */
#define L2_SET_INTERRUPT_TRIGGERS 0x30 /* L2 - set the application interrupt triggers */
#define L2_READ_INTERRUPT_TRIGGERS 0x31 /* L2 - read the application interrupt trigger configuration */
#define L2_POWER_ON 0x40 /* L2 - power on */
#define L2_EMERGENCY 0x41 /* L2 - emergency */
#define L2_EMERGENCY_CEASES 0x42 /* L2 - emergency ceases */
#define L2_START 0x43 /* L2 - start */
#define L2_STOP 0x44 /* L2 - stop */
#define L2_RESUME 0x45 /* L2 - resume (ANSI) / local processor recovered (ITU) */
#define L2_RETRIEVE_BSNT 0x46 /* L2 - retrieve BSNT */
#define L2_RETRIEVAL_REQ_AND_FSNC 0x47 /* L2 - retrieval request and FSNC */
#define L2_CLEAR_BUFFERS 0x48 /* L2 - clear buffers (ANSI) / flush buffers (ITU) */
#define L2_CLEAR_RTB 0x49 /* L2 - clear RTB */
#define L2_LOCAL_PROCESSOR_OUTAGE 0x4A /* L2 - local processor outage */
#define L2_CONTINUE 0x4B /* L2 - continue (ITU) */
#define L2_SET_TX_CONG_CFG 0x50 /* L2 - set the transmission congestion configuration */
#define L2_READ_TX_CONG_STATUS 0x51 /* L2 - read the transmission congestion status */
#define L2_SET_RX_CONG_CFG 0x52 /* L2 - set the receive congestion configuration */
#define L2_READ_RX_CONG_STATUS 0x53 /* L2 - read the receive congestion status */
#define L2_DEBUG 0x5F /* L2 - debug */
/* ----------------------------------------------------------------------------
* Return codes from interface commands
* --------------------------------------------------------------------------*/
#define OK 0x00 /* the interface command was successful */
/* return codes from global interface commands */
#define NO_GLOBAL_EXCEP_COND_TO_REPORT 0x01 /* there is no global exception condition to report */
#define LGTH_GLOBAL_CFG_DATA_INVALID 0x01 /* the length of the passed global configuration data is invalid */
#define LGTH_TRACE_CFG_DATA_INVALID 0x01 /* the length of the passed trace configuration data is invalid */
#define IRQ_TIMEOUT_VALUE_INVALID 0x02 /* an invalid application IRQ timeout value was selected */
#define TRACE_CONFIG_INVALID 0x02 /* the passed line trace configuration is invalid */
#define ADAPTER_OPERATING_FREQ_INVALID 0x03 /* an invalid adapter operating frequency was selected */
#define TRC_DEAC_TMR_INVALID 0x03 /* the trace deactivation timer is invalid */
/* return codes from command READ_GLOBAL_EXCEPTION_CONDITION */
#define EXCEP_MODEM_STATUS_CHANGE 0x10 /* a modem status change occurred */
#define EXCEP_TRC_DISABLED 0x11 /* the trace has been disabled */
#define EXCEP_APP_IRQ_TIMEOUT 0x12 /* an application IRQ timeout has occurred */
#define EXCEP_FT1_INS_ALARM_COND 0x16 /* an FT1 in-service/alarm condition has occurred */
/* return codes from SS7 L2 interface commands */
#define NO_L2_EXCEP_COND_TO_REPORT 0x21 /* there is no L2 exception condition to report */
#define L2_STOP_BEFORE_CFG 0x21 /* stop L2 communications before setting the configuration */
#define L2_INVALID_CONGESTION_STATUS 0x21 /* invalid congestion status selected */
#define L2_CFG_BEFORE_POWER_ON 0x22 /* perform a L2_SET_CONFIGURATION before L2_POWER_ON */
#define LGTH_L2_CFG_DATA_INVALID 0x22 /* the length of the passed configuration data is invalid */
#define LGTH_INT_TRIGGERS_DATA_INVALID 0x22 /* the length of the passed interrupt trigger data is invalid */
#define LGTH_L2_TX_CONG_DATA_INVALID 0x22 /* the length of the passed Tx congestion data is invalid */
#define LGTH_L2_RX_CONG_DATA_INVALID 0x22 /* the length of the passed Rx congestion data is invalid */
#define INVALID_L2_CFG_DATA 0x23 /* the passed SS7 configuration data is invalid */
#define INVALID_L2_TX_CONG_CFG 0x23 /* the passed Tx congestion configuration data is invalid */
#define INVALID_L2_RX_CONG_CFG 0x23 /* the passed Rx congestion configuration data is invalid */
#define L2_INVALID_FSNC 0x23 /* an invalid FSNC value was selected */
#define INVALID_IRQ_SELECTED 0x23 /* an invalid IRQ was selected in the SET_SS7_INTERRUPT_TRIGGERS */
#define IRQ_TMR_VALUE_INVALID 0x24 /* an invalid application IRQ timer value was selected */
#define L2_INVALID_STATE_FOR_CMND 0x25 /* the command is invalid for the current SS7 L2 state */
#define L2_INVALID_PROTOCOL_FOR_CMND 0x26 /* the command is invalid for the protocol specification */
#define INVALID_SS7_COMMAND 0x8F /* the defined SS7 interface command is invalid */
/* return codes from command L2_READ_EXCEPTION_CONDITION */
#define L2_EXCEP_IN_SERVICE 0x30 /* the link is 'In service' */
#define L2_EXCEP_OUT_OF_SERVICE 0x31 /* the link is 'Out of service' */
#define L2_EXCEP_REMOTE_PROC_OUTAGE 0x32 /* the remote processor has reported an outage */
#define L2_EXCEP_REMOTE_PROC_RECOVERED 0x33 /* the remote processor has recovered after an outage */
#define L2_EXCEP_RTB_CLEARED 0x34 /* a L2_CLEAR_RTB command has been completed */
#define L2_EXCEP_RB_CLEARED 0x35 /* a L2_CLEAR_BUFFERS command has been completed */
#define L2_EXCEP_BSNT 0x36 /* a L2_RETRIEVE_BSNT command has been completed */
#define L2_EXCEP_RETRIEVAL_COMPLETE 0x37 /* a L2_RETRIEVAL_REQ_AND_FSNC command has been completed */
#define L2_EXCEP_CONG_OUTBOUND 0x38 /* outbound congestion status change */
#define L2_EXCEP_CONG_INBOUND 0x39 /* inbound congestion status change */
#define L2_EXCEP_CORRECT_SU 0x3A /* a correct SU was received after a link inactivity timeout */
#define L2_EXCEP_TX_MSU_DISC_LGTH_ERR 0x3E /* an outbound MSU was discarded due to a length error */
#define L2_EXCEP_RX_MSU_DISC 0x3F /* a received MSU was discarded due to a format error */
/* qualifiers for the L2_EXCEP_OUT_OF_SERVICE return code */
typedef struct { /* the structure used for retrieving the 'out of service' qualifier */
unsigned char OOS_qualifier; /* the 'out of service' qualifier */
} L2_EXCEP_OOS_STRUCT;
/* L2_EXCEP_OUT_OF_SERVICE qualifiers */
#define L2_OOS_L3_CMND_STOP 0x10 /* an application level L2_STOP command was issued */
#define L2_OOS_L3_CMND_PROC_OUT 0x11 /* an application level L2_LOCAL_PROCESSOR_OUTAGE command was issued */
#define L2_OOS_IAC_ALIGN_NOT_POSS 0x21 /* link failure - alignment not possible (alignment control) */
#define L2_OOS_TXC_T6_EXP 0x30 /* link failure - T6 expired (transmission control) */
#define L2_OOS_TXC_T7_EXP 0x31 /* link failure - T7 expired (transmission control) */
#define L2_OOS_RXC_SIO 0x40 /* link failure - SIO received (reception control) */
#define L2_OOS_RXC_SIN 0x41 /* link failure - SIN received (reception control) */
#define L2_OOS_RXC_SIE 0x42 /* link failure - SIE received (reception control) */
#define L2_OOS_RXC_SIOS 0x43 /* link failure - SIOS received (reception control) */
#define L2_OOS_RXC_ABNORMAL_BSNR 0x45 /* link failure - abnormal BSNR (reception control) */
#define L2_OOS_RXC_ABNORMAL_FIBR 0x46 /* link failure - abnormal FIBR (reception control) */
#define L2_OOS_SUERM_ERR 0x50 /* link failure - SU in error (SUERM) */
#define L2_OOS_SUERM_INACTIVITY 0x51 /* link failure - inactivity timeout (SUERM) */
/* ----------------------------------------------------------------------------
* Constants for the SET_GLOBAL_CONFIGURATION/READ_GLOBAL_CONFIGURATION commands
* --------------------------------------------------------------------------*/
/* the global configuration structure */
typedef struct {
unsigned short adapter_config_options; /* adapter configuration options */
unsigned short app_IRQ_timeout; /* application IRQ timeout */
unsigned long adapter_operating_frequency; /* adapter operating frequency */
} GLOBAL_CONFIGURATION_STRUCT;
/* settings for the 'adapter_config_options' */
#define ADPTR_CFG_S514 0x0001 /* S514 adapter */
/* settings for the 'app_IRQ_timeout' */
#define MAX_APP_IRQ_TIMEOUT_VALUE 5000 /* the maximum permitted IRQ timeout */
/* ----------------------------------------------------------------------------
* Constants for the READ_GLOBAL_STATISTICS command
* --------------------------------------------------------------------------*/
/* the global statistics structure */
typedef struct {
unsigned short app_IRQ_timeout_count; /* application IRQ timeout count */
} GLOBAL_STATS_STRUCT;
/* ----------------------------------------------------------------------------
* Constants for the READ_COMMS_ERROR_STATS command
* --------------------------------------------------------------------------*/
/* the communications error statistics structure */
typedef struct {
unsigned short Rx_overrun_err_count; /* receiver overrun error count */
unsigned short CRC_err_count; /* receiver CRC error count */
unsigned short Rx_abort_count; /* abort frames received count */
unsigned short Rx_dis_pri_bfrs_full_count; /* receiver disabled count */
unsigned short reserved_1; /* reserved */
unsigned short reserved_2;
unsigned short reserved_3;
unsigned short DCD_state_change_count; /* DCD state change count */
unsigned short CTS_state_change_count; /* CTS state change count */
} COMMS_ERROR_STATS_STRUCT;
/* ----------------------------------------------------------------------------
* Constants used for line tracing
* --------------------------------------------------------------------------*/
/* the trace configuration structure (SET_TRACE_CONFIGURATION/READ_TRACE_CONFIGURATION commands) */
typedef struct {
unsigned char trace_config; /* trace configuration */
unsigned short trace_deactivation_timer; /* trace deactivation timer */
unsigned long ptr_trace_stat_el_cfg_struct; /* a pointer to the line trace element configuration structure */
} LINE_TRACE_CONFIG_STRUCT;
/* 'trace_config' bit settings */
#define TRACE_INACTIVE 0x00 /* trace is inactive */
#define TRACE_ACTIVE 0x01 /* trace is active */
#define TRACE_DELAY_MODE 0x04 /* operate the trace in the delay mode */
#define TRACE_FISU 0x08 /* trace FISUs */
#define TRACE_LSSU 0x10 /* trace LSSUs */
#define TRACE_MSU 0x20 /* trace MSUs */
/* permitted range for the 'trace_deactivation_timer' */
#define MIN_TRC_DEAC_TMR_VAL 0 /* the minimum trace deactivation timer value */
#define MAX_TRC_DEAC_TMR_VAL 8000 /* the maximum trace deactivation timer value */
/* the line trace status element configuration structure */
typedef struct {
unsigned short number_trace_status_elements; /* number of line trace elements */
unsigned long base_addr_trace_status_elements;/* base address of the trace element list */
unsigned long next_trace_element_to_use; /* pointer to the next trace element to be used */
unsigned long base_addr_trace_buffer; /* base address of the trace data buffer */
unsigned long end_addr_trace_buffer; /* end address of the trace data buffer */
} TRACE_STATUS_EL_CFG_STRUCT;
/* the line trace status element structure */
typedef struct {
unsigned char opp_flag; /* opp flag */
unsigned short trace_length; /* trace length */
unsigned char trace_type; /* trace type */
unsigned short trace_time_stamp; /* time stamp */
unsigned short trace_reserved_1; /* reserved for later use */
unsigned long trace_reserved_2; /* reserved for later use */
unsigned long ptr_data_bfr; /* pointer to the trace data buffer */
} TRACE_STATUS_ELEMENT_STRUCT;
/* the line trace statistics structure */
typedef struct {
unsigned long frames_traced_count; /* number of frames traced */
unsigned long trc_frms_not_recorded_count; /* number of trace frames discarded */
unsigned short trc_disabled_internally_count;/* number of times the trace was disabled internally */
} LINE_TRACE_STATS_STRUCT;
/* ----------------------------------------------------------------------------
* Constants for the L2_SET_CONFIGURATION/L2_READ_CONFIGURATION command
* --------------------------------------------------------------------------*/
/* the SS7 L2 configuration structure */
typedef struct {
unsigned long baud_rate; /* the baud rate */
unsigned short line_config_options; /* line configuration options */
unsigned short modem_config_options; /* modem configuration options */
unsigned short modem_status_timer; /* timer for monitoring modem status changes */
unsigned short L2_API_options; /* L2 API options */
unsigned short L2_protocol_options; /* L2 protocol options */
unsigned short L2_protocol_specification; /* L2 protocol specification */
unsigned short L2_stats_history_options; /* L2 operational statistics options */
unsigned short max_length_MSU_SIF; /* maximum length of the MSU Signal Information Field */
unsigned short max_unacked_Tx_MSUs; /* maximum number of unacknowledged outgoing MSUs */
unsigned short link_inactivity_timer; /* link inactivity timer */
unsigned short T1_timer; /* T1 'aligned/ready' timer */
unsigned short T2_timer; /* T2 'not aligned' timer */
unsigned short T3_timer; /* T3 'aligned' timer */
unsigned short T4_timer_emergency; /* T4 'emergency proving period' timer */
unsigned short T4_timer_normal; /* T4 'normal proving period' timer */
unsigned short T5_timer; /* T5 'sending SIB' timer */
unsigned short T6_timer; /* T6 'remote congestion' timer */
unsigned short T7_timer; /* T7 'excessive delay of acknowledgement' timer */
unsigned short T8_timer; /* T8 'errored interval' timer */
unsigned short N1; /* maximum sequence number values for retransmission (PCR) */
unsigned short N2; /* maximum MSU octets for retransmission (PCR) */
unsigned short Tin; /* normal alignment error rate monitor threshold */
unsigned short Tie; /* emergency alignment error rate monitor threshold */
unsigned short SUERM_error_threshold; /* SUERM error rate threshold */
unsigned short SUERM_number_octets; /* SUERM octet counter */
unsigned short SUERM_number_SUs; /* SUERM number SUs/SU error */
unsigned short SIE_interval_timer; /* timer interval between LSSUs (SIE) */
unsigned short SIO_interval_timer; /* timer interval between LSSUs (SIO) */
unsigned short SIOS_interval_timer; /* timer interval between LSSUs (SIOS) */
unsigned short FISU_interval_timer; /* timer interval between FISUs */
unsigned long ptr_shared_mem_info_struct; /* a pointer to the shared memory area information structure */
unsigned long ptr_L2_Tx_stat_el_cfg_struct; /* a pointer to the transmit status element configuration structure */
unsigned long ptr_L2_Rx_stat_el_cfg_struct; /* a pointer to the receive status element configuration structure */
} L2_CONFIGURATION_STRUCT;
/* settings for the 'line_config_options' */
#define INTERFACE_LEVEL_V35 0x0000 /* V.35 interface level */
#define INTERFACE_LEVEL_RS232 0x0001 /* RS-232 interface level */
/* settings for the 'modem_config_options' */
#define DONT_RAISE_DTR_RTS_ON_EN_COMMS 0x0001 /* don't automatically raise DTR and RTS when performing an */
/* ENABLE_SS7_COMMUNICATIONS command */
#define DONT_REPORT_CHG_IN_MODEM_STAT 0x0002 /* don't report changes in modem status to the application */
/* bit settings for the 'L2_protocol_options' */
#define LSSU_TWO_BYTE_SF 0x0001 /* LSSUs have a 2-byte Status Field */
#define MODULO_4096 0x0001 /* modulo 4096 */
#define AUTO_START_WHEN_OUT_OF_SERVICE 0x0010 /* automatically start link when out of service */
#define AUTO_RECOVERY_AFTR_REM_PROC_REC 0x0020 /* automatic local recovery after remote processor recovery */
#define LINK_INACTIVITY_TMR_SUERM 0x0040 /* include a link inactivity timer in the SUERM */
#define PREVENTIVE_CYCLIC_RETRANS 0x1000 /* use preventive cyclic retransmission */
/* bit settings for the 'L2_protocol_specification' */
#define L2_PROTOCOL_ANSI 0x0001 /* L2 protocol is ANSI T1.111.3 */
#define L2_PROTOCOL_ITU 0x0002 /* L2 protocol is ITU-T Q.703 */
#define L2_PROTOCOL_NTT 0x0004 /* L2 protocol is NTT (Japan) */
/* settings for the 'L2_stats_history_options' */
#define L2_TX_SIF_BYTE_COUNT_STAT 0x0001 /* record the number of MSU SIF bytes transmitted */
#define L2_RX_SIF_BYTE_COUNT_STAT 0x0002 /* record the number of MSU SIF bytes received */
#define L2_TX_THROUGHPUT_STAT 0x0004 /* compute the MSU transmit throughput */
#define L2_RX_THROUGHPUT_STAT 0x0008 /* compute the MSU frame receive throughput */
#define L2_HIST_ALL 0x0100 /* include all state transactions in the history table */
#define L2_HIST_MANUAL_FLUSH 0x0200 /* manually flush the L2 history table */
/* permitted minimum and maximum values for setting the SS7 configuration - note that all timer values are in units */
/* of 1/100th of a second */
#define MAX_BAUD_RATE 64000 /* maximum baud rate */
#define MIN_PERMITTED_MODEM_TIMER 0 /* minimum modem status timer */
#define MAX_PERMITTED_MODEM_TIMER 5000 /* maximum modem status timer */
#define MAX_LENGTH_MSU_SIF 272 /* maximum length of the MSU Signal Information Field */
#define MAX_UNACKED_TX_MSUs 126 /* maximum number of unacknowledged outgoing MSUs */
#define MIN_INACTIVITY_TIMER 1 /* minimum link inactivity timer value */
#define MAX_INACTIVITY_TIMER 60000 /* maximum link inactivity timer value */
#define MIN_T1_TIMER 1 /* minimum T1 timer value */
#define MAX_T1_TIMER 60000 /* maximum T1 timer value */
#define MIN_T2_TIMER 1 /* minimum T2 timer value */
#define MAX_T2_TIMER 60000 /* maximum T2 timer value */
#define MIN_T3_TIMER 1 /* minimum T3 timer value */
#define MAX_T3_TIMER 60000 /* maximum T3 timer value */
#define MIN_T4_TIMER 1 /* minimum T4 timer value */
#define MAX_T4_TIMER 60000 /* maximum T4 timer value */
#define MIN_T5_TIMER 1 /* minimum T5 timer value */
#define MAX_T5_TIMER 60000 /* maximum T5 timer value */
#define MIN_T6_TIMER 1 /* minimum T6 timer value */
#define MAX_T6_TIMER 60000 /* maximum T6 timer value */
#define MIN_T7_TIMER 1 /* minimum T7 timer value */
#define MAX_T7_TIMER 60000 /* maximum T7 timer value */
#define MIN_T8_TIMER 1 /* minimum T8 timer value */
#define MAX_T8_TIMER 60000 /* maximum T8 timer value */
#define MIN_N1 1 /* minimum N1 */
#define MAX_N1 4095 /* maximum N1 */
#define MIN_N2 1 /* minimum N2 */
#define MAX_N2 64000 /* maximum N2 */
#define MIN_Tin 1 /* minimum normal alignment error rate monitor threshold */
#define MAX_Tin 1000 /* maximum normal alignment error rate monitor threshold */
#define MIN_Tie 1 /* minimum emergency alignment error rate monitor threshold */
#define MAX_Tie 1000 /* maximum emergency alignment error rate monitor threshold */
#define MIN_SUERM_ERROR_THRESHOLD 1 /* minimum SUERM error rate threshold */
#define MAX_SUERM_ERROR_THRESHOLD 1024 /* maximum SUERM error rate threshold */
#define MIN_SUERM_NUMBER_OCTETS 1 /* minimum SUERM octet counter */
#define MAX_SUERM_NUMBER_OCTETS 1024 /* maximum SUERM octet counter */
#define MIN_SUERM_NUMBER_SUs 1 /* minimum SUERM number SUs/SU error */
#define MAX_SUERM_NUMBER_SUs 1024 /* maximum SUERM number SUs/SU error */
#define MIN_SIE_INTERVAL_TIMER 1 /* minimum timer interval between LSSUs (SIE) */
#define MAX_SIE_INTERVAL_TIMER 60000 /* maximum timer interval between LSSUs (SIE) */
#define MIN_SIO_INTERVAL_TIMER 1 /* minimum timer interval between LSSUs (SIO) */
#define MAX_SIO_INTERVAL_TIMER 60000 /* maximum timer interval between LSSUs (SIO) */
#define MIN_SIOS_INTERVAL_TIMER 1 /* minimum timer interval between LSSUs (SIOS) */
#define MAX_SIOS_INTERVAL_TIMER 60000 /* maximum timer interval between LSSUs (SIOS) */
#define MIN_FISU_INTERVAL_TIMER 1 /* minimum timer interval between FISUs */
#define MAX_FISU_INTERVAL_TIMER 60000 /* maximum timer interval between FISUs */
/* ----------------------------------------------------------------------------
* Constants for the L2_READ_LINK_STATUS command
* --------------------------------------------------------------------------*/
/* the SS7 status structure */
typedef struct {
unsigned short L2_link_status; /* L2 link status */
unsigned short no_Tx_MSU_bfrs_occupied; /* number of Tx MSU buffers occupied */
unsigned short no_Rx_MSUs_avail_for_L3; /* number of MSUs available for the application */
unsigned char receiver_status; /* receiver status (enabled/disabled) */
} L2_LINK_STATUS_STRUCT;
/* settings for 'L2_link_status' variable */
#define L2_LINK_STAT_POWER_OFF 0x0001 /* power off */
#define L2_LINK_STAT_OUT_OF_SERVICE 0x0002 /* out of service */
#define L2_LINK_STAT_INIT_ALIGN 0x0004 /* initial alignment */
#define L2_LINK_STAT_ALIGNED_READY 0x0008 /* aligned ready */
#define L2_LINK_STAT_ALIGNED_NOT_READY 0x0010 /* aligned/not ready */
#define L2_LINK_STAT_IN_SERVICE 0x0020 /* in service */
#define L2_LINK_STAT_PROCESSOR_OUTAGE 0x0040 /* processor outage */
/* ----------------------------------------------------------------------------
* Constants for the L2_READ_OPERATIONAL_STATS command
* --------------------------------------------------------------------------*/
/* the L2 operational statistics structure */
typedef struct {
/* MSU transmission statistics */
unsigned long MSU_Tx_ack_count; /* number of MSUs transmitted and acknowledged */
unsigned long SIF_bytes_Tx_ack_count; /* number of SIF bytes transmitted and acknowledged */
unsigned long MSU_re_Tx_count; /* number of MSUs re-transmitted */
unsigned long SIF_bytes_re_Tx_count; /* number of SIF bytes re-transmitted */
unsigned long MSU_Tx_throughput; /* transmit throughput */
unsigned long no_hs_for_MSU_Tx_thruput_comp; /* 1/100th second time used for the Tx throughput computation */
unsigned short Tx_MSU_disc_lgth_err_count; /* number of outgoing MSUs discarded (length error) */
unsigned long reserved_MSU_Tx_stat1; /* reserved for later use */
unsigned long reserved_MSU_Tx_stat2; /* reserved for later use */
unsigned long reserved_MSU_Tx_stat3; /* reserved for later use */
/* MSU reception statistics */
unsigned long MSU_Rx_count; /* number of MSUs received */
unsigned long SIF_bytes_Rx_count; /* number of SIF bytes received */
unsigned long MSU_Rx_throughput; /* receive throughput */
unsigned long no_hs_for_MSU_Rx_thruput_comp; /* 1/100th second time used for the Rx throughput computation */
unsigned short Rx_MSU_disc_short_count; /* received MSUs discarded (too short) */
unsigned short Rx_MSU_disc_long_count; /* received MSUs discarded (too long) */
unsigned short Rx_MSU_disc_bad_LI_count; /* received MSUs discarded (bad LI) */
unsigned long Rx_MSU_disc_cong_count; /* received MSUs discarded (congestion) */
unsigned long reserved_MSU_Rx_stat1; /* reserved for later use */
unsigned long reserved_MSU_Rx_stat2; /* reserved for later use */
unsigned long reserved_MSU_Rx_stat3; /* reserved for later use */
/* General SU transmission/reception statistics */
unsigned long SU_Tx_count; /* number of SUs transmitted */
unsigned long SU_Rx_count; /* number of SUs received */
unsigned long LSSU_Tx_count; /* number of LSSUs transmitted */
unsigned long LSSU_Rx_count; /* number of LSSUs received */
unsigned long FISU_Tx_count; /* number of FISUs transmitted */
unsigned long FISU_Rx_count; /* number of FISUs received */
unsigned long reserved_SU_stat1; /* reserved for later use */
unsigned long reserved_SU_stat2; /* reserved for later use */
/* Incoming SUs with a format error statistics */
unsigned short Rx_SU_disc_short_count; /* SUs discarded - too short */
unsigned short Rx_SU_disc_long_count; /* SUs discarded - too long */
unsigned short Rx_LSSU_disc_short_count; /* LSSUs discarded - too short */
unsigned short Rx_LSSU_disc_long_count; /* LSSUs discarded - too long */
unsigned short Rx_LSSU_disc_invalid_SF_count; /* LSSUs discarded - invalid Status Field */
unsigned short Rx_FISU_disc_short_count; /* FISUs discarded - too short */
unsigned short Rx_FISU_disc_long_count; /* FISUs discarded - too long */
unsigned long reserved_SU_format_err1; /* reserved for later use */
unsigned long reserved_SU_format_err2; /* reserved for later use */
unsigned long reserved_SU_format_err3; /* reserved for later use */
unsigned long reserved_SU_format_err4; /* reserved for later use */
/* Incoming frames discarded statistics */
unsigned long Rx_SU_disc_RC_idle_count; /* SUs discarded - Reception Control in 'idle' state */
unsigned long Rx_SU_disc_MSU_FISU_NA_count; /* SUs discarded - MSU/FISU not accepted */
/* SS7 timeout/retry statistics */
unsigned long To_retry_reserved_stat1; /* reserved for later use */
unsigned long To_retry_reserved_stat2; /* reserved for later use */
unsigned long To_retry_reserved_stat3; /* reserved for later use */
/* link state statistics */
unsigned short link_in_service_count; /* number of times that the link went 'in service' */
unsigned short link_start_fail_T1_exp_count; /* link 'start' failure (T1 expired) count */
unsigned short align_fail_T2_exp_count; /* link alignment failure (T2 expired) count */
unsigned short align_fail_T3_exp_count; /* link alignment failure (T3 expired) count */
unsigned short link_fail_abnrm_BSNR_Rx_count; /* link failure (abnormal BSNR received) count */
unsigned short link_fail_abnrm_FIBR_Rx_count; /* link failure (abnormal FIBR received) count */
unsigned short link_fail_T6_exp_count; /* link failure (T6 expired) count */
unsigned short link_fail_T7_exp_count; /* link failure (T6 expired) count */
unsigned short link_fail_SUERM_count; /* link failure (SUERM) count */
unsigned short link_fail_EIM_count; /* link failure (EIM) count */
unsigned short link_fail_inactivity_count; /* link failure (inactivity timeout) count */
unsigned short link_out_of_serv_SIO_Rx_count; /* link 'out of service' due to reception of SIO */
unsigned short link_out_of_serv_SIN_Rx_count; /* link 'out of service' due to reception of SIN */
unsigned short link_out_of_serv_SIE_Rx_count; /* link 'out of service' due to reception of SIE */
unsigned short link_out_of_serv_SIOS_Rx_count; /* link 'out of service' due to reception of SIOS */
unsigned long link_status_reserved_stat1; /* reserved for later use */
unsigned long link_status_reserved_stat2; /* reserved for later use */
/* processor outage statistics */
unsigned short loc_proc_out_count; /* local processor outage count */
unsigned short rem_proc_out_count; /* rem processor outage count */
/* miscellaneous statistics */
unsigned long NACK_Tx_count; /* number of negative acknowledgements transmitted */
unsigned long NACK_Rx_count; /* number of negative acknowledgements received */
unsigned long abnrm_BSNR_Rx_count; /* 'abnormal BSNR received' count */
unsigned long abnrm_FIBR_Rx_count; /* 'abnormal FIBR received' count */
unsigned long abnrm_FSNR_Rx_count; /* 'abnormal FSNR received' count */
unsigned long reserved_misc_stat1; /* reserved for later use */
unsigned long reserved_misc_stat2; /* reserved for later use */
unsigned long reserved_misc_stat3; /* reserved for later use */
unsigned long reserved_misc_stat4; /* reserved for later use */
/* DAEDR statistics */
unsigned long DAEDR_OCM_7_consec_1s; /* DAEDR - number of octet counting mode conditions (7 consecutive 1s) */
unsigned long DAEDR_OCM_Nmax; /* DAEDR - number of octet counting mode conditions (Nmax + 1) */
/* congestion statistics */
unsigned long start_outbound_cong_count; /* start of outbound congestion */
unsigned long start_inbound_cong_disc_count; /* start of inbound 'congestion discard' */
unsigned long start_inbound_cong_acc_count; /* start of inbound 'congestion accept' */
unsigned long start_auto_inbound_cong_count; /* start of inbound congestion (instigated internally) */
} L2_OPERATIONAL_STATS_STRUCT;
/* ----------------------------------------------------------------------------
* Constants for the L2_READ_HISTORY_TABLE command
* --------------------------------------------------------------------------*/
/* the L2 operational statistics structure */
typedef struct {
unsigned char function;
unsigned short action;
unsigned short status_before_action;
unsigned char LSSU_SF;
unsigned short time;
} L2_HISTORY_STRUCT;
/* L2 history 'function' definitions */
#define L2_HISTORY_LSC 0x00 /* Link State Control */
#define L2_HISTORY_IAC 0x01 /* Initial Alignment Control */
#define L2_HISTORY_POC 0x02 /* Processor Outage Control */
#define L2_HISTORY_DAEDR 0x03 /* Delimination, Alignment and Error Detection (Receiving) */
#define L2_HISTORY_DAEDT 0x04 /* Delimination, Alignment and Error Detection (Transmitting) */
#define L2_HISTORY_TXC 0x05 /* Transmission Control */
#define L2_HISTORY_RXC 0x06 /* Reception Control */
#define L2_HISTORY_AERM 0x07 /* Alignment Error Rate Monitor */
#define L2_HISTORY_SUERM 0x08 /* Signal Unit Error Rate Monitor */
#define L2_HISTORY_CC 0x09 /* Congestion Control */
#define L2_HISTORY_EIM 0x0A /* Errored Interval Monitor */
/* L2 history 'action' definitions (Link State Control) */
#define LSC_ACT_POWER_ON_RETRIEVE_BSNT 0x0001 /* power on / retrieve BSNT */
#define LSC_ACT_START_RTB_CLEARED 0x0002 /* start / RTB cleared */
#define LSC_ACT_EMERGENCY_CONTINUE 0x0004 /* emergency / continue (ITU) */
#define LSC_ACT_EMERG_CEASES 0x0008 /* emergency ceases */
#define LSC_ACT_LOC_PROC_OUT 0x0010 /* local processor outage */
#define LSC_ACT_RESUME 0x0020 /* resume */
#define LSC_ACT_CLEAR_BFRS 0x0040 /* clear buffers */
#define LSC_ACT_ALIGN_CPLT_RET_REQ_FSNC 0x0080 /* alignment complete / retrieval request and FSNC */
#define LSC_ACT_STOP 0x0100 /* stop */
#define LSC_ACT_LINK_FAIL 0x0200 /* link failure */
#define LSC_ACT_ALIGN_NOT_POSS_CLR_RTB 0x0400 /* aligment not possible / clear RTB */
#define LSC_ACT_FISU_MSU_RX 0x0800 /* FISU/MSU received */
#define LSC_ACT_SIPO 0x1000 /* SIPO */
#define LSC_ACT_SIO_SIOS 0x2000 /* SIO, SIOS */
#define LSC_ACT_T1_EXPIRED_NO_PROC_OUT 0x4000 /* timer T1 expired / no processor outage (ITU) */
#define LSC_ACT_SIO_SIN_SIE_SIOS 0x8000 /* SIO, SIN, SIE, SIOS */
/* L2 history 'status_before_action' definitions (Link State Control) */
#define LSC_STAT_POWER_OFF 0x0001 /* power off */
#define LSC_STAT_OUT_OF_SERVICE 0x0002 /* out of service */
#define LSC_STAT_INIT_ALIGN 0x0004 /* initial alignment */
#define LSC_STAT_ALIGNED_READY 0x0008 /* aligned ready */
#define LSC_STAT_ALIGNED_NOT_READY 0x0010 /* aligned/not ready */
#define LSC_STAT_IN_SERVICE 0x0020 /* in service */
#define LSC_STAT_PROCESSOR_OUTAGE 0x0040 /* processor outage */
#define LSC_STAT_EMERGENCY 0x0080 /* emergency */
#define LSC_STAT_LOC_PROC_OUT 0x0100 /* local processor outage */
#define LSC_STAT_REM_PROC_OUT 0x0200 /* remote processor outage (ANSI) */
#define LSC_STAT_PROC_OUT 0x0400 /* processor outage (ITU) */
#define LSC_STAT_T1_RUNNING 0x0800 /* timer T1 running */
#define LSC_STAT_LVL_3_IND_RX 0x1000 /* Level 3 indication received */
/* L2 history 'action' definitions (Initial Alignment Control) */
#define IAC_ACT_EMERGENCY 0x0001 /* emergency */
#define IAC_ACT_START 0x0002 /* start */
#define IAC_ACT_SIO_SIN 0x0004 /* SIO, SIN */
#define IAC_ACT_SIE 0x0008 /* SIE */
#define IAC_ACT_STOP 0x0010 /* stop */
#define IAC_ACT_T2_EXPIRED 0x0020 /* timer T2 expired */
#define IAC_ACT_SIN 0x0040 /* SIN */
#define IAC_ACT_T3_EXPIRED 0x0080 /* timer T3 expired */
#define IAC_ACT_SIOS 0x0100 /* SIOS */
#define IAC_ACT_CORRECT_SU 0x0200 /* correct SU */
#define IAC_ACT_T4_EXPIRED 0x0400 /* timer T4 expired */
#define IAC_ACT_ABRT_PRV 0x0800 /* abort proving */
#define IAC_ACT_SIO 0x1000 /* SIO */
/* L2 history 'status_before_action' definitions (Initial Alignment Control) */
#define IAC_STAT_IDLE 0x0001 /* idle */
#define IAC_STAT_NOT_ALIGNED 0x0002 /* not aligned */
#define IAC_STAT_ALIGNED 0x0004 /* aligned */
#define IAC_STAT_PROVING 0x0008 /* proving */
#define IAC_STAT_FURTHER_PRV 0x0010 /* further proving */
#define IAC_STAT_EMERGENCY 0x0020 /* emergency */
#define IAC_STAT_T2_RUNNING 0x0040 /* timer T2 running */
#define IAC_STAT_T3_RUNNING 0x0080 /* timer T3 running */
#define IAC_STAT_T4_RUNNING 0x0100 /* timer T4 running */
/* L2 history 'action' definitions (Processor Outage Control) */
#define POC_ACT_LOC_PROC_OUT 0x0001 /* local processor outage */
#define POC_ACT_REM_PROC_OUT 0x0002 /* remote processor outage */
#define POC_ACT_STOP 0x0004 /* stop */
#define POC_ACT_LOC_PROC_RECOVERED 0x0008 /* local processor recovered */
#define POC_ACT_REM_PROC_RECOVERED 0x0010 /* remote processor recovered */
/* L2 history 'status_before_action' definitions (Processor Outage Control) */
#define POC_STAT_IDLE 0x0001 /* idle */
#define POC_STAT_LOC_PROC_OUT 0x0002 /* local processor outage */
#define POC_STAT_REM_PROC_OUT 0x0004 /* remote processor outage */
#define POC_STAT_BOTH_PROC_OUT 0x0008 /* both processors out */
/* L2 history 'action' definitions (Delimination, Alignment and Error Detection - Receiving) */
#define DAEDR_ACT_START 0x0001 /* start */
#define DAEDR_ACT_7_CONSEC_ONES 0x0002 /* 7 consecutive one's */
#define DAEDR_ACT_Nmax_PLS_1_OCT_NO_FLG 0x0004 /* Nmax + 1 octets without flags */
#define DAEDR_ACT_16_OCTETS 0x0008 /* 16 octets */
#define DAEDR_ACT_BITS_RX 0x0010 /* bits received */
/* L2 history 'status_before_action' definitions (Delimination, Alignment and Error Detection - Receiving) */
#define DAEDR_STAT_IDLE 0x0001 /* idle */
#define DAEDR_STAT_IN_SERVICE 0x0002 /* in service */
#define DAEDR_STAT_OCTET_COUNT_MODE 0x0004 /* octet counting mode */
/* L2 history 'action' definitions (Delimination, Alignment and Error Detection - Transmitting) */
#define DAEDT_ACT_START 0x0001 /* start */
#define DAEDT_ACT_SIGNAL_UNIT 0x0002 /* signal unit */
/* L2 history 'status_before_action' definitions (Delimination, Alignment and Error Detection - Transmitting) */
#define DAEDT_STAT_IDLE 0x0001 /* idle */
#define DAEDT_STAT_IN_SERVICE 0x0002 /* in service */
/* L2 history 'action' definitions (Transmission Control) */
#define TXC_ACT_START 0x0001 /* start */
#define TXC_ACT_T6_EXPIRED 0x0002 /* timer T6 expired */
#define TXC_ACT_T7_EXPIRED 0x0004 /* timer T7 expired */
#define TXC_ACT_TX_REQ 0x0008 /* transmission request */
#define TXC_ACT_CLEAR_TB 0x0010 /* clear TB */
#define TXC_ACT_CLEAR_RTB 0x0020 /* clear RTB */
#define TXC_ACT_SEND_FISU 0x0040 /* send FISU */
#define TXC_ACT_SEND_MSU 0x0080 /* send MSU */
#define TXC_ACT_MSG_FOR_TX 0x0100 /* message for transmission */
#define TXC_ACT_RET_REQ_AND_FSNC 0x0200 /* retrieval request and FSNC */
#define TXC_ACT_SEND_LSSU 0x0400 /* send LSSU (includes 'send SIB', 'send SIOS,SIPO' and */
/* 'send SIO, SIN, SIE') */
#define TXC_ACT_FSNX_VALUE 0x0800 /* FSNX value */
#define TXC_ACT_NACK_TO_BE_TX 0x1000 /* NACK to be sent */
#define TXC_ACT_BSNR_AND_BIBR 0x2000 /* BSNR and BIBR */
#define TXC_ACT_SIB_RX 0x4000 /* SIB received */
#define TXC_ACT_FLUSH_BFRS 0x8000 /* flush buffers (ITU) */
/* L2 history 'status_before_action' definitions (Transmission Control) */
#define TXC_STAT_IDLE 0x0001 /* idle */
#define TXC_STAT_IN_SERVICE 0x0002 /* in service */
#define TXC_STAT_RTB_FULL 0x0004 /* RTB full */
#define TXC_STAT_LSSU_AVAIL 0x0008 /* LSSU available */
#define TXC_STAT_MSU_INHIB 0x0010 /* MSU inhibited */
#define TXC_STAT_CLEAR_RTB 0x0020 /* clear RTB */
#define TXC_STAT_SIB_RX 0x0040 /* SIB received */
#define TXC_STAT_PCR_FORCED_RE_TX 0x0080 /* forced retransmission (PCR) */
#define TXC_STAT_T6_RUNNING 0x0100 /* timer T6 running */
#define TXC_STAT_T7_RUNNING 0x0200 /* timer T7 running */
/* L2 history 'action' definitions (Reception Control) */
#define RXC_ACT_START 0x0001 /* start */
#define RXC_ACT_RETRIEVE_BSNT 0x0002 /* retrieve BSNT */
#define RXC_ACT_FSNT_VALUE 0x0004 /* FSNT value */
#define RXC_ACT_SIGNAL_UNIT 0x0008 /* signal unit */
#define RXC_ACT_REJ_MSU_FISU 0x0010 /* reject MSU/FISU */
#define RXC_ACT_ACCEPT_MSU_FISU 0x0020 /* accept MSU/FISU */
#define RXC_ACT_ALIGN_FSNX 0x0040 /* align FSNX / retrieve FSNX (ITU) */
#define RXC_ACT_CLEAR_RB 0x0080 /* clear RB */
#define RXC_ACT_STOP 0x0100 /* stop */
#define RXC_ACT_CONGESTION_DISC 0x0200 /* congestion discard */
#define RXC_ACT_CONGESTION_ACC 0x0400 /* congestion accept */
#define RXC_ACT_NO_CONGESTION 0x0800 /* no congestion */
#define RXC_ACT_SIGNAL_UNIT_LSSU 0x1000 /* signal unit (LSSU) */
/* L2 history 'status_before_action' definitions (Reception Control) */
#define RXC_STAT_IDLE 0x0001 /* idle */
#define RXC_STAT_IN_SERVICE 0x0002 /* in service */
#define RXC_STAT_MSU_FISU_ACCEPTED 0x0004 /* MSU/FISU accepted */
#define RXC_STAT_ABNORMAL_BSNR 0x0008 /* abnormal BSNR */
#define RXC_STAT_ABNORMAL_FIBR 0x0010 /* abnormal FIBR */
#define RXC_STAT_CONGESTION_DISC 0x0020 /* congestion discard */
#define RXC_STAT_CONGESTION_ACC 0x0040 /* congestion accept */
/* L2 history 'action' definitions (Alignment Error Rate Monitor) */
#define AERM_ACT_SET_Ti_TO_Tin 0x0001 /* set Ti to Tin */
#define AERM_ACT_START 0x0002 /* start */
#define AERM_ACT_SET_Ti_TO_Tie 0x0004 /* set Ti to Tie */
#define AERM_ACT_STOP 0x0008 /* stop */
#define AERM_ACT_SU_IN_ERROR 0x0010 /* SU in error */
/* L2 history 'status_before_action' definitions (Alignment Error Rate Monitor) */
#define AERM_STAT_IDLE 0x0001 /* idle */
#define AERM_STAT_MONITORING 0x0002 /* monitoring */
/* L2 history 'action' definitions (Signal Unit Error Rate Monitor) */
#define SUERM_ACT_START 0x0001 /* start */
#define SUERM_ACT_STOP 0x0002 /* stop */
#define SUERM_ACT_SU_IN_ERROR 0x0004 /* SU in error */
#define SUERM_ACT_CORRECT_SU 0x0008 /* correct SU */
/* L2 history 'status_before_action' definitions (Signal Unit Error Rate Monitor) */
#define SUERM_STAT_IDLE 0x0001 /* idle */
#define SUERM_STAT_IN_SERVICE 0x0002 /* in service */
/* L2 history 'action' definitions (Congestion Control) */
#define CC_ACT_BUSY 0x0001 /* busy */
#define CC_ACT_NORMAL 0x0002 /* normal */
#define CC_ACT_STOP 0x0004 /* stop */
#define CC_ACT_T5_EXPIRED 0x0008 /* timer T5 expired */
/* L2 history 'status_before_action' definitions (Congestion Control) */
#define CC_STAT_IDLE 0x0001 /* idle */
#define CC_STAT_LVL_2 0x0002 /* level 2 congestion */
#define CC_STAT_T5_RUNNING 0x0004 /* timer T5 running */
/* L2 history 'action' definitions (Errored Interval Monitor) */
#define EIM_ACT_START 0x0001 /* start */
#define EIM_ACT_STOP 0x0002 /* stop */
#define EIM_ACT_T8_EXPIRED 0x0004 /* timer T8 expired */
#define EIM_ACT_CORRECT_SU 0x0008 /* correct SU */
#define EIM_ACT_SU_IN_ERROR 0x0010 /* SU in error */
/* L2 history 'status_before_action' definitions (Errored Interval Monitor) */
#define EIM_STAT_IDLE 0x0001 /* idle */
#define EIM_STAT_MONITORING 0x0002 /* monitoring */
#define EIM_STAT_INTERVAL_ERROR 0x0004 /* interval error */
#define EIM_STAT_SU_RECEIVED 0x0008 /* SU received */
#define EIM_STAT_T8_RUNNING 0x0010 /* timer T8 running */
/* L2 history 'LSSU_SF' definitions (LSSU Status Field) */
#define LSSU_SIO 0x00 /* status indication "O" (out of alignment) */
#define LSSU_SIN 0x01 /* status indication "N" (normal alignment) */
#define LSSU_SIE 0x02 /* status indication "E" (emergency alignment) */
#define LSSU_SIOS 0x03 /* status indication "OS" (out of service) */
#define LSSU_SIPO 0x04 /* status indication "PO" (processor outage) */
#define LSSU_SIB 0x05 /* status indication "B" (busy) */
#define NO_LSSU 0xFF /* no LSSU transmitted or received */
/* ----------------------------------------------------------------------------
* Constants for the L2_RETRIEVE_BSNT command
* --------------------------------------------------------------------------*/
/* the structure used for retrieving the BSNT value */
typedef struct {
unsigned short BSNT; /* the retrieved BSNT value */
} L2_RETRIEVE_BSNT_STRUCT;
/* ----------------------------------------------------------------------------
* Constants for the L2_RETRIEVAL_REQ_AND_FSNC command
* --------------------------------------------------------------------------*/
/* the structure used for handling the L2_RETRIEVAL_REQ_AND_FSNC command and the L2_EXCEP_RETRIEVAL_COMPLETE */
/* exception condition */
typedef struct {
unsigned short FSNC; /* the FSNC value to be used in buffer retrieval */
unsigned short number_MSUs; /* number of MSU buffers to be retrieved */
unsigned long ptr_first_MSU_bfr; /* pointer to the first MSU buffer to be retrieved */
} L2_RETRIEVAL_STRUCT;
/* ----------------------------------------------------------------------------
* Constants for the L2_SET_TX_CONG_CFG command
* --------------------------------------------------------------------------*/
typedef struct {
unsigned short Tx_cong_config; /* transmission congestion configuration */
unsigned short Tx_cong_onset_1; /* transmit congestion onset threshold #1 */
unsigned short Tx_cong_abatement_1; /* transmit congestion abatement threshold #1 */
unsigned short Tx_cong_discard_1; /* transmit congestion discard threshold #1 */
unsigned short Tx_cong_onset_2; /* transmit congestion onset threshold #2 */
unsigned short Tx_cong_abatement_2; /* transmit congestion abatement threshold #2 */
unsigned short Tx_cong_discard_2; /* transmit congestion discard threshold #2 */
unsigned short Tx_cong_onset_3; /* transmit congestion onset threshold #3 */
unsigned short Tx_cong_abatement_3; /* transmit congestion abatement threshold #3 */
unsigned short Tx_cong_discard_3; /* transmit congestion discard threshold #3 */
} L2_SET_TX_CONG_CFG_STRUCT;
/* 'Tx_cong_config' settings */
#define NO_TX_NEW_MSUs_SIB_RX 0x0001 /* no new MSUs are transmitted on SIB reception */
#define L2_EXCEP_TX_CONG_THRESHOLDS 0x0010 /* cause an L2 exception condition on congestion thresholds */
#define L2_EXCEP_TX_CONG_SIB_RX 0x0020 /* cause an L2 exception condition on reception of a SIB LSSU */
/* ----------------------------------------------------------------------------
* Constants for the L2_READ_TX_CONG_STATUS command
* --------------------------------------------------------------------------*/
typedef struct {
unsigned short no_MSU_Tx_bfrs_configured; /* the number of MSU transmit buffers configured */
unsigned short no_MSU_Tx_bfrs_occupied; /* the number of MSU transmit buffers occupied */
unsigned char Tx_cong_status; /* transmission congestion status */
unsigned char Tx_discard_status; /* transmission discard status */
unsigned char SIB_Rx_status; /* LSSU SIB reception status */
} L2_READ_TX_CONG_STATUS_STRUCT;
/* ----------------------------------------------------------------------------
* Constants for the L2_SET_RX_CONG_CFG command
* --------------------------------------------------------------------------*/
typedef struct {
unsigned short Rx_cong_config; /* reception congestion configuration */
unsigned short Rx_cong_bfr_count; /* the number of MSU receive buffers occupied to trigger congestion */
} L2_SET_RX_CONG_CFG_STRUCT;
/* 'Rx_cong_config' bit settings */
#define L2_RX_CONGESTION_ACCEPT 0x0001 /* congestion accept */
#define L2_RX_CONGESTION_DISCARD 0x0002 /* congestion discard */
#define L2_AUTO_RX_FLOW_CTRL 0x0010 /* automatic receive flow control */
/* ----------------------------------------------------------------------------
* Constants for the L2_READ_RX_CONG_STATUS command
* --------------------------------------------------------------------------*/
typedef struct {
unsigned short no_MSU_Rx_bfrs_configured; /* the number of MSU receive buffers configured */
unsigned short no_MSU_Rx_bfrs_occupied; /* the number of MSU receive buffers occupied */
unsigned char Rx_cong_status; /* reception congestion status */
} L2_READ_RX_CONG_STATUS_STRUCT;
/* ----------------------------------------------------------------------------
* Constants for using application interrupts
* --------------------------------------------------------------------------*/
/* the structure used for the L2_SET_INTERRUPT_TRIGGERS/L2_READ_INTERRUPT_TRIGGERS command */
typedef struct {
unsigned char L2_interrupt_triggers; /* SS7 L2 interrupt trigger configuration */
unsigned char IRQ; /* IRQ to be used */
unsigned short interrupt_timer; /* interrupt timer */
unsigned short misc_interrupt_bits; /* miscellaneous interrupt bits */
} L2_INT_TRIGGERS_STRUCT;
/* 'L2_interrupt_triggers' bit settings */
#define APP_INT_ON_RX_FRAME 0x01 /* interrupt on MSU reception */
#define APP_INT_ON_TX_FRAME 0x02 /* interrupt when an MSU may be transmitted */
#define APP_INT_ON_COMMAND_COMPLETE 0x04 /* interrupt when an interface command is complete */
#define APP_INT_ON_TIMER 0x08 /* interrupt on a defined millisecond timeout */
#define APP_INT_ON_GLOBAL_EXCEP_COND 0x10 /* interrupt on a global exception condition */
#define APP_INT_ON_L2_EXCEP_COND 0x20 /* interrupt on an SS7 L2 exception condition */
#define APP_INT_ON_TRACE_DATA_AVAIL 0x80 /* interrupt when trace data is available */
/* 'interrupt_timer' limitation */
#define MAX_INTERRUPT_TIMER_VALUE 60000 /* the maximum permitted timer interrupt value */
/* interrupt types indicated at 'interrupt_type' byte of the INTERRUPT_INFORMATION_STRUCT */
#define NO_APP_INTS_PEND 0x00 /* no interrups are pending */
#define RX_APP_INT_PEND 0x01 /* a receive interrupt is pending */
#define TX_APP_INT_PEND 0x02 /* a transmit interrupt is pending */
#define COMMAND_COMPLETE_APP_INT_PEND 0x04 /* a 'command complete' interrupt is pending */
#define TIMER_APP_INT_PEND 0x08 /* a timer interrupt is pending */
#define GLOBAL_EXCEP_COND_APP_INT_PEND 0x10 /* a global exception condition interrupt is pending */
#define L2_EXCEP_COND_APP_INT_PEND 0x20 /* an SS7 L2 exception condition interrupt is pending */
#define TRACE_DATA_AVAIL_APP_INT_PEND 0x80 /* a trace data available interrupt is pending */
/* ----------------------------------------------------------------------------
* Constants for MSU transmission
* --------------------------------------------------------------------------*/
/* the MSU transmit status element configuration structure */
typedef struct {
unsigned short number_Tx_status_elements; /* number of transmit status elements */
unsigned long base_addr_Tx_status_elements; /* base address of the transmit element list */
unsigned long next_Tx_status_element_to_use; /* pointer to the next transmit element to be used */
} L2_TX_STATUS_EL_CFG_STRUCT;
/* the MSU transmit status element structure */
typedef struct {
unsigned char opp_flag; /* opp flag */
unsigned short frame_length; /* length of the frame to be transmitted */
unsigned char SIO; /* Service Information Octet */
unsigned char misc_Tx_bits; /* miscellaneous bits */
unsigned char reserved_1; /* reserved for internal use */
unsigned short reserved_2; /* reserved for internal use */
unsigned long reserved_3; /* reserved for internal use */
unsigned long ptr_data_bfr; /* pointer to the data area */
} L2_MSU_TX_STATUS_EL_STRUCT;
/* ----------------------------------------------------------------------------
* Constants for MSU reception
* --------------------------------------------------------------------------*/
/* the MSU receive status element configuration structure */
typedef struct {
unsigned short number_Rx_status_elements; /* number of receive status elements */
unsigned long base_addr_Rx_status_elements; /* base address of the receive element list */
unsigned long next_Rx_status_element_to_use; /* pointer to the next receive element to be used */
} L2_RX_STATUS_EL_CFG_STRUCT;
/* the MSU receive status element structure */
typedef struct {
unsigned char opp_flag; /* opp flag */
unsigned short frame_length; /* length of the received frame */
unsigned char SIO; /* Service Information Octet */
unsigned char misc_Rx_bits; /* miscellaneous bits */
unsigned short time_stamp; /* receive time stamp */
unsigned char reserved_1; /* reserved for internal use */
unsigned long reserved_2; /* reserved for internal use */
unsigned long ptr_data_bfr; /* pointer to the data area */
} L2_MSU_RX_STATUS_EL_STRUCT;
/* ----------------------------------------------------------------------------
* Constants defining the shared memory information area
* --------------------------------------------------------------------------*/
/* the global information structure */
typedef struct {
unsigned char global_status; /* global status */
unsigned char modem_status; /* current modem status */
unsigned char global_excep_conditions; /* global exception conditions */
unsigned char Rx_disabled_Rx_bfrs_full; /* receiver disabled */
unsigned char glob_info_reserved[4]; /* reserved */
unsigned char code_name[4]; /* code name */
unsigned char code_version[4]; /* code version */
} GLOBAL_INFORMATION_STRUCT;
/* the SS7 L2 information structure */
typedef struct {
unsigned char L2_in_service; /* SS7 L2 'in service' flag */
unsigned short L2_excep_conditions; /* SS7 L2 exception conditions */
unsigned short no_MSU_Tx_bfrs_occupied; /* the number of MSU transmit buffers occupied */
unsigned char Tx_cong_status; /* transmission congestion status */
unsigned char Tx_discard_status; /* transmission discard status */
unsigned char SIB_Rx_status; /* LSSU SIB reception status */
unsigned char L2_info_reserved[8]; /* reserved */
} L2_INFORMATION_STRUCT;
typedef struct {
unsigned char reserved[16]; /* reserved */
} RES_INFORMATION_STRUCT;
/* the interrupt information structure */
typedef struct {
unsigned char interrupt_type; /* type of interrupt triggered */
unsigned char interrupt_permission; /* interrupt permission mask */
unsigned char int_info_reserved[14]; /* reserved */
} INTERRUPT_INFORMATION_STRUCT;
/* the FT1 information structure */
typedef struct {
unsigned char parallel_port_A_input; /* input - parallel port A */
unsigned char parallel_port_B_input; /* input - parallel port B */
unsigned char FT1_INS_alarm_condition; /* the current FT1 in-service/alarm condition */
unsigned char FT1_info_reserved[13]; /* reserved */
} FT1_INFORMATION_STRUCT;
/* the shared memory area information structure */
typedef struct {
GLOBAL_INFORMATION_STRUCT global_info_struct;/* the global information structure */
L2_INFORMATION_STRUCT L2_info_struct; /* the SS7 L2 information structure */
RES_INFORMATION_STRUCT res0_info_struct; /* reserved information structure */
RES_INFORMATION_STRUCT res1_info_struct; /* reserved information structure */
INTERRUPT_INFORMATION_STRUCT interrupt_info_struct;/* the interrupt information structure */
FT1_INFORMATION_STRUCT FT1_info_struct; /* the FT1 information structure */
} SHARED_MEMORY_INFO_STRUCT;
/* ----------------------------------------------------------------------------
* Constants for SS7 L2 debugging
* --------------------------------------------------------------------------*/
/* the SS7 debug structure */
typedef struct {
unsigned short LSC_action;
unsigned short LSC_status;
unsigned short IAC_action;
unsigned short IAC_status;
unsigned short POC_action;
unsigned short POC_status;
unsigned short DAEDR_action;
unsigned short DAEDR_status;
unsigned short DAEDT_action;
unsigned short DAEDT_status;
unsigned short TXC_action;
unsigned short TXC_status;
unsigned char Tx_LSSU_SF;
unsigned short RXC_action;
unsigned short RXC_status;
unsigned short CC_action;
unsigned short CC_status;
unsigned short AERM_action;
unsigned short AERM_status;
unsigned short SUERM_action;
unsigned short SUERM_status;
unsigned short EIM_action;
unsigned short EIM_status;
unsigned short FSNL;
unsigned short FSNF;
unsigned short FSNT_TXC;
unsigned short FSNT_RXC;
unsigned short FSNX_TXC;
unsigned short FSNX_RXC;
unsigned short FSNR;
unsigned short BSNR;
unsigned short BSNT;
unsigned char FIBT;
unsigned char FIBR;
unsigned char FIBX;
unsigned char FIB;
unsigned char BIBT;
unsigned char BIBR;
unsigned char BIBX;
unsigned char BIB;
unsigned short Cm;
unsigned char UNF;
unsigned char UNB;
unsigned char RTR;
unsigned char Cp;
unsigned char Tx_frm_status;
} L2_DEBUG_STRUCT;
#pragma pack()
#undef wan_udphdr_data
#define wan_udphdr_data wan_udphdr_u.ss7.data
#ifdef __KERNEL__
#undef wan_udp_data
#define wan_udp_data wan_udp_hdr.wan_udphdr_u.ss7.data
#endif
#endif