1 /******************************************************************************
\r
3 * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
\r
5 * This program is free software; you can redistribute it and/or modify it
\r
6 * under the terms of version 2 of the GNU General Public License as
\r
7 * published by the Free Software Foundation.
\r
9 * This program is distributed in the hope that it will be useful, but WITHOUT
\r
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
\r
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
\r
14 * You should have received a copy of the GNU General Public License along with
\r
15 * this program; if not, write to the Free Software Foundation, Inc.,
\r
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
\r
20 ******************************************************************************/
\r
21 #ifndef __RTL8192D_DM_H__
\r
22 #define __RTL8192D_DM_H__
\r
23 //============================================================
\r
26 // This file is for 92CE/92CU dynamic mechanism only
\r
29 //============================================================
\r
30 //============================================================
\r
32 //============================================================
\r
34 extern u32 EDCAParam[maxAP][3] ;
\r
36 #define OFDM_TABLE_SIZE 37
\r
37 #define OFDM_TABLE_SIZE_92D 43
\r
38 #define CCK_TABLE_SIZE 33
\r
39 extern u32 OFDMSwingTable[OFDM_TABLE_SIZE_92D] ;
\r
41 extern u8 CCKSwingTable_Ch1_Ch13[CCK_TABLE_SIZE][8];
\r
43 extern u8 CCKSwingTable_Ch14 [CCK_TABLE_SIZE][8];
\r
45 //============================================================
\r
46 // structure and define
\r
47 //============================================================
\r
49 typedef struct _FALSE_ALARM_STATISTICS{
\r
50 u32 Cnt_Parity_Fail;
\r
51 u32 Cnt_Rate_Illegal;
\r
58 u32 Cnt_SB_Search_fail;
\r
59 }FALSE_ALARM_STATISTICS, *PFALSE_ALARM_STATISTICS;
\r
61 typedef struct _Dynamic_Power_Saving_
\r
73 typedef struct _Dynamic_Initial_Gain_Threshold_
\r
76 u8 Dig_Ext_Port_Stage;
\r
84 u8 CurSTAConnectState;
\r
85 u8 PreSTAConnectState;
\r
86 u8 CurMultiSTAConnectState;
\r
92 char BackoffVal_range_max;
\r
93 char BackoffVal_range_min;
\r
94 u8 rx_gain_range_max;
\r
95 u8 rx_gain_range_min;
\r
105 typedef enum tag_Dynamic_Init_Gain_Operation_Type_Definition
\r
107 DIG_TYPE_THRESH_HIGH = 0,
\r
108 DIG_TYPE_THRESH_LOW = 1,
\r
109 DIG_TYPE_BACKOFF = 2,
\r
110 DIG_TYPE_RX_GAIN_MIN = 3,
\r
111 DIG_TYPE_RX_GAIN_MAX = 4,
\r
112 DIG_TYPE_ENABLE = 5,
\r
113 DIG_TYPE_DISABLE = 6,
\r
117 typedef enum tag_CCK_Packet_Detection_Threshold_Type_Definition
\r
119 CCK_PD_STAGE_LowRssi = 0,
\r
120 CCK_PD_STAGE_HighRssi = 1,
\r
121 CCK_PD_STAGE_MAX = 3,
\r
124 typedef enum tag_1R_CCA_Type_Definition
\r
132 typedef enum tag_RF_Type_Definition
\r
139 typedef enum tag_DIG_EXT_PORT_ALGO_Definition
\r
141 DIG_EXT_PORT_STAGE_0 = 0,
\r
142 DIG_EXT_PORT_STAGE_1 = 1,
\r
143 DIG_EXT_PORT_STAGE_2 = 2,
\r
144 DIG_EXT_PORT_STAGE_3 = 3,
\r
145 DIG_EXT_PORT_STAGE_MAX = 4,
\r
146 }DM_DIG_EXT_PORT_ALG_E;
\r
149 typedef enum tag_DIG_Connect_Definition
\r
151 DIG_STA_DISCONNECT = 0,
\r
152 DIG_STA_CONNECT = 1,
\r
153 DIG_STA_BEFORE_CONNECT = 2,
\r
154 DIG_MultiSTA_DISCONNECT = 3,
\r
155 DIG_MultiSTA_CONNECT = 4,
\r
160 #define DM_DIG_THRESH_HIGH 40
\r
161 #define DM_DIG_THRESH_LOW 35
\r
163 #define DM_FALSEALARM_THRESH_LOW 400
\r
164 #define DM_FALSEALARM_THRESH_HIGH 1000
\r
166 #define DM_DIG_MAX 0x3e
\r
167 #define DM_DIG_MIN 0x1e //0x22//0x1c
\r
169 #define DM_DIG_FA_UPPER 0x32
\r
170 #define DM_DIG_FA_LOWER 0x20
\r
172 //vivi 92c&92d has different definition, 20110504
\r
174 #define DM_DIG_FA_TH0 0x200//0x20
\r
175 #define DM_DIG_FA_TH1 0x300//0x100
\r
176 #define DM_DIG_FA_TH2 0x400//0x200
\r
178 #define DM_DIG_FA_TH0_92D 0x100
\r
179 #define DM_DIG_FA_TH1_92D 0x400
\r
180 #define DM_DIG_FA_TH2_92D 0x600
\r
182 #define DM_DIG_BACKOFF_MAX 12
\r
183 #define DM_DIG_BACKOFF_MIN (-4)
\r
184 #define DM_DIG_BACKOFF_DEFAULT 10
\r
186 #define RxPathSelection_SS_TH_low 30
\r
187 #define RxPathSelection_diff_TH 18
\r
189 #define DM_RATR_STA_INIT 0
\r
190 #define DM_RATR_STA_HIGH 1
\r
191 #define DM_RATR_STA_MIDDLE 2
\r
192 #define DM_RATR_STA_LOW 3
\r
194 #define CTSToSelfTHVal 30
\r
195 #define RegC38_TH 20
\r
197 #define WAIotTHVal 25
\r
199 //Dynamic Tx Power Control Threshold
\r
200 #define TX_POWER_NEAR_FIELD_THRESH_LVL2 74
\r
201 #define TX_POWER_NEAR_FIELD_THRESH_LVL1 67
\r
203 #define TxHighPwrLevel_Normal 0
\r
204 #define TxHighPwrLevel_Level1 1
\r
205 #define TxHighPwrLevel_Level2 2
\r
207 #define DM_Type_ByFW 0
\r
208 #define DM_Type_ByDriver 1
\r
210 typedef struct _RATE_ADAPTIVE
\r
212 u8 RateAdaptiveDisabled;
\r
216 u32 HighRSSIThreshForRA;
\r
217 u32 High2LowRSSIThreshForRA;
\r
218 u8 Low2HighRSSIThreshForRA40M;
\r
219 u32 LowRSSIThreshForRA40M;
\r
220 u8 Low2HighRSSIThreshForRA20M;
\r
221 u32 LowRSSIThreshForRA20M;
\r
222 u32 UpperRSSIThresholdRATR;
\r
223 u32 MiddleRSSIThresholdRATR;
\r
224 u32 LowRSSIThresholdRATR;
\r
225 u32 LowRSSIThresholdRATR40M;
\r
226 u32 LowRSSIThresholdRATR20M;
\r
227 u8 PingRSSIEnable; //cosa add for Netcore long range ping issue
\r
228 u32 PingRSSIRATR; //cosa add for Netcore long range ping issue
\r
229 u32 PingRSSIThreshForRA;//cosa add for Netcore long range ping issue
\r
233 } RATE_ADAPTIVE, *PRATE_ADAPTIVE;
\r
235 typedef enum tag_SW_Antenna_Switch_Definition
\r
242 // 20100514 Joseph: Add definition for antenna switching test after link.
\r
243 // This indicates two different the steps.
\r
244 // In SWAW_STEP_PEAK, driver needs to switch antenna and listen to the signal on the air.
\r
245 // In SWAW_STEP_DETERMINE, driver just compares the signal captured in SWAW_STEP_PEAK
\r
246 // with original RSSI to determine if it is necessary to switch antenna.
\r
247 #define SWAW_STEP_PEAK 0
\r
248 #define SWAW_STEP_DETERMINE 1
\r
251 #define RSSI_MODE 1
\r
252 #define TRAFFIC_LOW 0
\r
253 #define TRAFFIC_HIGH 1
\r
255 //=============================
\r
256 //Neil Chen---2011--06--15--
\r
257 //==============================
\r
259 typedef struct _SW_Antenna_Switch_
\r
267 u8 bTriggerAntennaSwitch;
\r
268 u8 SelectAntennaMap;
\r
270 // Before link Antenna Switch check
\r
271 u8 SWAS_NoLink_State;
\r
272 u32 SWAS_NoLink_BK_Reg860;
\r
274 //========================================
\r
279 u8 DMFlag, DMFlag_tmp;
\r
282 u8 bDMInitialGainEnable;
\r
283 //u8 binitialized; // for dm_initial_gain_Multi_STA use.
\r
288 FALSE_ALARM_STATISTICS FalseAlmCnt;
\r
290 //for rate adaptive, in fact, 88c/92c fw will handle this
\r
292 RATE_ADAPTIVE RateAdaptive;
\r
294 //* Upper and Lower Signal threshold for Rate Adaptive*/
\r
295 int UndecoratedSmoothedPWDB;
\r
296 int EntryMinUndecoratedSmoothedPWDB;
\r
297 int EntryMaxUndecoratedSmoothedPWDB;
\r
298 int MinUndecoratedPWDBForDM;
\r
299 int LastMinUndecoratedPWDBForDM;
\r
302 u8 bDynamicTxPowerEnable;
\r
304 u8 DynamicTxHighPowerLvl;//Add by Jacken Tx Power Control for Near/Far Range 2008/03/06
\r
306 //for tx power tracking
\r
307 u8 bTXPowerTracking;
\r
309 u8 bTXPowerTrackingInit;
\r
310 u8 TxPowerTrackControl; //for mp mode, turn off txpwrtracking as default
\r
313 u8 ThermalMeter[2]; // ThermalMeter, index 0 for RFIC0, and 1 for RFIC1
\r
315 u8 ThermalValue_LCK;
\r
316 u8 ThermalValue_IQK;
\r
317 u8 ThermalValue_AVG[AVG_THERMAL_NUM];
\r
318 u8 ThermalValue_AVG_index;
\r
319 u8 ThermalValue_RxGain;
\r
320 u8 ThermalValue_Crystal;
\r
324 u8 bReloadtxpowerindex;
\r
328 u32 APKoutput[2][2]; //path A/B; output1_1a/output1_2a
\r
330 u8 bAPKThermalMeterIgnore;
\r
340 u32 ADDA_backup[IQK_ADDA_REG_NUM];
\r
341 u32 IQK_MAC_backup[IQK_MAC_REG_NUM];
\r
342 u32 IQK_BB_backup[IQK_BB_REG_NUM];
\r
347 //u8 Record_CCK_20Mindex;
\r
348 //u8 Record_CCK_40Mindex;
\r
349 char OFDM_index[2];
\r
351 SWAT_T DM_SWAT_Table;
\r
353 //Neil Chen----2011--06--23-----
\r
354 //3 Path Diversity
\r
355 BOOLEAN bPathDiv_Enable; //For 92D Non-interrupt Antenna Diversity by Neil ,add by wl.2011.07.19
\r
361 struct sta_info *RSSI_target;
\r
362 _timer PathDivSwitchTimer;
\r
364 //for TxPwrTracking
\r
373 u32 TXPowerTrackingCallbackCnt; //cosa add for debug
\r
375 u32 prv_traffic_idx; // edca turbo
\r
377 u32 RegRF3C[2]; //pathA / pathB
\r
379 // Add for Reading Initial Data Rate SEL Register 0x484 during watchdog. Using for fill tx desc. 2011.3.21 by Thomas
\r
380 u8 INIDATA_RATE[32];
\r
384 /*------------------------Export global variable----------------------------*/
\r
385 /*------------------------Export global variable----------------------------*/
\r
386 /*------------------------Export Marco Definition---------------------------*/
\r
387 //#define DM_MultiSTA_InitGainChangeNotify(Event) {DM_DigTable.CurMultiSTAConnectState = Event;}
\r
390 //============================================================
\r
391 // function prototype
\r
392 //============================================================
\r
393 void rtl8192d_init_dm_priv(IN PADAPTER Adapter);
\r
394 void rtl8192d_deinit_dm_priv(IN PADAPTER Adapter);
\r
395 void rtl8192d_InitHalDm(IN PADAPTER Adapter);
\r
396 void rtl8192d_HalDmWatchDog(IN PADAPTER Adapter);
\r
398 VOID rtl8192d_dm_CheckTXPowerTracking(IN PADAPTER Adapter);
\r
400 #endif //__HAL8190PCIDM_H__
\r