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
19 ******************************************************************************/
\r
21 #ifndef __ODMDIG_H__
\r
22 #define __ODMDIG_H__
\r
24 typedef struct _Dynamic_Initial_Gain_Threshold_
\r
27 BOOLEAN bPSDInProgress;
\r
29 u1Byte Dig_Enable_Flag;
\r
30 u1Byte Dig_Ext_Port_Stage;
\r
36 u4Byte FAHighThresh;
\r
38 u1Byte CurSTAConnectState;
\r
39 u1Byte PreSTAConnectState;
\r
40 u1Byte CurMultiSTAConnectState;
\r
44 u1Byte BackupIGValue; //MP DIG
\r
49 s1Byte BackoffVal_range_max;
\r
50 s1Byte BackoffVal_range_min;
\r
51 u1Byte rx_gain_range_max;
\r
52 u1Byte rx_gain_range_min;
\r
53 u1Byte Rssi_val_min;
\r
55 u1Byte PreCCK_CCAThres;
\r
56 u1Byte CurCCK_CCAThres;
\r
57 u1Byte PreCCKPDState;
\r
58 u1Byte CurCCKPDState;
\r
62 u1Byte ForbiddenIGI;
\r
65 u1Byte DIG_Dynamic_MIN_0;
\r
66 u1Byte DIG_Dynamic_MIN_1;
\r
67 BOOLEAN bMediaConnect_0;
\r
68 BOOLEAN bMediaConnect_1;
\r
70 u4Byte AntDiv_RSSI_max;
\r
73 u1Byte *pbP2pLinkInProgress;
\r
75 #if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))
\r
78 u4Byte TpTrainTH_min;
\r
84 typedef struct _FALSE_ALARM_STATISTICS{
\r
85 u4Byte Cnt_Parity_Fail;
\r
86 u4Byte Cnt_Rate_Illegal;
\r
87 u4Byte Cnt_Crc8_fail;
\r
88 u4Byte Cnt_Mcs_fail;
\r
89 u4Byte Cnt_Ofdm_fail;
\r
90 u4Byte Cnt_Ofdm_fail_pre; //For RTL8881A
\r
91 u4Byte Cnt_Cck_fail;
\r
93 u4Byte Cnt_Fast_Fsync;
\r
94 u4Byte Cnt_SB_Search_fail;
\r
95 u4Byte Cnt_OFDM_CCA;
\r
98 u4Byte Cnt_BW_USC; //Gary
\r
99 u4Byte Cnt_BW_LSC; //Gary
\r
100 }FALSE_ALARM_STATISTICS, *PFALSE_ALARM_STATISTICS;
\r
102 typedef enum tag_Dynamic_Init_Gain_Operation_Type_Definition
\r
104 DIG_TYPE_THRESH_HIGH = 0,
\r
105 DIG_TYPE_THRESH_LOW = 1,
\r
106 DIG_TYPE_BACKOFF = 2,
\r
107 DIG_TYPE_RX_GAIN_MIN = 3,
\r
108 DIG_TYPE_RX_GAIN_MAX = 4,
\r
109 DIG_TYPE_ENABLE = 5,
\r
110 DIG_TYPE_DISABLE = 6,
\r
114 typedef enum tag_ODM_PauseDIG_Type {
\r
115 ODM_PAUSE_DIG = BIT0,
\r
116 ODM_RESUME_DIG = BIT1
\r
117 } ODM_Pause_DIG_TYPE;
\r
119 typedef enum tag_ODM_PauseCCKPD_Type {
\r
120 ODM_PAUSE_CCKPD = BIT0,
\r
121 ODM_RESUME_CCKPD = BIT1
\r
122 } ODM_Pause_CCKPD_TYPE;
\r
125 typedef enum tag_CCK_Packet_Detection_Threshold_Type_Definition
\r
127 CCK_PD_STAGE_LowRssi = 0,
\r
128 CCK_PD_STAGE_HighRssi = 1,
\r
129 CCK_PD_STAGE_MAX = 3,
\r
132 typedef enum tag_DIG_EXT_PORT_ALGO_Definition
\r
134 DIG_EXT_PORT_STAGE_0 = 0,
\r
135 DIG_EXT_PORT_STAGE_1 = 1,
\r
136 DIG_EXT_PORT_STAGE_2 = 2,
\r
137 DIG_EXT_PORT_STAGE_3 = 3,
\r
138 DIG_EXT_PORT_STAGE_MAX = 4,
\r
139 }DM_DIG_EXT_PORT_ALG_E;
\r
141 typedef enum tag_DIG_Connect_Definition
\r
143 DIG_STA_DISCONNECT = 0,
\r
144 DIG_STA_CONNECT = 1,
\r
145 DIG_STA_BEFORE_CONNECT = 2,
\r
146 DIG_MultiSTA_DISCONNECT = 3,
\r
147 DIG_MultiSTA_CONNECT = 4,
\r
152 #define DM_MultiSTA_InitGainChangeNotify(Event) {DM_DigTable.CurMultiSTAConnectState = Event;}
\r
154 #define DM_MultiSTA_InitGainChangeNotify_CONNECT(_ADAPTER) \
\r
155 DM_MultiSTA_InitGainChangeNotify(DIG_MultiSTA_CONNECT)
\r
157 #define DM_MultiSTA_InitGainChangeNotify_DISCONNECT(_ADAPTER) \
\r
158 DM_MultiSTA_InitGainChangeNotify(DIG_MultiSTA_DISCONNECT)
\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_NIC 0x3e
\r
167 #define DM_DIG_MIN_NIC 0x1e //0x22//0x1c
\r
168 #define DM_DIG_MAX_OF_MIN_NIC 0x3e
\r
170 #define DM_DIG_MAX_AP 0x3e
\r
171 #define DM_DIG_MIN_AP 0x1c
\r
172 #define DM_DIG_MAX_OF_MIN 0x2A //0x32
\r
173 #define DM_DIG_MIN_AP_DFS 0x20
\r
175 #define DM_DIG_MAX_NIC_HP 0x46
\r
176 #define DM_DIG_MIN_NIC_HP 0x2e
\r
178 #define DM_DIG_MAX_AP_HP 0x42
\r
179 #define DM_DIG_MIN_AP_HP 0x30
\r
181 #if (DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))
\r
182 #define DM_DIG_MAX_AP_COVERAGR 0x26
\r
183 #define DM_DIG_MIN_AP_COVERAGE 0x1c
\r
184 #define DM_DIG_MAX_OF_MIN_COVERAGE 0x22
\r
186 #define DM_DIG_TP_Target_TH0 500
\r
187 #define DM_DIG_TP_Target_TH1 1000
\r
188 #define DM_DIG_TP_Training_Period 10
\r
191 //vivi 92c&92d has different definition, 20110504
\r
193 #if (DM_ODM_SUPPORT_TYPE & ODM_CE)
\r
194 #ifdef CONFIG_SPECIAL_SETTING_FOR_FUNAI_TV
\r
195 #define DM_DIG_FA_TH0 0x80//0x20
\r
197 #define DM_DIG_FA_TH0 0x200//0x20
\r
200 #define DM_DIG_FA_TH0 0x200//0x20
\r
203 #define DM_DIG_FA_TH1 0x300
\r
204 #define DM_DIG_FA_TH2 0x400
\r
206 #define DM_DIG_FA_TH0_92D 0x100
\r
207 #define DM_DIG_FA_TH1_92D 0x400
\r
208 #define DM_DIG_FA_TH2_92D 0x600
\r
210 #define DM_DIG_BACKOFF_MAX 12
\r
211 #define DM_DIG_BACKOFF_MIN -4
\r
212 #define DM_DIG_BACKOFF_DEFAULT 10
\r
214 #define DM_DIG_FA_TH0_LPS 4 //-> 4 in lps
\r
215 #define DM_DIG_FA_TH1_LPS 15 //-> 15 lps
\r
216 #define DM_DIG_FA_TH2_LPS 30 //-> 30 lps
\r
217 #define RSSI_OFFSET_DIG 0x05
\r
220 ODM_ChangeDynamicInitGainThresh(
\r
227 odm_NHMCounterStatisticsInit(
\r
232 odm_NHMCounterStatistics(
\r
247 odm_NHMCounterStatisticsReset(
\r
252 odm_GetNHMCounterStatistics(
\r
257 odm_SearchPwdBLowerBound(
\r
259 IN u1Byte IGI_target
\r
263 odm_AdaptivityInit(
\r
275 IN PVOID pDM_VOID,
\r
276 IN u1Byte CurrentIGI
\r
282 IN ODM_Pause_DIG_TYPE PauseType,
\r
302 odm_DigForBtHsMode(
\r
307 odm_FalseAlarmCounterStatistics(
312 odm_FAThresholdCheck(
\r
314 IN BOOLEAN bDFSBand,
\r
315 IN BOOLEAN bPerformance,
\r
318 OUT u4Byte* dm_FA_thres
\r
322 odm_ForbiddenIGICheck(
\r
324 IN u1Byte DIG_Dynamic_MIN,
\r
325 IN u1Byte CurrentIGI
\r
329 odm_InbandNoiseCalculate (
\r
339 odm_PauseCCKPacketDetection(
\r
341 IN ODM_Pause_CCKPD_TYPE PauseType,
\r
342 IN u1Byte CCKPDThreshold
\r
346 odm_CCKPacketDetectionThresh(
351 ODM_Write_CCK_CCA_Thres(
\r
352 IN PVOID pDM_VOID,
\r
353 IN u1Byte CurCCK_CCAThres
\r
356 #if (DM_ODM_SUPPORT_TYPE == ODM_WIN)
\r
374 odm_MPT_DIGWorkItemCallback(
380 #if (DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))
\r
382 odm_MPT_DIGCallback(
\r
387 #if (DM_ODM_SUPPORT_TYPE != ODM_CE)
\r