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