2 * Copyright (c) 1996, 2003 VIA Networking Technologies, Inc.
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.
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.
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.
21 * Purpose: Implement MIB Data Structure
36 /*--------------------- Export Definitions -------------------------*/
41 typedef 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
;
74 typedef struct tagSMib2Counter
{
76 char ifDescr
[256]; // max size 255 plus zero ending
80 unsigned long ifSpeed
;
81 unsigned char ifPhysAddress
[ETH_ALEN
];
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
;
100 // Value in the ifType entry
101 //#define ETHERNETCSMACD 6 //
102 #define WIRELESSLANIEEE80211b 6 //
104 // Value in the ifAdminStatus/ifOperStatus entry
113 typedef 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
;
140 typedef struct tagSCustomCounters
{
141 unsigned long Length
;
143 unsigned long long ullTsrAllOK
;
145 unsigned long long ullRsr11M
;
146 unsigned long long ullRsr5M
;
147 unsigned long long ullRsr2M
;
148 unsigned long long ullRsr1M
;
150 unsigned long long ullRsr11MCRCOk
;
151 unsigned long long ullRsr5MCRCOk
;
152 unsigned long long ullRsr2MCRCOk
;
153 unsigned long long ullRsr1MCRCOk
;
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
;
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
;
173 } SCustomCounters
, *PSCustomCounters
;
179 typedef struct tagSISRCounters
{
180 unsigned long Length
;
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
;
194 unsigned long dwIsrUnknown
; // unknown interrupt count
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
;
207 // Value in the etherStatsStatus entry
209 #define CREATE_REQUEST 2 //
210 #define UNDER_CREATION 3 //
213 //#define MAX_RATE 12
217 typedef struct tagSStatCounter
{
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
;
235 unsigned long dwNewRsrDECRYPTOK
;
236 unsigned long dwNewRsrCFP
;
237 unsigned long dwNewRsrUTSF
;
238 unsigned long dwNewRsrHITAID
;
239 unsigned long dwNewRsrHITAID0
;
241 unsigned long dwRsrLong
;
242 unsigned long dwRsrRunt
;
244 unsigned long dwRsrRxControl
;
245 unsigned long dwRsrRxData
;
246 unsigned long dwRsrRxManage
;
248 unsigned long dwRsrRxPacket
;
249 unsigned long dwRsrRxOctet
;
250 unsigned long dwRsrBroadcast
;
251 unsigned long dwRsrMulticast
;
252 unsigned long dwRsrDirected
;
254 unsigned long long ullRsrOK
;
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
;
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
;
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
];
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
];
292 unsigned long dwCntRxFrmLength
;
293 unsigned long dwCntTxBufLength
;
295 unsigned char abyCntRxPattern
[16];
296 unsigned char abyCntTxPattern
[16];
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
307 unsigned long long ullTsrOK
[TYPE_MAXTD
];
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
];
317 // unsigned long dwTxRetryCount[8];
321 SISRCounters ISRStat
;
323 SCustomCounters CustomStat
;
325 #ifdef Calcu_LinkQual
327 unsigned long TxNoRetryOkCount
; //success tx no retry !
328 unsigned long TxRetryOkCount
; //success tx but retry !
329 unsigned long TxFailCount
; //fail tx ?
331 unsigned long RxOkCnt
; //success rx !
332 unsigned long RxFcsErrCnt
; //fail rx ?
334 unsigned long SignalStren
;
335 unsigned long LinkQuality
;
337 } SStatCounter
, *PSStatCounter
;
339 /*--------------------- Export Classes ----------------------------*/
341 /*--------------------- Export Variables --------------------------*/
343 /*--------------------- Export Functions --------------------------*/
345 void STAvClearAllCounter(PSStatCounter pStatistic
);
347 void STAvUpdateIsrStatCounter(PSStatCounter pStatistic
, unsigned long dwIsr
);
349 void STAvUpdateRDStatCounter(PSStatCounter pStatistic
,
350 unsigned char byRSR
, unsigned char byNewRSR
, unsigned char byRxRate
,
351 unsigned char *pbyBuffer
, unsigned int cbFrameLength
);
353 void STAvUpdateRDStatCounterEx(PSStatCounter pStatistic
,
354 unsigned char byRSR
, unsigned char byNewRsr
, unsigned char byRxRate
,
355 unsigned char *pbyBuffer
, unsigned int cbFrameLength
);
357 void STAvUpdateTDStatCounter(PSStatCounter pStatistic
, unsigned char byTSR0
, unsigned char byTSR1
,
358 unsigned char *pbyBuffer
, unsigned int cbFrameLength
, unsigned int uIdx
);
360 void STAvUpdateTDStatCounterEx(
361 PSStatCounter pStatistic
,
362 unsigned char *pbyBuffer
,
363 unsigned long cbFrameLength
366 void STAvUpdate802_11Counter(
367 PSDot11Counters p802_11Counter
,
368 PSStatCounter pStatistic
,
369 unsigned long dwCounter
372 void STAvClear802_11Counter(PSDot11Counters p802_11Counter
);