Commit | Line | Data |
---|---|---|
94a79942 LF |
1 | /****************************************************************************** |
2 | * Copyright(c) 2008 - 2010 Realtek Corporation. All rights reserved. | |
3 | * | |
4 | * Based on the r8180 driver, which is: | |
559a4c31 | 5 | * Copyright 2004-2005 Andrea Merello <andrea.merello@gmail.com>, et al. |
94a79942 LF |
6 | * This program is free software; you can redistribute it and/or modify it |
7 | * under the terms of version 2 of the GNU General Public License as | |
8 | * published by the Free Software Foundation. | |
9 | * | |
10 | * This program is distributed in the hope that it will be useful, but WITHOUT | |
11 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
12 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | |
13 | * more details. | |
14 | * | |
94a79942 LF |
15 | * The full GNU General Public License is included in this distribution in the |
16 | * file called LICENSE. | |
17 | * | |
18 | * Contact Information: | |
19 | * wlanfae <wlanfae@realtek.com> | |
20 | ******************************************************************************/ | |
21 | ||
22 | #ifndef _RTL_CORE_H | |
23 | #define _RTL_CORE_H | |
24 | ||
25 | #include <linux/module.h> | |
26 | #include <linux/kernel.h> | |
94a79942 LF |
27 | #include <linux/ioport.h> |
28 | #include <linux/sched.h> | |
29 | #include <linux/types.h> | |
30 | #include <linux/interrupt.h> | |
31 | #include <linux/slab.h> | |
32 | #include <linux/netdevice.h> | |
33 | #include <linux/pci.h> | |
34 | #include <linux/etherdevice.h> | |
35 | #include <linux/delay.h> | |
36 | #include <linux/rtnetlink.h> | |
37 | #include <linux/wireless.h> | |
38 | #include <linux/timer.h> | |
39 | #include <linux/proc_fs.h> | |
40 | #include <linux/if_arp.h> | |
41 | #include <linux/random.h> | |
1344ee25 | 42 | #include <linux/io.h> |
ea74fedc SM |
43 | |
44 | /* Need this defined before including local include files */ | |
45 | #define DRV_NAME "rtl819xE" | |
46 | ||
3d461c91 | 47 | #include "../rtllib.h" |
94a79942 | 48 | |
3d461c91 | 49 | #include "../dot11d.h" |
94a79942 LF |
50 | |
51 | #include "r8192E_firmware.h" | |
52 | #include "r8192E_hw.h" | |
53 | ||
54 | #include "r8190P_def.h" | |
55 | #include "r8192E_dev.h" | |
56 | ||
94a79942 LF |
57 | #include "rtl_eeprom.h" |
58 | #include "rtl_ps.h" | |
59 | #include "rtl_pci.h" | |
60 | #include "rtl_cam.h" | |
61 | ||
1344ee25 LF |
62 | #define DRV_COPYRIGHT \ |
63 | "Copyright(c) 2008 - 2010 Realsil Semiconductor Corporation" | |
94a79942 LF |
64 | #define DRV_AUTHOR "<wlanfae@realtek.com>" |
65 | #define DRV_VERSION "0014.0401.2010" | |
66 | ||
1344ee25 LF |
67 | #define IS_HARDWARE_TYPE_8192SE(_priv) \ |
68 | (((struct r8192_priv *)rtllib_priv(dev))->card_8192 == NIC_8192SE) | |
94a79942 LF |
69 | |
70 | #define RTL_PCI_DEVICE(vend, dev, cfg) \ | |
71 | .vendor = (vend), .device = (dev), \ | |
f6692285 | 72 | .subvendor = PCI_ANY_ID, .subdevice = PCI_ANY_ID, \ |
94a79942 | 73 | .driver_data = (kernel_ulong_t)&(cfg) |
94a79942 | 74 | |
94a79942 LF |
75 | #define TOTAL_CAM_ENTRY 32 |
76 | #define CAM_CONTENT_COUNT 8 | |
77 | ||
94a79942 | 78 | #define HAL_HW_PCI_REVISION_ID_8192PCIE 0x01 |
94a79942 | 79 | #define HAL_HW_PCI_REVISION_ID_8192SE 0x10 |
94a79942 LF |
80 | |
81 | #define RTL819X_DEFAULT_RF_TYPE RF_1T2R | |
82 | ||
83 | #define RTLLIB_WATCH_DOG_TIME 2000 | |
84 | ||
1344ee25 | 85 | #define MAX_DEV_ADDR_SIZE 8 /*support till 64 bit bus width OS*/ |
94a79942 LF |
86 | #define MAX_FIRMWARE_INFORMATION_SIZE 32 |
87 | #define MAX_802_11_HEADER_LENGTH (40 + MAX_FIRMWARE_INFORMATION_SIZE) | |
88 | #define ENCRYPTION_MAX_OVERHEAD 128 | |
89 | #define MAX_FRAGMENT_COUNT 8 | |
1344ee25 LF |
90 | #define MAX_TRANSMIT_BUFFER_SIZE \ |
91 | (1600 + (MAX_802_11_HEADER_LENGTH + ENCRYPTION_MAX_OVERHEAD) * \ | |
92 | MAX_FRAGMENT_COUNT) | |
94a79942 | 93 | |
1e7da09a MK |
94 | #define CMDPACKET_FRAG_SIZE (4 * (MAX_TRANSMIT_BUFFER_SIZE / 4) - 8) |
95 | ||
94a79942 LF |
96 | #define DEFAULT_FRAG_THRESHOLD 2342U |
97 | #define MIN_FRAG_THRESHOLD 256U | |
98 | #define DEFAULT_BEACONINTERVAL 0x64U | |
99 | ||
94a79942 LF |
100 | #define DEFAULT_RETRY_RTS 7 |
101 | #define DEFAULT_RETRY_DATA 7 | |
94a79942 LF |
102 | |
103 | #define PHY_RSSI_SLID_WIN_MAX 100 | |
104 | ||
1344ee25 | 105 | #define RTL_IOCTL_WPA_SUPPLICANT (SIOCIWFIRSTPRIV + 30) |
94a79942 | 106 | |
1344ee25 LF |
107 | #define TxBBGainTableLength 37 |
108 | #define CCKTxBBGainTableLength 23 | |
94a79942 LF |
109 | |
110 | #define CHANNEL_PLAN_LEN 10 | |
1344ee25 | 111 | #define sCrcLng 4 |
94a79942 LF |
112 | |
113 | #define NIC_SEND_HANG_THRESHOLD_NORMAL 4 | |
114 | #define NIC_SEND_HANG_THRESHOLD_POWERSAVE 8 | |
115 | ||
116 | #define MAX_TX_QUEUE 9 | |
117 | ||
118 | #define MAX_RX_QUEUE 1 | |
119 | ||
1344ee25 LF |
120 | #define MAX_RX_COUNT 64 |
121 | #define MAX_TX_QUEUE_COUNT 9 | |
94a79942 | 122 | |
fa63c9ce RK |
123 | extern int hwwep; |
124 | ||
b55941af | 125 | enum nic_t { |
94a79942 LF |
126 | NIC_UNKNOWN = 0, |
127 | NIC_8192E = 1, | |
128 | NIC_8190P = 2, | |
129 | NIC_8192SE = 4, | |
1344ee25 LF |
130 | NIC_8192CE = 5, |
131 | NIC_8192CU = 6, | |
132 | NIC_8192DE = 7, | |
133 | NIC_8192DU = 8, | |
134 | }; | |
94a79942 | 135 | |
e9463775 | 136 | enum rt_eeprom_type { |
94a79942 LF |
137 | EEPROM_93C46, |
138 | EEPROM_93C56, | |
e9463775 | 139 | }; |
94a79942 | 140 | |
aec1148c | 141 | enum dcmg_txcmd_op { |
1344ee25 | 142 | TXCMD_TXRA_HISTORY_CTRL = 0xFF900000, |
94a79942 LF |
143 | TXCMD_RESET_TX_PKT_BUFF = 0xFF900001, |
144 | TXCMD_RESET_RX_PKT_BUFF = 0xFF900002, | |
145 | TXCMD_SET_TX_DURATION = 0xFF900003, | |
146 | TXCMD_SET_RX_RSSI = 0xFF900004, | |
147 | TXCMD_SET_TX_PWR_TRACKING = 0xFF900005, | |
148 | TXCMD_XXXX_CTRL, | |
aec1148c | 149 | }; |
94a79942 | 150 | |
fc6094f6 | 151 | enum rt_rf_type_819xu { |
1344ee25 LF |
152 | RF_TYPE_MIN = 0, |
153 | RF_8225, | |
154 | RF_8256, | |
155 | RF_8258, | |
156 | RF_6052 = 4, | |
157 | RF_PSEUDO_11N = 5, | |
fc6094f6 | 158 | }; |
94a79942 | 159 | |
ed8eac2f | 160 | enum rt_customer_id { |
1344ee25 | 161 | RT_CID_DEFAULT = 0, |
94a79942 LF |
162 | RT_CID_8187_ALPHA0 = 1, |
163 | RT_CID_8187_SERCOMM_PS = 2, | |
164 | RT_CID_8187_HW_LED = 3, | |
165 | RT_CID_8187_NETGEAR = 4, | |
1344ee25 | 166 | RT_CID_WHQL = 5, |
94a79942 LF |
167 | RT_CID_819x_CAMEO = 6, |
168 | RT_CID_819x_RUNTOP = 7, | |
169 | RT_CID_819x_Senao = 8, | |
1344ee25 | 170 | RT_CID_TOSHIBA = 9, |
94a79942 | 171 | RT_CID_819x_Netcore = 10, |
1344ee25 LF |
172 | RT_CID_Nettronix = 11, |
173 | RT_CID_DLINK = 12, | |
174 | RT_CID_PRONET = 13, | |
175 | RT_CID_COREGA = 14, | |
94a79942 LF |
176 | RT_CID_819x_ALPHA = 15, |
177 | RT_CID_819x_Sitecom = 16, | |
1344ee25 | 178 | RT_CID_CCX = 17, |
94a79942 | 179 | RT_CID_819x_Lenovo = 18, |
1344ee25 | 180 | RT_CID_819x_QMI = 19, |
94a79942 LF |
181 | RT_CID_819x_Edimax_Belkin = 20, |
182 | RT_CID_819x_Sercomm_Belkin = 21, | |
183 | RT_CID_819x_CAMEO1 = 22, | |
184 | RT_CID_819x_MSI = 23, | |
185 | RT_CID_819x_Acer = 24, | |
1344ee25 | 186 | RT_CID_819x_HP = 27, |
94a79942 LF |
187 | RT_CID_819x_CLEVO = 28, |
188 | RT_CID_819x_Arcadyan_Belkin = 29, | |
189 | RT_CID_819x_SAMSUNG = 30, | |
190 | RT_CID_819x_WNC_COREGA = 31, | |
ed8eac2f | 191 | }; |
94a79942 | 192 | |
ab0d7cca | 193 | enum reset_type { |
94a79942 LF |
194 | RESET_TYPE_NORESET = 0x00, |
195 | RESET_TYPE_NORMAL = 0x01, | |
196 | RESET_TYPE_SILENT = 0x02 | |
ab0d7cca | 197 | }; |
94a79942 | 198 | |
2fac6fc4 | 199 | struct rt_stats { |
94a79942 LF |
200 | unsigned long rxrdu; |
201 | unsigned long rxok; | |
94a79942 LF |
202 | unsigned long rxdatacrcerr; |
203 | unsigned long rxmgmtcrcerr; | |
204 | unsigned long rxcrcerrmin; | |
205 | unsigned long rxcrcerrmid; | |
206 | unsigned long rxcrcerrmax; | |
207 | unsigned long received_rate_histogram[4][32]; | |
208 | unsigned long received_preamble_GI[2][32]; | |
94a79942 LF |
209 | unsigned long numpacket_matchbssid; |
210 | unsigned long numpacket_toself; | |
211 | unsigned long num_process_phyinfo; | |
212 | unsigned long numqry_phystatus; | |
213 | unsigned long numqry_phystatusCCK; | |
214 | unsigned long numqry_phystatusHT; | |
215 | unsigned long received_bwtype[5]; | |
94a79942 LF |
216 | unsigned long rxoverflow; |
217 | unsigned long rxint; | |
94a79942 LF |
218 | unsigned long ints; |
219 | unsigned long shints; | |
220 | unsigned long txoverflow; | |
94a79942 | 221 | unsigned long txbeokint; |
94a79942 | 222 | unsigned long txbkokint; |
94a79942 | 223 | unsigned long txviokint; |
94a79942 | 224 | unsigned long txvookint; |
94a79942 | 225 | unsigned long txbeaconokint; |
94a79942 LF |
226 | unsigned long txbeaconerr; |
227 | unsigned long txmanageokint; | |
94a79942 | 228 | unsigned long txcmdpktokint; |
94a79942 | 229 | unsigned long txbytesmulticast; |
94a79942 | 230 | unsigned long txbytesbroadcast; |
94a79942 LF |
231 | unsigned long txbytesunicast; |
232 | unsigned long rxbytesunicast; | |
94a79942 | 233 | unsigned long txretrycount; |
1344ee25 | 234 | u8 last_packet_rate; |
94a79942 LF |
235 | unsigned long slide_signal_strength[100]; |
236 | unsigned long slide_evm[100]; | |
237 | unsigned long slide_rssi_total; | |
238 | unsigned long slide_evm_total; | |
239 | long signal_strength; | |
240 | long signal_quality; | |
241 | long last_signal_strength_inpercent; | |
242 | long recv_signal_power; | |
243 | u8 rx_rssi_percentage[4]; | |
244 | u8 rx_evm_percentage[2]; | |
245 | long rxSNRdB[4]; | |
94a79942 LF |
246 | u32 Slide_Beacon_pwdb[100]; |
247 | u32 Slide_Beacon_Total; | |
94a79942 | 248 | u32 CurrentShowTxate; |
2fac6fc4 | 249 | }; |
94a79942 | 250 | |
e91dbf03 | 251 | struct channel_access_setting { |
94a79942 LF |
252 | u16 SIFS_Timer; |
253 | u16 DIFS_Timer; | |
254 | u16 SlotTimeTimer; | |
255 | u16 EIFS_Timer; | |
256 | u16 CWminIndex; | |
257 | u16 CWmaxIndex; | |
e91dbf03 | 258 | }; |
94a79942 | 259 | |
43267fef | 260 | struct init_gain { |
1344ee25 LF |
261 | u8 xaagccore1; |
262 | u8 xbagccore1; | |
263 | u8 xcagccore1; | |
264 | u8 xdagccore1; | |
265 | u8 cca; | |
94a79942 | 266 | |
43267fef | 267 | }; |
94a79942 | 268 | |
b7a14040 | 269 | struct tx_ring { |
1344ee25 | 270 | u32 *desc; |
94a79942 | 271 | u8 nStuckCount; |
1344ee25 | 272 | struct tx_ring *next; |
b7a14040 | 273 | } __packed; |
94a79942 LF |
274 | |
275 | struct rtl8192_tx_ring { | |
1344ee25 LF |
276 | struct tx_desc *desc; |
277 | dma_addr_t dma; | |
278 | unsigned int idx; | |
279 | unsigned int entries; | |
280 | struct sk_buff_head queue; | |
94a79942 LF |
281 | }; |
282 | ||
283 | ||
284 | ||
1344ee25 | 285 | struct rtl819x_ops { |
b55941af | 286 | enum nic_t nic_type; |
1344ee25 LF |
287 | void (*get_eeprom_size)(struct net_device *dev); |
288 | void (*init_adapter_variable)(struct net_device *dev); | |
289 | void (*init_before_adapter_start)(struct net_device *dev); | |
290 | bool (*initialize_adapter)(struct net_device *dev); | |
291 | void (*link_change)(struct net_device *dev); | |
292 | void (*tx_fill_descriptor)(struct net_device *dev, | |
293 | struct tx_desc *tx_desc, | |
294 | struct cb_desc *cb_desc, | |
295 | struct sk_buff *skb); | |
296 | void (*tx_fill_cmd_descriptor)(struct net_device *dev, | |
297 | struct tx_desc_cmd *entry, | |
298 | struct cb_desc *cb_desc, | |
299 | struct sk_buff *skb); | |
300 | bool (*rx_query_status_descriptor)(struct net_device *dev, | |
301 | struct rtllib_rx_stats *stats, | |
302 | struct rx_desc *pdesc, | |
303 | struct sk_buff *skb); | |
304 | bool (*rx_command_packet_handler)(struct net_device *dev, | |
305 | struct sk_buff *skb, | |
306 | struct rx_desc *pdesc); | |
307 | void (*stop_adapter)(struct net_device *dev, bool reset); | |
308 | void (*update_ratr_table)(struct net_device *dev); | |
309 | void (*irq_enable)(struct net_device *dev); | |
310 | void (*irq_disable)(struct net_device *dev); | |
311 | void (*irq_clear)(struct net_device *dev); | |
312 | void (*rx_enable)(struct net_device *dev); | |
313 | void (*tx_enable)(struct net_device *dev); | |
314 | void (*interrupt_recognized)(struct net_device *dev, | |
315 | u32 *p_inta, u32 *p_intb); | |
316 | bool (*TxCheckStuckHandler)(struct net_device *dev); | |
317 | bool (*RxCheckStuckHandler)(struct net_device *dev); | |
94a79942 LF |
318 | }; |
319 | ||
e3e37629 | 320 | struct r8192_priv { |
94a79942 LF |
321 | struct pci_dev *pdev; |
322 | struct pci_dev *bridge_pdev; | |
323 | ||
94a79942 LF |
324 | bool bfirst_init; |
325 | bool bfirst_after_down; | |
326 | bool initialized_at_probe; | |
327 | bool being_init_adapter; | |
328 | bool bDriverIsGoingToUnload; | |
329 | ||
330 | int irq; | |
331 | short irq_enabled; | |
332 | ||
333 | short up; | |
334 | short up_first_time; | |
edc4b2c5 LF |
335 | struct delayed_work update_beacon_wq; |
336 | struct delayed_work watch_dog_wq; | |
337 | struct delayed_work txpower_tracking_wq; | |
338 | struct delayed_work rfpath_check_wq; | |
339 | struct delayed_work gpio_change_rf_wq; | |
94a79942 | 340 | |
e91dbf03 | 341 | struct channel_access_setting ChannelAccessSetting; |
94a79942 | 342 | |
94a79942 LF |
343 | struct rtl819x_ops *ops; |
344 | struct rtllib_device *rtllib; | |
345 | ||
edc4b2c5 | 346 | struct work_struct reset_wq; |
94a79942 | 347 | |
c13ac63b | 348 | struct log_int_8190 InterruptLog; |
94a79942 | 349 | |
ed8eac2f | 350 | enum rt_customer_id CustomerID; |
94a79942 LF |
351 | |
352 | ||
fc6094f6 | 353 | enum rt_rf_type_819xu rf_chip; |
6e579119 | 354 | enum ht_channel_width CurrentChannelBW; |
9bf6e4c1 | 355 | struct bb_reg_definition PHYRegDef[4]; |
9be6f10e | 356 | struct rate_adaptive rate_adaptive; |
94a79942 | 357 | |
379a20fb | 358 | enum acm_method AcmMethod; |
94a79942 | 359 | |
5aca114d | 360 | struct rt_firmware *pFirmware; |
70f9f79c | 361 | enum rtl819x_loopback LoopbackMode; |
94a79942 LF |
362 | |
363 | struct timer_list watch_dog_timer; | |
364 | struct timer_list fsync_timer; | |
365 | struct timer_list gpio_polling_timer; | |
366 | ||
94a79942 LF |
367 | spinlock_t irq_th_lock; |
368 | spinlock_t tx_lock; | |
369 | spinlock_t rf_ps_lock; | |
94a79942 LF |
370 | spinlock_t ps_lock; |
371 | ||
94a79942 LF |
372 | struct sk_buff_head skb_queue; |
373 | ||
374 | struct tasklet_struct irq_rx_tasklet; | |
375 | struct tasklet_struct irq_tx_tasklet; | |
376 | struct tasklet_struct irq_prepare_beacon_tasklet; | |
377 | ||
3044975f | 378 | struct mutex wx_mutex; |
5333496c | 379 | struct mutex rf_mutex; |
94a79942 | 380 | struct mutex mutex; |
94a79942 | 381 | |
2fac6fc4 | 382 | struct rt_stats stats; |
94a79942 | 383 | struct iw_statistics wstats; |
94a79942 | 384 | |
1344ee25 LF |
385 | short (*rf_set_sens)(struct net_device *dev, short sens); |
386 | u8 (*rf_set_chan)(struct net_device *dev, u8 ch); | |
94a79942 | 387 | |
4f534b36 | 388 | struct rx_desc *rx_ring[MAX_RX_QUEUE]; |
94a79942 LF |
389 | struct sk_buff *rx_buf[MAX_RX_QUEUE][MAX_RX_COUNT]; |
390 | dma_addr_t rx_ring_dma[MAX_RX_QUEUE]; | |
391 | unsigned int rx_idx[MAX_RX_QUEUE]; | |
392 | int rxringcount; | |
393 | u16 rxbuffersize; | |
394 | ||
0dd56506 | 395 | u64 LastRxDescTSF; |
94a79942 | 396 | |
94a79942 | 397 | u32 ReceiveConfig; |
94a79942 LF |
398 | u8 retry_data; |
399 | u8 retry_rts; | |
400 | u16 rts; | |
401 | ||
402 | struct rtl8192_tx_ring tx_ring[MAX_TX_QUEUE_COUNT]; | |
403 | int txringcount; | |
94a79942 LF |
404 | atomic_t tx_pending[0x10]; |
405 | ||
406 | u16 ShortRetryLimit; | |
407 | u16 LongRetryLimit; | |
94a79942 | 408 | |
94a79942 | 409 | bool bHwRadioOff; |
94a79942 LF |
410 | bool blinked_ingpio; |
411 | u8 polling_timer_on; | |
412 | ||
413 | /**********************************************************/ | |
414 | ||
1344ee25 LF |
415 | enum card_type { |
416 | PCI, MINIPCI, | |
417 | CARDBUS, USB | |
418 | } card_type; | |
94a79942 | 419 | |
edc4b2c5 | 420 | struct work_struct qos_activate; |
94a79942 | 421 | |
94a79942 | 422 | short promisc; |
94a79942 LF |
423 | |
424 | short chan; | |
425 | short sens; | |
426 | short max_sens; | |
94a79942 | 427 | |
1344ee25 LF |
428 | u8 ScanDelay; |
429 | bool ps_force; | |
94a79942 | 430 | |
1344ee25 | 431 | u32 irq_mask[2]; |
94a79942 | 432 | |
1344ee25 | 433 | u8 Rf_Mode; |
b55941af | 434 | enum nic_t card_8192; |
1344ee25 | 435 | u8 card_8192_version; |
94a79942 | 436 | |
1344ee25 LF |
437 | u8 rf_type; |
438 | u8 IC_Cut; | |
439 | char nick[IW_ESSID_MAX_SIZE + 1]; | |
1344ee25 | 440 | u8 check_roaming_cnt; |
94a79942 | 441 | |
1344ee25 LF |
442 | u32 SilentResetRxSlotIndex; |
443 | u32 SilentResetRxStuckEvent[MAX_SILENT_RESET_RX_SLOT_NUM]; | |
94a79942 | 444 | |
1344ee25 LF |
445 | u16 basic_rate; |
446 | u8 short_preamble; | |
447 | u8 dot11CurrentPreambleMode; | |
448 | u8 slot_time; | |
449 | u16 SifsTime; | |
94a79942 | 450 | |
1344ee25 | 451 | bool AutoloadFailFlag; |
94a79942 | 452 | |
94a79942 | 453 | short epromtype; |
1344ee25 LF |
454 | u16 eeprom_vid; |
455 | u16 eeprom_did; | |
1344ee25 LF |
456 | u8 eeprom_CustomerID; |
457 | u16 eeprom_ChannelPlan; | |
1344ee25 LF |
458 | |
459 | u8 EEPROMTxPowerLevelCCK[14]; | |
460 | u8 EEPROMTxPowerLevelOFDM24G[14]; | |
1344ee25 LF |
461 | u8 EEPROMRfACCKChnl1TxPwLevel[3]; |
462 | u8 EEPROMRfAOfdmChnlTxPwLevel[3]; | |
463 | u8 EEPROMRfCCCKChnl1TxPwLevel[3]; | |
464 | u8 EEPROMRfCOfdmChnlTxPwLevel[3]; | |
1344ee25 LF |
465 | u16 EEPROMAntPwDiff; |
466 | u8 EEPROMThermalMeter; | |
1344ee25 LF |
467 | u8 EEPROMCrystalCap; |
468 | ||
1344ee25 LF |
469 | u8 EEPROMLegacyHTTxPowerDiff; |
470 | ||
1344ee25 LF |
471 | u8 CrystalCap; |
472 | u8 ThermalMeter[2]; | |
473 | ||
1344ee25 LF |
474 | u8 SwChnlInProgress; |
475 | u8 SwChnlStage; | |
476 | u8 SwChnlStep; | |
477 | u8 SetBWModeInProgress; | |
478 | ||
479 | u8 nCur40MhzPrimeSC; | |
480 | ||
481 | u32 RfReg0Value[4]; | |
482 | u8 NumTotalRFPath; | |
483 | bool brfpath_rxenable[4]; | |
484 | ||
485 | bool bTXPowerDataReadFromEEPORM; | |
486 | ||
487 | u16 RegChannelPlan; | |
488 | u16 ChannelPlan; | |
1344ee25 LF |
489 | |
490 | bool RegRfOff; | |
491 | bool isRFOff; | |
492 | bool bInPowerSaveMode; | |
493 | u8 bHwRfOffAction; | |
494 | ||
1344ee25 LF |
495 | bool RFChangeInProgress; |
496 | bool SetRFPowerStateInProgress; | |
497 | bool bdisable_nic; | |
498 | ||
1344ee25 LF |
499 | u8 DM_Type; |
500 | ||
501 | u8 CckPwEnl; | |
502 | u16 TSSI_13dBm; | |
503 | u32 Pwr_Track; | |
504 | u8 CCKPresentAttentuation_20Mdefault; | |
505 | u8 CCKPresentAttentuation_40Mdefault; | |
5d5fd353 AB |
506 | s8 CCKPresentAttentuation_difference; |
507 | s8 CCKPresentAttentuation; | |
1344ee25 | 508 | long undecorated_smoothed_pwdb; |
1344ee25 LF |
509 | |
510 | u32 MCSTxPowerLevelOriginalOffset[6]; | |
1344ee25 LF |
511 | u8 TxPowerLevelCCK[14]; |
512 | u8 TxPowerLevelCCK_A[14]; | |
513 | u8 TxPowerLevelCCK_C[14]; | |
94a79942 | 514 | u8 TxPowerLevelOFDM24G[14]; |
94a79942 LF |
515 | u8 TxPowerLevelOFDM24G_A[14]; |
516 | u8 TxPowerLevelOFDM24G_C[14]; | |
517 | u8 LegacyHTTxPowerDiff; | |
94a79942 | 518 | s8 RF_C_TxPwDiff; |
94a79942 | 519 | u8 AntennaTxPwDiff[3]; |
d8ca20fe | 520 | |
94a79942 LF |
521 | bool bDynamicTxHighPower; |
522 | bool bDynamicTxLowPower; | |
523 | bool bLastDTPFlag_High; | |
524 | bool bLastDTPFlag_Low; | |
525 | ||
94a79942 LF |
526 | u8 rfa_txpowertrackingindex; |
527 | u8 rfa_txpowertrackingindex_real; | |
528 | u8 rfa_txpowertracking_default; | |
529 | u8 rfc_txpowertrackingindex; | |
530 | u8 rfc_txpowertrackingindex_real; | |
94a79942 LF |
531 | bool btxpower_tracking; |
532 | bool bcck_in_ch14; | |
533 | ||
94a79942 LF |
534 | u8 txpower_count; |
535 | bool btxpower_trackingInit; | |
536 | ||
537 | u8 OFDM_index[2]; | |
538 | u8 CCK_index; | |
539 | ||
540 | u8 Record_CCK_20Mindex; | |
541 | u8 Record_CCK_40Mindex; | |
542 | ||
43267fef | 543 | struct init_gain initgain_backup; |
94a79942 LF |
544 | u8 DefaultInitialGain[4]; |
545 | bool bis_any_nonbepkts; | |
546 | bool bcurrent_turbo_EDCA; | |
547 | bool bis_cur_rdlstate; | |
548 | ||
94a79942 LF |
549 | bool bfsync_processing; |
550 | u32 rate_record; | |
551 | u32 rateCountDiffRecord; | |
4c234ebc | 552 | u32 ContinueDiffCount; |
94a79942 LF |
553 | bool bswitch_fsync; |
554 | u8 framesync; | |
555 | u32 framesyncC34; | |
556 | u8 framesyncMonitor; | |
557 | ||
94a79942 | 558 | u32 reset_count; |
94a79942 | 559 | |
ab0d7cca | 560 | enum reset_type ResetProgress; |
94a79942 LF |
561 | bool bForcedSilentReset; |
562 | bool bDisableNormalResetCheck; | |
563 | u16 TxCounter; | |
564 | u16 RxCounter; | |
94a79942 LF |
565 | bool bResetInProgress; |
566 | bool force_reset; | |
567 | bool force_lps; | |
94a79942 LF |
568 | |
569 | bool chan_forced; | |
94a79942 LF |
570 | |
571 | u8 PwrDomainProtect; | |
572 | u8 H2CTxCmdSeq; | |
d3b2c172 | 573 | }; |
94a79942 LF |
574 | |
575 | extern const struct ethtool_ops rtl819x_ethtool_ops; | |
576 | ||
b59a4ca3 | 577 | u8 rtl92e_readb(struct net_device *dev, int x); |
99aa47e0 | 578 | u32 rtl92e_readl(struct net_device *dev, int x); |
1c0a7c0e | 579 | u16 rtl92e_readw(struct net_device *dev, int x); |
d8ae1967 | 580 | void rtl92e_writeb(struct net_device *dev, int x, u8 y); |
6dee0c88 | 581 | void rtl92e_writew(struct net_device *dev, int x, u16 y); |
8ea54100 | 582 | void rtl92e_writel(struct net_device *dev, int x, u32 y); |
94a79942 LF |
583 | |
584 | void force_pci_posting(struct net_device *dev); | |
585 | ||
630268b7 | 586 | void rtl92e_rx_enable(struct net_device *); |
94199b35 | 587 | void rtl92e_tx_enable(struct net_device *); |
94a79942 | 588 | |
bcdcc1ea | 589 | void rtl92e_hw_sleep_wq(void *data); |
bc4f2cc9 | 590 | void rtl92e_commit(struct net_device *dev); |
94a79942 | 591 | |
a643d927 | 592 | void rtl92e_check_rfctrl_gpio_timer(unsigned long data); |
94a79942 | 593 | |
c34b29f7 | 594 | void rtl92e_hw_wakeup_wq(void *data); |
94a79942 | 595 | |
36154dc3 | 596 | void rtl92e_reset_desc_ring(struct net_device *dev); |
35bf848f | 597 | void rtl92e_set_wireless_mode(struct net_device *dev, u8 wireless_mode); |
b74299cd | 598 | void rtl92e_irq_enable(struct net_device *dev); |
122fe9f1 | 599 | void rtl92e_config_rate(struct net_device *dev, u16 *rate_config); |
b7b50d65 | 600 | void rtl92e_irq_disable(struct net_device *dev); |
94a79942 | 601 | |
7879efc5 MK |
602 | void rtl92e_update_rx_pkt_timestamp(struct net_device *dev, |
603 | struct rtllib_rx_stats *stats); | |
f54f10bf | 604 | long rtl92e_translate_to_dbm(struct r8192_priv *priv, u8 signal_strength_index); |
97ef450b MK |
605 | void rtl92e_update_rx_statistics(struct r8192_priv *priv, |
606 | struct rtllib_rx_stats *pprevious_stats); | |
5d5fd353 AB |
607 | u8 rtl92e_evm_db_to_percent(s8 value); |
608 | u8 rtl92e_rx_db_to_percent(s8 antpower); | |
e58701da MK |
609 | void rtl92e_copy_mpdu_stats(struct rtllib_rx_stats *psrc_stats, |
610 | struct rtllib_rx_stats *ptarget_stats); | |
502bd1d7 | 611 | bool rtl92e_enable_nic(struct net_device *dev); |
af002dc6 | 612 | bool rtl92e_disable_nic(struct net_device *dev); |
1344ee25 | 613 | |
f434f9d5 | 614 | bool rtl92e_set_rf_state(struct net_device *dev, |
1344ee25 | 615 | enum rt_rf_power_state StateToSet, |
2937a5d2 | 616 | RT_RF_CHANGE_SOURCE ChangeSource); |
94a79942 | 617 | #endif |