blob: ac996d2cd91134aafeed1a3c5eb25217dab1f50a [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 {
// ULONG Length; // Length of structure
ULONGLONG TransmittedFragmentCount;
ULONGLONG MulticastTransmittedFrameCount;
ULONGLONG FailedCount;
ULONGLONG RetryCount;
ULONGLONG MultipleRetryCount;
ULONGLONG RTSSuccessCount;
ULONGLONG RTSFailureCount;
ULONGLONG ACKFailureCount;
ULONGLONG FrameDuplicateCount;
ULONGLONG ReceivedFragmentCount;
ULONGLONG MulticastReceivedFrameCount;
ULONGLONG FCSErrorCount;
ULONGLONG TKIPLocalMICFailures;
ULONGLONG TKIPRemoteMICFailures;
ULONGLONG TKIPICVErrors;
ULONGLONG TKIPCounterMeasuresInvoked;
ULONGLONG TKIPReplays;
ULONGLONG CCMPFormatErrors;
ULONGLONG CCMPReplays;
ULONGLONG CCMPDecryptErrors;
ULONGLONG FourWayHandshakeFailures;
// ULONGLONG WEPUndecryptableCount;
// ULONGLONG WEPICVErrorCount;
// ULONGLONG DecryptSuccessCount;
// ULONGLONG 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;
DWORD ifSpeed;
BYTE ifPhysAddress[U_ETHER_ADDR_LEN];
LONG ifAdminStatus;
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 {
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 {
ULONG Length;
ULONGLONG ullTsrAllOK;
ULONGLONG ullRsr11M;
ULONGLONG ullRsr5M;
ULONGLONG ullRsr2M;
ULONGLONG ullRsr1M;
ULONGLONG ullRsr11MCRCOk;
ULONGLONG ullRsr5MCRCOk;
ULONGLONG ullRsr2MCRCOk;
ULONGLONG ullRsr1MCRCOk;
ULONGLONG ullRsr54M;
ULONGLONG ullRsr48M;
ULONGLONG ullRsr36M;
ULONGLONG ullRsr24M;
ULONGLONG ullRsr18M;
ULONGLONG ullRsr12M;
ULONGLONG ullRsr9M;
ULONGLONG ullRsr6M;
ULONGLONG ullRsr54MCRCOk;
ULONGLONG ullRsr48MCRCOk;
ULONGLONG ullRsr36MCRCOk;
ULONGLONG ullRsr24MCRCOk;
ULONGLONG ullRsr18MCRCOk;
ULONGLONG ullRsr12MCRCOk;
ULONGLONG ullRsr9MCRCOk;
ULONGLONG ullRsr6MCRCOk;
} SCustomCounters, *PSCustomCounters;
//
// Custom counter
//
typedef struct tagSISRCounters {
ULONG 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[U_ETHER_ADDR_LEN];
} 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
ULONGLONG ullRsrOK;
// for some optional OIDs (64 bits) and DMI support
ULONGLONG ullRxBroadcastBytes;
ULONGLONG ullRxMulticastBytes;
ULONGLONG ullRxDirectedBytes;
ULONGLONG ullRxBroadcastFrames;
ULONGLONG ullRxMulticastFrames;
ULONGLONG 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
ULONGLONG ullTsrOK;
// for some optional OIDs (64 bits) and DMI support
ULONGLONG ullTxBroadcastFrames;
ULONGLONG ullTxMulticastFrames;
ULONGLONG ullTxDirectedFrames;
ULONGLONG ullTxBroadcastBytes;
ULONGLONG ullTxMulticastBytes;
ULONGLONG 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:
ULONG TxNoRetryOkCount; //success tx no retry !
ULONG TxRetryOkCount; //success tx but retry !
ULONG TxFailCount; //fail tx ?
//Rx count:
ULONG RxOkCnt; //success rx !
ULONG RxFcsErrCnt; //fail rx ?
//statistic
ULONG SignalStren;
ULONG 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, UINT cbFrameLength);
void STAvUpdateRDStatCounterEx(PSStatCounter pStatistic,
BYTE byRSR, BYTE byNewRSR, BYTE byRxSts, BYTE byRxRate,
PBYTE pbyBuffer, UINT 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__