1/* 2 * Copyright (c) 1996, 2003 VIA Networking Technologies, Inc. 3 * All rights reserved. 4 * 5 * This program is free software; you can redistribute it and/or modify 6 * it under the terms of the GNU General Public License as published by 7 * the Free Software Foundation; either version 2 of the License, or 8 * (at your option) any later version. 9 * 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 * 15 * You should have received a copy of the GNU General Public License along 16 * with this program; if not, write to the Free Software Foundation, Inc., 17 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * File: mib.h 20 * 21 * Purpose: Implement MIB Data Structure 22 * 23 * Author: Tevin Chen 24 * 25 * Date: May 21, 1996 26 * 27 */ 28 29#ifndef __MIB_H__ 30#define __MIB_H__ 31 32#include "ttype.h" 33#include "tether.h" 34#include "desc.h" 35 36/*--------------------- Export Definitions -------------------------*/ 37// 38// 802.11 counter 39// 40 41typedef struct tagSDot11Counters { 42 unsigned long Length; // Length of structure 43 unsigned long long TransmittedFragmentCount; 44 unsigned long long MulticastTransmittedFrameCount; 45 unsigned long long FailedCount; 46 unsigned long long RetryCount; 47 unsigned long long MultipleRetryCount; 48 unsigned long long RTSSuccessCount; 49 unsigned long long RTSFailureCount; 50 unsigned long long ACKFailureCount; 51 unsigned long long FrameDuplicateCount; 52 unsigned long long ReceivedFragmentCount; 53 unsigned long long MulticastReceivedFrameCount; 54 unsigned long long FCSErrorCount; 55 unsigned long long TKIPLocalMICFailures; 56 unsigned long long TKIPRemoteMICFailures; 57 unsigned long long TKIPICVErrors; 58 unsigned long long TKIPCounterMeasuresInvoked; 59 unsigned long long TKIPReplays; 60 unsigned long long CCMPFormatErrors; 61 unsigned long long CCMPReplays; 62 unsigned long long CCMPDecryptErrors; 63 unsigned long long FourWayHandshakeFailures; 64// unsigned long long WEPUndecryptableCount; 65// unsigned long long WEPICVErrorCount; 66// unsigned long long DecryptSuccessCount; 67// unsigned long long DecryptFailureCount; 68} SDot11Counters, *PSDot11Counters; 69 70 71// 72// MIB2 counter 73// 74typedef struct tagSMib2Counter { 75 long ifIndex; 76 char ifDescr[256]; // max size 255 plus zero ending 77 // e.g. "interface 1" 78 long ifType; 79 long ifMtu; 80 unsigned long ifSpeed; 81 unsigned char ifPhysAddress[ETH_ALEN]; 82 long ifAdminStatus; 83 long ifOperStatus; 84 unsigned long ifLastChange; 85 unsigned long ifInOctets; 86 unsigned long ifInUcastPkts; 87 unsigned long ifInNUcastPkts; 88 unsigned long ifInDiscards; 89 unsigned long ifInErrors; 90 unsigned long ifInUnknownProtos; 91 unsigned long ifOutOctets; 92 unsigned long ifOutUcastPkts; 93 unsigned long ifOutNUcastPkts; 94 unsigned long ifOutDiscards; 95 unsigned long ifOutErrors; 96 unsigned long ifOutQLen; 97 unsigned long ifSpecific; 98} SMib2Counter, *PSMib2Counter; 99 100// Value in the ifType entry 101//#define ETHERNETCSMACD 6 // 102#define WIRELESSLANIEEE80211b 6 // 103 104// Value in the ifAdminStatus/ifOperStatus entry 105#define UP 1 // 106#define DOWN 2 // 107#define TESTING 3 // 108 109 110// 111// RMON counter 112// 113typedef struct tagSRmonCounter { 114 long etherStatsIndex; 115 unsigned long etherStatsDataSource; 116 unsigned long etherStatsDropEvents; 117 unsigned long etherStatsOctets; 118 unsigned long etherStatsPkts; 119 unsigned long etherStatsBroadcastPkts; 120 unsigned long etherStatsMulticastPkts; 121 unsigned long etherStatsCRCAlignErrors; 122 unsigned long etherStatsUndersizePkts; 123 unsigned long etherStatsOversizePkts; 124 unsigned long etherStatsFragments; 125 unsigned long etherStatsJabbers; 126 unsigned long etherStatsCollisions; 127 unsigned long etherStatsPkt64Octets; 128 unsigned long etherStatsPkt65to127Octets; 129 unsigned long etherStatsPkt128to255Octets; 130 unsigned long etherStatsPkt256to511Octets; 131 unsigned long etherStatsPkt512to1023Octets; 132 unsigned long etherStatsPkt1024to1518Octets; 133 unsigned long etherStatsOwners; 134 unsigned long etherStatsStatus; 135} SRmonCounter, *PSRmonCounter; 136 137// 138// Custom counter 139// 140typedef struct tagSCustomCounters { 141 unsigned long Length; 142 143 unsigned long long ullTsrAllOK; 144 145 unsigned long long ullRsr11M; 146 unsigned long long ullRsr5M; 147 unsigned long long ullRsr2M; 148 unsigned long long ullRsr1M; 149 150 unsigned long long ullRsr11MCRCOk; 151 unsigned long long ullRsr5MCRCOk; 152 unsigned long long ullRsr2MCRCOk; 153 unsigned long long ullRsr1MCRCOk; 154 155 unsigned long long ullRsr54M; 156 unsigned long long ullRsr48M; 157 unsigned long long ullRsr36M; 158 unsigned long long ullRsr24M; 159 unsigned long long ullRsr18M; 160 unsigned long long ullRsr12M; 161 unsigned long long ullRsr9M; 162 unsigned long long ullRsr6M; 163 164 unsigned long long ullRsr54MCRCOk; 165 unsigned long long ullRsr48MCRCOk; 166 unsigned long long ullRsr36MCRCOk; 167 unsigned long long ullRsr24MCRCOk; 168 unsigned long long ullRsr18MCRCOk; 169 unsigned long long ullRsr12MCRCOk; 170 unsigned long long ullRsr9MCRCOk; 171 unsigned long long ullRsr6MCRCOk; 172 173} SCustomCounters, *PSCustomCounters; 174 175 176// 177// Custom counter 178// 179typedef struct tagSISRCounters { 180 unsigned long Length; 181 182 unsigned long dwIsrTx0OK; 183 unsigned long dwIsrAC0TxOK; 184 unsigned long dwIsrBeaconTxOK; 185 unsigned long dwIsrRx0OK; 186 unsigned long dwIsrTBTTInt; 187 unsigned long dwIsrSTIMERInt; 188 unsigned long dwIsrWatchDog; 189 unsigned long dwIsrUnrecoverableError; 190 unsigned long dwIsrSoftInterrupt; 191 unsigned long dwIsrMIBNearfull; 192 unsigned long dwIsrRxNoBuf; 193 194 unsigned long dwIsrUnknown; // unknown interrupt count 195 196 unsigned long dwIsrRx1OK; 197 unsigned long dwIsrATIMTxOK; 198 unsigned long dwIsrSYNCTxOK; 199 unsigned long dwIsrCFPEnd; 200 unsigned long dwIsrATIMEnd; 201 unsigned long dwIsrSYNCFlushOK; 202 unsigned long dwIsrSTIMER1Int; 203 ///////////////////////////////////// 204} SISRCounters, *PSISRCounters; 205 206 207// Value in the etherStatsStatus entry 208#define VALID 1 // 209#define CREATE_REQUEST 2 // 210#define UNDER_CREATION 3 // 211#define INVALID 4 // 212 213//#define MAX_RATE 12 214// 215// statistic counter 216// 217typedef struct tagSStatCounter { 218 // 219 // ISR status count 220 // 221 222 223 // RSR status count 224 // 225 unsigned long dwRsrFrmAlgnErr; 226 unsigned long dwRsrErr; 227 unsigned long dwRsrCRCErr; 228 unsigned long dwRsrCRCOk; 229 unsigned long dwRsrBSSIDOk; 230 unsigned long dwRsrADDROk; 231 unsigned long dwRsrBCNSSIDOk; 232 unsigned long dwRsrLENErr; 233 unsigned long dwRsrTYPErr; 234 235 unsigned long dwNewRsrDECRYPTOK; 236 unsigned long dwNewRsrCFP; 237 unsigned long dwNewRsrUTSF; 238 unsigned long dwNewRsrHITAID; 239 unsigned long dwNewRsrHITAID0; 240 241 unsigned long dwRsrLong; 242 unsigned long dwRsrRunt; 243 244 unsigned long dwRsrRxControl; 245 unsigned long dwRsrRxData; 246 unsigned long dwRsrRxManage; 247 248 unsigned long dwRsrRxPacket; 249 unsigned long dwRsrRxOctet; 250 unsigned long dwRsrBroadcast; 251 unsigned long dwRsrMulticast; 252 unsigned long dwRsrDirected; 253 // 64-bit OID 254 unsigned long long ullRsrOK; 255 256 // for some optional OIDs (64 bits) and DMI support 257 unsigned long long ullRxBroadcastBytes; 258 unsigned long long ullRxMulticastBytes; 259 unsigned long long ullRxDirectedBytes; 260 unsigned long long ullRxBroadcastFrames; 261 unsigned long long ullRxMulticastFrames; 262 unsigned long long ullRxDirectedFrames; 263 264 unsigned long dwRsrRxFragment; 265 unsigned long dwRsrRxFrmLen64; 266 unsigned long dwRsrRxFrmLen65_127; 267 unsigned long dwRsrRxFrmLen128_255; 268 unsigned long dwRsrRxFrmLen256_511; 269 unsigned long dwRsrRxFrmLen512_1023; 270 unsigned long dwRsrRxFrmLen1024_1518; 271 272 // TSR status count 273 // 274 unsigned long dwTsrTotalRetry[TYPE_MAXTD]; // total collision retry count 275 unsigned long dwTsrOnceRetry[TYPE_MAXTD]; // this packet only occur one collision 276 unsigned long dwTsrMoreThanOnceRetry[TYPE_MAXTD]; // this packet occur more than one collision 277 unsigned long dwTsrRetry[TYPE_MAXTD]; // this packet has ever occur collision, 278 // that is (dwTsrOnceCollision0 + dwTsrMoreThanOnceCollision0) 279 unsigned long dwTsrACKData[TYPE_MAXTD]; 280 unsigned long dwTsrErr[TYPE_MAXTD]; 281 unsigned long dwAllTsrOK[TYPE_MAXTD]; 282 unsigned long dwTsrRetryTimeout[TYPE_MAXTD]; 283 unsigned long dwTsrTransmitTimeout[TYPE_MAXTD]; 284 285 unsigned long dwTsrTxPacket[TYPE_MAXTD]; 286 unsigned long dwTsrTxOctet[TYPE_MAXTD]; 287 unsigned long dwTsrBroadcast[TYPE_MAXTD]; 288 unsigned long dwTsrMulticast[TYPE_MAXTD]; 289 unsigned long dwTsrDirected[TYPE_MAXTD]; 290 291 // RD/TD count 292 unsigned long dwCntRxFrmLength; 293 unsigned long dwCntTxBufLength; 294 295 unsigned char abyCntRxPattern[16]; 296 unsigned char abyCntTxPattern[16]; 297 298 299 300 // Software check.... 301 unsigned long dwCntRxDataErr; // rx buffer data software compare CRC err count 302 unsigned long dwCntDecryptErr; // rx buffer data software compare CRC err count 303 unsigned long dwCntRxICVErr; // rx buffer data software compare CRC err count 304 unsigned int idxRxErrorDesc[TYPE_MAXRD]; // index for rx data error RD 305 306 // 64-bit OID 307 unsigned long long ullTsrOK[TYPE_MAXTD]; 308 309 // for some optional OIDs (64 bits) and DMI support 310 unsigned long long ullTxBroadcastFrames[TYPE_MAXTD]; 311 unsigned long long ullTxMulticastFrames[TYPE_MAXTD]; 312 unsigned long long ullTxDirectedFrames[TYPE_MAXTD]; 313 unsigned long long ullTxBroadcastBytes[TYPE_MAXTD]; 314 unsigned long long ullTxMulticastBytes[TYPE_MAXTD]; 315 unsigned long long ullTxDirectedBytes[TYPE_MAXTD]; 316 317// unsigned long dwTxRetryCount[8]; 318 // 319 // ISR status count 320 // 321 SISRCounters ISRStat; 322 323 SCustomCounters CustomStat; 324 325 #ifdef Calcu_LinkQual 326 //Tx count: 327 unsigned long TxNoRetryOkCount; //success tx no retry ! 328 unsigned long TxRetryOkCount; //success tx but retry ! 329 unsigned long TxFailCount; //fail tx ? 330 //Rx count: 331 unsigned long RxOkCnt; //success rx ! 332 unsigned long RxFcsErrCnt; //fail rx ? 333 //statistic 334 unsigned long SignalStren; 335 unsigned long LinkQuality; 336 #endif 337} SStatCounter, *PSStatCounter; 338 339/*--------------------- Export Classes ----------------------------*/ 340 341/*--------------------- Export Variables --------------------------*/ 342 343/*--------------------- Export Functions --------------------------*/ 344 345void STAvClearAllCounter(PSStatCounter pStatistic); 346 347void STAvUpdateIsrStatCounter(PSStatCounter pStatistic, unsigned long dwIsr); 348 349void STAvUpdateRDStatCounter(PSStatCounter pStatistic, 350 unsigned char byRSR, unsigned char byNewRSR, unsigned char byRxRate, 351 unsigned char *pbyBuffer, unsigned int cbFrameLength); 352 353void STAvUpdateRDStatCounterEx(PSStatCounter pStatistic, 354 unsigned char byRSR, unsigned char byNewRsr, unsigned char byRxRate, 355 unsigned char *pbyBuffer, unsigned int cbFrameLength); 356 357void STAvUpdateTDStatCounter(PSStatCounter pStatistic, unsigned char byTSR0, unsigned char byTSR1, 358 unsigned char *pbyBuffer, unsigned int cbFrameLength, unsigned int uIdx); 359 360void STAvUpdateTDStatCounterEx( 361 PSStatCounter pStatistic, 362 unsigned char *pbyBuffer, 363 unsigned long cbFrameLength 364 ); 365 366void STAvUpdate802_11Counter( 367 PSDot11Counters p802_11Counter, 368 PSStatCounter pStatistic, 369 unsigned long dwCounter 370 ); 371 372void STAvClear802_11Counter(PSDot11Counters p802_11Counter); 373 374#endif // __MIB_H__ 375