293 lines · c
1/* SPDX-License-Identifier: GPL-2.0+ */2/*3 * Copyright (c) 1996, 2003 VIA Networking Technologies, Inc.4 * All rights reserved.5 *6 * Purpose: MAC Data structure7 *8 * Author: Tevin Chen9 *10 * Date: Mar 17, 199711 *12 */13 14#ifndef __DEVICE_H__15#define __DEVICE_H__16 17#include <linux/module.h>18#include <linux/types.h>19#include <linux/pci.h>20#include <linux/etherdevice.h>21#include <linux/skbuff.h>22#include <linux/interrupt.h>23#include <linux/crc32.h>24#include <net/mac80211.h>25 26/* device specific */27 28#include "device_cfg.h"29#include "card.h"30#include "srom.h"31#include "desc.h"32#include "key.h"33#include "mac.h"34 35/*--------------------- Export Definitions -------------------------*/36 37#define RATE_1M 038#define RATE_2M 139#define RATE_5M 240#define RATE_11M 341#define RATE_6M 442#define RATE_9M 543#define RATE_12M 644#define RATE_18M 745#define RATE_24M 846#define RATE_36M 947#define RATE_48M 1048#define RATE_54M 1149#define MAX_RATE 1250 51#define AUTO_FB_NONE 052#define AUTO_FB_0 153#define AUTO_FB_1 254 55#define FB_RATE0 056#define FB_RATE1 157 58/* Antenna Mode */59#define ANT_A 060#define ANT_B 161#define ANT_DIVERSITY 262#define ANT_RXD_TXA 363#define ANT_RXD_TXB 464#define ANT_UNKNOWN 0xFF65 66#define BB_VGA_LEVEL 467#define BB_VGA_CHANGE_THRESHOLD 1668 69#define MAKE_BEACON_RESERVED 10 /* (us) */70 71/* BUILD OBJ mode */72 73#define AVAIL_TD(p, q) ((p)->opts.tx_descs[(q)] - ((p)->iTDUsed[(q)]))74 75/* 0:11A 1:11B 2:11G */76#define BB_TYPE_11A 077#define BB_TYPE_11B 178#define BB_TYPE_11G 279 80/* 0:11a, 1:11b, 2:11gb (only CCK in BasicRate), 3:11ga (OFDM in BasicRate) */81#define PK_TYPE_11A 082#define PK_TYPE_11B 183#define PK_TYPE_11GB 284#define PK_TYPE_11GA 385 86#define OWNED_BY_HOST 087#define OWNED_BY_NIC 188 89struct vnt_options {90 int rx_descs0; /* Number of RX descriptors0 */91 int rx_descs1; /* Number of RX descriptors1 */92 int tx_descs[2]; /* Number of TX descriptors 0, 1 */93 int int_works; /* interrupt limits */94 int short_retry;95 int long_retry;96 int bbp_type;97 u32 flags;98};99 100struct vnt_private {101 struct pci_dev *pcid;102 /* mac80211 */103 struct ieee80211_hw *hw;104 struct ieee80211_vif *vif;105 unsigned long key_entry_inuse;106 u32 basic_rates;107 u16 current_aid;108 int mc_list_count;109 u8 mac_hw;110 111/* dma addr, rx/tx pool */112 dma_addr_t pool_dma;113 dma_addr_t rd0_pool_dma;114 dma_addr_t rd1_pool_dma;115 116 dma_addr_t td0_pool_dma;117 dma_addr_t td1_pool_dma;118 119 dma_addr_t tx_bufs_dma0;120 dma_addr_t tx_bufs_dma1;121 dma_addr_t tx_beacon_dma;122 123 unsigned char *tx0_bufs;124 unsigned char *tx1_bufs;125 unsigned char *tx_beacon_bufs;126 127 void __iomem *port_offset;128 u32 memaddr;129 u32 ioaddr;130 131 spinlock_t lock;132 133 volatile int iTDUsed[TYPE_MAXTD];134 135 struct vnt_tx_desc *apCurrTD[TYPE_MAXTD];136 struct vnt_tx_desc *tail_td[TYPE_MAXTD];137 138 struct vnt_tx_desc *ap_td0_rings;139 struct vnt_tx_desc *ap_td1_rings;140 141 struct vnt_rx_desc *aRD0Ring;142 struct vnt_rx_desc *aRD1Ring;143 struct vnt_rx_desc *pCurrRD[TYPE_MAXRD];144 145 struct vnt_options opts;146 147 u32 flags;148 149 u32 rx_buf_sz;150 u8 rx_rate;151 152 u32 rx_bytes;153 154 /* Version control */155 unsigned char local_id;156 unsigned char rf_type;157 158 unsigned char max_pwr_level;159 unsigned char byZoneType;160 bool bZoneRegExist;161 unsigned char byOriginalZonetype;162 163 unsigned char abyCurrentNetAddr[ETH_ALEN]; __aligned(2)164 bool bLinkPass; /* link status: OK or fail */165 166 unsigned int current_rssi;167 unsigned char byCurrSQ;168 169 unsigned long dwTxAntennaSel;170 unsigned long dwRxAntennaSel;171 unsigned char byAntennaCount;172 unsigned char byRxAntennaMode;173 unsigned char byTxAntennaMode;174 bool bTxRxAntInv;175 176 unsigned char *pbyTmpBuff;177 unsigned int uSIFS; /* Current SIFS */178 unsigned int uDIFS; /* Current DIFS */179 unsigned int uEIFS; /* Current EIFS */180 unsigned int uSlot; /* Current SlotTime */181 unsigned int uCwMin; /* Current CwMin */182 unsigned int uCwMax; /* CwMax is fixed on 1023. */183 /* PHY parameter */184 unsigned char sifs;185 unsigned char difs;186 unsigned char eifs;187 unsigned char slot;188 unsigned char cw_max_min;189 190 u8 byBBType; /* 0:11A, 1:11B, 2:11G */191 u8 packet_type; /*192 * 0:11a,1:11b,2:11gb (only CCK193 * in BasicRate), 3:11ga (OFDM in194 * Basic Rate)195 */196 unsigned short wBasicRate;197 unsigned char byACKRate;198 unsigned char byTopOFDMBasicRate;199 unsigned char byTopCCKBasicRate;200 201 unsigned char byMinChannel;202 unsigned char byMaxChannel;203 204 unsigned char preamble_type;205 unsigned char byShortPreamble;206 207 unsigned short wCurrentRate;208 unsigned char byShortRetryLimit;209 unsigned char byLongRetryLimit;210 enum nl80211_iftype op_mode;211 bool bBSSIDFilter;212 unsigned short wMaxTransmitMSDULifetime;213 214 bool bEncryptionEnable;215 bool bLongHeader;216 bool short_slot_time;217 bool bProtectMode;218 bool bNonERPPresent;219 bool bBarkerPreambleMd;220 221 bool bRadioControlOff;222 bool radio_off;223 bool bEnablePSMode;224 unsigned short wListenInterval;225 bool bPWBitOn;226 227 /* GPIO Radio Control */228 unsigned char byRadioCtl;229 unsigned char byGPIO;230 bool hw_radio_off;231 bool bPrvActive4RadioOFF;232 bool bGPIOBlockRead;233 234 /* Beacon related */235 unsigned short wSeqCounter;236 unsigned short wBCNBufLen;237 bool bBeaconBufReady;238 bool bBeaconSent;239 bool bIsBeaconBufReadySet;240 unsigned int cbBeaconBufReadySetCnt;241 bool bFixRate;242 u16 current_ch;243 244 bool bAES;245 246 unsigned char byAutoFBCtrl;247 248 /* For Update BaseBand VGA Gain Offset */249 bool update_bbvga;250 unsigned int uBBVGADiffCount;251 unsigned char bbvga_new;252 unsigned char bbvga_current;253 unsigned char bbvga[BB_VGA_LEVEL];254 long dbm_threshold[BB_VGA_LEVEL];255 256 unsigned char bb_pre_edrssi;257 unsigned char byBBPreEDIndex;258 259 unsigned long dwDiagRefCount;260 261 /* For FOE Tuning */262 unsigned char byFOETuning;263 264 /* For RF Power table */265 unsigned char byCCKPwr;266 unsigned char byOFDMPwrG;267 unsigned char cur_pwr;268 char byCurPwrdBm;269 unsigned char abyCCKPwrTbl[CB_MAX_CHANNEL_24G + 1];270 unsigned char abyOFDMPwrTbl[CB_MAX_CHANNEL + 1];271 char abyCCKDefaultPwr[CB_MAX_CHANNEL_24G + 1];272 char abyOFDMDefaultPwr[CB_MAX_CHANNEL + 1];273 char abyRegPwr[CB_MAX_CHANNEL + 1];274 char abyLocalPwr[CB_MAX_CHANNEL + 1];275 276 /* BaseBand Loopback Use */277 unsigned char byBBCR4d;278 unsigned char byBBCRc9;279 unsigned char byBBCR88;280 unsigned char byBBCR09;281 282 unsigned char abyEEPROM[EEP_MAX_CONTEXT_SIZE]; /* unsigned long alignment */283 284 unsigned short beacon_interval;285 u16 wake_up_count;286 287 struct work_struct interrupt_work;288 289 struct ieee80211_low_level_stats low_stats;290};291 292#endif293