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 __PHYDMDIG_H__
\r
22 #define __PHYDMDIG_H__
\r
24 #define DIG_VERSION "1.1"
\r
26 typedef struct _Dynamic_Initial_Gain_Threshold_
\r
28 BOOLEAN bStopDIG; // for debug
\r
31 BOOLEAN bPSDInProgress;
\r
33 u1Byte Dig_Enable_Flag;
\r
34 u1Byte Dig_Ext_Port_Stage;
\r
40 u4Byte FAHighThresh;
\r
42 u1Byte CurSTAConnectState;
\r
43 u1Byte PreSTAConnectState;
\r
44 u1Byte CurMultiSTAConnectState;
\r
48 u1Byte BackupIGValue; //MP DIG
\r
53 s1Byte BackoffVal_range_max;
\r
54 s1Byte BackoffVal_range_min;
\r
55 u1Byte rx_gain_range_max;
\r
56 u1Byte rx_gain_range_min;
\r
57 u1Byte Rssi_val_min;
\r
59 u1Byte PreCCK_CCAThres;
\r
60 u1Byte CurCCK_CCAThres;
\r
61 u1Byte PreCCKPDState;
\r
62 u1Byte CurCCKPDState;
\r
66 u1Byte ForbiddenIGI;
\r
69 u1Byte DIG_Dynamic_MIN_0;
\r
70 u1Byte DIG_Dynamic_MIN_1;
\r
71 BOOLEAN bMediaConnect_0;
\r
72 BOOLEAN bMediaConnect_1;
\r
74 u4Byte AntDiv_RSSI_max;
\r
77 u1Byte *pbP2pLinkInProgress;
\r
79 #if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))
\r
82 u4Byte TpTrainTH_min;
\r
88 typedef struct _FALSE_ALARM_STATISTICS{
\r
89 u4Byte Cnt_Parity_Fail;
\r
90 u4Byte Cnt_Rate_Illegal;
\r
91 u4Byte Cnt_Crc8_fail;
\r
92 u4Byte Cnt_Mcs_fail;
\r
93 u4Byte Cnt_Ofdm_fail;
\r
94 u4Byte Cnt_Ofdm_fail_pre; //For RTL8881A
\r
95 u4Byte Cnt_Cck_fail;
\r
97 u4Byte Cnt_Fast_Fsync;
\r
98 u4Byte Cnt_SB_Search_fail;
\r
99 u4Byte Cnt_OFDM_CCA;
\r
100 u4Byte Cnt_CCK_CCA;
\r
101 u4Byte Cnt_CCA_all;
\r
102 u4Byte Cnt_BW_USC; //Gary
\r
103 u4Byte Cnt_BW_LSC; //Gary
\r
104 }FALSE_ALARM_STATISTICS, *PFALSE_ALARM_STATISTICS;
\r
106 typedef enum tag_Dynamic_Init_Gain_Operation_Type_Definition
\r
108 DIG_TYPE_THRESH_HIGH = 0,
\r
109 DIG_TYPE_THRESH_LOW = 1,
\r
110 DIG_TYPE_BACKOFF = 2,
\r
111 DIG_TYPE_RX_GAIN_MIN = 3,
\r
112 DIG_TYPE_RX_GAIN_MAX = 4,
\r
113 DIG_TYPE_ENABLE = 5,
\r
114 DIG_TYPE_DISABLE = 6,
\r
118 typedef enum tag_ODM_PauseDIG_Type {
\r
119 ODM_PAUSE_DIG = BIT0,
\r
120 ODM_RESUME_DIG = BIT1
\r
121 } ODM_Pause_DIG_TYPE;
\r
123 typedef enum tag_ODM_PauseCCKPD_Type {
\r
124 ODM_PAUSE_CCKPD = BIT0,
\r
125 ODM_RESUME_CCKPD = BIT1
\r
126 } ODM_Pause_CCKPD_TYPE;
\r
129 typedef enum tag_CCK_Packet_Detection_Threshold_Type_Definition
\r
131 CCK_PD_STAGE_LowRssi = 0,
\r
132 CCK_PD_STAGE_HighRssi = 1,
\r
133 CCK_PD_STAGE_MAX = 3,
\r
136 typedef enum tag_DIG_EXT_PORT_ALGO_Definition
\r
138 DIG_EXT_PORT_STAGE_0 = 0,
\r
139 DIG_EXT_PORT_STAGE_1 = 1,
\r
140 DIG_EXT_PORT_STAGE_2 = 2,
\r
141 DIG_EXT_PORT_STAGE_3 = 3,
\r
142 DIG_EXT_PORT_STAGE_MAX = 4,
\r
143 }DM_DIG_EXT_PORT_ALG_E;
\r
145 typedef enum tag_DIG_Connect_Definition
\r
147 DIG_STA_DISCONNECT = 0,
\r
148 DIG_STA_CONNECT = 1,
\r
149 DIG_STA_BEFORE_CONNECT = 2,
\r
150 DIG_MultiSTA_DISCONNECT = 3,
\r
151 DIG_MultiSTA_CONNECT = 4,
\r
156 #define DM_MultiSTA_InitGainChangeNotify(Event) {DM_DigTable.CurMultiSTAConnectState = Event;}
\r
158 #define DM_MultiSTA_InitGainChangeNotify_CONNECT(_ADAPTER) \
\r
159 DM_MultiSTA_InitGainChangeNotify(DIG_MultiSTA_CONNECT)
\r
161 #define DM_MultiSTA_InitGainChangeNotify_DISCONNECT(_ADAPTER) \
\r
162 DM_MultiSTA_InitGainChangeNotify(DIG_MultiSTA_DISCONNECT)
\r
164 #define DM_DIG_THRESH_HIGH 40
\r
165 #define DM_DIG_THRESH_LOW 35
\r
167 #define DM_FALSEALARM_THRESH_LOW 400
\r
168 #define DM_FALSEALARM_THRESH_HIGH 1000
\r
170 #define DM_DIG_MAX_NIC 0x3e
\r
171 #define DM_DIG_MIN_NIC 0x1e //0x22//0x1c
\r
172 #define DM_DIG_MAX_OF_MIN_NIC 0x3e
\r
174 #define DM_DIG_MAX_AP 0x3e
\r
175 #define DM_DIG_MIN_AP 0x1c
\r
176 #define DM_DIG_MAX_OF_MIN 0x2A //0x32
\r
177 #define DM_DIG_MIN_AP_DFS 0x20
\r
179 #define DM_DIG_MAX_NIC_HP 0x46
\r
180 #define DM_DIG_MIN_NIC_HP 0x2e
\r
182 #define DM_DIG_MAX_AP_HP 0x42
\r
183 #define DM_DIG_MIN_AP_HP 0x30
\r
185 #if (DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))
\r
186 #define DM_DIG_MAX_AP_COVERAGR 0x26
\r
187 #define DM_DIG_MIN_AP_COVERAGE 0x1c
\r
188 #define DM_DIG_MAX_OF_MIN_COVERAGE 0x22
\r
190 #define DM_DIG_TP_Target_TH0 500
\r
191 #define DM_DIG_TP_Target_TH1 1000
\r
192 #define DM_DIG_TP_Training_Period 10
\r
195 //vivi 92c&92d has different definition, 20110504
\r
197 #if (DM_ODM_SUPPORT_TYPE & ODM_CE)
\r
198 #ifdef CONFIG_SPECIAL_SETTING_FOR_FUNAI_TV
\r
199 #define DM_DIG_FA_TH0 0x80//0x20
\r
201 #define DM_DIG_FA_TH0 0x200//0x20
\r
204 #define DM_DIG_FA_TH0 0x200//0x20
\r
207 #define DM_DIG_FA_TH1 0x300
\r
208 #define DM_DIG_FA_TH2 0x400
\r
210 #define DM_DIG_FA_TH0_92D 0x100
\r
211 #define DM_DIG_FA_TH1_92D 0x400
\r
212 #define DM_DIG_FA_TH2_92D 0x600
\r
214 #define DM_DIG_BACKOFF_MAX 12
\r
215 #define DM_DIG_BACKOFF_MIN -4
\r
216 #define DM_DIG_BACKOFF_DEFAULT 10
\r
218 #define DM_DIG_FA_TH0_LPS 4 //-> 4 in lps
\r
219 #define DM_DIG_FA_TH1_LPS 15 //-> 15 lps
\r
220 #define DM_DIG_FA_TH2_LPS 30 //-> 30 lps
\r
221 #define RSSI_OFFSET_DIG 0x05
\r
224 ODM_ChangeDynamicInitGainThresh(
\r
232 IN PVOID pDM_VOID,
\r
233 IN u1Byte CurrentIGI
\r
239 IN ODM_Pause_DIG_TYPE PauseType,
\r
259 odm_FalseAlarmCounterStatistics(
\r
264 odm_PauseCCKPacketDetection(
\r
266 IN ODM_Pause_CCKPD_TYPE PauseType,
\r
267 IN u1Byte CCKPDThreshold
\r
271 odm_CCKPacketDetectionThresh(
276 ODM_Write_CCK_CCA_Thres(
\r
277 IN PVOID pDM_VOID,
\r
278 IN u1Byte CurCCK_CCAThres
\r
281 #if (DM_ODM_SUPPORT_TYPE == ODM_WIN)
\r
288 odm_MPT_DIGWorkItemCallback(
294 #if (DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))
\r
296 odm_MPT_DIGCallback(
\r
301 #if (DM_ODM_SUPPORT_TYPE != ODM_CE)
\r