0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014 #ifndef __DEVICE_H__
0015 #define __DEVICE_H__
0016
0017 #include <linux/module.h>
0018 #include <linux/types.h>
0019 #include <linux/pci.h>
0020 #include <linux/etherdevice.h>
0021 #include <linux/skbuff.h>
0022 #include <linux/interrupt.h>
0023 #include <linux/crc32.h>
0024 #include <net/mac80211.h>
0025
0026
0027
0028 #include "device_cfg.h"
0029 #include "card.h"
0030 #include "srom.h"
0031 #include "desc.h"
0032 #include "key.h"
0033 #include "mac.h"
0034
0035
0036
0037 #define RATE_1M 0
0038 #define RATE_2M 1
0039 #define RATE_5M 2
0040 #define RATE_11M 3
0041 #define RATE_6M 4
0042 #define RATE_9M 5
0043 #define RATE_12M 6
0044 #define RATE_18M 7
0045 #define RATE_24M 8
0046 #define RATE_36M 9
0047 #define RATE_48M 10
0048 #define RATE_54M 11
0049 #define MAX_RATE 12
0050
0051 #define AUTO_FB_NONE 0
0052 #define AUTO_FB_0 1
0053 #define AUTO_FB_1 2
0054
0055 #define FB_RATE0 0
0056 #define FB_RATE1 1
0057
0058
0059 #define ANT_A 0
0060 #define ANT_B 1
0061 #define ANT_DIVERSITY 2
0062 #define ANT_RXD_TXA 3
0063 #define ANT_RXD_TXB 4
0064 #define ANT_UNKNOWN 0xFF
0065
0066 #define BB_VGA_LEVEL 4
0067 #define BB_VGA_CHANGE_THRESHOLD 16
0068
0069 #define MAKE_BEACON_RESERVED 10
0070
0071
0072
0073 #define AVAIL_TD(p, q) ((p)->opts.tx_descs[(q)] - ((p)->iTDUsed[(q)]))
0074
0075
0076 #define BB_TYPE_11A 0
0077 #define BB_TYPE_11B 1
0078 #define BB_TYPE_11G 2
0079
0080
0081 #define PK_TYPE_11A 0
0082 #define PK_TYPE_11B 1
0083 #define PK_TYPE_11GB 2
0084 #define PK_TYPE_11GA 3
0085
0086 #define OWNED_BY_HOST 0
0087 #define OWNED_BY_NIC 1
0088
0089 struct vnt_options {
0090 int rx_descs0;
0091 int rx_descs1;
0092 int tx_descs[2];
0093 int int_works;
0094 int short_retry;
0095 int long_retry;
0096 int bbp_type;
0097 u32 flags;
0098 };
0099
0100 struct vnt_private {
0101 struct pci_dev *pcid;
0102
0103 struct ieee80211_hw *hw;
0104 struct ieee80211_vif *vif;
0105 unsigned long key_entry_inuse;
0106 u32 basic_rates;
0107 u16 current_aid;
0108 int mc_list_count;
0109 u8 mac_hw;
0110
0111
0112 dma_addr_t pool_dma;
0113 dma_addr_t rd0_pool_dma;
0114 dma_addr_t rd1_pool_dma;
0115
0116 dma_addr_t td0_pool_dma;
0117 dma_addr_t td1_pool_dma;
0118
0119 dma_addr_t tx_bufs_dma0;
0120 dma_addr_t tx_bufs_dma1;
0121 dma_addr_t tx_beacon_dma;
0122
0123 unsigned char *tx0_bufs;
0124 unsigned char *tx1_bufs;
0125 unsigned char *tx_beacon_bufs;
0126
0127 void __iomem *port_offset;
0128 u32 memaddr;
0129 u32 ioaddr;
0130
0131 spinlock_t lock;
0132
0133 volatile int iTDUsed[TYPE_MAXTD];
0134
0135 struct vnt_tx_desc *apCurrTD[TYPE_MAXTD];
0136 struct vnt_tx_desc *apTailTD[TYPE_MAXTD];
0137
0138 struct vnt_tx_desc *apTD0Rings;
0139 struct vnt_tx_desc *apTD1Rings;
0140
0141 struct vnt_rx_desc *aRD0Ring;
0142 struct vnt_rx_desc *aRD1Ring;
0143 struct vnt_rx_desc *pCurrRD[TYPE_MAXRD];
0144
0145 struct vnt_options opts;
0146
0147 u32 flags;
0148
0149 u32 rx_buf_sz;
0150 u8 rx_rate;
0151
0152 u32 rx_bytes;
0153
0154
0155 unsigned char local_id;
0156 unsigned char byRFType;
0157
0158 unsigned char max_pwr_level;
0159 unsigned char byZoneType;
0160 bool bZoneRegExist;
0161 unsigned char byOriginalZonetype;
0162
0163 unsigned char abyCurrentNetAddr[ETH_ALEN]; __aligned(2)
0164 bool bLinkPass;
0165
0166 unsigned int current_rssi;
0167 unsigned char byCurrSQ;
0168
0169 unsigned long dwTxAntennaSel;
0170 unsigned long dwRxAntennaSel;
0171 unsigned char byAntennaCount;
0172 unsigned char byRxAntennaMode;
0173 unsigned char byTxAntennaMode;
0174 bool bTxRxAntInv;
0175
0176 unsigned char *pbyTmpBuff;
0177 unsigned int uSIFS;
0178 unsigned int uDIFS;
0179 unsigned int uEIFS;
0180 unsigned int uSlot;
0181 unsigned int uCwMin;
0182 unsigned int uCwMax;
0183
0184 unsigned char bySIFS;
0185 unsigned char byDIFS;
0186 unsigned char byEIFS;
0187 unsigned char bySlot;
0188 unsigned char byCWMaxMin;
0189
0190 u8 byBBType;
0191 u8 byPacketType;
0192
0193
0194
0195
0196 unsigned short wBasicRate;
0197 unsigned char byACKRate;
0198 unsigned char byTopOFDMBasicRate;
0199 unsigned char byTopCCKBasicRate;
0200
0201 unsigned char byMinChannel;
0202 unsigned char byMaxChannel;
0203
0204 unsigned char preamble_type;
0205 unsigned char byShortPreamble;
0206
0207 unsigned short wCurrentRate;
0208 unsigned char byShortRetryLimit;
0209 unsigned char byLongRetryLimit;
0210 enum nl80211_iftype op_mode;
0211 bool bBSSIDFilter;
0212 unsigned short wMaxTransmitMSDULifetime;
0213
0214 bool bEncryptionEnable;
0215 bool bLongHeader;
0216 bool short_slot_time;
0217 bool bProtectMode;
0218 bool bNonERPPresent;
0219 bool bBarkerPreambleMd;
0220
0221 bool bRadioControlOff;
0222 bool radio_off;
0223 bool bEnablePSMode;
0224 unsigned short wListenInterval;
0225 bool bPWBitOn;
0226
0227
0228 unsigned char byRadioCtl;
0229 unsigned char byGPIO;
0230 bool hw_radio_off;
0231 bool bPrvActive4RadioOFF;
0232 bool bGPIOBlockRead;
0233
0234
0235 unsigned short wSeqCounter;
0236 unsigned short wBCNBufLen;
0237 bool bBeaconBufReady;
0238 bool bBeaconSent;
0239 bool bIsBeaconBufReadySet;
0240 unsigned int cbBeaconBufReadySetCnt;
0241 bool bFixRate;
0242 u16 byCurrentCh;
0243
0244 bool bAES;
0245
0246 unsigned char byAutoFBCtrl;
0247
0248
0249 bool bUpdateBBVGA;
0250 unsigned int uBBVGADiffCount;
0251 unsigned char byBBVGANew;
0252 unsigned char byBBVGACurrent;
0253 unsigned char abyBBVGA[BB_VGA_LEVEL];
0254 long dbm_threshold[BB_VGA_LEVEL];
0255
0256 unsigned char byBBPreEDRSSI;
0257 unsigned char byBBPreEDIndex;
0258
0259 unsigned long dwDiagRefCount;
0260
0261
0262 unsigned char byFOETuning;
0263
0264
0265 unsigned char byCCKPwr;
0266 unsigned char byOFDMPwrG;
0267 unsigned char byCurPwr;
0268 char byCurPwrdBm;
0269 unsigned char abyCCKPwrTbl[CB_MAX_CHANNEL_24G + 1];
0270 unsigned char abyOFDMPwrTbl[CB_MAX_CHANNEL + 1];
0271 char abyCCKDefaultPwr[CB_MAX_CHANNEL_24G + 1];
0272 char abyOFDMDefaultPwr[CB_MAX_CHANNEL + 1];
0273 char abyRegPwr[CB_MAX_CHANNEL + 1];
0274 char abyLocalPwr[CB_MAX_CHANNEL + 1];
0275
0276
0277 unsigned char byBBCR4d;
0278 unsigned char byBBCRc9;
0279 unsigned char byBBCR88;
0280 unsigned char byBBCR09;
0281
0282 unsigned char abyEEPROM[EEP_MAX_CONTEXT_SIZE];
0283
0284 unsigned short wBeaconInterval;
0285 u16 wake_up_count;
0286
0287 struct work_struct interrupt_work;
0288
0289 struct ieee80211_low_level_stats low_stats;
0290 };
0291
0292 #endif