1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16#ifndef __ODMDIG_H__
17#define __ODMDIG_H__
18
19typedef struct _Dynamic_Initial_Gain_Threshold_ {
20 bool bStopDIG;
21 bool bPSDInProgress;
22
23 u8 Dig_Enable_Flag;
24 u8 Dig_Ext_Port_Stage;
25
26 int RssiLowThresh;
27 int RssiHighThresh;
28
29 u32 FALowThresh;
30 u32 FAHighThresh;
31
32 u8 CurSTAConnectState;
33 u8 PreSTAConnectState;
34 u8 CurMultiSTAConnectState;
35
36 u8 PreIGValue;
37 u8 CurIGValue;
38 u8 BackupIGValue;
39 u8 BT30_CurIGI;
40 u8 IGIBackup;
41
42 s8 BackoffVal;
43 s8 BackoffVal_range_max;
44 s8 BackoffVal_range_min;
45 u8 rx_gain_range_max;
46 u8 rx_gain_range_min;
47 u8 Rssi_val_min;
48
49 u8 PreCCK_CCAThres;
50 u8 CurCCK_CCAThres;
51 u8 PreCCKPDState;
52 u8 CurCCKPDState;
53 u8 CCKPDBackup;
54
55 u8 LargeFAHit;
56 u8 ForbiddenIGI;
57 u32 Recover_cnt;
58
59 u8 DIG_Dynamic_MIN_0;
60 u8 DIG_Dynamic_MIN_1;
61 bool bMediaConnect_0;
62 bool bMediaConnect_1;
63
64 u32 AntDiv_RSSI_max;
65 u32 RSSI_max;
66
67 u8 *pbP2pLinkInProgress;
68} DIG_T, *pDIG_T;
69
70typedef struct false_ALARM_STATISTICS {
71 u32 Cnt_Parity_Fail;
72 u32 Cnt_Rate_Illegal;
73 u32 Cnt_Crc8_fail;
74 u32 Cnt_Mcs_fail;
75 u32 Cnt_Ofdm_fail;
76 u32 Cnt_Ofdm_fail_pre;
77 u32 Cnt_Cck_fail;
78 u32 Cnt_all;
79 u32 Cnt_Fast_Fsync;
80 u32 Cnt_SB_Search_fail;
81 u32 Cnt_OFDM_CCA;
82 u32 Cnt_CCK_CCA;
83 u32 Cnt_CCA_all;
84 u32 Cnt_BW_USC;
85 u32 Cnt_BW_LSC;
86} false_ALARM_STATISTICS, *Pfalse_ALARM_STATISTICS;
87
88typedef enum tag_Dynamic_Init_Gain_Operation_Type_Definition {
89 DIG_TYPE_THRESH_HIGH = 0,
90 DIG_TYPE_THRESH_LOW = 1,
91 DIG_TYPE_BACKOFF = 2,
92 DIG_TYPE_RX_GAIN_MIN = 3,
93 DIG_TYPE_RX_GAIN_MAX = 4,
94 DIG_TYPE_ENABLE = 5,
95 DIG_TYPE_DISABLE = 6,
96 DIG_OP_TYPE_MAX
97} DM_DIG_OP_E;
98
99typedef enum tag_ODM_PauseDIG_Type {
100 ODM_PAUSE_DIG = BIT0,
101 ODM_RESUME_DIG = BIT1
102} ODM_Pause_DIG_TYPE;
103
104typedef enum tag_ODM_PauseCCKPD_Type {
105 ODM_PAUSE_CCKPD = BIT0,
106 ODM_RESUME_CCKPD = BIT1
107} ODM_Pause_CCKPD_TYPE;
108
109#define DM_DIG_THRESH_HIGH 40
110#define DM_DIG_THRESH_LOW 35
111
112#define DMfalseALARM_THRESH_LOW 400
113#define DMfalseALARM_THRESH_HIGH 1000
114
115#define DM_DIG_MAX_NIC 0x3e
116#define DM_DIG_MIN_NIC 0x1e
117#define DM_DIG_MAX_OF_MIN_NIC 0x3e
118
119#define DM_DIG_MAX_AP 0x3e
120#define DM_DIG_MIN_AP 0x1c
121#define DM_DIG_MAX_OF_MIN 0x2A
122#define DM_DIG_MIN_AP_DFS 0x20
123
124#define DM_DIG_MAX_NIC_HP 0x46
125#define DM_DIG_MIN_NIC_HP 0x2e
126
127#define DM_DIG_MAX_AP_HP 0x42
128#define DM_DIG_MIN_AP_HP 0x30
129
130#define DM_DIG_FA_TH0 0x200
131
132#define DM_DIG_FA_TH1 0x300
133#define DM_DIG_FA_TH2 0x400
134
135#define DM_DIG_FA_TH0_92D 0x100
136#define DM_DIG_FA_TH1_92D 0x400
137#define DM_DIG_FA_TH2_92D 0x600
138
139#define DM_DIG_BACKOFF_MAX 12
140#define DM_DIG_BACKOFF_MIN -4
141#define DM_DIG_BACKOFF_DEFAULT 10
142
143#define DM_DIG_FA_TH0_LPS 4
144#define DM_DIG_FA_TH1_LPS 15
145#define DM_DIG_FA_TH2_LPS 30
146#define RSSI_OFFSET_DIG 0x05
147
148void odm_NHMCounterStatisticsInit(void *pDM_VOID);
149
150void odm_NHMCounterStatistics(void *pDM_VOID);
151
152void odm_NHMBBInit(void *pDM_VOID);
153
154void odm_NHMBB(void *pDM_VOID);
155
156void odm_NHMCounterStatisticsReset(void *pDM_VOID);
157
158void odm_GetNHMCounterStatistics(void *pDM_VOID);
159
160void odm_SearchPwdBLowerBound(void *pDM_VOID, u8 IGI_target);
161
162void odm_AdaptivityInit(void *pDM_VOID);
163
164void odm_Adaptivity(void *pDM_VOID, u8 IGI);
165
166void ODM_Write_DIG(void *pDM_VOID, u8 CurrentIGI);
167
168void odm_PauseDIG(void *pDM_VOID, ODM_Pause_DIG_TYPE PauseType, u8 IGIValue);
169
170void odm_DIGInit(void *pDM_VOID);
171
172void odm_DIG(void *pDM_VOID);
173
174void odm_DIGbyRSSI_LPS(void *pDM_VOID);
175
176void odm_FalseAlarmCounterStatistics(void *pDM_VOID);
177
178void odm_FAThresholdCheck(
179 void *pDM_VOID,
180 bool bDFSBand,
181 bool bPerformance,
182 u32 RxTp,
183 u32 TxTp,
184 u32 *dm_FA_thres
185);
186
187u8 odm_ForbiddenIGICheck(void *pDM_VOID, u8 DIG_Dynamic_MIN, u8 CurrentIGI);
188
189bool odm_DigAbort(void *pDM_VOID);
190
191void odm_CCKPacketDetectionThresh(void *pDM_VOID);
192
193void ODM_Write_CCK_CCA_Thres(void *pDM_VOID, u8 CurCCK_CCAThres);
194
195#endif
196