Files
Arquivotheca.AIX-4.1.3/bos/kernel/sys/POWER/mpqp.h
seta75D d6fe8fe829 Init
2021-10-11 22:19:34 -03:00

775 lines
33 KiB
C

/* @(#)45 1.47 src/bos/kernel/sys/POWER/mpqp.h, sysxmpqp, bos411, 9435B411a 8/31/94 18:17:04 */
#ifndef _H_MPQP
#define _H_MPQP
/*
* COMPONENT_NAME: (MPQP) Multiprotocol Quad Port Device Driver
*
* FUNCTIONS: mpqp.h - general header file
*
* ORIGINS: 27
*
* (C) COPYRIGHT International Business Machines Corp. 1990
* All Rights Reserved
*
* US Government Users Restricted Rights - Use, duplication or
* disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
*/
#include <sys/comio.h>
#include <sys/types.h>
#include <sys/errids.h>
#include <sys/mbuf.h>
#define MAX_CHAN 1 /* maximum number of channels per port*/
#define MPQP_RESOURCE_NAME "mpq"
#define ADAPTER_LCK 0xff
#define boolean unsigned char
#define RX_BUF_LEN 4090 /* size of receive buffer */
#define TX_BUF_LEN 4096 /* size of transmit buffer */
/**************************************************************************
* MPQP IOCTL OPERATIONS *
**************************************************************************/
#define MP_SET_DELAY 0x00e1 /* Set NDELAY bit */
#define Q_SDELAY 0x00e1 /* Set NDELAY bit */
#define MP_CDELAY 0x00e2 /* Clear NDELAY bit */
#define Q_CDELAY 0x00e2 /* Clear NDELAY bit */
#define MP_START_DEV 0x00e3 /* Set parms and start port */
#define Q_START_DEV 0x00e3 /* Set parms and start port */
#define MP_HALT 0x00e4 /* Halt port */
#define Q_HALT 0x00e4 /* Halt port */
#define MP_START_AR 0x00e5 /* Start auto response */
#define Q_START_AR 0x00e5 /* Start auto response */
#define MP_STOP_AR 0x00e6 /* Stop auto response */
#define Q_STOP_AR 0x00e6 /* Stop auto response */
#define MP_CHG_PARMS 0x00e7 /* Change parameters */
#define Q_CHG_PARMS 0x00e7 /* Change parameters */
#define MP_FLUSH_PORT 0x00e8 /* Flush queue */
#define MP_GETSTAT 0x00e9 /* Query status */
#define Q_GETSTAT 0x00e9 /* Query status */
#define MP_RMEM 0x00ea /* Read adapter memory */
#define Q_RMEM 0x00ea /* Write adapter memory */
#define MP_WMEM 0x00eb /* Read adapter memory */
#define Q_WMEM 0x00eb /* Read adapter memory */
#define MP_RASW 0x00ec /* Reload adapter software */
#define Q_RASW 0x00ec /* Reload adapter software */
#define MP_QPCMD 0x00ed /* Perform ioctl command */
#define Q_QPCMD 0x00ed /* Perform ioctl command */
#define MP_TRACEON 0x00be /* Turn on port activity trace */
#define Q_TRACEON 0x00ee /* Turn on port activity trace */
#define MP_TRACEOFF 0x00bf /* Turn off port activity trace */
#define Q_TRACEOFF 0x00ef /* Turn off port activity trace */
#define MP_TRC_ON_ALL 0x00f0 /* Turn on port activity trace */
#define Q_TRC_ON_ALL 0x00f0 /* Turn on port activity trace */
#define MP_TRC_OFF_ALL 0x00f1 /* Turn off port activity trace */
#define Q_TRC_OFF_ALL 0x00f1 /* Turn off port activity trace */
#define MP_PQUERY 0x00f2 /* Retrieve port trace data */
#define Q_PQUERY 0x00f2 /* Retrieve port trace data */
#define MP_AQUERY 0x00f3 /* Retrieve adapter trace data */
#define Q_AQUERY 0x00f3 /* Retrieve adapter trace data */
#define MP_GETIC 0x00f4 /* Get interrupt count */
#define Q_GETIC 0x00f4 /* Get interrupt count */
/**************************************************************************
* MPQP IOCTL COMMANDS *
**************************************************************************/
/* Read and write ioctls... */
#define DIAG_XMT_LNG 0x11 /* Diagnostic transmit long */
#define DIAG_XMT_GTHR 0x12 /* Diagnostic transmit gather */
#define DIAG_READ 0x30 /* Diagnostic read by ioctl */
#define DIAG_WRITE 0x31 /* Diagnostic write by ioctl */
/**************************************************************************
* MPQP IOCTL DIAGNOSTIC/SETUP COMMANDS *
**************************************************************************/
/* Adapter Diagnostic Commands */
#define ROS_QUIK_TEST 0xf0 /* ROS type quick test */
#define RAM_EXT_TEST 0xe0 /* RAM extended test */
#define MEMORY_CKSUM 0xf1 /* Memory checksum test */
#define ROS_CPU_AU_TEST 0xf2 /* ROS CPU auto test */
#define CIO_ROS_AU_TEST 0xf4 /* CIO ROS Auto Test */
/* Extended Test */
#define SCC_ROS_AU_TEST 0xf5 /* SCC ROS Auto Test */
#define ROS_IFACE_TEST 0xf6 /* ROS SSTIC4 auto test */
#define PORT_DMA_TST 0xe8 /* Port DMA Test */
#define BUS_MSTR_DMA 0xec /* INT1 Interrupt Test */
#define STRT_CARD_RST 0xff /* Start Card Reset */
/* Adapter Setup and Status Commands */
#define RTN_MEM_SIZE 0xd0 /* Return Memory Size */
#define GET_INTF_ID 0xd1 /* Get Interface ID */
#define GET_EIB_ID 0xd2 /* Get EIB ID */
#define CFG_CIO_PORT 0xd3 /* Configure CIO Port */
#define CFG_SCC_CHNL 0xd4 /* Configure SCC Channel */
#define CFG_DMA_CHNL 0xd5 /* Configure DMA Channel */
#define CFG_HDW_TMR 0xd6 /* Configure Hardware */
/* Timer */
#define INIT_WD_TMR 0xd7 /* Initialize Watchdog */
/* Timer */
#define PRIORITY_SWTCH 0xd8 /* Priority Switch */
#define GET_ROS_VRSN 0xd9 /* Get ROS Version */
#define CPU_TMR_QRY 0xb1 /* CPU Timer Query */
#define CPU_DMA_QRY 0xb2 /* CPU DMA Query */
#define DATA_BLASTER 0xbb /* Data Blaster Test */
#define SCC_DIAG_SETUP 0xbc /* SCC Diagnostic Setup */
#define SER_REG_ACC 0xbd /* Serial Register Access */
#define TRACE_ENBL 0xbe /* Enable Trace Facility */
#define TRACE_DISABL 0xbf /* Disable Trace Facility */
#define IO_READ 0xde /* IO Read */
#define IO_WRITE 0xdf /* IO Write */
/* Port Specific Diagnostic Commands */
#define DUSCC_REG_QRY 0xc0 /* DUSCC Register Query */
#define CIO_REG_QRY 0xc1 /* CIO Register Query */
#define DMA_REG_QRY 0xc2 /* DMA Register Query */
#define QUERY_MDM_INT 0x2a /* Query Modem Interrupts */
/**************************************************************************
* MPQP Trace Indicator Flags *
**************************************************************************/
#define Q_T_RQE 0 /* Entry is a response queue elt */
#define Q_T_CMD 1 /* Entry is a port command */
/**************************************************************************
* MPQP SPECIFIC ERRNO VALUES *
**************************************************************************/
/* Note: these two values for errno are currently in use but not *
* in the context of diagnostics. We chose them because *
* we needed a method of passing specific adapter related *
* information to the user task within the context of *
* fairly standard AIX V3 system call interface. *
**************************************************************************/
#define ETSTFL 25 /* diagnostic test failed */
#define EBADRRP 26 /* diagnostic test failed */
/* invalid EDRR pointer */
/**************************************************************************
* MPQP ERROR SYMBOLIC CONSTANTS *
**************************************************************************/
#define M_E_NOADAPTER 1 /* no MPQP adapters present */
#define M_E_BADADAINIT 2 /* adapter initialization failed */
#define M_E_BADPRTINIT 3 /* port initialization failed */
#define M_E_IMINDEVNO 100 /* illegal minor device number */
/**********************************************************************
* Miscellaneous Ioctl Defines *
**********************************************************************/
#define NUM_TRACE_ELEM 256 /* number of port trace elements */
#define SELECT_SIG_LEN 256 /* num of selection signals allowed */
#define PHYS_V25 0x01 /* V25 mask */
#define PHYS_SM 0x02 /* Smart modem */
#define PHYS_X21 0x04 /* X21 mask */
#define PHYS_V35 0x08 /* V35 mask */
#define PHYS_422 0x10 /* 422 mask */
#define PHYS_232 0x20 /* 232 mask */
#define BSC_MASK 0x01
#define SDLC_MASK 0x02
#define ASYNC_MASK 0x04
#define PAR_ENBL 0x80 /* parity enable */
#define PAR_SELECT 0x40 /* parity select */
#define BSC_ASCII 0x01 /* Bisync ASCII */
#define SDLC_NRZI 0x01 /* SDLC NRZI mode mask */
#define FD_MASK 0x01 /* full duplex mask */
#define DR_MASK 0x02 /* data rate select mask */
#define CR_MASK 0x04 /* control RTS mask */
#define DD_MASK 0x08 /* dial data mask */
#define CDSTL_MASK 0x10 /* clear data set to line mask */
#define AUTO_MASK 0x20 /* auto for switched only */
#define CALL_MASK 0x40 /* call switched only */
#define SWITCHED 0x00 /* switched line */
#define LEASED_MASK 0x80 /* leased */
#define STOP_BIT 0x30 /* for checking stop bit */
#define FIELD_SELECT_RESET 0x00 /* initial value for field select */
#define FIELD_SELECT_SET 0xbf /* set value for field select */
#define FS_RCV_TMR 0x80 /* receive timer bit mask */
#define FS_MDM_INT_MSK 0x40 /* Modem interrupt mask */
#define FS_PL 0x20
#define FS_POLL_ADDR 0x10 /* Poll address bit mask */
#define FS_SEL_ADDR 0x08 /* Select address bit mask-bisync only*/
#define FS_AP 0x04
#define FS_DP 0x02
#define FS_BR 0x01
#define BAUD_RATE_MAX 0x99e8 /* max baud rate allow 39400 */
/* The following definitions are used by chg_mask in change parameters and
should have the same values as their field select counterparts above. */
#define CP_RCV_TMR (int) 0x00000080 /* receive timer bit mask */
#define CP_POLL_ADDR (int) 0x00000010 /* Poll address bit mask */
#define CP_SEL_ADDR (int) 0x00000008 /* Select addr mask-bisync only*/
/*****************************************************************************/
/* tracing macros */
/*****************************************************************************/
void MPQSaveTrace (int, char *, int, int, int, int);
#define DD_MPQ_HOOK 0x21
#define MPQTRACE1(a1) \
MPQSaveTrace(1, a1, 0, 0, 0, 0)
#define MPQTRACE2(a1,a2) \
MPQSaveTrace(2, a1, (int)a2, 0, 0, 0)
#define MPQTRACE3(a1,a2,a3) \
MPQSaveTrace(3, a1, (int)a2, (int)a3, 0, 0)
#define MPQTRACE4(a1,a2,a3,a4) \
MPQSaveTrace(4, a1, (int)a2, (int)a3, (int)a4 , 0)
#define MPQTRACE5(a1,a2,a3,a4,a5) \
MPQSaveTrace(5, a1, (int)a2, (int)a3, (int)a4, (int)a5)
/*****************************************************************************/
/* Mbuf tracing macros */
/*****************************************************************************/
#define MBUFTRACE1(a1) MPQSaveTrace(1, a1, 0, 0, 0, 0)
#define MBUFTRACE2(a1,a2) MPQSaveTrace(2, a1, (int)a2, 0, 0, 0)
#define MBUFTRACE3(a1,a2,a3) MPQSaveTrace(3, a1, (int)a2, (int)a3, 0, 0)
#define MBUFTRACE4(a1,a2,a3,a4) \
MPQSaveTrace(4, a1, (int)a2, (int)a3, (int)a4 , 0)
#define MBUFTRACE5(a1,a2,a3,a4,a5) \
MPQSaveTrace(5, a1, (int)a2, (int)a3, (int)a4, (int)a5)
/*************************************************************************
* MPQP Status Block Code Values *
*************************************************************************/
#define MP_ERR_THRESHLD_EXC 0x82
#define MP_END_OF_AUTO_RESP 0x2C
#define MP_RDY_FOR_MAN_DIAL 0x2210
/**********************************************************************
* MPQP Status Block Option[0] Values *
**********************************************************************/
/* Option [0] values when code = CIO_START_DONE or MP_ERR_THRESHLD_EXC */
#define MP_CTS_TIMEOUT 0x15
#define MP_RX_ABORT 0x18
#define MP_RX_DMA_BFR_ERR 0x1C
#define MP_RESET_CMPL 0x20 /* Reset Completed */
#define MP_X21_TIMEOUT 0x21 /* X.21 timer expired */
#define MP_ADAP_NOT_FUNC 0x30 /* Adapter not functioning */
#define MP_TOTAL_TX_ERR 0x31
#define MP_TOTAL_RX_ERR 0x32
#define MP_TX_PERCENT 0x33
#define MP_RX_PERCENT 0x34
#define MP_DSR_ALRDY_ON 0x40
#define MP_DSR_DROPPED 0x41
#define MP_ASY_LOST_RTS 0x42
#define MP_TX_UNDERRUN 0x89
#define MP_CTS_UNDERRUN 0x88
#define MP_DSR_ON_TIMEOUT 0xA1 /* DSR fails to come on */
#define MP_RCV_TIMEOUT 0xA7
#define MP_AR_RCV_TIMEOUT 0xA8
#define MP_TX_FAILSAFE_TIMEOUT 0xB1 /* Transmit command did not complete */
#define MP_X21_RETRIES_EXC 0xCE /* Retries exceeded call not compl. */
#define MP_X21_CLEAR 0xD2 /* Unexpected Clear received from DCE*/
#define MP_BUF_STAT_OVFLW 0x1001
#define MP_RX_FRAME_ERR 0xC001
#define MP_RX_BSC_FRAME_ERR 0xA001
#define MP_RX_BSC_PAD_ERR 0xA002
#define MP_RX_OVERRUN 0x8001
#define MP_RX_PARITY_ERR 0x8002
#define MP_FRAME_CRC 0x8003
#define MP_LOST_SYNC 0x8004
#define MP_SDLC_ABORT 0x9001
#define MP_SDLC_SHRT_FRM 0x9002
#define MP_SDLC_RESIDUAL 0x9003
#define MP_X21_INVALID_CPS 0xB001
#define MP_ASW_OVERWRITE 0xD001 /* ASW overwitten */
#define MP_BAD_RX_DMA_Q_AD 0xD002 /* bad address on DMA Q*/
#define MP_LOST_COMMAND 0xD003 /* lost PCQ command */
/**********************************************************************
* MPQP Status Block Option[1] Values *
**********************************************************************/
/* The following timer indicators will be passed in Option[1] when */
/* the code is CIO_START_DONE and Option[0] = MP_X21_TIMEOUT */
#define MP_XT1_TIMER 0xc1 /* X.21 Timer that expired */
#define MP_XT2_TIMER 0xc2 /* X.21 Timer that expired */
#define MP_XT3_TIMER 0xc3 /* X.21 Timer that expired */
#define MP_XT4_TIMER 0xc4 /* X.21 Timer that expired */
#define MP_XT5_TIMER 0xc5 /* X.21 Timer that expired */
#define MP_XT6_TIMER 0xc6 /* X.21 Timer that expired */
#define MP_X_RETRY1_TIMER 0xc7 /* X.21 Timer that expired */
#define MP_X_RETRY2_TIMER 0xc8 /* X.21 Timer that expired */
#define MP_X_GR0_TIMER 0xc9 /* X.21 Timer that expired */
#define MP_X_LSD_TIMER 0xca /* X.21 Timer that expired */
#define MP_X_DCE_READY_TIMER 0xcb /* X.21 Timer that expired */
#define MP_X_24B_TIMER 0xCC /* X.21 Timer that expired */
/* end of X.21 timer indicators */
#define MP_FORCED_HALT 0x08 /* Halt due adapter or network errors */
#define MP_NORMAL_HALT 0x09 /* Normal Halt */
/**********************************************************************
* MPQP Status Block Option[2] Values *
**********************************************************************/
#define MP_NETWORK_FAILURE 0x0a /* Network failure */
#define MP_HW_FAILURE 0x0b /* Hardware failure */
/***************************************************************************
* MPQP Physical link *
***************************************************************************/
#define PL_232D 0x20 /* EIA232-D */
#define PL_422A 0x10 /* EIA422-A */
#define PL_V35 0x08 /* V.35 */
#define PL_X21 0x04 /* X.21 */
#define PL_SMART_MODEM 0x02 /* Smart modem */
#define PL_V25 0x01 /* V25bis */
/*************************************************************************
* MPQP STATUS CONSTANTS *
*************************************************************************/
#define MP_BUF_OVERFLOW 0x8001 /* Receive buffer overflow */
#define MP_X21_CPS 0x8002 /* X.21 call progress signal*/
#define MP_X21_DPI 0x8003 /*X.21 DCE Provided Information
(For Network data) */
#define MP_MODEM_DATA 0x8004 /* Modem data (ie. autodial
modem data */
#define MP_AR_DATA_RCVD 0x8005 /* Data receive while in
Auto-response */
#define MP_AR_END 0x8006 /* Auto-response terminated */
#define MP_AR_RX_TIMEOUT 0x8007 /* Auto-response rx. timeout */
/***************************************************************************
* BISYNC Errors and Message types *
***************************************************************************/
#define MP_ETB (unsigned short)0x2001 /* --- ETB : 0 1 */
#define MP_ETX (unsigned short)0x2002 /* --- ETX : 0 2 */
#define MP_ACK0 (unsigned short)0x2008 /* --- AK0 : 0 8 */
#define MP_ACK1 (unsigned short)0x2009 /* --- AK1 : 0 9 */
#define MP_WACK (unsigned short)0x200A /* --- WAK : 0 A */
#define MP_NAK (unsigned short)0x200B /* --- NAK : 0 B */
#define MP_ENQ (unsigned short)0x200C /* --- ENQ : 0 C */
#define MP_EOT (unsigned short)0x200D /* --- EOT : 0 D */
#define MP_RVI (unsigned short)0x200E /* --- RVI : 0 E */
#define MP_DISC (unsigned short)0x200F /* --- DSC : 0 F */
#define MP_STX_ITB (unsigned short)0x2020 /* STX ITB : 2 0 */
#define MP_STX_ETB (unsigned short)0x2021 /* STX ETB : 2 1 */
#define MP_STX_ETX (unsigned short)0x2022 /* STX ETX : 2 2 */
#define MP_STX_ENQ (unsigned short)0x202C /* STX ENQ : 2 C */
#define MP_SOH_ITB (unsigned short)0x2030 /* SOH ITB : 3 0 */
#define MP_SOH_ETB (unsigned short)0x2031 /* SOH ETB : 3 1 */
#define MP_SOH_ETX (unsigned short)0x2032 /* SOH ETX : 3 2 */
#define MP_SOH_ENQ (unsigned short)0x203C /* SOH ENQ : 3 C */
#define MP_DATA_ACK0 (unsigned short)0x2088 /* dat AK0 : 8 8 */
#define MP_DATA_ACK1 (unsigned short)0x2089 /* dat AK1 : 8 9 */
#define MP_DATA_NAK (unsigned short)0x208B /* dat ETB : 8 B */
#define MP_DATA_ENQ (unsigned short)0x208C /* dat ENQ : 8 C */
/**************************************************************************
* MPQP Auto-dial Protocol *
**************************************************************************/
#define DIAL_PRO_BSC 0x01 /* same as BSC_MASK */
#define DIAL_PRO_SDLC 0x02 /* same as SDLC_MASK */
#define DIAL_PRO_ASYNC 0x08 /* same as ASYNC_MASK */
/****************************************************************************
* MPQP dial flags for ASCII *
****************************************************************************/
#define DIAL_FLG_PAR_EN 0x80 /* Parity enable/Parity Select */
#define DIAL_FLG_PAR_ODD 0x40 /* Odd parity for ASCII */
/* This value is logical OR with
dial_flags to set odd parity */
#define DIAL_FLG_PAR_EVEN 0xbf /* even parity for ASCII */
/* This value is logical AND with
dial_flags to set even parity bit */
#define DIAL_FLG_BSC_ASC 0x01 /* ASCII Bisync */
/****************************************************************************
* MPQP dial flags for SDLC *
****************************************************************************/
#define DIAL_FLG_NRZ 0xef /* Dial flag for SDLC NRZ */
/* This value must be logical AND
with dial_flags to set NRZ bit */
#define DIAL_FLG_NRZI 0x01 /* Dial flag for SDLC NRZI */
/* This value must be logical OR with
dial_flags to set NRZI bit on */
/****************************************************************************
* MPQP dial flags for ASYNC *
****************************************************************************/
#define DIAL_FLG_STOP_CLEAR 0xf3
#define DIAL_FLG_STOP_0 0x00 /* Zero stop bit */
#define DIAL_FLG_STOP_1 0x04 /* One stop bit */
#define DIAL_FLG_STOP_15 0x08 /* 1.5 stop bits */
#define DIAL_FLG_STOP_2 0x0c /* 2 stop bits */
#define DIAL_FLG_CHAR_CLEAR 0xfc
#define DIAL_FLG_CHAR_5 0x00 /* 5 bits/char */
#define DIAL_FLG_CHAR_6 0x01 /* 6 bits/char */
#define DIAL_FLG_CHAR_7 0x02 /* 7 bits/char */
#define DIAL_FLG_CHAR_8 0x03 /* 8 bits/char */
#define DIAL_FLG_C_CARR_ON 0x20 /* Continuous Carrier RTS always ON */
#define DIAL_FLG_C_CARR_OFF 0xdf /* RTS diabled between transmission */
/* This value must be AND with dial
flags to turn it off */
#define DIAL_FLG_TX_NO_CTS 0xef /* Transmit without waiting for CTS */
#define DIAL_FLG_TX_CTS 0x10 /* Wait for CTS to transmit */
/**************************************************************************
* MPQP data protocol *
**************************************************************************/
#define DATA_PROTO_BSC 0x01
#define DATA_PROTO_SDLC_FDX 0x02
#define DATA_PROTO_SDLC_HDX 0x04
#define DATA_FLG_BSC_ASC 0x01
#define DATA_FLG_BSC_TRANSP 0x04 /* BSC transparent mode */
#define DATA_FLG_NRZI 0x01
#define DATA_FLG_NRZ 0xfe
#define DATA_FLG_ADDR_CHK 0x02
#define DATA_FLG_RST_TMR 0x10
#define DATA_FLG_C_CARR_ON 0x20 /* Continuous Carrier */
#define DATA_FLG_C_CARR_OFF 0xdf /* Controlled Carrier */
/**************************************************************************
* MPQP Modem Flags *
**************************************************************************/
#define MF_LEASED 0x80 /* this value must be logical OR
with modem flags to set leased line */
#define MF_SWITCHED 0x7f /* This value must be logical AND
with modem flags to set switched line */
#define MF_LISTEN 0xbf /* This value must be logical AND
with modem flags to set listen option */
#define MF_CALL 0x40 /* This value must be logical OR
with modem flags to set call option */
#define MF_AUTO 0xdf /* This value must be logical AND
with modem flags to set auto mode */
#define MF_MANUAL 0x20 /* This value must be logical OR
with modem flags to set manual mode */
#define MF_DIAL_DATA 0x08 /* this value must be logical OR
with modem flags to indicate buffer has
dial data */
#define MF_NO_DIAL_DATA 0xf7 /* This value must be logical ANDed
with modem flags to turn DD bit
off */
#define MF_CDSTL_ON 0x10 /* Enable DTR without waiting for
for Ring Indicator (RI) */
/* this value must be logical OR
with modem flags to CDSTL on */
#define MF_CDSTL_OFF 0xef /* Enabel DTR after Ring Indicator
occurs */
/* This value must be logical AND
with modem flags for CDSTL off */
#define MF_DRS_ON 0x02 /* Enable data rate select */
/* This value must be logical OR
with modem flags to select rate */
#define MF_DRS_OFF 0xfd /* Do not enable data rate select*/
/* This value must be logical AND
with modem flags to Set DRS off */
/******* these defines are for trace hooks *******************/
#define ADAPT_TOO_BIG 0x000000f0 /* adapter number is too big */
#define NO_ACB 0x000000f1 /* acb is NULL */
#define NO_OFFL_INTR 0x000000f2 /* there is no offlevel intr
structure */
#define NO_INTR_REG 0x000000f3 /* no interrupt registration */
#define NO_PORT_DDS 0x000000f4 /* no dds for requested port */
#define CHAN_TOO_BIG 0x000000f5 /* channel > CHAN_MAX */
#define CHAN_BUSY 0x000000f6 /* channed is used by kernel */
#define NO_MBUF_AVAIL 0x000000f7 /* no mbuf available */
#define NO_XMIT_CHAIN 0x000000f8 /* no transmit chain */
#define ADAPT_ALRDY_OPEN 0x000000f9 /* adapter already opened */
#define UIO_MOVE_ERR 0x000000fd /* error in uiomove */
#define PHYS_LINK_INV 0x000000e0 /* physical link is invalid */
#define DATA_PROTO_INV 0x000000e1 /* data protocol is invalid */
#define BAUD_RATE_INV 0x000000e2 /* baud rate is invalid */
#define NO_ERROR 0x000000e3
#define PARM1 0x00000001 /* parameter # 1 */
#define PARM2 0x00000002 /* parameter # 2 */
#define PARM3 0x00000003 /* parameter # 3 */
#define PARM4 0x00000004 /* parameter # 4 */
/**************************************************************************
* MPQP values for retry groups *
**************************************************************************/
#define CG_SIG_0 0x8000
#define CG_SIG_1 0x4000
#define CG_SIG_2 0x2000
#define CG_SIG_3 0x1000
#define CG_SIG_4 0x0800
#define CG_SIG_5 0x0400
#define CG_SIG_6 0x0200
#define CG_SIG_7 0x0100
#define CG_SIG_8 0x0080
#define CG_SIG_9 0x0040
/******************************************************************************
* MPQP Select Queue Info Structure Template *
***************************************************************************/
typedef struct SELQUEUE
{
struct SELQUEUE *p_sel_que; /* link pointer */
struct status_block stat_block; /* status block structre */
/* from comio.h */
unsigned long rqe_value;
} t_sel_que;
/***************************************************************************
* MPQP Channel Information Structure Template *
***************************************************************************/
typedef struct MPQCHANINFO
{
dev_t devno; /* device number */
unsigned long devflag; /* device flags from open */
unsigned short sync_flags; /* selnotify flags for events */
int rcv_event_lst; /* event list anchor for receive */
int xmt_event_lst; /* event list anchor for transmit */
struct kopen_ext mpq_kopen; /* struct kopen_ext passed to open */
t_sel_que *p_beg_page; /* beginning of select queue page */
t_sel_que *p_sel_avail; /* head of available linked list */
t_sel_que *p_rcv_head; /* head of receive available queue */
t_sel_que *p_rcv_tail; /* tail of receive available queue */
t_sel_que *p_stat_head; /* head of status available queue */
t_sel_que *p_stat_tail; /* tail of status available queue */
t_sel_que *p_lost_stat; /* queue element for CIO_LOST_STATUS */
t_sel_que *p_lost_rcv; /* queue element for LOST_DATA */
} t_chan_info; /* end of channel information structure */
typedef struct
{
char retry_cnt;
char rsv ;
ushort retry_delay;
ushort group_0;
ushort group_1;
ushort group_2;
ushort group_3;
ushort group_4;
ushort group_5;
ushort group_6;
ushort group_7;
ushort group_8;
ushort group_9;
ushort netlog_0;
ushort netlog_1;
ushort netlog_2;
ushort netlog_3;
ushort netlog_4;
ushort netlog_5;
ushort netlog_6;
ushort netlog_7;
ushort netlog_8;
ushort netlog_9;
char gr0_thresh;
char gr1_thresh;
char gr2_thresh;
char gr3_thresh;
char gr4_thresh;
char gr5_thresh;
char gr6_thresh;
char gr7_thresh;
char gr8_thresh;
char gr9_thresh;
} t_cps_data;
typedef struct
{
unsigned short len;
char sig[SELECT_SIG_LEN];
t_cps_data cps;
} t_x21_data;
typedef struct
{
unsigned short len;
char sig[SELECT_SIG_LEN]; /* dial string */
/* when using v.25 bis: */
/* bisync requires STX and ETX, */
/* SDLC requires address, control fields*/
unsigned short connect_timer;
unsigned short v25b_tx_timer;
} t_auto_data;
typedef struct
{
union
{
t_x21_data x21;
t_auto_data autod;
} t_dial;
} t_adap_dial_data;
#define DIAL_LEN sizeof(t_adap_dial_data)/* len of dial data */
/*
* errmsg:
* error logger structure
*/
typedef struct errmsg {
struct err_rec0 err;
char file[32];
int data1; /* use data1 and data2 to show detail */
int data2; /* data in the errlog report. Define */
/* these fields in the errlog template */
/* These fields may not be used in all */
/* cases. */
} errmsg;
/***************************************************************************
* MPQP Threshold Indicators *
***************************************************************************/
typedef struct T_ERR_THRESH {
unsigned long tx_err_thresh;
unsigned long rx_err_thresh;
unsigned long tx_err_percent;
unsigned long rx_err_percent;
unsigned long tx_underrun_thresh; /* tx_underrun threshold */
unsigned long tx_cts_drop_thresh; /* cts_underrun threshold */
unsigned long tx_cts_timeout_thresh; /* cts_timeout threshold */
unsigned long tx_fs_timeout_thresh; /* tx_timeout threshold */
unsigned long rx_overrun_err_thresh; /* rx_overrun threshold */
unsigned long rx_abort_err_thresh; /* abort_detect threshold */
unsigned long rx_frame_err_thresh; /* short_frame,asy_framing, */
/* bsc frame errors */
unsigned long rx_par_err_thresh; /* asy_parity, bsc_parity */
unsigned long rx_dma_bfr_err_thresh; /* buffer_overflow threshold */
} t_err_threshold;
/*
* Multi Protocol Quad Port start device data structure Definition
*/
typedef struct ST_DEV_PARM
{
struct session_blk mpqp_session;
unsigned char phys_link; /* physical link */
unsigned char dial_proto; /* dial protocol */
unsigned char dial_flags; /* dial protocol */
unsigned char data_proto; /* protocol in data transfer */
unsigned char data_flags; /* protocol flags for data */
unsigned char modem_flags; /* modem flags */
unsigned char poll_addr; /* poll address */
unsigned char select_addr; /* select address */
unsigned char modem_intr_mask; /* currently unused */
unsigned short baud_rate; /* baud rate */
unsigned short rcv_timeout; /* receive time out */
unsigned short rcv_data_offset; /* receive data offset - */
/* (reserved) */
union
{
t_x21_data x21_data;
t_auto_data auto_data;
} t_dial_data;
t_err_threshold *p_err_threshold;
} t_start_dev ;
/*
* Change parameters data structure definition
*/
typedef struct T_CHG_PARMS
{
int chg_mask ; /* mask for change parms */
unsigned short rcv_timer ; /* receive timer */
unsigned char poll_addr ; /* poll address */
unsigned char select_addr ; /* select address */
} t_chg_parms ;
/*
* start auto response parameter data structure definition
*/
typedef struct T_STRT_AR_PARMS
{
short rcv_timer ; /* receive timer */
char tx_rx_addr ; /* transmit , receive address */
char tx_cntl ; /* transmit control */
char rx_cntl ; /* receive control */
} t_start_ar;
/***************************************************************************
* MPQP Threshold Accumulators *
***************************************************************************/
typedef struct T_CIO_STATS
{
unsigned long tx_byte_mcnt; /* MSB of transmit byte counter */
unsigned long tx_byte_lcnt; /* LSB of transmit byte counter */
unsigned long rx_byte_mcnt; /* MSB of receive byte counter */
unsigned long rx_byte_lcnt; /* LSB of receive byte counter */
unsigned long tx_frame_mcnt; /* MSB of transmit frames counter */
unsigned long tx_frame_lcnt; /* LSB of transmit frames counter */
unsigned long rx_frame_mcnt; /* MSB of receive frames counter */
unsigned long rx_frame_lcnt; /* LSB of receive frames counter */
/* MPQP device specific threshold counters */
unsigned long tx_dma; /* number of bus master dma transmit */
unsigned long tx_dmabytes; /* number of bytes of transmit dma */
unsigned long tx_short; /* number of times of transmit short */
unsigned long tx_shortbytes; /* number of bytes of transmit short */
unsigned long rx_dma; /* number of receive dma */
unsigned long tx_err_cnt; /* number of transmit errors */
unsigned long rx_err_cnt; /* number of receive errors */
unsigned long tx_err_dcnt; /* number of tx_err's since last */
/* tx_err threshold was met */
unsigned long rx_err_dcnt; /* number of rx_err's since last */
/* rx_err threshold was met */
unsigned long tx_underrun; /* number of bytes underrun */
unsigned long rx_overrun; /* number of bytes overrun */
unsigned long tx_timeout; /* numnber of timestx timeout error */
unsigned long rx_timeout; /* number of times rx timeout */
unsigned long cts_timeout; /* number of clear to send timeout */
unsigned long dsr_timeout; /* number of data set ready timeout */
unsigned long cts_underrun; /* number of clear to send dropped */
unsigned long dsr_dropped; /* number of data set ready dropped */
unsigned long dsr_offtimeout; /* number of data set ready timeout */
unsigned long buffer_overflow; /* number of times buffer overflow */
unsigned long abort_detect; /* number of abort detect */
unsigned long short_frame; /* number of SDLC short frames */
unsigned long CRC_error; /* number of CRC errors */
unsigned long bsc_parity; /* number of parity error ASCII only */
unsigned long asy_framing; /* number of asc or bsc frame errors */
unsigned long asy_parity; /* number of async parity errors */
unsigned long x21_stat; /* number of x21 stat. errors */
boolean clear_counters; /* counter will be cleared */
/* upon completion of call */
} t_cio_stats ;
/***************************************************************************
* MPQP Threshold QUERY Structure (CIO_QUERY) *
***************************************************************************/
typedef struct T_QUERY_PARMS
{
unsigned long status; /* out status */
t_cio_stats *bufptr; /* in - destination buffer pointer */
int buflen; /* in - destination buffer len ( bytes) */
unsigned long reserve[4]; /* reserved */
} t_query_parms ;
/***************************************************************************
* MPQP Threshold Pointers and Contants *
***************************************************************************/
#define DDS_STATS p_dds->dds_ras.cio_stats
#define DDS_THRESH p_dds->dds_ras.err_thresh
#define THRES_UNSOL_STAT (unsigned short)0x0001 /* Unsol status from adapter */
#define THRES_TX_ERR (unsigned short)0x0002 /* Transmission errors */
#define THRES_RX_ERR (unsigned short)0x0003 /* Receive errors */
typedef struct mp_write_extension
{
struct write_extension cio_write; /* COMIO write extension */
unsigned char transparent; /* bisync transparent mode flag */
} t_write_ext;
#endif /* _H_MPQP */