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

180 lines
5.6 KiB
C

/* @(#)38 1.4 src/bos/kernel/sys/POWER/soluser.h, sysxsol, bos411, 9428A410j 6/2/92 13:25:48 */
#ifndef _H_SOLUSER
#define _H_SOLUSER
/*
* COMPONENT_NAME: (SYSXSOL) - Serial Optical Link Device Handler Include File
*
* FUNCTIONS: soluser.h
*
* ORIGINS: 27
*
* (C) COPYRIGHT International Business Machines Corp. 1990
* All Rights Reserved
* Licensed Materials - Property of IBM
*
* US Government Users Restricted Rights - Use, duplication or
* disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
*/
#include <sys/comio.h>
#include <sys/devinfo.h>
/*
* Miscellaneous constants
*/
#define SOL_MAX_OPENS (6) /* Maximum opens allowed */
#define SOL_MAX_NETIDS (32) /* Maximum CIO_STARTS */
#define SOL_MAX_XMIT (60 * 1024) /* Maximum packet size */
#define SOL_MIN_XMIT (1) /* Minimum packet size */
#define SOL_OFF_LEVEL INTOFFL1 /* off-level level */
#define SOL_PACKET_CNT (1) /* #packets fastwrt can handle */
/*
* ioctl command definitions
*/
#define SOL_IOCTL (DD_SOL<<8)
#define SOL_GET_PRIDS (SOL_IOCTL | 0x01)
#define SOL_CHECK_PRID (SOL_IOCTL | 0x02)
#define SOL_BUFFER_ACCESS (SOL_IOCTL | 0x03)
#define SOL_SYNC_OTP (SOL_IOCTL | 0x04)
#define SOL_ACTIVATE (SOL_IOCTL | 0x05)
#define SOL_SCR (SOL_IOCTL | 0x06)
#define SOL_OLS (SOL_IOCTL | 0x07)
#define SOL_RHR (SOL_IOCTL | 0x08)
#define SOL_CRC (SOL_IOCTL | 0x09)
#define SOL_LOCK_TO_XTAL (SOL_IOCTL | 0x0a)
#define SOL_CARD_PRESENT (SOL_IOCTL | 0x0b)
#define SOL_LOOPBACK_TEST (SOL_IOCTL | 0x0c)
/*
* SOL Async Status Blocks
*/
#define SOL_PREFIX (DD_SOL<<16)
#define SOL_NEW_PRID (SOL_PREFIX | 0x0001)
#define SOL_PRID_CONFLICT (SOL_PREFIX | 0x0002)
/*
* Hardware Failure Status Blocks (CIO_HARD_FAIL)
*/
#define SOL_FATAL_ERROR 1
#define SOL_RCVRY_THRESH 2
/*
* TX_DONE codes (option[3] field)
*/
#define SOL_ACK 0
#define SOL_NACK_NB 3
#define SOL_NACK_NR 4
#define SOL_NACK_NS 5
#define SOL_NEVER_CONN 7
#define SOL_NO_CONN 8
#define SOL_DOWN_CONN 9
/*
* DIAGNOSTICS ERROR RETURN CODES
*/
#define SOL_SUCCESS 0
#define SOL_SLA_NOT_STOPPED 1
#define SOL_DMA_UNHANG_FAILED 2
#define SOL_SLA_START_FAILED 3
#define SOL_SLA_IO_EXCEPTION 4
#define SOL_SYNC_OTP_FAILED 5
#define SOL_SCR_NOT_COMPLETE 6
#define SOL_OFFL_SEQ_NOT_REC 7
#define SOL_CRC_CHK_BIT_NOT_SET 8
#define SOL_CANT_STOP_SLA 9
#define SOL_NO_LINK_CHK_BIT 10
#define SOL_SLA_ALREADY_STARTED 11
#define SOL_TIMEOUT 12
#define SOL_LINK_CHK_BIT_SET 13
#define SOL_UNEXPD_FRAME_NOT_SET 14
#define SOL_ADDR_MIS_NOT_SET 15
#define SOL_RHR_COMPARE_FAILED 16
/*
* Diagnostic ioctl structures
*/
struct sol_get_prids { /* For SOL_GET_PRIDS ioctl */
uchar *bufptr; /* Pointer to caller's buffer */
uchar buflen; /* Length of buffer, in bytes */
uchar num_ids; /* Number of IDs detected by DH */
uchar rsvd0; /* Reserved field, should be set to 0 */
uchar rsvd1; /* Reserved field, should be set to 0 */
uint rsvd2; /* Reserved field, should be set to 0 */
uint rsvd3; /* Reserved field, should be set to 0 */
};
struct sol_sla_status { /* For SLA status on most diag ioctls */
uint status_1; /* First status word in SLA */
uint status_2; /* Second status word in SLA */
uint ccr; /* Channel Control Register in SLA */
uint cfg_reg; /* Configuration Register in SLA */
uint rhr_word0; /* Receive Header Register - word 0 */
uint rhr_word1; /* Receive Header Register - word 1 */
uint rhr_word2; /* Receive Header Register - word 2 */
uint rhr_word3; /* Receive Header Register - word 3 */
uint rhr_word4; /* Receive Header Register - word 4 */
uint thr_word0; /* Transmit Header Register - word 0 */
uint thr_word1; /* Transmit Header Register - word 1 */
uint thr_word2; /* Transmit Header Register - word 2 */
uint thr_word3; /* Transmit Header Register - word 3 */
uint thr_word4; /* Transmit Header Register - word 4 */
uint rsvd0; /* Reserved field, should be set to 0 */
uint rsvd1; /* Reserved field, should be set to 0 */
};
struct sol_buffer_access { /* For SOL_BUFFER_ACCESS ioctl */
uchar *bufptr; /* Pointer to caller's buffer */
ushort buflen; /* Length of buffer, in bytes */
uchar flag; /* Indicates a read or write operation */
#define SOL_READ 1
#define SOL_WRITE 2
uchar result; /* Result of ioctl operation (if EIO) */
struct sol_sla_status status; /* Returns SLA status to caller */
uint rsvd1; /* Reserved field, should be set to 0 */
uint rsvd2; /* Reserved field, should be set to 0 */
};
struct sol_diag_test { /* For SOL_ACTIVATE, SOL_SCR, SOL_OLS,
SOL_RHR, and SOL_CRC ioctls */
uchar diag_mode; /* Indicates what mode for the test */
#define SOL_NORMAL 0 /* Normal mode - no wrap */
#define SOL_10_BIT_WRAP 1 /* Wrap within SLA */
#define SOL_1_BIT_WRAP 2 /* Wrap within Optic Two-Port Card */
#define SOL_NBR_WRAP 4 /* Wrap between SLAs */
uchar result; /* Result of ioctl operation (if EIO) */
uchar rsvd1; /* Reserved field, should be set to 0 */
uchar rsvd2; /* Reserved field, should be set to 0 */
struct sol_sla_status status; /* Returns SLA status to caller */
uint rsvd3; /* Reserved field, should be set to 0 */
uint rsvd4; /* Reserved field, should be set to 0 */
};
/*
* SOL specific statistics structure
*/
typedef struct {
ulong collapsed_frame_mcnt; /* (msb) count of frames collapsed */
ulong collapsed_frame_lcnt; /* (lsb) count of frames collapsed */
ulong sta_que_overflow; /* status lost due to full stat que */
ulong rec_que_overflow; /* rcv pkt lost due to full recv que */
} sol_stats_t;
/*
* Structure definition for CIO_QUERY ioctl
*/
typedef struct {
cio_stats_t cc;
sol_stats_t ds;
} sol_query_stats_t;
#endif /* _H_SOLUSER */