/* * 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 "tether.h" #include "desc.h" // // USB counter // typedef struct tagSUSBCounter { u32 dwCrc; } SUSBCounter, *PSUSBCounter; // // 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 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 { signed long ifIndex; char ifDescr[256]; // max size 255 plus zero ending // e.g. "interface 1" signed long ifType; signed long ifMtu; u32 ifSpeed; u8 ifPhysAddress[ETH_ALEN]; signed long ifAdminStatus; signed long ifOperStatus; u32 ifLastChange; u32 ifInOctets; u32 ifInUcastPkts; u32 ifInNUcastPkts; u32 ifInDiscards; u32 ifInErrors; u32 ifInUnknownProtos; u32 ifOutOctets; u32 ifOutUcastPkts; u32 ifOutNUcastPkts; u32 ifOutDiscards; u32 ifOutErrors; u32 ifOutQLen; u32 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 { signed long etherStatsIndex; u32 etherStatsDataSource; u32 etherStatsDropEvents; u32 etherStatsOctets; u32 etherStatsPkts; u32 etherStatsBroadcastPkts; u32 etherStatsMulticastPkts; u32 etherStatsCRCAlignErrors; u32 etherStatsUndersizePkts; u32 etherStatsOversizePkts; u32 etherStatsFragments; u32 etherStatsJabbers; u32 etherStatsCollisions; u32 etherStatsPkt64Octets; u32 etherStatsPkt65to127Octets; u32 etherStatsPkt128to255Octets; u32 etherStatsPkt256to511Octets; u32 etherStatsPkt512to1023Octets; u32 etherStatsPkt1024to1518Octets; u32 etherStatsOwners; u32 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; u32 dwIsrTx0OK; u32 dwIsrAC0TxOK; u32 dwIsrBeaconTxOK; u32 dwIsrRx0OK; u32 dwIsrTBTTInt; u32 dwIsrSTIMERInt; u32 dwIsrWatchDog; u32 dwIsrUnrecoverableError; u32 dwIsrSoftInterrupt; u32 dwIsrMIBNearfull; u32 dwIsrRxNoBuf; u32 dwIsrUnknown; // unknown interrupt count u32 dwIsrRx1OK; u32 dwIsrATIMTxOK; u32 dwIsrSYNCTxOK; u32 dwIsrCFPEnd; u32 dwIsrATIMEnd; u32 dwIsrSYNCFlushOK; u32 dwIsrSTIMER1Int; ///////////////////////////////////// } SISRCounters, *PSISRCounters; // Value in the etherStatsStatus entry #define VALID 1 // #define CREATE_REQUEST 2 // #define UNDER_CREATION 3 // #define INVALID 4 // // // Tx packet information // typedef struct tagSTxPktInfo { u8 byBroadMultiUni; u16 wLength; u16 wFIFOCtl; u8 abyDestAddr[ETH_ALEN]; } STxPktInfo, *PSTxPktInfo; #define MAX_RATE 12 // // statistic counter // typedef struct tagSStatCounter { // // ISR status count // SISRCounters ISRStat; // RSR status count // u32 dwRsrFrmAlgnErr; u32 dwRsrErr; u32 dwRsrCRCErr; u32 dwRsrCRCOk; u32 dwRsrBSSIDOk; u32 dwRsrADDROk; u32 dwRsrBCNSSIDOk; u32 dwRsrLENErr; u32 dwRsrTYPErr; u32 dwNewRsrDECRYPTOK; u32 dwNewRsrCFP; u32 dwNewRsrUTSF; u32 dwNewRsrHITAID; u32 dwNewRsrHITAID0; u32 dwRsrLong; u32 dwRsrRunt; u32 dwRsrRxControl; u32 dwRsrRxData; u32 dwRsrRxManage; u32 dwRsrRxPacket; u32 dwRsrRxOctet; u32 dwRsrBroadcast; u32 dwRsrMulticast; u32 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; u32 dwRsrRxFragment; u32 dwRsrRxFrmLen64; u32 dwRsrRxFrmLen65_127; u32 dwRsrRxFrmLen128_255; u32 dwRsrRxFrmLen256_511; u32 dwRsrRxFrmLen512_1023; u32 dwRsrRxFrmLen1024_1518; // TSR status count // u32 dwTsrTotalRetry; // total collision retry count u32 dwTsrOnceRetry; // this packet only occur one collision u32 dwTsrMoreThanOnceRetry; // this packet occur more than one collision u32 dwTsrRetry; // this packet has ever occur collision, // that is (dwTsrOnceCollision0 + dwTsrMoreThanOnceCollision0) u32 dwTsrACKData; u32 dwTsrErr; u32 dwAllTsrOK; u32 dwTsrRetryTimeout; u32 dwTsrTransmitTimeout; u32 dwTsrTxPacket; u32 dwTsrTxOctet; u32 dwTsrBroadcast; u32 dwTsrMulticast; u32 dwTsrDirected; // RD/TD count u32 dwCntRxFrmLength; u32 dwCntTxBufLength; u8 abyCntRxPattern[16]; u8 abyCntTxPattern[16]; // Software check.... u32 dwCntRxDataErr; // rx buffer data software compare CRC err count u32 dwCntDecryptErr; // rx buffer data software compare CRC err count u32 dwCntRxICVErr; // rx buffer data software compare CRC err count // 64-bit OID unsigned long long ullTsrOK; // for some optional OIDs (64 bits) and DMI support unsigned long long ullTxBroadcastFrames; unsigned long long ullTxMulticastFrames; unsigned long long ullTxDirectedFrames; unsigned long long ullTxBroadcastBytes; unsigned long long ullTxMulticastBytes; unsigned long long ullTxDirectedBytes; // for autorate u32 dwTxOk[MAX_RATE+1]; u32 dwTxFail[MAX_RATE+1]; u32 dwTxRetryCount[8]; STxPktInfo abyTxPktInfo[16]; SUSBCounter USB_EP0Stat; SUSBCounter USB_BulkInStat; SUSBCounter USB_BulkOutStat; SUSBCounter USB_InterruptStat; SCustomCounters CustomStat; //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; } SStatCounter, *PSStatCounter; void STAvUpdateIsrStatCounter(PSStatCounter pStatistic, u8 byIsr0, u8 byIsr1); void STAvUpdateRDStatCounter(PSStatCounter pStatistic, u8 byRSR, u8 byNewRSR, u8 byRxSts, u8 byRxRate, u8 * pbyBuffer, unsigned int cbFrameLength); void STAvUpdateTDStatCounter(PSStatCounter pStatistic, u8 byPktNum, u8 byRate, u8 byTSR); void STAvUpdate802_11Counter( PSDot11Counters p802_11Counter, PSStatCounter pStatistic, u8 byRTSSuccess, u8 byRTSFail, u8 byACKFail, u8 byFCSErr ); void STAvUpdateUSBCounter(PSUSBCounter pUsbCounter, int ntStatus); #endif /* __MIB_H__ */