123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929 |
- /*
- * 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: device.h
- *
- * Purpose: MAC Data structure
- *
- * Author: Tevin Chen
- *
- * Date: Mar 17, 1997
- *
- */
- #ifndef __DEVICE_H__
- #define __DEVICE_H__
- #include <linux/module.h>
- #include <linux/types.h>
- #include <linux/init.h>
- #include <linux/mm.h>
- #include <linux/errno.h>
- #include <linux/ioport.h>
- #include <linux/pci.h>
- #include <linux/kernel.h>
- #include <linux/netdevice.h>
- #include <linux/etherdevice.h>
- #include <linux/skbuff.h>
- #include <linux/delay.h>
- #include <linux/timer.h>
- #include <linux/slab.h>
- #include <linux/interrupt.h>
- #include <linux/string.h>
- #include <linux/wait.h>
- #include <linux/if_arp.h>
- #include <linux/sched.h>
- #include <linux/io.h>
- #include <linux/if.h>
- //#include <linux/config.h>
- #include <linux/uaccess.h>
- #include <linux/proc_fs.h>
- #include <linux/inetdevice.h>
- #include <linux/reboot.h>
- #ifdef SIOCETHTOOL
- #define DEVICE_ETHTOOL_IOCTL_SUPPORT
- #include <linux/ethtool.h>
- #else
- #undef DEVICE_ETHTOOL_IOCTL_SUPPORT
- #endif
- /* Include Wireless Extension definition and check version - Jean II */
- #include <linux/wireless.h>
- #include <net/iw_handler.h> // New driver API
- //2008-0409-07, <Add> by Einsn Liu
- #ifndef WPA_SUPPLICANT_DRIVER_WEXT_SUPPORT
- #define WPA_SUPPLICANT_DRIVER_WEXT_SUPPORT
- #endif
- //2008-4-14<add> by chester for led issue
- //#define FOR_LED_ON_NOTEBOOK
- //
- //
- // device specific
- //
- #include "device_cfg.h"
- #include "ttype.h"
- #include "80211hdr.h"
- #include "tether.h"
- #include "wmgr.h"
- #include "wcmd.h"
- #include "mib.h"
- #include "srom.h"
- #include "rc4.h"
- #include "desc.h"
- #include "key.h"
- #include "mac.h"
- //PLICE_DEBUG->
- //#define THREAD
- //#define TASK_LET
- //PLICE_DEBUG<-
- /*--------------------- Export Definitions -------------------------*/
- #define MAC_MAX_CONTEXT_REG (256+128)
- #define MAX_MULTICAST_ADDRESS_NUM 32
- #define MULTICAST_ADDRESS_LIST_SIZE (MAX_MULTICAST_ADDRESS_NUM * ETH_ALEN)
- //#define OP_MODE_INFRASTRUCTURE 0
- //#define OP_MODE_ADHOC 1
- //#define OP_MODE_AP 2
- #define DUPLICATE_RX_CACHE_LENGTH 5
- #define NUM_KEY_ENTRY 11
- #define TX_WEP_NONE 0
- #define TX_WEP_OTF 1
- #define TX_WEP_SW 2
- #define TX_WEP_SWOTP 3
- #define TX_WEP_OTPSW 4
- #define TX_WEP_SW232 5
- #define KEYSEL_WEP40 0
- #define KEYSEL_WEP104 1
- #define KEYSEL_TKIP 2
- #define KEYSEL_CCMP 3
- #define AUTO_FB_NONE 0
- #define AUTO_FB_0 1
- #define AUTO_FB_1 2
- #define FB_RATE0 0
- #define FB_RATE1 1
- // Antenna Mode
- #define ANT_A 0
- #define ANT_B 1
- #define ANT_DIVERSITY 2
- #define ANT_RXD_TXA 3
- #define ANT_RXD_TXB 4
- #define ANT_UNKNOWN 0xFF
- #define MAXCHECKHANGCNT 4
- #define BB_VGA_LEVEL 4
- #define BB_VGA_CHANGE_THRESHOLD 16
- #ifndef RUN_AT
- #define RUN_AT(x) (jiffies+(x))
- #endif
- // DMA related
- #define RESERV_AC0DMA 4
- // BUILD OBJ mode
- #define AVAIL_TD(p,q) ((p)->sOpts.nTxDescs[(q)]-((p)->iTDUsed[(q)]))
- //PLICE_DEBUG ->
- #define NUM 64
- //PLICE_DEUBG <-
- #define PRIVATE_Message 0
- /*--------------------- Export Types ------------------------------*/
- #define DBG_PRT(l, p, args...) {if (l<=msglevel) printk( p ,##args);}
- #define PRINT_K(p, args...) {if (PRIVATE_Message) printk( p ,##args);}
- //0:11A 1:11B 2:11G
- typedef enum _VIA_BB_TYPE
- {
- BB_TYPE_11A=0,
- BB_TYPE_11B,
- BB_TYPE_11G
- } VIA_BB_TYPE, *PVIA_BB_TYPE;
- //0:11a,1:11b,2:11gb(only CCK in BasicRate),3:11ga(OFDM in Basic Rate)
- typedef enum _VIA_PKT_TYPE
- {
- PK_TYPE_11A=0,
- PK_TYPE_11B,
- PK_TYPE_11GB,
- PK_TYPE_11GA
- } VIA_PKT_TYPE, *PVIA_PKT_TYPE;
- typedef enum __device_msg_level {
- MSG_LEVEL_ERR=0, //Errors that will cause abnormal operation.
- MSG_LEVEL_NOTICE=1, //Some errors need users to be notified.
- MSG_LEVEL_INFO=2, //Normal message.
- MSG_LEVEL_VERBOSE=3, //Will report all trival errors.
- MSG_LEVEL_DEBUG=4 //Only for debug purpose.
- } DEVICE_MSG_LEVEL, *PDEVICE_MSG_LEVEL;
- typedef enum __device_init_type {
- DEVICE_INIT_COLD=0, // cold init
- DEVICE_INIT_RESET, // reset init or Dx to D0 power remain init
- DEVICE_INIT_DXPL // Dx to D0 power lost init
- } DEVICE_INIT_TYPE, *PDEVICE_INIT_TYPE;
- //++ NDIS related
- #define MAX_BSSIDINFO_4_PMKID 16
- #define MAX_PMKIDLIST 5
- //Flags for PMKID Candidate list structure
- #define NDIS_802_11_PMKID_CANDIDATE_PREAUTH_ENABLED 0x01
- // PMKID Structures
- typedef unsigned char NDIS_802_11_PMKID_VALUE[16];
- typedef enum _NDIS_802_11_WEP_STATUS
- {
- Ndis802_11WEPEnabled,
- Ndis802_11Encryption1Enabled = Ndis802_11WEPEnabled,
- Ndis802_11WEPDisabled,
- Ndis802_11EncryptionDisabled = Ndis802_11WEPDisabled,
- Ndis802_11WEPKeyAbsent,
- Ndis802_11Encryption1KeyAbsent = Ndis802_11WEPKeyAbsent,
- Ndis802_11WEPNotSupported,
- Ndis802_11EncryptionNotSupported = Ndis802_11WEPNotSupported,
- Ndis802_11Encryption2Enabled,
- Ndis802_11Encryption2KeyAbsent,
- Ndis802_11Encryption3Enabled,
- Ndis802_11Encryption3KeyAbsent
- } NDIS_802_11_WEP_STATUS, *PNDIS_802_11_WEP_STATUS,
- NDIS_802_11_ENCRYPTION_STATUS, *PNDIS_802_11_ENCRYPTION_STATUS;
- typedef enum _NDIS_802_11_STATUS_TYPE
- {
- Ndis802_11StatusType_Authentication,
- Ndis802_11StatusType_MediaStreamMode,
- Ndis802_11StatusType_PMKID_CandidateList,
- Ndis802_11StatusTypeMax // not a real type, defined as an upper bound
- } NDIS_802_11_STATUS_TYPE, *PNDIS_802_11_STATUS_TYPE;
- //Added new types for PMKID Candidate lists.
- typedef struct _PMKID_CANDIDATE {
- NDIS_802_11_MAC_ADDRESS BSSID;
- unsigned long Flags;
- } PMKID_CANDIDATE, *PPMKID_CANDIDATE;
- typedef struct _BSSID_INFO
- {
- NDIS_802_11_MAC_ADDRESS BSSID;
- NDIS_802_11_PMKID_VALUE PMKID;
- } BSSID_INFO, *PBSSID_INFO;
- typedef struct tagSPMKID {
- unsigned long Length;
- unsigned long BSSIDInfoCount;
- BSSID_INFO BSSIDInfo[MAX_BSSIDINFO_4_PMKID];
- } SPMKID, *PSPMKID;
- typedef struct tagSPMKIDCandidateEvent {
- NDIS_802_11_STATUS_TYPE StatusType;
- unsigned long Version; // Version of the structure
- unsigned long NumCandidates; // No. of pmkid candidates
- PMKID_CANDIDATE CandidateList[MAX_PMKIDLIST];
- } SPMKIDCandidateEvent, *PSPMKIDCandidateEvent;
- //--
- //++ 802.11h related
- #define MAX_QUIET_COUNT 8
- typedef struct tagSQuietControl {
- bool bEnable;
- unsigned long dwStartTime;
- unsigned char byPeriod;
- unsigned short wDuration;
- } SQuietControl, *PSQuietControl;
- //--
- typedef struct __chip_info_tbl{
- CHIP_TYPE chip_id;
- char* name;
- int io_size;
- int nTxQueue;
- u32 flags;
- } CHIP_INFO, *PCHIP_INFO;
- typedef enum {
- OWNED_BY_HOST=0,
- OWNED_BY_NIC=1
- } DEVICE_OWNER_TYPE, *PDEVICE_OWNER_TYPE;
- // The receive duplicate detection cache entry
- typedef struct tagSCacheEntry{
- unsigned short wFmSequence;
- unsigned char abyAddr2[ETH_ALEN];
- } SCacheEntry, *PSCacheEntry;
- typedef struct tagSCache{
- /* The receive cache is updated circularly. The next entry to be written is
- * indexed by the "InPtr".
- */
- unsigned int uInPtr; // Place to use next
- SCacheEntry asCacheEntry[DUPLICATE_RX_CACHE_LENGTH];
- } SCache, *PSCache;
- #define CB_MAX_RX_FRAG 64
- // DeFragment Control Block, used for collecting fragments prior to reassembly
- typedef struct tagSDeFragControlBlock
- {
- unsigned short wSequence;
- unsigned short wFragNum;
- unsigned char abyAddr2[ETH_ALEN];
- unsigned int uLifetime;
- struct sk_buff* skb;
- unsigned char *pbyRxBuffer;
- unsigned int cbFrameLength;
- bool bInUse;
- } SDeFragControlBlock, *PSDeFragControlBlock;
- //flags for options
- #define DEVICE_FLAGS_IP_ALIGN 0x00000001UL
- #define DEVICE_FLAGS_PREAMBLE_TYPE 0x00000002UL
- #define DEVICE_FLAGS_OP_MODE 0x00000004UL
- #define DEVICE_FLAGS_PS_MODE 0x00000008UL
- #define DEVICE_FLAGS_80211h_MODE 0x00000010UL
- #define DEVICE_FLAGS_DiversityANT 0x00000020UL
- //flags for driver status
- #define DEVICE_FLAGS_OPENED 0x00010000UL
- #define DEVICE_FLAGS_WOL_ENABLED 0x00080000UL
- //flags for capbilities
- #define DEVICE_FLAGS_TX_ALIGN 0x01000000UL
- #define DEVICE_FLAGS_HAVE_CAM 0x02000000UL
- #define DEVICE_FLAGS_FLOW_CTRL 0x04000000UL
- //flags for MII status
- #define DEVICE_LINK_FAIL 0x00000001UL
- #define DEVICE_SPEED_10 0x00000002UL
- #define DEVICE_SPEED_100 0x00000004UL
- #define DEVICE_SPEED_1000 0x00000008UL
- #define DEVICE_DUPLEX_FULL 0x00000010UL
- #define DEVICE_AUTONEG_ENABLE 0x00000020UL
- #define DEVICE_FORCED_BY_EEPROM 0x00000040UL
- //for device_set_media_duplex
- #define DEVICE_LINK_CHANGE 0x00000001UL
- //PLICE_DEBUG->
- typedef struct _RxManagementQueue
- {
- int packet_num;
- int head,tail;
- PSRxMgmtPacket Q[NUM];
- } RxManagementQueue,*PSRxManagementQueue;
- //PLICE_DEBUG<-
- typedef struct __device_opt {
- int nRxDescs0; //Number of RX descriptors0
- int nRxDescs1; //Number of RX descriptors1
- int nTxDescs[2]; //Number of TX descriptors 0, 1
- int int_works; //interrupt limits
- int rts_thresh; //rts threshold
- int frag_thresh;
- int data_rate;
- int channel_num;
- int short_retry;
- int long_retry;
- int bbp_type;
- u32 flags;
- } OPTIONS, *POPTIONS;
- typedef struct __device_info {
- struct __device_info* next;
- struct __device_info* prev;
- struct pci_dev* pcid;
- #ifdef CONFIG_PM
- u32 pci_state[16];
- #endif
- // netdev
- struct net_device* dev;
- struct net_device* next_module;
- struct net_device_stats stats;
- //dma addr, rx/tx pool
- dma_addr_t pool_dma;
- dma_addr_t rd0_pool_dma;
- dma_addr_t rd1_pool_dma;
- dma_addr_t td0_pool_dma;
- dma_addr_t td1_pool_dma;
- dma_addr_t tx_bufs_dma0;
- dma_addr_t tx_bufs_dma1;
- dma_addr_t tx_beacon_dma;
- unsigned char *tx0_bufs;
- unsigned char *tx1_bufs;
- unsigned char *tx_beacon_bufs;
- CHIP_TYPE chip_id;
- unsigned long PortOffset;
- unsigned long dwIsr;
- u32 memaddr;
- u32 ioaddr;
- u32 io_size;
- unsigned char byRevId;
- unsigned short SubSystemID;
- unsigned short SubVendorID;
- int nTxQueues;
- volatile int iTDUsed[TYPE_MAXTD];
- volatile PSTxDesc apCurrTD[TYPE_MAXTD];
- volatile PSTxDesc apTailTD[TYPE_MAXTD];
- volatile PSTxDesc apTD0Rings;
- volatile PSTxDesc apTD1Rings;
- volatile PSRxDesc aRD0Ring;
- volatile PSRxDesc aRD1Ring;
- volatile PSRxDesc pCurrRD[TYPE_MAXRD];
- SCache sDupRxCache;
- SDeFragControlBlock sRxDFCB[CB_MAX_RX_FRAG];
- unsigned int cbDFCB;
- unsigned int cbFreeDFCB;
- unsigned int uCurrentDFCBIdx;
- OPTIONS sOpts;
- u32 flags;
- u32 rx_buf_sz;
- int multicast_limit;
- unsigned char byRxMode;
- spinlock_t lock;
- //PLICE_DEBUG->
- struct tasklet_struct RxMngWorkItem;
- RxManagementQueue rxManeQueue;
- //PLICE_DEBUG<-
- //PLICE_DEBUG ->
- pid_t MLMEThr_pid;
- struct completion notify;
- struct semaphore mlme_semaphore;
- //PLICE_DEBUG <-
- u32 rx_bytes;
- // Version control
- unsigned char byLocalID;
- unsigned char byRFType;
- unsigned char byMaxPwrLevel;
- unsigned char byZoneType;
- bool bZoneRegExist;
- unsigned char byOriginalZonetype;
- unsigned char abyMacContext[MAC_MAX_CONTEXT_REG];
- bool bLinkPass; // link status: OK or fail
- unsigned char abyCurrentNetAddr[ETH_ALEN];
- // Adapter statistics
- SStatCounter scStatistic;
- // 802.11 counter
- SDot11Counters s802_11Counter;
- // 802.11 management
- PSMgmtObject pMgmt;
- SMgmtObject sMgmtObj;
- // 802.11 MAC specific
- unsigned int uCurrRSSI;
- unsigned char byCurrSQ;
- unsigned long dwTxAntennaSel;
- unsigned long dwRxAntennaSel;
- unsigned char byAntennaCount;
- unsigned char byRxAntennaMode;
- unsigned char byTxAntennaMode;
- bool bTxRxAntInv;
- unsigned char *pbyTmpBuff;
- unsigned int uSIFS; //Current SIFS
- unsigned int uDIFS; //Current DIFS
- unsigned int uEIFS; //Current EIFS
- unsigned int uSlot; //Current SlotTime
- unsigned int uCwMin; //Current CwMin
- unsigned int uCwMax; //CwMax is fixed on 1023.
- // PHY parameter
- unsigned char bySIFS;
- unsigned char byDIFS;
- unsigned char byEIFS;
- unsigned char bySlot;
- unsigned char byCWMaxMin;
- CARD_PHY_TYPE eCurrentPHYType;
- VIA_BB_TYPE byBBType; //0: 11A, 1:11B, 2:11G
- VIA_PKT_TYPE byPacketType; //0:11a,1:11b,2:11gb(only CCK in BasicRate),3:11ga(OFDM in Basic Rate)
- unsigned short wBasicRate;
- unsigned char byACKRate;
- unsigned char byTopOFDMBasicRate;
- unsigned char byTopCCKBasicRate;
- unsigned char byMinChannel;
- unsigned char byMaxChannel;
- unsigned int uConnectionRate;
- unsigned char byPreambleType;
- unsigned char byShortPreamble;
- unsigned short wCurrentRate;
- unsigned short wRTSThreshold;
- unsigned short wFragmentationThreshold;
- unsigned char byShortRetryLimit;
- unsigned char byLongRetryLimit;
- CARD_OP_MODE eOPMode;
- unsigned char byOpMode;
- bool bBSSIDFilter;
- unsigned short wMaxTransmitMSDULifetime;
- unsigned char abyBSSID[ETH_ALEN];
- unsigned char abyDesireBSSID[ETH_ALEN];
- unsigned short wCTSDuration; // update while speed change
- unsigned short wACKDuration; // update while speed change
- unsigned short wRTSTransmitLen; // update while speed change
- unsigned char byRTSServiceField; // update while speed change
- unsigned char byRTSSignalField; // update while speed change
- unsigned long dwMaxReceiveLifetime; // dot11MaxReceiveLifetime
- bool bCCK;
- bool bEncryptionEnable;
- bool bLongHeader;
- bool bShortSlotTime;
- bool bProtectMode;
- bool bNonERPPresent;
- bool bBarkerPreambleMd;
- unsigned char byERPFlag;
- unsigned short wUseProtectCntDown;
- bool bRadioControlOff;
- bool bRadioOff;
- bool bEnablePSMode;
- unsigned short wListenInterval;
- bool bPWBitOn;
- WMAC_POWER_MODE ePSMode;
- // GPIO Radio Control
- unsigned char byRadioCtl;
- unsigned char byGPIO;
- bool bHWRadioOff;
- bool bPrvActive4RadioOFF;
- bool bGPIOBlockRead;
- // Beacon releated
- unsigned short wSeqCounter;
- unsigned short wBCNBufLen;
- bool bBeaconBufReady;
- bool bBeaconSent;
- bool bIsBeaconBufReadySet;
- unsigned int cbBeaconBufReadySetCnt;
- bool bFixRate;
- unsigned char byCurrentCh;
- unsigned int uScanTime;
- CMD_STATE eCommandState;
- CMD_CODE eCommand;
- bool bBeaconTx;
- bool bStopBeacon;
- bool bStopDataPkt;
- bool bStopTx0Pkt;
- unsigned int uAutoReConnectTime;
- // 802.11 counter
- CMD_ITEM eCmdQueue[CMD_Q_SIZE];
- unsigned int uCmdDequeueIdx;
- unsigned int uCmdEnqueueIdx;
- unsigned int cbFreeCmdQueue;
- bool bCmdRunning;
- bool bCmdClear;
- bool bRoaming;
- //WOW
- unsigned char abyIPAddr[4];
- unsigned long ulTxPower;
- NDIS_802_11_WEP_STATUS eEncryptionStatus;
- bool bTransmitKey;
- //2007-0925-01<Add>by MikeLiu
- //mike add :save old Encryption
- NDIS_802_11_WEP_STATUS eOldEncryptionStatus;
- SKeyManagement sKey;
- unsigned long dwIVCounter;
- QWORD qwPacketNumber; //For CCMP and TKIP as TSC(6 bytes)
- unsigned int uCurrentWEPMode;
- RC4Ext SBox;
- unsigned char abyPRNG[WLAN_WEPMAX_KEYLEN+3];
- unsigned char byKeyIndex;
- unsigned int uKeyLength;
- unsigned char abyKey[WLAN_WEP232_KEYLEN];
- bool bAES;
- unsigned char byCntMeasure;
- // for AP mode
- unsigned int uAssocCount;
- bool bMoreData;
- // QoS
- bool bGrpAckPolicy;
- // for OID_802_11_ASSOCIATION_INFORMATION
- bool bAssocInfoSet;
- unsigned char byAutoFBCtrl;
- bool bTxMICFail;
- bool bRxMICFail;
- unsigned int uRATEIdx;
- // For Update BaseBand VGA Gain Offset
- bool bUpdateBBVGA;
- unsigned int uBBVGADiffCount;
- unsigned char byBBVGANew;
- unsigned char byBBVGACurrent;
- unsigned char abyBBVGA[BB_VGA_LEVEL];
- long ldBmThreshold[BB_VGA_LEVEL];
- unsigned char byBBPreEDRSSI;
- unsigned char byBBPreEDIndex;
- bool bRadioCmd;
- unsigned long dwDiagRefCount;
- // For FOE Tuning
- unsigned char byFOETuning;
- // For Auto Power Tunning
- unsigned char byAutoPwrTunning;
- short sPSetPointCCK;
- short sPSetPointOFDMG;
- short sPSetPointOFDMA;
- long lPFormulaOffset;
- short sPThreshold;
- char cAdjustStep;
- char cMinTxAGC;
- // For RF Power table
- unsigned char byCCKPwr;
- unsigned char byOFDMPwrG;
- unsigned char byCurPwr;
- char byCurPwrdBm;
- unsigned char abyCCKPwrTbl[CB_MAX_CHANNEL_24G+1];
- unsigned char abyOFDMPwrTbl[CB_MAX_CHANNEL+1];
- char abyCCKDefaultPwr[CB_MAX_CHANNEL_24G+1];
- char abyOFDMDefaultPwr[CB_MAX_CHANNEL+1];
- char abyRegPwr[CB_MAX_CHANNEL+1];
- char abyLocalPwr[CB_MAX_CHANNEL+1];
- // BaseBand Loopback Use
- unsigned char byBBCR4d;
- unsigned char byBBCRc9;
- unsigned char byBBCR88;
- unsigned char byBBCR09;
- // command timer
- struct timer_list sTimerCommand;
- #ifdef TxInSleep
- struct timer_list sTimerTxData;
- unsigned long nTxDataTimeCout;
- bool fTxDataInSleep;
- bool IsTxDataTrigger;
- #endif
- #ifdef WPA_SM_Transtatus
- bool fWPA_Authened; //is WPA/WPA-PSK or WPA2/WPA2-PSK authen??
- #endif
- unsigned char byReAssocCount; //mike add:re-association retry times!
- unsigned char byLinkWaitCount;
- unsigned char abyNodeName[17];
- bool bDiversityRegCtlON;
- bool bDiversityEnable;
- unsigned long ulDiversityNValue;
- unsigned long ulDiversityMValue;
- unsigned char byTMax;
- unsigned char byTMax2;
- unsigned char byTMax3;
- unsigned long ulSQ3TH;
- // ANT diversity
- unsigned long uDiversityCnt;
- unsigned char byAntennaState;
- unsigned long ulRatio_State0;
- unsigned long ulRatio_State1;
- //SQ3 functions for antenna diversity
- struct timer_list TimerSQ3Tmax1;
- struct timer_list TimerSQ3Tmax2;
- struct timer_list TimerSQ3Tmax3;
- unsigned long uNumSQ3[MAX_RATE];
- unsigned short wAntDiversityMaxRate;
- SEthernetHeader sTxEthHeader;
- SEthernetHeader sRxEthHeader;
- unsigned char abyBroadcastAddr[ETH_ALEN];
- unsigned char abySNAP_RFC1042[ETH_ALEN];
- unsigned char abySNAP_Bridgetunnel[ETH_ALEN];
- unsigned char abyEEPROM[EEP_MAX_CONTEXT_SIZE]; //unsigned long alignment
- // Pre-Authentication & PMK cache
- SPMKID gsPMKID;
- SPMKIDCandidateEvent gsPMKIDCandidate;
- // for 802.11h
- bool b11hEnable;
- unsigned char abyCountryCode[3];
- // for 802.11h DFS
- unsigned int uNumOfMeasureEIDs;
- PWLAN_IE_MEASURE_REQ pCurrMeasureEID;
- bool bMeasureInProgress;
- unsigned char byOrgChannel;
- unsigned char byOrgRCR;
- unsigned long dwOrgMAR0;
- unsigned long dwOrgMAR4;
- unsigned char byBasicMap;
- unsigned char byCCAFraction;
- unsigned char abyRPIs[8];
- unsigned long dwRPIs[8];
- bool bChannelSwitch;
- unsigned char byNewChannel;
- unsigned char byChannelSwitchCount;
- bool bQuietEnable;
- bool bEnableFirstQuiet;
- unsigned char byQuietStartCount;
- unsigned int uQuietEnqueue;
- unsigned long dwCurrentQuietEndTime;
- SQuietControl sQuiet[MAX_QUIET_COUNT];
- // for 802.11h TPC
- bool bCountryInfo5G;
- bool bCountryInfo24G;
- unsigned short wBeaconInterval;
- //WPA supplicant deamon
- struct net_device *wpadev;
- bool bWPADEVUp;
- struct sk_buff *skb;
- #ifdef WPA_SUPPLICANT_DRIVER_WEXT_SUPPORT
- /*
- bool bwextstep0;
- bool bwextstep1;
- bool bwextstep2;
- bool bwextstep3;
- */
- unsigned int bwextcount;
- bool bWPASuppWextEnabled;
- #endif
- //--
- #ifdef HOSTAP
- // user space daemon: hostapd, is used for HOSTAP
- bool bEnableHostapd;
- bool bEnable8021x;
- bool bEnableHostWEP;
- struct net_device *apdev;
- int (*tx_80211)(struct sk_buff *skb, struct net_device *dev);
- #endif
- unsigned int uChannel;
- bool bMACSuspend;
- struct iw_statistics wstats; // wireless stats
- bool bCommit;
- } DEVICE_INFO, *PSDevice;
- //PLICE_DEBUG->
- inline static void EnQueue (PSDevice pDevice,PSRxMgmtPacket pRxMgmtPacket)
- {
- //printk("Enter EnQueue:tail is %d\n",pDevice->rxManeQueue.tail);
- if ((pDevice->rxManeQueue.tail+1) % NUM == pDevice->rxManeQueue.head)
- {
- //printk("Queue is Full,tail is %d\n",pDevice->rxManeQueue.tail);
- return ;
- }
- else
- {
- pDevice->rxManeQueue.tail = (pDevice->rxManeQueue.tail+1)% NUM;
- pDevice->rxManeQueue.Q[pDevice->rxManeQueue.tail] = pRxMgmtPacket;
- pDevice->rxManeQueue.packet_num++;
- //printk("packet num is %d\n",pDevice->rxManeQueue.packet_num);
- }
- }
- inline static PSRxMgmtPacket DeQueue (PSDevice pDevice)
- {
- PSRxMgmtPacket pRxMgmtPacket;
- if (pDevice->rxManeQueue.tail == pDevice->rxManeQueue.head)
- {
- printk("Queue is Empty\n");
- return NULL;
- }
- else
- {
- int x;
- //x=pDevice->rxManeQueue.head = (pDevice->rxManeQueue.head+1)%NUM;
- pDevice->rxManeQueue.head = (pDevice->rxManeQueue.head+1)%NUM;
- x = pDevice->rxManeQueue.head;
- //printk("Enter DeQueue:head is %d\n",x);
- pRxMgmtPacket = pDevice->rxManeQueue.Q[x];
- pDevice->rxManeQueue.packet_num--;
- return pRxMgmtPacket;
- }
- }
- void InitRxManagementQueue(PSDevice pDevice);
- //PLICE_DEBUG<-
- inline static bool device_get_ip(PSDevice pInfo) {
- struct in_device* in_dev=(struct in_device*) pInfo->dev->ip_ptr;
- struct in_ifaddr* ifa;
- if (in_dev!=NULL) {
- ifa=(struct in_ifaddr*) in_dev->ifa_list;
- if (ifa!=NULL) {
- memcpy(pInfo->abyIPAddr,&ifa->ifa_address,4);
- return true;
- }
- }
- return false;
- }
- static inline PDEVICE_RD_INFO alloc_rd_info(void) {
- PDEVICE_RD_INFO ptr;
- ptr = (PDEVICE_RD_INFO)kmalloc((int)sizeof(DEVICE_RD_INFO), (int)GFP_ATOMIC);
- if (ptr == NULL)
- return NULL;
- else {
- memset(ptr,0,sizeof(DEVICE_RD_INFO));
- return ptr;
- }
- }
- static inline PDEVICE_TD_INFO alloc_td_info(void) {
- PDEVICE_TD_INFO ptr;
- ptr = (PDEVICE_TD_INFO)kmalloc((int)sizeof(DEVICE_TD_INFO), (int)GFP_ATOMIC);
- if (ptr == NULL)
- return NULL;
- else {
- memset(ptr,0,sizeof(DEVICE_TD_INFO));
- return ptr;
- }
- }
- /*--------------------- Export Functions --------------------------*/
- bool device_dma0_xmit(PSDevice pDevice, struct sk_buff *skb, unsigned int uNodeIndex);
- bool device_alloc_frag_buf(PSDevice pDevice, PSDeFragControlBlock pDeF);
- int Config_FileOperation(PSDevice pDevice, bool fwrite, unsigned char *Parameter);
- #endif
|