#ifndef _SYS_TIIO_H_
#define _SYS_TIIO_H_
#include <sys/ioccom.h>
struct ti_stats {
volatile u_int32_t dot3StatsAlignmentErrors;
volatile u_int32_t dot3StatsFCSErrors;
volatile u_int32_t dot3StatsSingleCollisionFrames;
volatile u_int32_t dot3StatsMultipleCollisionFrames;
volatile u_int32_t dot3StatsSQETestErrors;
volatile u_int32_t dot3StatsDeferredTransmissions;
volatile u_int32_t dot3StatsLateCollisions;
volatile u_int32_t dot3StatsExcessiveCollisions;
volatile u_int32_t dot3StatsInternalMacTransmitErrors;
volatile u_int32_t dot3StatsCarrierSenseErrors;
volatile u_int32_t dot3StatsFrameTooLongs;
volatile u_int32_t dot3StatsInternalMacReceiveErrors;
volatile u_int32_t ifIndex;
volatile u_int32_t ifType;
volatile u_int32_t ifMtu;
volatile u_int32_t ifSpeed;
volatile u_int32_t ifAdminStatus;
#define IF_ADMIN_STATUS_UP 1
#define IF_ADMIN_STATUS_DOWN 2
#define IF_ADMIN_STATUS_TESTING 3
volatile u_int32_t ifOperStatus;
#define IF_OPER_STATUS_UP 1
#define IF_OPER_STATUS_DOWN 2
#define IF_OPER_STATUS_TESTING 3
#define IF_OPER_STATUS_UNKNOWN 4
#define IF_OPER_STATUS_DORMANT 5
volatile u_int32_t ifLastChange;
volatile u_int32_t ifInDiscards;
volatile u_int32_t ifInErrors;
volatile u_int32_t ifInUnknownProtos;
volatile u_int32_t ifOutDiscards;
volatile u_int32_t ifOutErrors;
volatile u_int32_t ifOutQLen;
volatile u_int8_t ifPhysAddress[8];
volatile u_int8_t ifDescr[32];
u_int32_t alignIt;
volatile u_int64_t ifHCInOctets;
volatile u_int64_t ifHCInUcastPkts;
volatile u_int64_t ifHCInMulticastPkts;
volatile u_int64_t ifHCInBroadcastPkts;
volatile u_int64_t ifHCOutOctets;
volatile u_int64_t ifHCOutUcastPkts;
volatile u_int64_t ifHCOutMulticastPkts;
volatile u_int64_t ifHCOutBroadcastPkts;
volatile u_int32_t ifLinkUpDownTrapEnable;
volatile u_int32_t ifHighSpeed;
volatile u_int32_t ifPromiscuousMode;
volatile u_int32_t ifConnectorPresent;
volatile u_int32_t nicCmdsHostState;
volatile u_int32_t nicCmdsFDRFiltering;
volatile u_int32_t nicCmdsSetRecvProdIndex;
volatile u_int32_t nicCmdsUpdateGencommStats;
volatile u_int32_t nicCmdsResetJumboRing;
volatile u_int32_t nicCmdsAddMCastAddr;
volatile u_int32_t nicCmdsDelMCastAddr;
volatile u_int32_t nicCmdsSetPromiscMode;
volatile u_int32_t nicCmdsLinkNegotiate;
volatile u_int32_t nicCmdsSetMACAddr;
volatile u_int32_t nicCmdsClearProfile;
volatile u_int32_t nicCmdsSetMulticastMode;
volatile u_int32_t nicCmdsClearStats;
volatile u_int32_t nicCmdsSetRecvJumboProdIndex;
volatile u_int32_t nicCmdsSetRecvMiniProdIndex;
volatile u_int32_t nicCmdsRefreshStats;
volatile u_int32_t nicCmdsUnknown;
volatile u_int32_t nicEventsNICFirmwareOperational;
volatile u_int32_t nicEventsStatsUpdated;
volatile u_int32_t nicEventsLinkStateChanged;
volatile u_int32_t nicEventsError;
volatile u_int32_t nicEventsMCastListUpdated;
volatile u_int32_t nicEventsResetJumboRing;
volatile u_int32_t nicRingSetSendProdIndex;
volatile u_int32_t nicRingSetSendConsIndex;
volatile u_int32_t nicRingSetRecvReturnProdIndex;
volatile u_int32_t nicInterrupts;
volatile u_int32_t nicAvoidedInterrupts;
volatile u_int32_t nicEventThresholdHit;
volatile u_int32_t nicSendThresholdHit;
volatile u_int32_t nicRecvThresholdHit;
volatile u_int32_t nicDmaRdOverrun;
volatile u_int32_t nicDmaRdUnderrun;
volatile u_int32_t nicDmaWrOverrun;
volatile u_int32_t nicDmaWrUnderrun;
volatile u_int32_t nicDmaWrMasterAborts;
volatile u_int32_t nicDmaRdMasterAborts;
volatile u_int32_t nicDmaWriteRingFull;
volatile u_int32_t nicDmaReadRingFull;
volatile u_int32_t nicEventRingFull;
volatile u_int32_t nicEventProducerRingFull;
volatile u_int32_t nicTxMacDescrRingFull;
volatile u_int32_t nicOutOfTxBufSpaceFrameRetry;
volatile u_int32_t nicNoMoreWrDMADescriptors;
volatile u_int32_t nicNoMoreRxBDs;
volatile u_int32_t nicNoSpaceInReturnRing;
volatile u_int32_t nicSendBDs;
volatile u_int32_t nicRecvBDs;
volatile u_int32_t nicJumboRecvBDs;
volatile u_int32_t nicMiniRecvBDs;
volatile u_int32_t nicTotalRecvBDs;
volatile u_int32_t nicTotalSendBDs;
volatile u_int32_t nicJumboSpillOver;
volatile u_int32_t nicSbusHangCleared;
volatile u_int32_t nicEnqEventDelayed;
volatile u_int32_t nicMacRxLateColls;
volatile u_int32_t nicMacRxLinkLostDuringPkt;
volatile u_int32_t nicMacRxPhyDecodeErr;
volatile u_int32_t nicMacRxMacAbort;
volatile u_int32_t nicMacRxTruncNoResources;
volatile u_int32_t nicMacRxDropUla;
volatile u_int32_t nicMacRxDropMcast;
volatile u_int32_t nicMacRxFlowControl;
volatile u_int32_t nicMacRxDropSpace;
volatile u_int32_t nicMacRxColls;
volatile u_int32_t nicMacRxTotalAttns;
volatile u_int32_t nicMacRxLinkAttns;
volatile u_int32_t nicMacRxSyncAttns;
volatile u_int32_t nicMacRxConfigAttns;
volatile u_int32_t nicMacReset;
volatile u_int32_t nicMacRxBufDescrAttns;
volatile u_int32_t nicMacRxBufAttns;
volatile u_int32_t nicMacRxZeroFrameCleanup;
volatile u_int32_t nicMacRxOneFrameCleanup;
volatile u_int32_t nicMacRxMultipleFrameCleanup;
volatile u_int32_t nicMacRxTimerCleanup;
volatile u_int32_t nicMacRxDmaCleanup;
volatile u_int32_t nicMacTxCollisionHistogram[15];
volatile u_int32_t nicMacTxTotalAttns;
volatile u_int32_t nicProfile[32];
u_int32_t pad[75];
};
struct tg_reg {
u_int32_t data;
u_int32_t addr;
};
struct tg_mem {
u_int32_t tgAddr;
caddr_t userAddr;
int len;
};
typedef enum {
TI_PARAM_NONE = 0x00,
TI_PARAM_STAT_TICKS = 0x01,
TI_PARAM_RX_COAL_TICKS = 0x02,
TI_PARAM_TX_COAL_TICKS = 0x04,
TI_PARAM_RX_COAL_BDS = 0x08,
TI_PARAM_TX_COAL_BDS = 0x10,
TI_PARAM_TX_BUF_RATIO = 0x20,
TI_PARAM_ALL = 0x2f
} ti_param_mask;
struct ti_params {
u_int32_t ti_stat_ticks;
u_int32_t ti_rx_coal_ticks;
u_int32_t ti_tx_coal_ticks;
u_int32_t ti_rx_max_coal_bds;
u_int32_t ti_tx_max_coal_bds;
u_int32_t ti_tx_buf_ratio;
ti_param_mask param_mask;
};
typedef enum {
TI_TRACE_TYPE_NONE = 0x00000000,
TI_TRACE_TYPE_SEND = 0x00000001,
TI_TRACE_TYPE_RECV = 0x00000002,
TI_TRACE_TYPE_DMA = 0x00000004,
TI_TRACE_TYPE_EVENT = 0x00000008,
TI_TRACE_TYPE_COMMAND = 0x00000010,
TI_TRACE_TYPE_MAC = 0x00000020,
TI_TRACE_TYPE_STATS = 0x00000040,
TI_TRACE_TYPE_TIMER = 0x00000080,
TI_TRACE_TYPE_DISP = 0x00000100,
TI_TRACE_TYPE_MAILBOX = 0x00000200,
TI_TRACE_TYPE_RECV_BD = 0x00000400,
TI_TRACE_TYPE_LNK_PHY = 0x00000800,
TI_TRACE_TYPE_LNK_NEG = 0x00001000,
TI_TRACE_LEVEL_1 = 0x10000000,
TI_TRACE_LEVEL_2 = 0x20000000
} ti_trace_type;
struct ti_trace_buf {
u_long *buf;
int buf_len;
int fill_len;
u_long cur_trace_ptr;
};
#define TIIOCGETSTATS _IOR('T', 1, struct ti_stats)
#define TIIOCGETPARAMS _IOR('T', 2, struct ti_params)
#define TIIOCSETPARAMS _IOW('T', 3, struct ti_params)
#define TIIOCSETTRACE _IOW('T', 11, ti_trace_type)
#define TIIOCGETTRACE _IOWR('T', 12, struct ti_trace_buf)
#define ALT_ATTACH _IO('a', 7)
#define ALT_READ_TG_MEM _IOWR('a', 10, struct tg_mem)
#define ALT_WRITE_TG_MEM _IOWR('a', 11, struct tg_mem)
#define ALT_READ_TG_REG _IOWR('a', 12, struct tg_reg)
#define ALT_WRITE_TG_REG _IOWR('a', 13, struct tg_reg)
#endif