Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0+ */
0002 /*
0003  * Copyright (c) 1996, 2003 VIA Networking Technologies, Inc.
0004  * All rights reserved.
0005  *
0006  * Purpose: MAC Data structure
0007  *
0008  * Author: Tevin Chen
0009  *
0010  * Date: Mar 17, 1997
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 /* device specific */
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 /*---------------------  Export Definitions -------------------------*/
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 /* Antenna Mode */
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  /* (us) */
0070 
0071 /* BUILD OBJ mode */
0072 
0073 #define AVAIL_TD(p, q)  ((p)->opts.tx_descs[(q)] - ((p)->iTDUsed[(q)]))
0074 
0075 /* 0:11A 1:11B 2:11G */
0076 #define BB_TYPE_11A    0
0077 #define BB_TYPE_11B    1
0078 #define BB_TYPE_11G    2
0079 
0080 /* 0:11a, 1:11b, 2:11gb (only CCK in BasicRate), 3:11ga (OFDM in BasicRate) */
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;      /* Number of RX descriptors0 */
0091     int rx_descs1;      /* Number of RX descriptors1 */
0092     int tx_descs[2];    /* Number of TX descriptors 0, 1 */
0093     int int_works;      /* interrupt limits */
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     /* mac80211 */
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 /* dma addr, rx/tx pool */
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     /* Version control */
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;          /* link status: OK or fail */
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;    /* Current SIFS */
0178     unsigned int    uDIFS;    /* Current DIFS */
0179     unsigned int    uEIFS;    /* Current EIFS */
0180     unsigned int    uSlot;    /* Current SlotTime */
0181     unsigned int    uCwMin;   /* Current CwMin */
0182     unsigned int    uCwMax;   /* CwMax is fixed on 1023. */
0183     /* PHY parameter */
0184     unsigned char bySIFS;
0185     unsigned char byDIFS;
0186     unsigned char byEIFS;
0187     unsigned char bySlot;
0188     unsigned char byCWMaxMin;
0189 
0190     u8      byBBType; /* 0:11A, 1:11B, 2:11G */
0191     u8      byPacketType; /*
0192                        * 0:11a,1:11b,2:11gb (only CCK
0193                        * in BasicRate), 3:11ga (OFDM in
0194                        * Basic Rate)
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     /* GPIO Radio Control */
0228     unsigned char byRadioCtl;
0229     unsigned char byGPIO;
0230     bool hw_radio_off;
0231     bool bPrvActive4RadioOFF;
0232     bool bGPIOBlockRead;
0233 
0234     /* Beacon related */
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     /* For Update BaseBand VGA Gain Offset */
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     /* For FOE Tuning */
0262     unsigned char byFOETuning;
0263 
0264     /* For RF Power table */
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     /* BaseBand Loopback Use */
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]; /* unsigned long alignment */
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