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 structure |
7 | * |
8 | * Author: Tevin Chen |
9 | * |
10 | * Date: Mar 17, 1997 |
11 | * |
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 0 |
38 | #define RATE_2M 1 |
39 | #define RATE_5M 2 |
40 | #define RATE_11M 3 |
41 | #define RATE_6M 4 |
42 | #define RATE_9M 5 |
43 | #define RATE_12M 6 |
44 | #define RATE_18M 7 |
45 | #define RATE_24M 8 |
46 | #define RATE_36M 9 |
47 | #define RATE_48M 10 |
48 | #define RATE_54M 11 |
49 | #define MAX_RATE 12 |
50 | |
51 | #define AUTO_FB_NONE 0 |
52 | #define AUTO_FB_0 1 |
53 | #define AUTO_FB_1 2 |
54 | |
55 | #define FB_RATE0 0 |
56 | #define FB_RATE1 1 |
57 | |
58 | /* Antenna Mode */ |
59 | #define ANT_A 0 |
60 | #define ANT_B 1 |
61 | #define ANT_DIVERSITY 2 |
62 | #define ANT_RXD_TXA 3 |
63 | #define ANT_RXD_TXB 4 |
64 | #define ANT_UNKNOWN 0xFF |
65 | |
66 | #define BB_VGA_LEVEL 4 |
67 | #define BB_VGA_CHANGE_THRESHOLD 16 |
68 | |
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 0 |
77 | #define BB_TYPE_11B 1 |
78 | #define BB_TYPE_11G 2 |
79 | |
80 | /* 0:11a, 1:11b, 2:11gb (only CCK in BasicRate), 3:11ga (OFDM in BasicRate) */ |
81 | #define PK_TYPE_11A 0 |
82 | #define PK_TYPE_11B 1 |
83 | #define PK_TYPE_11GB 2 |
84 | #define PK_TYPE_11GA 3 |
85 | |
86 | #define OWNED_BY_HOST 0 |
87 | #define OWNED_BY_NIC 1 |
88 | |
89 | struct 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 | |
100 | struct 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 *apTD0Rings; |
139 | struct vnt_tx_desc *apTD1Rings; |
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 ; |
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 CCK |
193 | * in BasicRate), 3:11ga (OFDM in |
194 | * 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 ; |
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 ; |
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 | #endif |
293 | |