Add the rt linux 4.1.3-rt3 as base
[kvmfornfv.git] / kernel / drivers / staging / vt6655 / mib.c
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:
28  *      STAvUpdateIstStatCounter - Update ISR statistic counter
29  *      STAvUpdate802_11Counter - Update 802.11 mib counter
30  *
31  * Revision History:
32  *
33  */
34
35 #include "mac.h"
36 #include "mib.h"
37
38 /*---------------------  Static Classes  ----------------------------*/
39
40 /*---------------------  Static Variables  --------------------------*/
41
42 /*---------------------  Static Functions  --------------------------*/
43
44 /*---------------------  Export Variables  --------------------------*/
45
46 /*---------------------  Export Functions  --------------------------*/
47
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  */
61 void STAvUpdateIsrStatCounter(PSStatCounter pStatistic, unsigned long dwIsr)
62 {
63         /**********************/
64         /* ABNORMAL interrupt */
65         /**********************/
66         /* not any IMR bit invoke irq */
67
68         if (dwIsr == 0) {
69                 pStatistic->ISRStat.dwIsrUnknown++;
70                 return;
71         }
72
73 /* Added by Kyle */
74         if (dwIsr & ISR_TXDMA0)               /* ISR, bit0 */
75                 pStatistic->ISRStat.dwIsrTx0OK++;             /* TXDMA0 successful */
76
77         if (dwIsr & ISR_AC0DMA)               /* ISR, bit1 */
78                 pStatistic->ISRStat.dwIsrAC0TxOK++;           /* AC0DMA successful */
79
80         if (dwIsr & ISR_BNTX)                 /* ISR, bit2 */
81                 pStatistic->ISRStat.dwIsrBeaconTxOK++;        /* BeaconTx successful */
82
83         if (dwIsr & ISR_RXDMA0)               /* ISR, bit3 */
84                 pStatistic->ISRStat.dwIsrRx0OK++;             /* Rx0 successful */
85
86         if (dwIsr & ISR_TBTT)                 /* ISR, bit4 */
87                 pStatistic->ISRStat.dwIsrTBTTInt++;           /* TBTT successful */
88
89         if (dwIsr & ISR_SOFTTIMER)            /* ISR, bit6 */
90                 pStatistic->ISRStat.dwIsrSTIMERInt++;
91
92         if (dwIsr & ISR_WATCHDOG)             /* ISR, bit7 */
93                 pStatistic->ISRStat.dwIsrWatchDog++;
94
95         if (dwIsr & ISR_FETALERR)             /* ISR, bit8 */
96                 pStatistic->ISRStat.dwIsrUnrecoverableError++;
97
98         if (dwIsr & ISR_SOFTINT)              /* ISR, bit9 */
99                 pStatistic->ISRStat.dwIsrSoftInterrupt++;     /* software interrupt */
100
101         if (dwIsr & ISR_MIBNEARFULL)          /* ISR, bit10 */
102                 pStatistic->ISRStat.dwIsrMIBNearfull++;
103
104         if (dwIsr & ISR_RXNOBUF)              /* ISR, bit11 */
105                 pStatistic->ISRStat.dwIsrRxNoBuf++;           /* Rx No Buff */
106
107         if (dwIsr & ISR_RXDMA1)               /* ISR, bit12 */
108                 pStatistic->ISRStat.dwIsrRx1OK++;             /* Rx1 successful */
109
110         if (dwIsr & ISR_SOFTTIMER1)           /* ISR, bit21 */
111                 pStatistic->ISRStat.dwIsrSTIMER1Int++;
112 }
113
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(
130         PSDot11Counters         p802_11Counter,
131         PSStatCounter           pStatistic,
132         unsigned long dwCounter
133 )
134 {
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);
139 }