/* * Copyright (c) 1996, 2003 VIA Networking Technologies, Inc. * All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * * File: mib.h * * Purpose: Implement MIB Data Structure * * Author: Tevin Chen * * Date: May 21, 1996 * */ #ifndef __MIB_H__ #define __MIB_H__ #include "ttype.h" #include "tether.h" #include "desc.h" /*--------------------- Export Definitions -------------------------*/ // // 802.11 counter // typedef struct tagSDot11Counters { unsigned long Length; // Length of structure unsigned long long TransmittedFragmentCount; unsigned long long MulticastTransmittedFrameCount; unsigned long long FailedCount; unsigned long long RetryCount; unsigned long long MultipleRetryCount; unsigned long long RTSSuccessCount; unsigned long long RTSFailureCount; unsigned long long ACKFailureCount; unsigned long long FrameDuplicateCount; unsigned long long ReceivedFragmentCount; unsigned long long MulticastReceivedFrameCount; unsigned long long FCSErrorCount; unsigned long long TKIPLocalMICFailures; unsigned long long TKIPRemoteMICFailures; unsigned long long TKIPICVErrors; unsigned long long TKIPCounterMeasuresInvoked; unsigned long long TKIPReplays; unsigned long long CCMPFormatErrors; unsigned long long CCMPReplays; unsigned long long CCMPDecryptErrors; unsigned long long FourWayHandshakeFailures; // unsigned long long WEPUndecryptableCount; // unsigned long long WEPICVErrorCount; // unsigned long long DecryptSuccessCount; // unsigned long long DecryptFailureCount; } SDot11Counters, *PSDot11Counters; // // MIB2 counter // typedef struct tagSMib2Counter { long ifIndex; char ifDescr[256]; // max size 255 plus zero ending // e.g. "interface 1" long ifType; long ifMtu; unsigned long ifSpeed; unsigned char ifPhysAddress[ETH_ALEN]; long ifAdminStatus; long ifOperStatus; unsigned long ifLastChange; unsigned long ifInOctets; unsigned long ifInUcastPkts; unsigned long ifInNUcastPkts; unsigned long ifInDiscards; unsigned long ifInErrors; unsigned long ifInUnknownProtos; unsigned long ifOutOctets; unsigned long ifOutUcastPkts; unsigned long ifOutNUcastPkts; unsigned long ifOutDiscards; unsigned long ifOutErrors; unsigned long ifOutQLen; unsigned long ifSpecific; } SMib2Counter, *PSMib2Counter; // Value in the ifType entry #define WIRELESSLANIEEE80211b 6 // // Value in the ifAdminStatus/ifOperStatus entry #define UP 1 // #define DOWN 2 // #define TESTING 3 // // // RMON counter // typedef struct tagSRmonCounter { long etherStatsIndex; unsigned long etherStatsDataSource; unsigned long etherStatsDropEvents; unsigned long etherStatsOctets; unsigned long etherStatsPkts; unsigned long etherStatsBroadcastPkts; unsigned long etherStatsMulticastPkts; unsigned long etherStatsCRCAlignErrors; unsigned long etherStatsUndersizePkts; unsigned long etherStatsOversizePkts; unsigned long etherStatsFragments; unsigned long etherStatsJabbers; unsigned long etherStatsCollisions; unsigned long etherStatsPkt64Octets; unsigned long etherStatsPkt65to127Octets; unsigned long etherStatsPkt128to255Octets; unsigned long etherStatsPkt256to511Octets; unsigned long etherStatsPkt512to1023Octets; unsigned long etherStatsPkt1024to1518Octets; unsigned long etherStatsOwners; unsigned long etherStatsStatus; } SRmonCounter, *PSRmonCounter; // // Custom counter // typedef struct tagSCustomCounters { unsigned long Length; unsigned long long ullTsrAllOK; unsigned long long ullRsr11M; unsigned long long ullRsr5M; unsigned long long ullRsr2M; unsigned long long ullRsr1M; unsigned long long ullRsr11MCRCOk; unsigned long long ullRsr5MCRCOk; unsigned long long ullRsr2MCRCOk; unsigned long long ullRsr1MCRCOk; unsigned long long ullRsr54M; unsigned long long ullRsr48M; unsigned long long ullRsr36M; unsigned long long ullRsr24M; unsigned long long ullRsr18M; unsigned long long ullRsr12M; unsigned long long ullRsr9M; unsigned long long ullRsr6M; unsigned long long ullRsr54MCRCOk; unsigned long long ullRsr48MCRCOk; unsigned long long ullRsr36MCRCOk; unsigned long long ullRsr24MCRCOk; unsigned long long ullRsr18MCRCOk; unsigned long long ullRsr12MCRCOk; unsigned long long ullRsr9MCRCOk; unsigned long long ullRsr6MCRCOk; } SCustomCounters, *PSCustomCounters; // // Custom counter // typedef struct tagSISRCounters { unsigned long Length; unsigned long dwIsrTx0OK; unsigned long dwIsrAC0TxOK; unsigned long dwIsrBeaconTxOK; unsigned long dwIsrRx0OK; unsigned long dwIsrTBTTInt; unsigned long dwIsrSTIMERInt; unsigned long dwIsrWatchDog; unsigned long dwIsrUnrecoverableError; unsigned long dwIsrSoftInterrupt; unsigned long dwIsrMIBNearfull; unsigned long dwIsrRxNoBuf; unsigned long dwIsrUnknown; // unknown interrupt count unsigned long dwIsrRx1OK; unsigned long dwIsrATIMTxOK; unsigned long dwIsrSYNCTxOK; unsigned long dwIsrCFPEnd; unsigned long dwIsrATIMEnd; unsigned long dwIsrSYNCFlushOK; unsigned long dwIsrSTIMER1Int; ///////////////////////////////////// } SISRCounters, *PSISRCounters; // Value in the etherStatsStatus entry #define VALID 1 // #define CREATE_REQUEST 2 // #define UNDER_CREATION 3 // #define INVALID 4 // // // statistic counter // typedef struct tagSStatCounter { // // ISR status count // // RSR status count // unsigned long dwRsrFrmAlgnErr; unsigned long dwRsrErr; unsigned long dwRsrCRCErr; unsigned long dwRsrCRCOk; unsigned long dwRsrBSSIDOk; unsigned long dwRsrADDROk; unsigned long dwRsrBCNSSIDOk; unsigned long dwRsrLENErr; unsigned long dwRsrTYPErr; unsigned long dwNewRsrDECRYPTOK; unsigned long dwNewRsrCFP; unsigned long dwNewRsrUTSF; unsigned long dwNewRsrHITAID; unsigned long dwNewRsrHITAID0; unsigned long dwRsrLong; unsigned long dwRsrRunt; unsigned long dwRsrRxControl; unsigned long dwRsrRxData; unsigned long dwRsrRxManage; unsigned long dwRsrRxPacket; unsigned long dwRsrRxOctet; unsigned long dwRsrBroadcast; unsigned long dwRsrMulticast; unsigned long dwRsrDirected; // 64-bit OID unsigned long long ullRsrOK; // for some optional OIDs (64 bits) and DMI support unsigned long long ullRxBroadcastBytes; unsigned long long ullRxMulticastBytes; unsigned long long ullRxDirectedBytes; unsigned long long ullRxBroadcastFrames; unsigned long long ullRxMulticastFrames; unsigned long long ullRxDirectedFrames; unsigned long dwRsrRxFragment; unsigned long dwRsrRxFrmLen64; unsigned long dwRsrRxFrmLen65_127; unsigned long dwRsrRxFrmLen128_255; unsigned long dwRsrRxFrmLen256_511; unsigned long dwRsrRxFrmLen512_1023; unsigned long dwRsrRxFrmLen1024_1518; // TSR status count // unsigned long dwTsrTotalRetry[TYPE_MAXTD]; // total collision retry count unsigned long dwTsrOnceRetry[TYPE_MAXTD]; // this packet only occur one collision unsigned long dwTsrMoreThanOnceRetry[TYPE_MAXTD]; // this packet occur more than one collision unsigned long dwTsrRetry[TYPE_MAXTD]; // this packet has ever occur collision, // that is (dwTsrOnceCollision0 + dwTsrMoreThanOnceCollision0) unsigned long dwTsrACKData[TYPE_MAXTD]; unsigned long dwTsrErr[TYPE_MAXTD]; unsigned long dwAllTsrOK[TYPE_MAXTD]; unsigned long dwTsrRetryTimeout[TYPE_MAXTD]; unsigned long dwTsrTransmitTimeout[TYPE_MAXTD]; unsigned long dwTsrTxPacket[TYPE_MAXTD]; unsigned long dwTsrTxOctet[TYPE_MAXTD]; unsigned long dwTsrBroadcast[TYPE_MAXTD]; unsigned long dwTsrMulticast[TYPE_MAXTD]; unsigned long dwTsrDirected[TYPE_MAXTD]; // RD/TD count unsigned long dwCntRxFrmLength; unsigned long dwCntTxBufLength; unsigned char abyCntRxPattern[16]; unsigned char abyCntTxPattern[16]; // Software check.... unsigned long dwCntRxDataErr; // rx buffer data software compare CRC err count unsigned long dwCntDecryptErr; // rx buffer data software compare CRC err count unsigned long dwCntRxICVErr; // rx buffer data software compare CRC err count unsigned int idxRxErrorDesc[TYPE_MAXRD]; // index for rx data error RD // 64-bit OID unsigned long long ullTsrOK[TYPE_MAXTD]; // for some optional OIDs (64 bits) and DMI support unsigned long long ullTxBroadcastFrames[TYPE_MAXTD]; unsigned long long ullTxMulticastFrames[TYPE_MAXTD]; unsigned long long ullTxDirectedFrames[TYPE_MAXTD]; unsigned long long ullTxBroadcastBytes[TYPE_MAXTD]; unsigned long long ullTxMulticastBytes[TYPE_MAXTD]; unsigned long long ullTxDirectedBytes[TYPE_MAXTD]; // unsigned long dwTxRetryCount[8]; // // ISR status count // SISRCounters ISRStat; SCustomCounters CustomStat; #ifdef Calcu_LinkQual //Tx count: unsigned long TxNoRetryOkCount; //success tx no retry ! unsigned long TxRetryOkCount; //success tx but retry ! unsigned long TxFailCount; //fail tx ? //Rx count: unsigned long RxOkCnt; //success rx ! unsigned long RxFcsErrCnt; //fail rx ? //statistic unsigned long SignalStren; unsigned long LinkQuality; #endif } SStatCounter, *PSStatCounter; /*--------------------- Export Classes ----------------------------*/ /*--------------------- Export Variables --------------------------*/ /*--------------------- Export Functions --------------------------*/ void STAvClearAllCounter(PSStatCounter pStatistic); void STAvUpdateIsrStatCounter(PSStatCounter pStatistic, unsigned long dwIsr); void STAvUpdateRDStatCounter(PSStatCounter pStatistic, unsigned char byRSR, unsigned char byNewRSR, unsigned char byRxRate, unsigned char *pbyBuffer, unsigned int cbFrameLength); void STAvUpdateRDStatCounterEx(PSStatCounter pStatistic, unsigned char byRSR, unsigned char byNewRsr, unsigned char byRxRate, unsigned char *pbyBuffer, unsigned int cbFrameLength); void STAvUpdateTDStatCounter(PSStatCounter pStatistic, unsigned char byTSR0, unsigned char byTSR1, unsigned char *pbyBuffer, unsigned int cbFrameLength, unsigned int uIdx); void STAvUpdateTDStatCounterEx( PSStatCounter pStatistic, unsigned char *pbyBuffer, unsigned long cbFrameLength ); void STAvUpdate802_11Counter( PSDot11Counters p802_11Counter, PSStatCounter pStatistic, unsigned long dwCounter ); void STAvClear802_11Counter(PSDot11Counters p802_11Counter); #endif // __MIB_H__