/* * 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); }