Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 1 | /****************************************************************************** |
| 2 | * Copyright(c) 2008 - 2010 Realtek Corporation. All rights reserved. |
| 3 | * |
| 4 | * Based on the r8180 driver, which is: |
Andrea Merello | 559a4c3 | 2013-08-26 13:53:30 +0200 | [diff] [blame] | 5 | * Copyright 2004-2005 Andrea Merello <andrea.merello@gmail.com>, et al. |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 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 | * |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 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> |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 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> |
Larry Finger | 1344ee2 | 2011-08-25 11:48:20 -0500 | [diff] [blame] | 42 | #include <linux/io.h> |
Sean MacLennan | ea74fed | 2011-11-28 20:19:33 -0500 | [diff] [blame] | 43 | |
| 44 | /* Need this defined before including local include files */ |
| 45 | #define DRV_NAME "rtl819xE" |
| 46 | |
Sean MacLennan | 3d461c9 | 2011-11-28 20:22:26 -0500 | [diff] [blame] | 47 | #include "../rtllib.h" |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 48 | |
Sean MacLennan | 3d461c9 | 2011-11-28 20:22:26 -0500 | [diff] [blame] | 49 | #include "../dot11d.h" |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 50 | |
| 51 | #include "r8192E_firmware.h" |
| 52 | #include "r8192E_hw.h" |
| 53 | |
| 54 | #include "r8190P_def.h" |
| 55 | #include "r8192E_dev.h" |
| 56 | |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 57 | #include "rtl_eeprom.h" |
| 58 | #include "rtl_ps.h" |
| 59 | #include "rtl_pci.h" |
| 60 | #include "rtl_cam.h" |
| 61 | |
Larry Finger | 1344ee2 | 2011-08-25 11:48:20 -0500 | [diff] [blame] | 62 | #define DRV_COPYRIGHT \ |
| 63 | "Copyright(c) 2008 - 2010 Realsil Semiconductor Corporation" |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 64 | #define DRV_AUTHOR "<wlanfae@realtek.com>" |
| 65 | #define DRV_VERSION "0014.0401.2010" |
| 66 | |
Larry Finger | 1344ee2 | 2011-08-25 11:48:20 -0500 | [diff] [blame] | 67 | #define IS_HARDWARE_TYPE_8192SE(_priv) \ |
| 68 | (((struct r8192_priv *)rtllib_priv(dev))->card_8192 == NIC_8192SE) |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 69 | |
| 70 | #define RTL_PCI_DEVICE(vend, dev, cfg) \ |
| 71 | .vendor = (vend), .device = (dev), \ |
Mateusz Kulikowski | f669228 | 2015-04-13 23:47:27 +0200 | [diff] [blame] | 72 | .subvendor = PCI_ANY_ID, .subdevice = PCI_ANY_ID, \ |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 73 | .driver_data = (kernel_ulong_t)&(cfg) |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 74 | |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 75 | #define TOTAL_CAM_ENTRY 32 |
| 76 | #define CAM_CONTENT_COUNT 8 |
| 77 | |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 78 | #define HAL_HW_PCI_REVISION_ID_8192PCIE 0x01 |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 79 | #define HAL_HW_PCI_REVISION_ID_8192SE 0x10 |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 80 | |
| 81 | #define RTL819X_DEFAULT_RF_TYPE RF_1T2R |
| 82 | |
| 83 | #define RTLLIB_WATCH_DOG_TIME 2000 |
| 84 | |
Larry Finger | 1344ee2 | 2011-08-25 11:48:20 -0500 | [diff] [blame] | 85 | #define MAX_DEV_ADDR_SIZE 8 /*support till 64 bit bus width OS*/ |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 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 |
Larry Finger | 1344ee2 | 2011-08-25 11:48:20 -0500 | [diff] [blame] | 90 | #define MAX_TRANSMIT_BUFFER_SIZE \ |
| 91 | (1600 + (MAX_802_11_HEADER_LENGTH + ENCRYPTION_MAX_OVERHEAD) * \ |
| 92 | MAX_FRAGMENT_COUNT) |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 93 | |
Mateusz Kulikowski | 1e7da09 | 2015-10-19 22:00:20 +0200 | [diff] [blame] | 94 | #define CMDPACKET_FRAG_SIZE (4 * (MAX_TRANSMIT_BUFFER_SIZE / 4) - 8) |
| 95 | |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 96 | #define DEFAULT_FRAG_THRESHOLD 2342U |
| 97 | #define MIN_FRAG_THRESHOLD 256U |
| 98 | #define DEFAULT_BEACONINTERVAL 0x64U |
| 99 | |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 100 | #define DEFAULT_RETRY_RTS 7 |
| 101 | #define DEFAULT_RETRY_DATA 7 |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 102 | |
| 103 | #define PHY_RSSI_SLID_WIN_MAX 100 |
| 104 | |
Larry Finger | 1344ee2 | 2011-08-25 11:48:20 -0500 | [diff] [blame] | 105 | #define RTL_IOCTL_WPA_SUPPLICANT (SIOCIWFIRSTPRIV + 30) |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 106 | |
Larry Finger | 1344ee2 | 2011-08-25 11:48:20 -0500 | [diff] [blame] | 107 | #define TxBBGainTableLength 37 |
| 108 | #define CCKTxBBGainTableLength 23 |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 109 | |
| 110 | #define CHANNEL_PLAN_LEN 10 |
Larry Finger | 1344ee2 | 2011-08-25 11:48:20 -0500 | [diff] [blame] | 111 | #define sCrcLng 4 |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 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 | |
Larry Finger | 1344ee2 | 2011-08-25 11:48:20 -0500 | [diff] [blame] | 120 | #define MAX_RX_COUNT 64 |
| 121 | #define MAX_TX_QUEUE_COUNT 9 |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 122 | |
Rashika Kheria | fa63c9c | 2013-11-07 19:14:56 +0530 | [diff] [blame] | 123 | extern int hwwep; |
| 124 | |
Larry Finger | b55941a | 2011-07-19 19:33:00 -0500 | [diff] [blame] | 125 | enum nic_t { |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 126 | NIC_UNKNOWN = 0, |
| 127 | NIC_8192E = 1, |
| 128 | NIC_8190P = 2, |
| 129 | NIC_8192SE = 4, |
Larry Finger | 1344ee2 | 2011-08-25 11:48:20 -0500 | [diff] [blame] | 130 | NIC_8192CE = 5, |
| 131 | NIC_8192CU = 6, |
| 132 | NIC_8192DE = 7, |
| 133 | NIC_8192DU = 8, |
| 134 | }; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 135 | |
Larry Finger | e946377 | 2011-07-19 19:34:33 -0500 | [diff] [blame] | 136 | enum rt_eeprom_type { |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 137 | EEPROM_93C46, |
| 138 | EEPROM_93C56, |
Larry Finger | e946377 | 2011-07-19 19:34:33 -0500 | [diff] [blame] | 139 | }; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 140 | |
Larry Finger | aec1148 | 2011-07-19 19:36:07 -0500 | [diff] [blame] | 141 | enum dcmg_txcmd_op { |
Larry Finger | 1344ee2 | 2011-08-25 11:48:20 -0500 | [diff] [blame] | 142 | TXCMD_TXRA_HISTORY_CTRL = 0xFF900000, |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 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, |
Larry Finger | aec1148 | 2011-07-19 19:36:07 -0500 | [diff] [blame] | 149 | }; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 150 | |
Larry Finger | fc6094f | 2011-07-19 19:37:46 -0500 | [diff] [blame] | 151 | enum rt_rf_type_819xu { |
Larry Finger | 1344ee2 | 2011-08-25 11:48:20 -0500 | [diff] [blame] | 152 | RF_TYPE_MIN = 0, |
| 153 | RF_8225, |
| 154 | RF_8256, |
| 155 | RF_8258, |
| 156 | RF_6052 = 4, |
| 157 | RF_PSEUDO_11N = 5, |
Larry Finger | fc6094f | 2011-07-19 19:37:46 -0500 | [diff] [blame] | 158 | }; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 159 | |
Larry Finger | ed8eac2 | 2011-07-19 19:42:55 -0500 | [diff] [blame] | 160 | enum rt_customer_id { |
Larry Finger | 1344ee2 | 2011-08-25 11:48:20 -0500 | [diff] [blame] | 161 | RT_CID_DEFAULT = 0, |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 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, |
Larry Finger | 1344ee2 | 2011-08-25 11:48:20 -0500 | [diff] [blame] | 166 | RT_CID_WHQL = 5, |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 167 | RT_CID_819x_CAMEO = 6, |
| 168 | RT_CID_819x_RUNTOP = 7, |
| 169 | RT_CID_819x_Senao = 8, |
Larry Finger | 1344ee2 | 2011-08-25 11:48:20 -0500 | [diff] [blame] | 170 | RT_CID_TOSHIBA = 9, |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 171 | RT_CID_819x_Netcore = 10, |
Larry Finger | 1344ee2 | 2011-08-25 11:48:20 -0500 | [diff] [blame] | 172 | RT_CID_Nettronix = 11, |
| 173 | RT_CID_DLINK = 12, |
| 174 | RT_CID_PRONET = 13, |
| 175 | RT_CID_COREGA = 14, |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 176 | RT_CID_819x_ALPHA = 15, |
| 177 | RT_CID_819x_Sitecom = 16, |
Larry Finger | 1344ee2 | 2011-08-25 11:48:20 -0500 | [diff] [blame] | 178 | RT_CID_CCX = 17, |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 179 | RT_CID_819x_Lenovo = 18, |
Larry Finger | 1344ee2 | 2011-08-25 11:48:20 -0500 | [diff] [blame] | 180 | RT_CID_819x_QMI = 19, |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 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, |
Larry Finger | 1344ee2 | 2011-08-25 11:48:20 -0500 | [diff] [blame] | 186 | RT_CID_819x_HP = 27, |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 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, |
Larry Finger | ed8eac2 | 2011-07-19 19:42:55 -0500 | [diff] [blame] | 191 | }; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 192 | |
Larry Finger | ab0d7cc | 2011-07-19 19:49:51 -0500 | [diff] [blame] | 193 | enum reset_type { |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 194 | RESET_TYPE_NORESET = 0x00, |
| 195 | RESET_TYPE_NORMAL = 0x01, |
| 196 | RESET_TYPE_SILENT = 0x02 |
Larry Finger | ab0d7cc | 2011-07-19 19:49:51 -0500 | [diff] [blame] | 197 | }; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 198 | |
Larry Finger | 2fac6fc | 2011-07-19 00:21:31 -0500 | [diff] [blame] | 199 | struct rt_stats { |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 200 | unsigned long rxrdu; |
| 201 | unsigned long rxok; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 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]; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 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]; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 216 | unsigned long rxoverflow; |
| 217 | unsigned long rxint; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 218 | unsigned long ints; |
| 219 | unsigned long shints; |
| 220 | unsigned long txoverflow; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 221 | unsigned long txbeokint; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 222 | unsigned long txbkokint; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 223 | unsigned long txviokint; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 224 | unsigned long txvookint; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 225 | unsigned long txbeaconokint; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 226 | unsigned long txbeaconerr; |
| 227 | unsigned long txmanageokint; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 228 | unsigned long txcmdpktokint; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 229 | unsigned long txbytesmulticast; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 230 | unsigned long txbytesbroadcast; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 231 | unsigned long txbytesunicast; |
| 232 | unsigned long rxbytesunicast; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 233 | unsigned long txretrycount; |
Larry Finger | 1344ee2 | 2011-08-25 11:48:20 -0500 | [diff] [blame] | 234 | u8 last_packet_rate; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 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]; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 246 | u32 Slide_Beacon_pwdb[100]; |
| 247 | u32 Slide_Beacon_Total; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 248 | u32 CurrentShowTxate; |
Larry Finger | 2fac6fc | 2011-07-19 00:21:31 -0500 | [diff] [blame] | 249 | }; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 250 | |
Larry Finger | e91dbf0 | 2011-07-18 22:30:34 -0500 | [diff] [blame] | 251 | struct channel_access_setting { |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 252 | u16 SIFS_Timer; |
| 253 | u16 DIFS_Timer; |
| 254 | u16 SlotTimeTimer; |
| 255 | u16 EIFS_Timer; |
| 256 | u16 CWminIndex; |
| 257 | u16 CWmaxIndex; |
Larry Finger | e91dbf0 | 2011-07-18 22:30:34 -0500 | [diff] [blame] | 258 | }; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 259 | |
Larry Finger | 43267fe | 2011-07-18 23:51:09 -0500 | [diff] [blame] | 260 | struct init_gain { |
Larry Finger | 1344ee2 | 2011-08-25 11:48:20 -0500 | [diff] [blame] | 261 | u8 xaagccore1; |
| 262 | u8 xbagccore1; |
| 263 | u8 xcagccore1; |
| 264 | u8 xdagccore1; |
| 265 | u8 cca; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 266 | |
Larry Finger | 43267fe | 2011-07-18 23:51:09 -0500 | [diff] [blame] | 267 | }; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 268 | |
Larry Finger | b7a1404 | 2011-07-18 23:29:22 -0500 | [diff] [blame] | 269 | struct tx_ring { |
Larry Finger | 1344ee2 | 2011-08-25 11:48:20 -0500 | [diff] [blame] | 270 | u32 *desc; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 271 | u8 nStuckCount; |
Larry Finger | 1344ee2 | 2011-08-25 11:48:20 -0500 | [diff] [blame] | 272 | struct tx_ring *next; |
Larry Finger | b7a1404 | 2011-07-18 23:29:22 -0500 | [diff] [blame] | 273 | } __packed; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 274 | |
| 275 | struct rtl8192_tx_ring { |
Larry Finger | 1344ee2 | 2011-08-25 11:48:20 -0500 | [diff] [blame] | 276 | struct tx_desc *desc; |
| 277 | dma_addr_t dma; |
| 278 | unsigned int idx; |
| 279 | unsigned int entries; |
| 280 | struct sk_buff_head queue; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 281 | }; |
| 282 | |
| 283 | |
| 284 | |
Larry Finger | 1344ee2 | 2011-08-25 11:48:20 -0500 | [diff] [blame] | 285 | struct rtl819x_ops { |
Larry Finger | b55941a | 2011-07-19 19:33:00 -0500 | [diff] [blame] | 286 | enum nic_t nic_type; |
Larry Finger | 1344ee2 | 2011-08-25 11:48:20 -0500 | [diff] [blame] | 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); |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 318 | }; |
| 319 | |
Larry Finger | e3e3762 | 2011-07-19 00:26:41 -0500 | [diff] [blame] | 320 | struct r8192_priv { |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 321 | struct pci_dev *pdev; |
| 322 | struct pci_dev *bridge_pdev; |
| 323 | |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 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; |
Larry Finger | edc4b2c | 2011-07-19 00:46:24 -0500 | [diff] [blame] | 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; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 340 | |
Larry Finger | e91dbf0 | 2011-07-18 22:30:34 -0500 | [diff] [blame] | 341 | struct channel_access_setting ChannelAccessSetting; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 342 | |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 343 | struct rtl819x_ops *ops; |
| 344 | struct rtllib_device *rtllib; |
| 345 | |
Larry Finger | edc4b2c | 2011-07-19 00:46:24 -0500 | [diff] [blame] | 346 | struct work_struct reset_wq; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 347 | |
Larry Finger | c13ac63 | 2011-07-18 21:32:47 -0500 | [diff] [blame] | 348 | struct log_int_8190 InterruptLog; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 349 | |
Larry Finger | ed8eac2 | 2011-07-19 19:42:55 -0500 | [diff] [blame] | 350 | enum rt_customer_id CustomerID; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 351 | |
| 352 | |
Larry Finger | fc6094f | 2011-07-19 19:37:46 -0500 | [diff] [blame] | 353 | enum rt_rf_type_819xu rf_chip; |
Larry Finger | 6e57911 | 2011-07-19 18:20:30 -0500 | [diff] [blame] | 354 | enum ht_channel_width CurrentChannelBW; |
Larry Finger | 9bf6e4c | 2011-07-18 21:16:51 -0500 | [diff] [blame] | 355 | struct bb_reg_definition PHYRegDef[4]; |
Larry Finger | 9be6f10 | 2011-07-19 00:09:03 -0500 | [diff] [blame] | 356 | struct rate_adaptive rate_adaptive; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 357 | |
Larry Finger | 379a20f | 2011-07-19 19:30:04 -0500 | [diff] [blame] | 358 | enum acm_method AcmMethod; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 359 | |
Larry Finger | 5aca114 | 2011-07-18 23:10:50 -0500 | [diff] [blame] | 360 | struct rt_firmware *pFirmware; |
Larry Finger | 70f9f79 | 2011-07-19 12:54:24 -0500 | [diff] [blame] | 361 | enum rtl819x_loopback LoopbackMode; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 362 | |
| 363 | struct timer_list watch_dog_timer; |
| 364 | struct timer_list fsync_timer; |
| 365 | struct timer_list gpio_polling_timer; |
| 366 | |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 367 | spinlock_t irq_th_lock; |
| 368 | spinlock_t tx_lock; |
| 369 | spinlock_t rf_ps_lock; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 370 | spinlock_t ps_lock; |
| 371 | |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 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 | |
| 378 | struct semaphore wx_sem; |
| 379 | struct semaphore rf_sem; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 380 | struct mutex mutex; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 381 | |
Larry Finger | 2fac6fc | 2011-07-19 00:21:31 -0500 | [diff] [blame] | 382 | struct rt_stats stats; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 383 | struct iw_statistics wstats; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 384 | |
Larry Finger | 1344ee2 | 2011-08-25 11:48:20 -0500 | [diff] [blame] | 385 | short (*rf_set_sens)(struct net_device *dev, short sens); |
| 386 | u8 (*rf_set_chan)(struct net_device *dev, u8 ch); |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 387 | |
Larry Finger | 4f534b3 | 2011-07-18 22:52:12 -0500 | [diff] [blame] | 388 | struct rx_desc *rx_ring[MAX_RX_QUEUE]; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 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 | |
Larry Finger | 0dd5650 | 2011-08-25 11:48:12 -0500 | [diff] [blame] | 395 | u64 LastRxDescTSF; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 396 | |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 397 | u32 ReceiveConfig; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 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; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 404 | atomic_t tx_pending[0x10]; |
| 405 | |
| 406 | u16 ShortRetryLimit; |
| 407 | u16 LongRetryLimit; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 408 | |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 409 | bool bHwRadioOff; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 410 | bool blinked_ingpio; |
| 411 | u8 polling_timer_on; |
| 412 | |
| 413 | /**********************************************************/ |
| 414 | |
Larry Finger | 1344ee2 | 2011-08-25 11:48:20 -0500 | [diff] [blame] | 415 | enum card_type { |
| 416 | PCI, MINIPCI, |
| 417 | CARDBUS, USB |
| 418 | } card_type; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 419 | |
Larry Finger | edc4b2c | 2011-07-19 00:46:24 -0500 | [diff] [blame] | 420 | struct work_struct qos_activate; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 421 | |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 422 | short promisc; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 423 | |
| 424 | short chan; |
| 425 | short sens; |
| 426 | short max_sens; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 427 | |
Larry Finger | 1344ee2 | 2011-08-25 11:48:20 -0500 | [diff] [blame] | 428 | u8 ScanDelay; |
| 429 | bool ps_force; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 430 | |
Larry Finger | 1344ee2 | 2011-08-25 11:48:20 -0500 | [diff] [blame] | 431 | u32 irq_mask[2]; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 432 | |
Larry Finger | 1344ee2 | 2011-08-25 11:48:20 -0500 | [diff] [blame] | 433 | u8 Rf_Mode; |
Larry Finger | b55941a | 2011-07-19 19:33:00 -0500 | [diff] [blame] | 434 | enum nic_t card_8192; |
Larry Finger | 1344ee2 | 2011-08-25 11:48:20 -0500 | [diff] [blame] | 435 | u8 card_8192_version; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 436 | |
Larry Finger | 1344ee2 | 2011-08-25 11:48:20 -0500 | [diff] [blame] | 437 | u8 rf_type; |
| 438 | u8 IC_Cut; |
| 439 | char nick[IW_ESSID_MAX_SIZE + 1]; |
Larry Finger | 1344ee2 | 2011-08-25 11:48:20 -0500 | [diff] [blame] | 440 | u8 check_roaming_cnt; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 441 | |
Larry Finger | 1344ee2 | 2011-08-25 11:48:20 -0500 | [diff] [blame] | 442 | u32 SilentResetRxSlotIndex; |
| 443 | u32 SilentResetRxStuckEvent[MAX_SILENT_RESET_RX_SLOT_NUM]; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 444 | |
Larry Finger | 1344ee2 | 2011-08-25 11:48:20 -0500 | [diff] [blame] | 445 | u16 basic_rate; |
| 446 | u8 short_preamble; |
| 447 | u8 dot11CurrentPreambleMode; |
| 448 | u8 slot_time; |
| 449 | u16 SifsTime; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 450 | |
Larry Finger | 1344ee2 | 2011-08-25 11:48:20 -0500 | [diff] [blame] | 451 | bool AutoloadFailFlag; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 452 | |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 453 | short epromtype; |
Larry Finger | 1344ee2 | 2011-08-25 11:48:20 -0500 | [diff] [blame] | 454 | u16 eeprom_vid; |
| 455 | u16 eeprom_did; |
Larry Finger | 1344ee2 | 2011-08-25 11:48:20 -0500 | [diff] [blame] | 456 | u8 eeprom_CustomerID; |
| 457 | u16 eeprom_ChannelPlan; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 458 | |
Larry Finger | 1344ee2 | 2011-08-25 11:48:20 -0500 | [diff] [blame] | 459 | u8 EEPROMTxPowerLevelCCK[14]; |
| 460 | u8 EEPROMTxPowerLevelOFDM24G[14]; |
Larry Finger | 1344ee2 | 2011-08-25 11:48:20 -0500 | [diff] [blame] | 461 | u8 EEPROMRfACCKChnl1TxPwLevel[3]; |
| 462 | u8 EEPROMRfAOfdmChnlTxPwLevel[3]; |
| 463 | u8 EEPROMRfCCCKChnl1TxPwLevel[3]; |
| 464 | u8 EEPROMRfCOfdmChnlTxPwLevel[3]; |
Larry Finger | 1344ee2 | 2011-08-25 11:48:20 -0500 | [diff] [blame] | 465 | u16 EEPROMAntPwDiff; |
| 466 | u8 EEPROMThermalMeter; |
Larry Finger | 1344ee2 | 2011-08-25 11:48:20 -0500 | [diff] [blame] | 467 | u8 EEPROMCrystalCap; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 468 | |
Larry Finger | 1344ee2 | 2011-08-25 11:48:20 -0500 | [diff] [blame] | 469 | u8 EEPROMLegacyHTTxPowerDiff; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 470 | |
Larry Finger | 1344ee2 | 2011-08-25 11:48:20 -0500 | [diff] [blame] | 471 | u8 CrystalCap; |
| 472 | u8 ThermalMeter[2]; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 473 | |
Larry Finger | 1344ee2 | 2011-08-25 11:48:20 -0500 | [diff] [blame] | 474 | u8 SwChnlInProgress; |
| 475 | u8 SwChnlStage; |
| 476 | u8 SwChnlStep; |
| 477 | u8 SetBWModeInProgress; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 478 | |
Larry Finger | 1344ee2 | 2011-08-25 11:48:20 -0500 | [diff] [blame] | 479 | u8 nCur40MhzPrimeSC; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 480 | |
Larry Finger | 1344ee2 | 2011-08-25 11:48:20 -0500 | [diff] [blame] | 481 | u32 RfReg0Value[4]; |
| 482 | u8 NumTotalRFPath; |
| 483 | bool brfpath_rxenable[4]; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 484 | |
Larry Finger | 1344ee2 | 2011-08-25 11:48:20 -0500 | [diff] [blame] | 485 | bool bTXPowerDataReadFromEEPORM; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 486 | |
Larry Finger | 1344ee2 | 2011-08-25 11:48:20 -0500 | [diff] [blame] | 487 | u16 RegChannelPlan; |
| 488 | u16 ChannelPlan; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 489 | |
Larry Finger | 1344ee2 | 2011-08-25 11:48:20 -0500 | [diff] [blame] | 490 | bool RegRfOff; |
| 491 | bool isRFOff; |
| 492 | bool bInPowerSaveMode; |
| 493 | u8 bHwRfOffAction; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 494 | |
Larry Finger | 1344ee2 | 2011-08-25 11:48:20 -0500 | [diff] [blame] | 495 | bool RFChangeInProgress; |
| 496 | bool SetRFPowerStateInProgress; |
| 497 | bool bdisable_nic; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 498 | |
Larry Finger | 1344ee2 | 2011-08-25 11:48:20 -0500 | [diff] [blame] | 499 | u8 DM_Type; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 500 | |
Larry Finger | 1344ee2 | 2011-08-25 11:48:20 -0500 | [diff] [blame] | 501 | u8 CckPwEnl; |
| 502 | u16 TSSI_13dBm; |
| 503 | u32 Pwr_Track; |
| 504 | u8 CCKPresentAttentuation_20Mdefault; |
| 505 | u8 CCKPresentAttentuation_40Mdefault; |
| 506 | char CCKPresentAttentuation_difference; |
| 507 | char CCKPresentAttentuation; |
Larry Finger | 1344ee2 | 2011-08-25 11:48:20 -0500 | [diff] [blame] | 508 | long undecorated_smoothed_pwdb; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 509 | |
Larry Finger | 1344ee2 | 2011-08-25 11:48:20 -0500 | [diff] [blame] | 510 | u32 MCSTxPowerLevelOriginalOffset[6]; |
Larry Finger | 1344ee2 | 2011-08-25 11:48:20 -0500 | [diff] [blame] | 511 | u8 TxPowerLevelCCK[14]; |
| 512 | u8 TxPowerLevelCCK_A[14]; |
| 513 | u8 TxPowerLevelCCK_C[14]; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 514 | u8 TxPowerLevelOFDM24G[14]; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 515 | u8 TxPowerLevelOFDM24G_A[14]; |
| 516 | u8 TxPowerLevelOFDM24G_C[14]; |
| 517 | u8 LegacyHTTxPowerDiff; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 518 | s8 RF_C_TxPwDiff; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 519 | u8 AntennaTxPwDiff[3]; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 520 | |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 521 | bool bDynamicTxHighPower; |
| 522 | bool bDynamicTxLowPower; |
| 523 | bool bLastDTPFlag_High; |
| 524 | bool bLastDTPFlag_Low; |
| 525 | |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 526 | u8 rfa_txpowertrackingindex; |
| 527 | u8 rfa_txpowertrackingindex_real; |
| 528 | u8 rfa_txpowertracking_default; |
| 529 | u8 rfc_txpowertrackingindex; |
| 530 | u8 rfc_txpowertrackingindex_real; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 531 | bool btxpower_tracking; |
| 532 | bool bcck_in_ch14; |
| 533 | |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 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 | |
Larry Finger | 43267fe | 2011-07-18 23:51:09 -0500 | [diff] [blame] | 543 | struct init_gain initgain_backup; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 544 | u8 DefaultInitialGain[4]; |
| 545 | bool bis_any_nonbepkts; |
| 546 | bool bcurrent_turbo_EDCA; |
| 547 | bool bis_cur_rdlstate; |
| 548 | |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 549 | bool bfsync_processing; |
| 550 | u32 rate_record; |
| 551 | u32 rateCountDiffRecord; |
Justin P. Mattock | 4c234eb | 2012-05-01 08:34:14 -0700 | [diff] [blame] | 552 | u32 ContinueDiffCount; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 553 | bool bswitch_fsync; |
| 554 | u8 framesync; |
| 555 | u32 framesyncC34; |
| 556 | u8 framesyncMonitor; |
| 557 | |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 558 | u32 reset_count; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 559 | |
Larry Finger | ab0d7cc | 2011-07-19 19:49:51 -0500 | [diff] [blame] | 560 | enum reset_type ResetProgress; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 561 | bool bForcedSilentReset; |
| 562 | bool bDisableNormalResetCheck; |
| 563 | u16 TxCounter; |
| 564 | u16 RxCounter; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 565 | bool bResetInProgress; |
| 566 | bool force_reset; |
| 567 | bool force_lps; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 568 | |
| 569 | bool chan_forced; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 570 | |
| 571 | u8 PwrDomainProtect; |
| 572 | u8 H2CTxCmdSeq; |
Larry Finger | d3b2c17 | 2011-07-19 12:50:41 -0500 | [diff] [blame] | 573 | }; |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 574 | |
| 575 | extern const struct ethtool_ops rtl819x_ethtool_ops; |
| 576 | |
Mateusz Kulikowski | b59a4ca | 2015-07-19 19:28:09 +0200 | [diff] [blame] | 577 | u8 rtl92e_readb(struct net_device *dev, int x); |
Mateusz Kulikowski | 99aa47e | 2015-07-19 19:28:10 +0200 | [diff] [blame] | 578 | u32 rtl92e_readl(struct net_device *dev, int x); |
Mateusz Kulikowski | 1c0a7c0 | 2015-07-19 19:28:11 +0200 | [diff] [blame] | 579 | u16 rtl92e_readw(struct net_device *dev, int x); |
Mateusz Kulikowski | d8ae196 | 2015-07-19 19:28:26 +0200 | [diff] [blame] | 580 | void rtl92e_writeb(struct net_device *dev, int x, u8 y); |
Mateusz Kulikowski | 6dee0c8 | 2015-07-19 19:28:28 +0200 | [diff] [blame] | 581 | void rtl92e_writew(struct net_device *dev, int x, u16 y); |
Mateusz Kulikowski | 8ea5410 | 2015-07-19 19:28:27 +0200 | [diff] [blame] | 582 | void rtl92e_writel(struct net_device *dev, int x, u32 y); |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 583 | |
| 584 | void force_pci_posting(struct net_device *dev); |
| 585 | |
Mateusz Kulikowski | 630268b | 2015-07-19 19:28:18 +0200 | [diff] [blame] | 586 | void rtl92e_rx_enable(struct net_device *); |
Mateusz Kulikowski | 94199b3 | 2015-07-19 19:28:20 +0200 | [diff] [blame] | 587 | void rtl92e_tx_enable(struct net_device *); |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 588 | |
Mateusz Kulikowski | bcdcc1e | 2015-07-19 19:33:51 +0200 | [diff] [blame] | 589 | void rtl92e_hw_sleep_wq(void *data); |
Mateusz Kulikowski | bc4f2cc | 2015-07-19 19:28:12 +0200 | [diff] [blame] | 590 | void rtl92e_commit(struct net_device *dev); |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 591 | |
Mateusz Kulikowski | a643d92 | 2015-07-19 19:28:05 +0200 | [diff] [blame] | 592 | void rtl92e_check_rfctrl_gpio_timer(unsigned long data); |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 593 | |
Mateusz Kulikowski | c34b29f | 2015-07-19 19:33:54 +0200 | [diff] [blame] | 594 | void rtl92e_hw_wakeup_wq(void *data); |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 595 | |
Mateusz Kulikowski | 36154dc | 2015-07-19 19:28:16 +0200 | [diff] [blame] | 596 | void rtl92e_reset_desc_ring(struct net_device *dev); |
Mateusz Kulikowski | 35bf848 | 2015-07-19 19:28:19 +0200 | [diff] [blame] | 597 | void rtl92e_set_wireless_mode(struct net_device *dev, u8 wireless_mode); |
Mateusz Kulikowski | b74299c | 2015-07-19 19:28:15 +0200 | [diff] [blame] | 598 | void rtl92e_irq_enable(struct net_device *dev); |
Mateusz Kulikowski | 122fe9f | 2015-07-19 19:28:13 +0200 | [diff] [blame] | 599 | void rtl92e_config_rate(struct net_device *dev, u16 *rate_config); |
Mateusz Kulikowski | b7b50d6 | 2015-07-19 19:28:14 +0200 | [diff] [blame] | 600 | void rtl92e_irq_disable(struct net_device *dev); |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 601 | |
Mateusz Kulikowski | 7879efc | 2015-07-19 19:28:24 +0200 | [diff] [blame] | 602 | void rtl92e_update_rx_pkt_timestamp(struct net_device *dev, |
| 603 | struct rtllib_rx_stats *stats); |
Mateusz Kulikowski | f54f10b | 2015-07-19 19:28:23 +0200 | [diff] [blame] | 604 | long rtl92e_translate_to_dbm(struct r8192_priv *priv, u8 signal_strength_index); |
Mateusz Kulikowski | 97ef450 | 2015-07-19 19:28:25 +0200 | [diff] [blame] | 605 | void rtl92e_update_rx_statistics(struct r8192_priv *priv, |
| 606 | struct rtllib_rx_stats *pprevious_stats); |
Mateusz Kulikowski | 6b89d0e | 2015-07-19 19:28:21 +0200 | [diff] [blame] | 607 | u8 rtl92e_evm_db_to_percent(char value); |
Mateusz Kulikowski | aa80403 | 2015-07-19 19:28:22 +0200 | [diff] [blame] | 608 | u8 rtl92e_rx_db_to_percent(char antpower); |
Mateusz Kulikowski | e58701d | 2015-07-19 19:28:17 +0200 | [diff] [blame] | 609 | void rtl92e_copy_mpdu_stats(struct rtllib_rx_stats *psrc_stats, |
| 610 | struct rtllib_rx_stats *ptarget_stats); |
Mateusz Kulikowski | 502bd1d | 2015-07-19 19:28:08 +0200 | [diff] [blame] | 611 | bool rtl92e_enable_nic(struct net_device *dev); |
Mateusz Kulikowski | af002dc | 2015-07-19 19:28:07 +0200 | [diff] [blame] | 612 | bool rtl92e_disable_nic(struct net_device *dev); |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 613 | |
Mateusz Kulikowski | f434f9d | 2015-07-19 19:28:06 +0200 | [diff] [blame] | 614 | bool rtl92e_set_rf_state(struct net_device *dev, |
Larry Finger | 1344ee2 | 2011-08-25 11:48:20 -0500 | [diff] [blame] | 615 | enum rt_rf_power_state StateToSet, |
Mateusz Kulikowski | 2937a5d | 2015-07-28 23:31:41 +0200 | [diff] [blame] | 616 | RT_RF_CHANGE_SOURCE ChangeSource); |
Larry Finger | 94a7994 | 2011-08-23 19:00:42 -0500 | [diff] [blame] | 617 | #endif |