| /* |
| * 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.c |
| * |
| * Purpose: Implement MIB Data Structure |
| * |
| * Author: Tevin Chen |
| * |
| * Date: May 21, 1996 |
| * |
| * Functions: |
| * STAvUpdateIstStatCounter - Update ISR statistic counter |
| * STAvUpdate802_11Counter - Update 802.11 mib counter |
| * |
| * Revision History: |
| * |
| */ |
| |
| #include "mac.h" |
| #include "mib.h" |
| |
| /*--------------------- Static Classes ----------------------------*/ |
| |
| /*--------------------- Static Variables --------------------------*/ |
| |
| /*--------------------- Static Functions --------------------------*/ |
| |
| /*--------------------- Export Variables --------------------------*/ |
| |
| /*--------------------- Export Functions --------------------------*/ |
| |
| /* |
| * Description: Update Isr Statistic Counter |
| * |
| * Parameters: |
| * In: |
| * pStatistic - Pointer to Statistic Counter Data Structure |
| * wisr - Interrupt status |
| * Out: |
| * none |
| * |
| * Return Value: none |
| * |
| */ |
| void STAvUpdateIsrStatCounter(PSStatCounter pStatistic, unsigned long dwIsr) |
| { |
| /**********************/ |
| /* ABNORMAL interrupt */ |
| /**********************/ |
| /* not any IMR bit invoke irq */ |
| |
| if (dwIsr == 0) { |
| pStatistic->ISRStat.dwIsrUnknown++; |
| return; |
| } |
| |
| /* Added by Kyle */ |
| if (dwIsr & ISR_TXDMA0) /* ISR, bit0 */ |
| pStatistic->ISRStat.dwIsrTx0OK++; /* TXDMA0 successful */ |
| |
| if (dwIsr & ISR_AC0DMA) /* ISR, bit1 */ |
| pStatistic->ISRStat.dwIsrAC0TxOK++; /* AC0DMA successful */ |
| |
| if (dwIsr & ISR_BNTX) /* ISR, bit2 */ |
| pStatistic->ISRStat.dwIsrBeaconTxOK++; /* BeaconTx successful */ |
| |
| if (dwIsr & ISR_RXDMA0) /* ISR, bit3 */ |
| pStatistic->ISRStat.dwIsrRx0OK++; /* Rx0 successful */ |
| |
| if (dwIsr & ISR_TBTT) /* ISR, bit4 */ |
| pStatistic->ISRStat.dwIsrTBTTInt++; /* TBTT successful */ |
| |
| if (dwIsr & ISR_SOFTTIMER) /* ISR, bit6 */ |
| pStatistic->ISRStat.dwIsrSTIMERInt++; |
| |
| if (dwIsr & ISR_WATCHDOG) /* ISR, bit7 */ |
| pStatistic->ISRStat.dwIsrWatchDog++; |
| |
| if (dwIsr & ISR_FETALERR) /* ISR, bit8 */ |
| pStatistic->ISRStat.dwIsrUnrecoverableError++; |
| |
| if (dwIsr & ISR_SOFTINT) /* ISR, bit9 */ |
| pStatistic->ISRStat.dwIsrSoftInterrupt++; /* software interrupt */ |
| |
| if (dwIsr & ISR_MIBNEARFULL) /* ISR, bit10 */ |
| pStatistic->ISRStat.dwIsrMIBNearfull++; |
| |
| if (dwIsr & ISR_RXNOBUF) /* ISR, bit11 */ |
| pStatistic->ISRStat.dwIsrRxNoBuf++; /* Rx No Buff */ |
| |
| if (dwIsr & ISR_RXDMA1) /* ISR, bit12 */ |
| pStatistic->ISRStat.dwIsrRx1OK++; /* Rx1 successful */ |
| |
| if (dwIsr & ISR_SOFTTIMER1) /* ISR, bit21 */ |
| pStatistic->ISRStat.dwIsrSTIMER1Int++; |
| } |
| |
| /* |
| * Description: Update 802.11 mib counter |
| * |
| * Parameters: |
| * In: |
| * p802_11Counter - Pointer to 802.11 mib counter |
| * pStatistic - Pointer to Statistic Counter Data Structure |
| * dwCounter - hardware counter for 802.11 mib |
| * Out: |
| * none |
| * |
| * Return Value: none |
| * |
| */ |
| void |
| STAvUpdate802_11Counter( |
| PSDot11Counters p802_11Counter, |
| PSStatCounter pStatistic, |
| unsigned long dwCounter |
| ) |
| { |
| p802_11Counter->RTSSuccessCount += (unsigned long long) (dwCounter & 0x000000ff); |
| p802_11Counter->RTSFailureCount += (unsigned long long) ((dwCounter & 0x0000ff00) >> 8); |
| p802_11Counter->ACKFailureCount += (unsigned long long) ((dwCounter & 0x00ff0000) >> 16); |
| p802_11Counter->FCSErrorCount += (unsigned long long) ((dwCounter & 0xff000000) >> 24); |
| } |