]>
Commit | Line | Data |
---|---|---|
5449c685 FB |
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.c | |
20 | * | |
21 | * Purpose: Implement MIB Data Structure | |
22 | * | |
23 | * Author: Tevin Chen | |
24 | * | |
25 | * Date: May 21, 1996 | |
26 | * | |
27 | * Functions: | |
5449c685 | 28 | * STAvUpdateIstStatCounter - Update ISR statistic counter |
5449c685 FB |
29 | * STAvUpdate802_11Counter - Update 802.11 mib counter |
30 | * | |
31 | * Revision History: | |
32 | * | |
33 | */ | |
34 | ||
5449c685 | 35 | #include "mac.h" |
5449c685 | 36 | #include "mib.h" |
5449c685 | 37 | |
5449c685 FB |
38 | /*--------------------- Static Classes ----------------------------*/ |
39 | ||
40 | /*--------------------- Static Variables --------------------------*/ | |
41 | ||
42 | /*--------------------- Static Functions --------------------------*/ | |
43 | ||
44 | /*--------------------- Export Variables --------------------------*/ | |
45 | ||
46 | /*--------------------- Export Functions --------------------------*/ | |
47 | ||
5449c685 FB |
48 | /* |
49 | * Description: Update Isr Statistic Counter | |
50 | * | |
51 | * Parameters: | |
52 | * In: | |
53 | * pStatistic - Pointer to Statistic Counter Data Structure | |
54 | * wisr - Interrupt status | |
55 | * Out: | |
56 | * none | |
57 | * | |
58 | * Return Value: none | |
59 | * | |
60 | */ | |
fd0badb8 | 61 | void STAvUpdateIsrStatCounter(PSStatCounter pStatistic, unsigned long dwIsr) |
5449c685 | 62 | { |
fd0badb8 JP |
63 | /**********************/ |
64 | /* ABNORMAL interrupt */ | |
65 | /**********************/ | |
66 | // not any IMR bit invoke irq | |
5449c685 | 67 | |
fd0badb8 JP |
68 | if (dwIsr == 0) { |
69 | pStatistic->ISRStat.dwIsrUnknown++; | |
70 | return; | |
71 | } | |
5449c685 FB |
72 | |
73 | //Added by Kyle | |
fd0badb8 JP |
74 | if (dwIsr & ISR_TXDMA0) // ISR, bit0 |
75 | pStatistic->ISRStat.dwIsrTx0OK++; // TXDMA0 successful | |
5449c685 | 76 | |
fd0badb8 JP |
77 | if (dwIsr & ISR_AC0DMA) // ISR, bit1 |
78 | pStatistic->ISRStat.dwIsrAC0TxOK++; // AC0DMA successful | |
5449c685 | 79 | |
fd0badb8 JP |
80 | if (dwIsr & ISR_BNTX) // ISR, bit2 |
81 | pStatistic->ISRStat.dwIsrBeaconTxOK++; // BeaconTx successful | |
5449c685 | 82 | |
fd0badb8 JP |
83 | if (dwIsr & ISR_RXDMA0) // ISR, bit3 |
84 | pStatistic->ISRStat.dwIsrRx0OK++; // Rx0 successful | |
5449c685 | 85 | |
fd0badb8 JP |
86 | if (dwIsr & ISR_TBTT) // ISR, bit4 |
87 | pStatistic->ISRStat.dwIsrTBTTInt++; // TBTT successful | |
5449c685 | 88 | |
fd0badb8 JP |
89 | if (dwIsr & ISR_SOFTTIMER) // ISR, bit6 |
90 | pStatistic->ISRStat.dwIsrSTIMERInt++; | |
5449c685 | 91 | |
fd0badb8 JP |
92 | if (dwIsr & ISR_WATCHDOG) // ISR, bit7 |
93 | pStatistic->ISRStat.dwIsrWatchDog++; | |
5449c685 | 94 | |
fd0badb8 JP |
95 | if (dwIsr & ISR_FETALERR) // ISR, bit8 |
96 | pStatistic->ISRStat.dwIsrUnrecoverableError++; | |
5449c685 | 97 | |
fd0badb8 JP |
98 | if (dwIsr & ISR_SOFTINT) // ISR, bit9 |
99 | pStatistic->ISRStat.dwIsrSoftInterrupt++; // software interrupt | |
5449c685 | 100 | |
fd0badb8 JP |
101 | if (dwIsr & ISR_MIBNEARFULL) // ISR, bit10 |
102 | pStatistic->ISRStat.dwIsrMIBNearfull++; | |
5449c685 | 103 | |
fd0badb8 JP |
104 | if (dwIsr & ISR_RXNOBUF) // ISR, bit11 |
105 | pStatistic->ISRStat.dwIsrRxNoBuf++; // Rx No Buff | |
5449c685 | 106 | |
fd0badb8 JP |
107 | if (dwIsr & ISR_RXDMA1) // ISR, bit12 |
108 | pStatistic->ISRStat.dwIsrRx1OK++; // Rx1 successful | |
5449c685 | 109 | |
fd0badb8 JP |
110 | if (dwIsr & ISR_SOFTTIMER1) // ISR, bit21 |
111 | pStatistic->ISRStat.dwIsrSTIMER1Int++; | |
5449c685 FB |
112 | } |
113 | ||
5449c685 FB |
114 | /* |
115 | * Description: Update 802.11 mib counter | |
116 | * | |
117 | * Parameters: | |
118 | * In: | |
119 | * p802_11Counter - Pointer to 802.11 mib counter | |
120 | * pStatistic - Pointer to Statistic Counter Data Structure | |
121 | * dwCounter - hardware counter for 802.11 mib | |
122 | * Out: | |
123 | * none | |
124 | * | |
125 | * Return Value: none | |
126 | * | |
127 | */ | |
128 | void | |
129 | STAvUpdate802_11Counter( | |
fd0badb8 JP |
130 | PSDot11Counters p802_11Counter, |
131 | PSStatCounter pStatistic, | |
132 | unsigned long dwCounter | |
133 | ) | |
5449c685 | 134 | { |
fd0badb8 JP |
135 | p802_11Counter->RTSSuccessCount += (unsigned long long) (dwCounter & 0x000000ff); |
136 | p802_11Counter->RTSFailureCount += (unsigned long long) ((dwCounter & 0x0000ff00) >> 8); | |
137 | p802_11Counter->ACKFailureCount += (unsigned long long) ((dwCounter & 0x00ff0000) >> 16); | |
138 | p802_11Counter->FCSErrorCount += (unsigned long long) ((dwCounter & 0xff000000) >> 24); | |
5449c685 | 139 | } |