blob: 0455ec9d327d28bdbbce116999d92ffe02a78ffd [file] [log] [blame]
/*
* 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 -------------------------*/
//
// USB counter
//
typedef struct tagSUSBCounter {
DWORD 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 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 {
signed long ifIndex;
char ifDescr[256]; // max size 255 plus zero ending
// e.g. "interface 1"
signed long ifType;
signed long ifMtu;
DWORD ifSpeed;
BYTE ifPhysAddress[ETH_ALEN];
signed long ifAdminStatus;
signed long ifOperStatus;
DWORD ifLastChange;
DWORD ifInOctets;
DWORD ifInUcastPkts;
DWORD ifInNUcastPkts;
DWORD ifInDiscards;
DWORD ifInErrors;
DWORD ifInUnknownProtos;
DWORD ifOutOctets;
DWORD ifOutUcastPkts;
DWORD ifOutNUcastPkts;
DWORD ifOutDiscards;
DWORD ifOutErrors;
DWORD ifOutQLen;
DWORD ifSpecific;
} SMib2Counter, *PSMib2Counter;
// Value in the ifType entry
//#define ETHERNETCSMACD 6 //
#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;
DWORD etherStatsDataSource;
DWORD etherStatsDropEvents;
DWORD etherStatsOctets;
DWORD etherStatsPkts;
DWORD etherStatsBroadcastPkts;
DWORD etherStatsMulticastPkts;
DWORD etherStatsCRCAlignErrors;
DWORD etherStatsUndersizePkts;
DWORD etherStatsOversizePkts;
DWORD etherStatsFragments;
DWORD etherStatsJabbers;
DWORD etherStatsCollisions;
DWORD etherStatsPkt64Octets;
DWORD etherStatsPkt65to127Octets;
DWORD etherStatsPkt128to255Octets;
DWORD etherStatsPkt256to511Octets;
DWORD etherStatsPkt512to1023Octets;
DWORD etherStatsPkt1024to1518Octets;
DWORD etherStatsOwners;
DWORD 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;
DWORD dwIsrTx0OK;
DWORD dwIsrAC0TxOK;
DWORD dwIsrBeaconTxOK;
DWORD dwIsrRx0OK;
DWORD dwIsrTBTTInt;
DWORD dwIsrSTIMERInt;
DWORD dwIsrWatchDog;
DWORD dwIsrUnrecoverableError;
DWORD dwIsrSoftInterrupt;
DWORD dwIsrMIBNearfull;
DWORD dwIsrRxNoBuf;
DWORD dwIsrUnknown; // unknown interrupt count
DWORD dwIsrRx1OK;
DWORD dwIsrATIMTxOK;
DWORD dwIsrSYNCTxOK;
DWORD dwIsrCFPEnd;
DWORD dwIsrATIMEnd;
DWORD dwIsrSYNCFlushOK;
DWORD 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 {
BYTE byBroadMultiUni;
WORD wLength;
WORD wFIFOCtl;
BYTE abyDestAddr[ETH_ALEN];
} STxPktInfo, *PSTxPktInfo;
#define MAX_RATE 12
//
// statistic counter
//
typedef struct tagSStatCounter {
//
// ISR status count
//
SISRCounters ISRStat;
// RSR status count
//
DWORD dwRsrFrmAlgnErr;
DWORD dwRsrErr;
DWORD dwRsrCRCErr;
DWORD dwRsrCRCOk;
DWORD dwRsrBSSIDOk;
DWORD dwRsrADDROk;
DWORD dwRsrBCNSSIDOk;
DWORD dwRsrLENErr;
DWORD dwRsrTYPErr;
DWORD dwNewRsrDECRYPTOK;
DWORD dwNewRsrCFP;
DWORD dwNewRsrUTSF;
DWORD dwNewRsrHITAID;
DWORD dwNewRsrHITAID0;
DWORD dwRsrLong;
DWORD dwRsrRunt;
DWORD dwRsrRxControl;
DWORD dwRsrRxData;
DWORD dwRsrRxManage;
DWORD dwRsrRxPacket;
DWORD dwRsrRxOctet;
DWORD dwRsrBroadcast;
DWORD dwRsrMulticast;
DWORD 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;
DWORD dwRsrRxFragment;
DWORD dwRsrRxFrmLen64;
DWORD dwRsrRxFrmLen65_127;
DWORD dwRsrRxFrmLen128_255;
DWORD dwRsrRxFrmLen256_511;
DWORD dwRsrRxFrmLen512_1023;
DWORD dwRsrRxFrmLen1024_1518;
// TSR status count
//
DWORD dwTsrTotalRetry; // total collision retry count
DWORD dwTsrOnceRetry; // this packet only occur one collision
DWORD dwTsrMoreThanOnceRetry; // this packet occur more than one collision
DWORD dwTsrRetry; // this packet has ever occur collision,
// that is (dwTsrOnceCollision0 + dwTsrMoreThanOnceCollision0)
DWORD dwTsrACKData;
DWORD dwTsrErr;
DWORD dwAllTsrOK;
DWORD dwTsrRetryTimeout;
DWORD dwTsrTransmitTimeout;
DWORD dwTsrTxPacket;
DWORD dwTsrTxOctet;
DWORD dwTsrBroadcast;
DWORD dwTsrMulticast;
DWORD dwTsrDirected;
// RD/TD count
DWORD dwCntRxFrmLength;
DWORD dwCntTxBufLength;
BYTE abyCntRxPattern[16];
BYTE abyCntTxPattern[16];
// Software check....
DWORD dwCntRxDataErr; // rx buffer data software compare CRC err count
DWORD dwCntDecryptErr; // rx buffer data software compare CRC err count
DWORD 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
DWORD dwTxOk[MAX_RATE+1];
DWORD dwTxFail[MAX_RATE+1];
DWORD dwTxRetryCount[8];
STxPktInfo abyTxPktInfo[16];
SUSBCounter USB_EP0Stat;
SUSBCounter USB_BulkInStat;
SUSBCounter USB_BulkOutStat;
SUSBCounter USB_InterruptStat;
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;
#define NTSTATUS int
/*--------------------- Export Classes ----------------------------*/
/*--------------------- Export Variables --------------------------*/
/*--------------------- Export Functions --------------------------*/
void STAvClearAllCounter(PSStatCounter pStatistic);
void STAvUpdateIsrStatCounter (PSStatCounter pStatistic, BYTE byIsr0, BYTE byIsr1);
void STAvUpdateRDStatCounter(PSStatCounter pStatistic,
BYTE byRSR, BYTE byNewRSR, BYTE byRxSts,
BYTE byRxRate, PBYTE pbyBuffer,
unsigned int cbFrameLength);
void STAvUpdateRDStatCounterEx(PSStatCounter pStatistic,
BYTE byRSR, BYTE byNewRSR, BYTE byRxSts,
BYTE byRxRate, PBYTE pbyBuffer,
unsigned int cbFrameLength);
void
STAvUpdateTDStatCounter (
PSStatCounter pStatistic,
BYTE byPktNum,
BYTE byRate,
BYTE byTSR
);
void
STAvUpdate802_11Counter(
PSDot11Counters p802_11Counter,
PSStatCounter pStatistic,
BYTE byRTSSuccess,
BYTE byRTSFail,
BYTE byACKFail,
BYTE byFCSErr
);
void STAvClear802_11Counter(PSDot11Counters p802_11Counter);
void
STAvUpdateUSBCounter(
PSUSBCounter pUsbCounter,
NTSTATUS ntStatus
);
#endif /* __MIB_H__ */