3144724646de956acb271f67f81231aca0849d74
[firefly-linux-kernel-4.4.55.git] / drivers / net / wireless / rockchip_wlan / rtl8723bu / hal / OUTSRC / odm.h
1 /******************************************************************************\r
2  *\r
3  * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.\r
4  *                                        \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
8  *\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
12  * more details.\r
13  *\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
17  *\r
18  *\r
19  ******************************************************************************/\r
20 \r
21 \r
22 #ifndef __HALDMOUTSRC_H__\r
23 #define __HALDMOUTSRC_H__\r
24 \r
25 \r
26 #include "odm_EdcaTurboCheck.h"\r
27 #include "odm_DIG.h"\r
28 #include "odm_PathDiv.h"\r
29 #include "odm_RaInfo.h"\r
30 #include "odm_DynamicBBPowerSaving.h"\r
31 #include "odm_DynamicTxPower.h"\r
32 #include "odm_CfoTracking.h"\r
33 #include "odm_NoiseMonitor.h"\r
34 \r
35 //============================================================\r
36 // Definition \r
37 //============================================================\r
38 //\r
39 // 2011/09/22 MH Define all team supprt ability.\r
40 //\r
41 \r
42 //\r
43 // 2011/09/22 MH Define for all teams. Please Define the constan in your precomp header.\r
44 //\r
45 //#define               DM_ODM_SUPPORT_AP                       0\r
46 //#define               DM_ODM_SUPPORT_ADSL                     0\r
47 //#define               DM_ODM_SUPPORT_CE                       0\r
48 //#define               DM_ODM_SUPPORT_MP                       1\r
49 \r
50 //\r
51 // 2011/09/28 MH Define ODM SW team support flag.\r
52 //\r
53 \r
54 \r
55 \r
56 //\r
57 // Antenna Switch Relative Definition.\r
58 //\r
59 \r
60 //\r
61 // 20100503 Joseph:\r
62 // Add new function SwAntDivCheck8192C().\r
63 // This is the main function of Antenna diversity function before link.\r
64 // Mainly, it just retains last scan result and scan again.\r
65 // After that, it compares the scan result to see which one gets better RSSI.\r
66 // It selects antenna with better receiving power and returns better scan result.\r
67 //\r
68 #define TP_MODE         0\r
69 #define RSSI_MODE               1\r
70 #define TRAFFIC_LOW     0\r
71 #define TRAFFIC_HIGH    1\r
72 \r
73 \r
74 //============================================================\r
75 //3 Tx Power Tracking\r
76 //3============================================================\r
77 #define         DPK_DELTA_MAPPING_NUM   13\r
78 #define         index_mapping_HP_NUM    15      \r
79 #define OFDM_TABLE_SIZE         43\r
80 #define CCK_TABLE_SIZE                  33\r
81 #define TXSCALE_TABLE_SIZE              37\r
82 #define TXPWR_TRACK_TABLE_SIZE  30\r
83 #define DELTA_SWINGIDX_SIZE     30\r
84 #define BAND_NUM                                4\r
85 \r
86 //============================================================\r
87 //3 PSD Handler\r
88 //3============================================================\r
89 \r
90 #define AFH_PSD         1       //0:normal PSD scan, 1: only do 20 pts PSD\r
91 #define MODE_40M                0       //0:20M, 1:40M\r
92 #define PSD_TH2         3  \r
93 #define PSD_CHMIN               20   // Minimum channel number for BT AFH\r
94 #define SIR_STEP_SIZE   3\r
95 #define   Smooth_Size_1         5\r
96 #define Smooth_TH_1     3\r
97 #define   Smooth_Size_2         10\r
98 #define Smooth_TH_2     4\r
99 #define   Smooth_Size_3         20\r
100 #define Smooth_TH_3     4\r
101 #define   Smooth_Step_Size 5\r
102 #define Adaptive_SIR    1\r
103 #if(RTL8723_FPGA_VERIFICATION == 1)\r
104 #define PSD_RESCAN              1\r
105 #else\r
106 #define PSD_RESCAN              4\r
107 #endif\r
108 #define PSD_SCAN_INTERVAL       700 //ms\r
109 \r
110 \r
111 \r
112 //8723A High Power IGI Setting\r
113 #define         DM_DIG_HIGH_PWR_IGI_LOWER_BOUND 0x22\r
114 #define                 DM_DIG_Gmode_HIGH_PWR_IGI_LOWER_BOUND 0x28\r
115 #define         DM_DIG_HIGH_PWR_THRESHOLD       0x3a\r
116 #define         DM_DIG_LOW_PWR_THRESHOLD        0x14\r
117 \r
118 //ANT Test\r
119 #define                 ANTTESTALL              0x00            //Ant A or B will be Testing   \r
120 #define         ANTTESTA                0x01            //Ant A will be Testing \r
121 #define         ANTTESTB                0x02            //Ant B will be testing\r
122 \r
123 //for 8723A Ant Definition--2012--06--07 due to different IC may be different ANT define\r
124 #define         MAIN_ANT                1               //Ant A or Ant Main\r
125 #define         AUX_ANT         2               //AntB or Ant Aux\r
126 #define         MAX_ANT         3               // 3 for AP using\r
127 \r
128 \r
129 //Antenna Diversity Type\r
130 #define SW_ANTDIV       0\r
131 #define HW_ANTDIV       1\r
132 //============================================================\r
133 // structure and define\r
134 //============================================================\r
135 \r
136 //\r
137 // 2011/09/20 MH Add for AP/ADSLpseudo DM structuer requirement.\r
138 // We need to remove to other position???\r
139 //\r
140 #if(DM_ODM_SUPPORT_TYPE & (ODM_CE|ODM_WIN))\r
141 typedef         struct rtl8192cd_priv {\r
142         u1Byte          temp;\r
143 \r
144 }rtl8192cd_priv, *prtl8192cd_priv;\r
145 #endif\r
146 \r
147 \r
148 #if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))\r
149 typedef         struct _ADAPTER{\r
150         u1Byte          temp;\r
151         #ifdef AP_BUILD_WORKAROUND\r
152         HAL_DATA_TYPE*          temp2;\r
153         prtl8192cd_priv         priv;\r
154         #endif\r
155 }ADAPTER, *PADAPTER;\r
156 #endif\r
157 \r
158 #if (DM_ODM_SUPPORT_TYPE == ODM_AP)\r
159 \r
160 typedef         struct _WLAN_STA{\r
161         u1Byte          temp;\r
162 } WLAN_STA, *PRT_WLAN_STA;\r
163 \r
164 #endif\r
165 \r
166 //Remove DIG by Yuchen\r
167 \r
168 //Remoce BB power saving by Yuchn\r
169 \r
170 //Remove DIG by yuchen\r
171 \r
172 typedef struct _Dynamic_Primary_CCA{\r
173         u1Byte          PriCCA_flag;\r
174         u1Byte          intf_flag;\r
175         u1Byte          intf_type;  \r
176         u1Byte          DupRTS_flag;\r
177         u1Byte          Monitor_flag;\r
178         u1Byte          CH_offset;\r
179         u1Byte                  MF_state;\r
180 }Pri_CCA_T, *pPri_CCA_T;\r
181 \r
182 //Remove RA_T,*pRA_T by RS_James\r
183 \r
184 typedef struct _RX_High_Power_\r
185 {\r
186         u1Byte          RXHP_flag;\r
187         u1Byte          PSD_func_trigger;\r
188         u1Byte          PSD_bitmap_RXHP[80];\r
189         u1Byte          Pre_IGI;\r
190         u1Byte          Cur_IGI;\r
191         u1Byte          Pre_pw_th;\r
192         u1Byte          Cur_pw_th;\r
193         BOOLEAN         First_time_enter;\r
194         BOOLEAN         RXHP_enable;\r
195         u1Byte          TP_Mode;\r
196         RT_TIMER        PSDTimer;\r
197 #if (DM_ODM_SUPPORT_TYPE == ODM_WIN)    \r
198         #if USE_WORKITEM\r
199         RT_WORK_ITEM            PSDTimeWorkitem;\r
200         #endif\r
201 #endif\r
202 \r
203 }RXHP_T, *pRXHP_T;\r
204         \r
205 #if(DM_ODM_SUPPORT_TYPE & (ODM_CE))\r
206 #define ASSOCIATE_ENTRY_NUM                                     32 // Max size of AsocEntry[].\r
207 #define ODM_ASSOCIATE_ENTRY_NUM                         ASSOCIATE_ENTRY_NUM\r
208 \r
209 #elif(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))\r
210 #define ASSOCIATE_ENTRY_NUM                                     NUM_STAT\r
211 #define ODM_ASSOCIATE_ENTRY_NUM                         ASSOCIATE_ENTRY_NUM+1\r
212 \r
213 #else\r
214 //\r
215 // 2012/01/12 MH Revise for compatiable with other SW team. \r
216 // 0 is for STA 1-n is for AP clients.\r
217 //\r
218 #define ODM_ASSOCIATE_ENTRY_NUM                         ASSOCIATE_ENTRY_NUM+1// Default port only one\r
219 #endif\r
220 \r
221 //#ifdef CONFIG_ANTENNA_DIVERSITY\r
222 // This indicates two different the steps. \r
223 // In SWAW_STEP_PEAK, driver needs to switch antenna and listen to the signal on the air.\r
224 // In SWAW_STEP_DETERMINE, driver just compares the signal captured in SWAW_STEP_PEAK\r
225 // with original RSSI to determine if it is necessary to switch antenna.\r
226 #define SWAW_STEP_PEAK          0\r
227 #define SWAW_STEP_DETERMINE     1\r
228 \r
229 #define TP_MODE         0\r
230 #define RSSI_MODE               1\r
231 #define TRAFFIC_LOW     0\r
232 #define TRAFFIC_HIGH    1\r
233 #define TRAFFIC_UltraLOW        2\r
234 \r
235 typedef struct _SW_Antenna_Switch_\r
236 {\r
237         u1Byte          Double_chk_flag;\r
238         u1Byte          try_flag;\r
239         s4Byte          PreRSSI;\r
240         u1Byte          CurAntenna;\r
241         u1Byte          PreAntenna;\r
242         u1Byte          RSSI_Trying;\r
243         u1Byte          TestMode;\r
244         u1Byte          bTriggerAntennaSwitch;\r
245         u1Byte          SelectAntennaMap;\r
246         u1Byte          RSSI_target;    \r
247         u1Byte          reset_idx;\r
248 \r
249         // Before link Antenna Switch check\r
250         u1Byte          SWAS_NoLink_State;\r
251         u4Byte          SWAS_NoLink_BK_Reg860;\r
252         u4Byte          SWAS_NoLink_BK_Reg92c;\r
253         BOOLEAN         ANTA_ON;        //To indicate Ant A is or not\r
254         BOOLEAN         ANTB_ON;        //To indicate Ant B is on or not\r
255         u1Byte          Ant5G;\r
256         u1Byte          Ant2G;\r
257 \r
258         s4Byte          RSSI_sum_A;\r
259         s4Byte          RSSI_sum_B;\r
260         s4Byte          RSSI_cnt_A;\r
261         s4Byte          RSSI_cnt_B;\r
262 \r
263         u8Byte          lastTxOkCnt;\r
264         u8Byte          lastRxOkCnt;\r
265         u8Byte          TXByteCnt_A;\r
266         u8Byte          TXByteCnt_B;\r
267         u8Byte          RXByteCnt_A;\r
268         u8Byte          RXByteCnt_B;\r
269         u1Byte          TrafficLoad;\r
270         u1Byte          Train_time;\r
271         u1Byte          Train_time_flag;\r
272         RT_TIMER        SwAntennaSwitchTimer;\r
273         RT_TIMER        SwAntennaSwitchTimer_8723B;\r
274 #if (DM_ODM_SUPPORT_TYPE == ODM_WIN)    \r
275         #if USE_WORKITEM\r
276         RT_WORK_ITEM                    SwAntennaSwitchWorkitem;\r
277         RT_WORK_ITEM                    SwAntennaSwitchWorkitem_8723B;\r
278         #endif\r
279 #endif\r
280 /* CE Platform use\r
281 #ifdef CONFIG_SW_ANTENNA_DIVERSITY\r
282         _timer SwAntennaSwitchTimer; \r
283         u8Byte lastTxOkCnt;\r
284         u8Byte lastRxOkCnt;\r
285         u8Byte TXByteCnt_A;\r
286         u8Byte TXByteCnt_B;\r
287         u8Byte RXByteCnt_A;\r
288         u8Byte RXByteCnt_B;\r
289         u1Byte DoubleComfirm;\r
290         u1Byte TrafficLoad;\r
291         //SW Antenna Switch\r
292 \r
293 \r
294 #endif\r
295 */\r
296 #ifdef CONFIG_HW_ANTENNA_DIVERSITY\r
297         //Hybrid Antenna Diversity\r
298         u4Byte          CCK_Ant1_Cnt[ASSOCIATE_ENTRY_NUM+1];\r
299         u4Byte          CCK_Ant2_Cnt[ASSOCIATE_ENTRY_NUM+1];\r
300         u4Byte          OFDM_Ant1_Cnt[ASSOCIATE_ENTRY_NUM+1];\r
301         u4Byte          OFDM_Ant2_Cnt[ASSOCIATE_ENTRY_NUM+1];\r
302         u4Byte          RSSI_Ant1_Sum[ASSOCIATE_ENTRY_NUM+1];\r
303         u4Byte          RSSI_Ant2_Sum[ASSOCIATE_ENTRY_NUM+1];\r
304         u1Byte          TxAnt[ASSOCIATE_ENTRY_NUM+1];\r
305         u1Byte          TargetSTA;\r
306         u1Byte          antsel;\r
307         u1Byte          RxIdleAnt;\r
308 \r
309 #endif\r
310         \r
311 }SWAT_T, *pSWAT_T;\r
312 //#endif\r
313 \r
314 //Remove Edca by YuChen\r
315 \r
316 //Remove ODM_RATE_ADAPTIVE by RS_James\r
317 \r
318 #if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))\r
319 \r
320 \r
321 #ifdef ADSL_AP_BUILD_WORKAROUND\r
322 #define MAX_TOLERANCE                   5\r
323 #define IQK_DELAY_TIME                  1               //ms\r
324 #endif\r
325 \r
326 //\r
327 // Indicate different AP vendor for IOT issue.\r
328 //\r
329 typedef enum _HT_IOT_PEER\r
330 {\r
331         HT_IOT_PEER_UNKNOWN                     = 0,\r
332         HT_IOT_PEER_REALTEK                     = 1,\r
333         HT_IOT_PEER_REALTEK_92SE                = 2,\r
334         HT_IOT_PEER_BROADCOM            = 3,\r
335         HT_IOT_PEER_RALINK                      = 4,\r
336         HT_IOT_PEER_ATHEROS                     = 5,\r
337         HT_IOT_PEER_CISCO                               = 6,\r
338         HT_IOT_PEER_MERU                                = 7,    \r
339         HT_IOT_PEER_MARVELL                     = 8,\r
340         HT_IOT_PEER_REALTEK_SOFTAP      = 9,// peer is RealTek SOFT_AP, by Bohn, 2009.12.17\r
341         HT_IOT_PEER_SELF_SOFTAP                 = 10, // Self is SoftAP\r
342         HT_IOT_PEER_AIRGO                               = 11,\r
343         HT_IOT_PEER_INTEL                               = 12, \r
344         HT_IOT_PEER_RTK_APCLIENT                = 13, \r
345         HT_IOT_PEER_REALTEK_81XX                = 14,   \r
346         HT_IOT_PEER_REALTEK_WOW                 = 15,   \r
347         HT_IOT_PEER_MAX                                 = 16\r
348 }HT_IOT_PEER_E, *PHTIOT_PEER_E;\r
349 #endif//#if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))\r
350 \r
351 \r
352 \r
353 #define IQK_MAC_REG_NUM         4\r
354 #define IQK_ADDA_REG_NUM                16\r
355 #define IQK_BB_REG_NUM_MAX      10\r
356 #if (RTL8192D_SUPPORT==1) \r
357 #define IQK_BB_REG_NUM          10\r
358 #else\r
359 #define IQK_BB_REG_NUM          9\r
360 #endif\r
361 #define HP_THERMAL_NUM          8\r
362 \r
363 #define AVG_THERMAL_NUM         8\r
364 #define IQK_Matrix_REG_NUM      8\r
365 #define IQK_Matrix_Settings_NUM 14+24+21 // Channels_2_4G_NUM + Channels_5G_20M_NUM + Channels_5G\r
366 \r
367 #define         DM_Type_ByFW                    0\r
368 #define         DM_Type_ByDriver                1\r
369 \r
370 //\r
371 // Declare for common info\r
372 //\r
373 #define MAX_PATH_NUM_92CS               2\r
374 #define MAX_PATH_NUM_8188E              1\r
375 #define MAX_PATH_NUM_8192E              2\r
376 #define MAX_PATH_NUM_8723B              1\r
377 #define MAX_PATH_NUM_8812A              2\r
378 #define MAX_PATH_NUM_8821A              1\r
379 \r
380 #define IQK_THRESHOLD                   8\r
381 \r
382 typedef struct _ODM_Phy_Status_Info_\r
383 {\r
384         //\r
385         // Be care, if you want to add any element please insert between \r
386         // RxPWDBAll & SignalStrength.\r
387         //\r
388 #if (DM_ODM_SUPPORT_TYPE &  (ODM_WIN))\r
389         u4Byte          RxPWDBAll;      \r
390 #else\r
391         u1Byte          RxPWDBAll;      \r
392 #endif\r
393 \r
394         u1Byte          SignalQuality;                  // in 0-100 index. \r
395         s1Byte          RxMIMOSignalQuality[4]; //per-path's EVM\r
396         u1Byte          RxMIMOEVMdbm[4];                //per-path's EVM dbm\r
397 \r
398         u1Byte          RxMIMOSignalStrength[4];// in 0~100 index\r
399 \r
400         u2Byte          Cfo_short[4];                   // per-path's Cfo_short\r
401         u2Byte          Cfo_tail[4];                    // per-path's Cfo_tail\r
402         \r
403 #if (DM_ODM_SUPPORT_TYPE &  (ODM_WIN|ODM_CE))\r
404         s1Byte          RxPower;                                // in dBm Translate from PWdB\r
405         s1Byte          RecvSignalPower;                // Real power in dBm for this packet, no beautification and aggregation. Keep this raw info to be used for the other procedures.\r
406         u1Byte          BTRxRSSIPercentage;     \r
407         u1Byte          SignalStrength;                 // in 0-100 index.\r
408  \r
409         s1Byte          RxPwr[4];                               //per-path's pwdb\r
410 #endif\r
411         u1Byte          RxSNR[4];                               //per-path's SNR        \r
412         u1Byte          BandWidth;\r
413         u1Byte          btCoexPwrAdjust;\r
414 }ODM_PHY_INFO_T,*PODM_PHY_INFO_T;\r
415 \r
416 \r
417 typedef struct _ODM_Per_Pkt_Info_\r
418 {\r
419         //u1Byte                Rate;   \r
420         u1Byte          DataRate;\r
421         u1Byte          StationID;\r
422         BOOLEAN         bPacketMatchBSSID;\r
423         BOOLEAN         bPacketToSelf;\r
424         BOOLEAN         bPacketBeacon;\r
425 }ODM_PACKET_INFO_T,*PODM_PACKET_INFO_T;\r
426 \r
427 \r
428 typedef struct _ODM_Phy_Dbg_Info_\r
429 {\r
430         //ODM Write,debug info\r
431         s1Byte          RxSNRdB[4];\r
432         u4Byte          NumQryPhyStatus;\r
433         u4Byte          NumQryPhyStatusCCK;\r
434         u4Byte          NumQryPhyStatusOFDM;\r
435         u1Byte          NumQryBeaconPkt;\r
436         //Others\r
437         s4Byte          RxEVM[4];       \r
438         \r
439 }ODM_PHY_DBG_INFO_T;\r
440 \r
441 \r
442 typedef struct _ODM_Mac_Status_Info_\r
443 {\r
444         u1Byte  test;\r
445         \r
446 }ODM_MAC_INFO;\r
447 \r
448 \r
449 typedef enum tag_Dynamic_ODM_Support_Ability_Type\r
450 {\r
451         // BB Team\r
452         ODM_DIG                         = 0x00000001,\r
453         ODM_HIGH_POWER          = 0x00000002,\r
454         ODM_CCK_CCA_TH          = 0x00000004,\r
455         ODM_FA_STATISTICS               = 0x00000008,\r
456         ODM_RAMASK                      = 0x00000010,\r
457         ODM_RSSI_MONITOR                = 0x00000020,\r
458         ODM_SW_ANTDIV           = 0x00000040,\r
459         ODM_HW_ANTDIV           = 0x00000080,\r
460         ODM_BB_PWRSV                    = 0x00000100,\r
461         ODM_2TPATHDIV                   = 0x00000200,\r
462         ODM_1TPATHDIV                   = 0x00000400,\r
463         ODM_PSD2AFH                     = 0x00000800\r
464 }ODM_Ability_E;\r
465 \r
466 //\r
467 // 2011/20/20 MH For MP driver RT_WLAN_STA =  STA_INFO_T\r
468 // Please declare below ODM relative info in your STA info structure.\r
469 //\r
470 #if 1\r
471 typedef         struct _ODM_STA_INFO{\r
472         // Driver Write\r
473         BOOLEAN         bUsed;                          // record the sta status link or not?\r
474         //u1Byte                WirelessMode;           // \r
475         u1Byte          IOTPeer;                        // Enum value.  HT_IOT_PEER_E\r
476 \r
477         // ODM Write\r
478         //1 PHY_STATUS_INFO\r
479         u1Byte          RSSI_Path[4];           // \r
480         u1Byte          RSSI_Ave;\r
481         u1Byte          RXEVM[4];\r
482         u1Byte          RXSNR[4];\r
483 \r
484         // ODM Write\r
485         //1 TX_INFO (may changed by IC)\r
486         //TX_INFO_T             pTxInfo;                                // Define in IC folder. Move lower layer.\r
487 #if 0\r
488         u1Byte          ANTSEL_A;                       //in Jagar: 4bit; others: 2bit\r
489         u1Byte          ANTSEL_B;                       //in Jagar: 4bit; others: 2bit\r
490         u1Byte          ANTSEL_C;                       //only in Jagar: 4bit\r
491         u1Byte          ANTSEL_D;                       //only in Jagar: 4bit\r
492         u1Byte          TX_ANTL;                        //not in Jagar: 2bit\r
493         u1Byte          TX_ANT_HT;                      //not in Jagar: 2bit\r
494         u1Byte          TX_ANT_CCK;                     //not in Jagar: 2bit\r
495         u1Byte          TXAGC_A;                        //not in Jagar: 4bit\r
496         u1Byte          TXAGC_B;                        //not in Jagar: 4bit\r
497         u1Byte          TXPWR_OFFSET;           //only in Jagar: 3bit\r
498         u1Byte          TX_ANT;                         //only in Jagar: 4bit for TX_ANTL/TX_ANTHT/TX_ANT_CCK\r
499 #endif\r
500 \r
501         //\r
502         //      Please use compile flag to disabe the strcutrue for other IC except 88E.\r
503         //      Move To lower layer.\r
504         //\r
505         // ODM Write Wilson will handle this part(said by Luke.Lee)\r
506         //TX_RPT_T              pTxRpt;                         // Define in IC folder. Move lower layer.\r
507 #if 0   \r
508         //1 For 88E RA (don't redefine the naming)\r
509         u1Byte          rate_id;\r
510         u1Byte          rate_SGI;\r
511         u1Byte          rssi_sta_ra;\v\r
512         u1Byte          SGI_enable;\r
513         u1Byte          Decision_rate;\r
514         u1Byte          Pre_rate;\r
515         u1Byte          Active;\r
516 \r
517         // Driver write Wilson handle.\r
518         //1 TX_RPT (don't redefine the naming)\r
519         u2Byte          RTY[4];                         // ???\r
520         u2Byte          TOTAL;                          // ???\r
521         u2Byte          DROP;                           // ???\r
522         //\r
523         // Please use compile flag to disabe the strcutrue for other IC except 88E.\r
524         //\r
525 #endif\r
526 \r
527 }ODM_STA_INFO_T, *PODM_STA_INFO_T;\r
528 #endif\r
529 \r
530 //\r
531 // 2011/10/20 MH Define Common info enum for all team.\r
532 //\r
533 typedef enum _ODM_Common_Info_Definition\r
534 {\r
535 //-------------REMOVED CASE-----------//\r
536         //ODM_CMNINFO_CCK_HP,\r
537         //ODM_CMNINFO_RFPATH_ENABLE,            // Define as ODM write???       \r
538         //ODM_CMNINFO_BT_COEXIST,                               // ODM_BT_COEXIST_E\r
539         //ODM_CMNINFO_OP_MODE,                          // ODM_OPERATION_MODE_E\r
540 //-------------REMOVED CASE-----------//\r
541 \r
542         //\r
543         // Fixed value:\r
544         //\r
545 \r
546         //-----------HOOK BEFORE REG INIT-----------//\r
547         ODM_CMNINFO_PLATFORM = 0,\r
548         ODM_CMNINFO_ABILITY,                                    // ODM_ABILITY_E\r
549         ODM_CMNINFO_INTERFACE,                          // ODM_INTERFACE_E\r
550         ODM_CMNINFO_MP_TEST_CHIP,\r
551         ODM_CMNINFO_IC_TYPE,                                    // ODM_IC_TYPE_E\r
552         ODM_CMNINFO_CUT_VER,                                    // ODM_CUT_VERSION_E\r
553         ODM_CMNINFO_FAB_VER,                                    // ODM_FAB_E\r
554         ODM_CMNINFO_RF_TYPE,                                    // ODM_RF_PATH_E or ODM_RF_TYPE_E?\r
555         ODM_CMNINFO_RFE_TYPE, \r
556         ODM_CMNINFO_BOARD_TYPE,                         // ODM_BOARD_TYPE_E\r
557         ODM_CMNINFO_PACKAGE_TYPE,\r
558         ODM_CMNINFO_EXT_LNA,                                    // TRUE\r
559         ODM_CMNINFO_5G_EXT_LNA, \r
560         ODM_CMNINFO_EXT_PA,\r
561         ODM_CMNINFO_5G_EXT_PA,\r
562         ODM_CMNINFO_GPA,\r
563         ODM_CMNINFO_APA,\r
564         ODM_CMNINFO_GLNA,\r
565         ODM_CMNINFO_ALNA,\r
566         ODM_CMNINFO_EXT_TRSW,\r
567         ODM_CMNINFO_PATCH_ID,                           //CUSTOMER ID\r
568         ODM_CMNINFO_BINHCT_TEST,\r
569         ODM_CMNINFO_BWIFI_TEST,\r
570         ODM_CMNINFO_SMART_CONCURRENT,\r
571         ODM_CMNINFO_DOMAIN_CODE_2G,\r
572         ODM_CMNINFO_DOMAIN_CODE_5G,\r
573         //-----------HOOK BEFORE REG INIT-----------//  \r
574 \r
575 \r
576         //\r
577         // Dynamic value:\r
578         //\r
579 //--------- POINTER REFERENCE-----------//\r
580         ODM_CMNINFO_MAC_PHY_MODE,                       // ODM_MAC_PHY_MODE_E\r
581         ODM_CMNINFO_TX_UNI,\r
582         ODM_CMNINFO_RX_UNI,\r
583         ODM_CMNINFO_WM_MODE,                            // ODM_WIRELESS_MODE_E\r
584         ODM_CMNINFO_BAND,                                       // ODM_BAND_TYPE_E\r
585         ODM_CMNINFO_SEC_CHNL_OFFSET,            // ODM_SEC_CHNL_OFFSET_E\r
586         ODM_CMNINFO_SEC_MODE,                           // ODM_SECURITY_E\r
587         ODM_CMNINFO_BW,                                         // ODM_BW_E\r
588         ODM_CMNINFO_CHNL,\r
589         ODM_CMNINFO_FORCED_RATE,\r
590         \r
591         ODM_CMNINFO_DMSP_GET_VALUE,\r
592         ODM_CMNINFO_BUDDY_ADAPTOR,\r
593         ODM_CMNINFO_DMSP_IS_MASTER,\r
594         ODM_CMNINFO_SCAN,\r
595         ODM_CMNINFO_POWER_SAVING,\r
596         ODM_CMNINFO_ONE_PATH_CCA,                       // ODM_CCA_PATH_E\r
597         ODM_CMNINFO_DRV_STOP,\r
598         ODM_CMNINFO_PNP_IN,\r
599         ODM_CMNINFO_INIT_ON,\r
600         ODM_CMNINFO_ANT_TEST,\r
601         ODM_CMNINFO_NET_CLOSED,\r
602         ODM_CMNINFO_MP_MODE,\r
603         //ODM_CMNINFO_RTSTA_AID,                                // For win driver only?\r
604         ODM_CMNINFO_FORCED_IGI_LB,\r
605 //--------- POINTER REFERENCE-----------//\r
606 \r
607 //------------CALL BY VALUE-------------//\r
608         ODM_CMNINFO_WIFI_DIRECT,\r
609         ODM_CMNINFO_WIFI_DISPLAY,\r
610         ODM_CMNINFO_LINK_IN_PROGRESS,                   \r
611         ODM_CMNINFO_LINK,\r
612         ODM_CMNINFO_STATION_STATE,\r
613         ODM_CMNINFO_RSSI_MIN,\r
614         ODM_CMNINFO_DBG_COMP,                           // u8Byte\r
615         ODM_CMNINFO_DBG_LEVEL,                          // u4Byte\r
616         ODM_CMNINFO_RA_THRESHOLD_HIGH,          // u1Byte\r
617         ODM_CMNINFO_RA_THRESHOLD_LOW,           // u1Byte\r
618         ODM_CMNINFO_RF_ANTENNA_TYPE,            // u1Byte\r
619         ODM_CMNINFO_BT_ENABLED,\r
620         ODM_CMNINFO_BT_HS_CONNECT_PROCESS,\r
621         ODM_CMNINFO_BT_HS_RSSI,\r
622         ODM_CMNINFO_BT_OPERATION,\r
623         ODM_CMNINFO_BT_LIMITED_DIG,                                     //Need to Limited Dig or not\r
624         ODM_CMNINFO_BT_DISABLE_EDCA,\r
625 //------------CALL BY VALUE-------------//\r
626 \r
627         //\r
628         // Dynamic ptr array hook itms.\r
629         //\r
630         ODM_CMNINFO_STA_STATUS,\r
631         ODM_CMNINFO_PHY_STATUS,\r
632         ODM_CMNINFO_MAC_STATUS,\r
633         \r
634         ODM_CMNINFO_MAX,\r
635 \r
636 \r
637 }ODM_CMNINFO_E;\r
638 \r
639 //\r
640 // 2011/10/20 MH Define ODM support ability.  ODM_CMNINFO_ABILITY\r
641 //\r
642 typedef enum _ODM_Support_Ability_Definition\r
643 {\r
644         //\r
645         // BB ODM section BIT 0-15\r
646         //\r
647         ODM_BB_DIG                                      = BIT0,\r
648         ODM_BB_RA_MASK                          = BIT1,\r
649         ODM_BB_DYNAMIC_TXPWR            = BIT2,\r
650         ODM_BB_FA_CNT                                   = BIT3,\r
651         ODM_BB_RSSI_MONITOR                     = BIT4,\r
652         ODM_BB_CCK_PD                                   = BIT5,\r
653         ODM_BB_ANT_DIV                          = BIT6,\r
654         ODM_BB_PWR_SAVE                         = BIT7,\r
655         ODM_BB_PWR_TRAIN                                = BIT8,\r
656         ODM_BB_RATE_ADAPTIVE                    = BIT9,\r
657         ODM_BB_PATH_DIV                         = BIT10,\r
658         ODM_BB_PSD                                      = BIT11,\r
659         ODM_BB_RXHP                                     = BIT12,\r
660         ODM_BB_ADAPTIVITY                               = BIT13,\r
661         ODM_BB_CFO_TRACKING                     = BIT14,\r
662         \r
663         //\r
664         // MAC DM section BIT 16-23\r
665         //\r
666         ODM_MAC_EDCA_TURBO                      = BIT16,\r
667         ODM_MAC_EARLY_MODE                      = BIT17,\r
668         \r
669         //\r
670         // RF ODM section BIT 24-31\r
671         //\r
672         ODM_RF_TX_PWR_TRACK                     = BIT24,\r
673         ODM_RF_RX_GAIN_TRACK                    = BIT25,\r
674         ODM_RF_CALIBRATION                              = BIT26,\r
675         \r
676 }ODM_ABILITY_E;\r
677 \r
678 //      ODM_CMNINFO_INTERFACE\r
679 typedef enum tag_ODM_Support_Interface_Definition\r
680 {\r
681         ODM_ITRF_PCIE   =       0x1,\r
682         ODM_ITRF_USB    =       0x2,\r
683         ODM_ITRF_SDIO   =       0x4,\r
684         ODM_ITRF_ALL    =       0x7,\r
685 }ODM_INTERFACE_E;\r
686 \r
687 // ODM_CMNINFO_IC_TYPE\r
688 typedef enum tag_ODM_Support_IC_Type_Definition\r
689 {\r
690         ODM_RTL8192S    =       BIT0,\r
691         ODM_RTL8192C    =       BIT1,\r
692         ODM_RTL8192D    =       BIT2,\r
693         ODM_RTL8723A    =       BIT3,\r
694         ODM_RTL8188E    =       BIT4,\r
695         ODM_RTL8812     =       BIT5,\r
696         ODM_RTL8821     =       BIT6,\r
697         ODM_RTL8192E    =       BIT7,   \r
698         ODM_RTL8723B    =       BIT8,\r
699         ODM_RTL8814A    =       BIT9,   \r
700         ODM_RTL8881A    =       BIT10,\r
701         ODM_RTL8821B    =       BIT11\r
702 }ODM_IC_TYPE_E;\r
703 \r
704 #define ODM_IC_11N_SERIES               (ODM_RTL8192S|ODM_RTL8192C|ODM_RTL8192D|ODM_RTL8723A|ODM_RTL8188E|ODM_RTL8192E|ODM_RTL8723B)\r
705 #define ODM_IC_11AC_SERIES              (ODM_RTL8812|ODM_RTL8821|ODM_RTL8814A|ODM_RTL8881A)\r
706 \r
707 #if (DM_ODM_SUPPORT_TYPE == ODM_AP)\r
708 #ifdef RTK_AC_SUPPORT\r
709 #define ODM_IC_11AC_SERIES_SUPPORT              1\r
710 #else\r
711 #define ODM_IC_11AC_SERIES_SUPPORT              0\r
712 #endif\r
713 #else\r
714 #define ODM_IC_11AC_SERIES_SUPPORT              1\r
715 #endif\r
716 \r
717 //ODM_CMNINFO_CUT_VER\r
718 typedef enum tag_ODM_Cut_Version_Definition\r
719 {\r
720         ODM_CUT_A               =       0,\r
721         ODM_CUT_B               =       1,\r
722         ODM_CUT_C               =       2,\r
723         ODM_CUT_D               =       3,\r
724         ODM_CUT_E               =       4,\r
725         ODM_CUT_F               =       5,\r
726 \r
727         ODM_CUT_I               =       8,\r
728         ODM_CUT_TEST    =       15,\r
729 }ODM_CUT_VERSION_E;\r
730 \r
731 // ODM_CMNINFO_FAB_VER\r
732 typedef enum tag_ODM_Fab_Version_Definition\r
733 {\r
734         ODM_TSMC        =       0,\r
735         ODM_UMC         =       1,\r
736 }ODM_FAB_E;\r
737 \r
738 // ODM_CMNINFO_RF_TYPE\r
739 //\r
740 // For example 1T2R (A+AB = BIT0|BIT4|BIT5)\r
741 //\r
742 typedef enum tag_ODM_RF_Path_Bit_Definition\r
743 {\r
744         ODM_RF_TX_A     =       BIT0,\r
745         ODM_RF_TX_B     =       BIT1,\r
746         ODM_RF_TX_C     =       BIT2,\r
747         ODM_RF_TX_D     =       BIT3,\r
748         ODM_RF_RX_A     =       BIT4,\r
749         ODM_RF_RX_B     =       BIT5,\r
750         ODM_RF_RX_C     =       BIT6,\r
751         ODM_RF_RX_D     =       BIT7,\r
752 }ODM_RF_PATH_E;\r
753 \r
754 \r
755 typedef enum tag_ODM_RF_Type_Definition\r
756 {\r
757         ODM_1T1R        =       0,\r
758         ODM_1T2R        =       1,\r
759         ODM_2T2R        =       2,\r
760         ODM_2T3R        =       3,\r
761         ODM_2T4R        =       4,\r
762         ODM_3T3R        =       5,\r
763         ODM_3T4R        =       6,\r
764         ODM_4T4R        =       7,\r
765 }ODM_RF_TYPE_E;\r
766 \r
767 \r
768 //\r
769 // ODM Dynamic common info value definition\r
770 //\r
771 \r
772 //typedef enum _MACPHY_MODE_8192D{\r
773 //      SINGLEMAC_SINGLEPHY,\r
774 //      DUALMAC_DUALPHY,\r
775 //      DUALMAC_SINGLEPHY,\r
776 //}MACPHY_MODE_8192D,*PMACPHY_MODE_8192D;\r
777 // Above is the original define in MP driver. Please use the same define. THX.\r
778 typedef enum tag_ODM_MAC_PHY_Mode_Definition\r
779 {\r
780         ODM_SMSP        = 0,\r
781         ODM_DMSP        = 1,\r
782         ODM_DMDP        = 2,\r
783 }ODM_MAC_PHY_MODE_E;\r
784 \r
785 \r
786 typedef enum tag_BT_Coexist_Definition\r
787 {       \r
788         ODM_BT_BUSY             = 1,\r
789         ODM_BT_ON                       = 2,\r
790         ODM_BT_OFF              = 3,\r
791         ODM_BT_NONE             = 4,\r
792 }ODM_BT_COEXIST_E;\r
793 \r
794 // ODM_CMNINFO_OP_MODE\r
795 typedef enum tag_Operation_Mode_Definition\r
796 {\r
797         ODM_NO_LINK             = BIT0,\r
798         ODM_LINK                        = BIT1,\r
799         ODM_SCAN                        = BIT2,\r
800         ODM_POWERSAVE   = BIT3,\r
801         ODM_AP_MODE             = BIT4,\r
802         ODM_CLIENT_MODE = BIT5,\r
803         ODM_AD_HOC              = BIT6,\r
804         ODM_WIFI_DIRECT = BIT7,\r
805         ODM_WIFI_DISPLAY        = BIT8,\r
806 }ODM_OPERATION_MODE_E;\r
807 \r
808 // ODM_CMNINFO_WM_MODE\r
809 #if (DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_CE))\r
810 typedef enum tag_Wireless_Mode_Definition\r
811 {\r
812         ODM_WM_UNKNOW     = 0x0,\r
813         ODM_WM_B                  = BIT0,\r
814         ODM_WM_G                  = BIT1,\r
815         ODM_WM_A                  = BIT2,\r
816         ODM_WM_N24G           = BIT3,\r
817         ODM_WM_N5G             = BIT4,\r
818         ODM_WM_AUTO           = BIT5,\r
819         ODM_WM_AC                = BIT6,\r
820 }ODM_WIRELESS_MODE_E;\r
821 #else\r
822 typedef enum tag_Wireless_Mode_Definition\r
823 {\r
824         ODM_WM_UNKNOWN  = 0x00,\r
825         ODM_WM_A                        = BIT0,\r
826         ODM_WM_B                        = BIT1,\r
827         ODM_WM_G                        = BIT2,\r
828         ODM_WM_AUTO             = BIT3,\r
829         ODM_WM_N24G             = BIT4,\r
830         ODM_WM_N5G              = BIT5,\r
831         ODM_WM_AC_5G    = BIT6,\r
832         ODM_WM_AC_24G   = BIT7,\r
833         ODM_WM_AC_ONLY          = BIT8,\r
834         ODM_WM_MAX              = BIT9\r
835 }ODM_WIRELESS_MODE_E;\r
836 #endif\r
837 \r
838 // ODM_CMNINFO_BAND\r
839 typedef enum tag_Band_Type_Definition\r
840 {\r
841     ODM_BAND_2_4G = 0,\r
842     ODM_BAND_5G,\r
843     ODM_BAND_ON_BOTH,\r
844     ODM_BANDMAX\r
845 \r
846 }ODM_BAND_TYPE_E;\r
847 \r
848 // ODM_CMNINFO_SEC_CHNL_OFFSET\r
849 typedef enum tag_Secondary_Channel_Offset_Definition\r
850 {\r
851         ODM_DONT_CARE   = 0,\r
852         ODM_BELOW               = 1,\r
853         ODM_ABOVE                       = 2\r
854 }ODM_SEC_CHNL_OFFSET_E;\r
855 \r
856 // ODM_CMNINFO_SEC_MODE\r
857 typedef enum tag_Security_Definition\r
858 {\r
859         ODM_SEC_OPEN                    = 0,\r
860         ODM_SEC_WEP40           = 1,\r
861         ODM_SEC_TKIP                    = 2,\r
862         ODM_SEC_RESERVE                 = 3,\r
863         ODM_SEC_AESCCMP                 = 4,\r
864         ODM_SEC_WEP104          = 5,\r
865         ODM_WEP_WPA_MIXED    = 6, // WEP + WPA\r
866         ODM_SEC_SMS4                    = 7,\r
867 }ODM_SECURITY_E;\r
868 \r
869 // ODM_CMNINFO_BW\r
870 typedef enum tag_Bandwidth_Definition\r
871 {       \r
872         ODM_BW20M               = 0,\r
873         ODM_BW40M               = 1,\r
874         ODM_BW80M               = 2,\r
875         ODM_BW160M              = 3,\r
876         ODM_BW10M               = 4,\r
877 }ODM_BW_E;\r
878 \r
879 \r
880 // ODM_CMNINFO_BOARD_TYPE\r
881 // For non-AC-series IC , ODM_BOARD_5G_EXT_PA and ODM_BOARD_5G_EXT_LNA are ignored\r
882 // For AC-series IC, external PA & LNA can be indivisuallly added on 2.4G and/or 5G \r
883 typedef enum tag_Board_Definition\r
884 {\r
885     ODM_BOARD_DEFAULT   = 0,      // The DEFAULT case.\r
886     ODM_BOARD_MINICARD  = BIT(0), // 0 = non-mini card, 1= mini card.\r
887     ODM_BOARD_SLIM      = BIT(1), // 0 = non-slim card, 1 = slim card\r
888     ODM_BOARD_BT        = BIT(2), // 0 = without BT card, 1 = with BT\r
889     ODM_BOARD_EXT_PA    = BIT(3), // 0 = no 2G ext-PA, 1 = existing 2G ext-PA\r
890     ODM_BOARD_EXT_LNA   = BIT(4), // 0 = no 2G ext-LNA, 1 = existing 2G ext-LNA\r
891     ODM_BOARD_EXT_TRSW  = BIT(5), // 0 = no ext-TRSW, 1 = existing ext-TRSW\r
892     ODM_BOARD_EXT_PA_5G = BIT(6), // 0 = no 5G ext-PA, 1 = existing 5G ext-PA\r
893     ODM_BOARD_EXT_LNA_5G= BIT(7), // 0 = no 5G ext-LNA, 1 = existing 5G ext-LNA\r
894 }ODM_BOARD_TYPE_E;\r
895 \r
896 typedef enum tag_ODM_Package_Definition\r
897 {\r
898     ODM_PACKAGE_DEFAULT          = 0,     \r
899     ODM_PACKAGE_QFN68        = BIT(0), \r
900     ODM_PACKAGE_TFBGA90      = BIT(1), \r
901     ODM_PACKAGE_TFBGA79      = BIT(2),  \r
902 }ODM_Package_TYPE_E;\r
903 \r
904 typedef enum tag_ODM_TYPE_GPA_Definition\r
905 {\r
906     TYPE_GPA0 = 0,        \r
907     TYPE_GPA1 = BIT(1)|BIT(0)\r
908 }ODM_TYPE_GPA_E;\r
909 \r
910 typedef enum tag_ODM_TYPE_APA_Definition\r
911 {\r
912     TYPE_APA0 = 0,        \r
913     TYPE_APA1 = BIT(1)|BIT(0)\r
914 }ODM_TYPE_APA_E;\r
915 \r
916 typedef enum tag_ODM_TYPE_GLNA_Definition\r
917 {\r
918     TYPE_GLNA0 = 0,       \r
919     TYPE_GLNA1 = BIT(2)|BIT(0),\r
920     TYPE_GLNA2 = BIT(3)|BIT(1),\r
921     TYPE_GLNA3 = BIT(3)|BIT(2)|BIT(1)|BIT(0)\r
922 }ODM_TYPE_GLNA_E;\r
923 \r
924 typedef enum tag_ODM_TYPE_ALNA_Definition\r
925 {\r
926     TYPE_ALNA0 = 0,       \r
927     TYPE_ALNA1 = BIT(2)|BIT(0),\r
928     TYPE_ALNA2 = BIT(3)|BIT(1),\r
929     TYPE_ALNA3 = BIT(3)|BIT(2)|BIT(1)|BIT(0)\r
930 }ODM_TYPE_ALNA_E;\r
931 \r
932 // ODM_CMNINFO_ONE_PATH_CCA\r
933 typedef enum tag_CCA_Path\r
934 {\r
935         ODM_CCA_2R                      = 0,\r
936         ODM_CCA_1R_A            = 1,\r
937         ODM_CCA_1R_B            = 2,\r
938 }ODM_CCA_PATH_E;\r
939 \r
940 \r
941 typedef struct _ODM_RA_Info_\r
942 {\r
943         u1Byte RateID;\r
944         u4Byte RateMask;\r
945         u4Byte RAUseRate;\r
946         u1Byte RateSGI;\r
947         u1Byte RssiStaRA;\r
948         u1Byte PreRssiStaRA;\r
949         u1Byte SGIEnable;\r
950         u1Byte DecisionRate;\r
951         u1Byte PreRate;\r
952         u1Byte HighestRate;\r
953         u1Byte LowestRate;\r
954         u4Byte NscUp;\r
955         u4Byte NscDown;\r
956         u2Byte RTY[5];\r
957         u4Byte TOTAL;\r
958         u2Byte DROP;\r
959         u1Byte Active;\r
960         u2Byte RptTime;\r
961         u1Byte RAWaitingCounter;\r
962         u1Byte RAPendingCounter;        \r
963 #if 1 //POWER_TRAINING_ACTIVE == 1 // For compile  pass only~!\r
964         u1Byte PTActive;  // on or off\r
965         u1Byte PTTryState;  // 0 trying state, 1 for decision state\r
966         u1Byte PTStage;  // 0~6\r
967         u1Byte PTStopCount; //Stop PT counter\r
968         u1Byte PTPreRate;  // if rate change do PT\r
969         u1Byte PTPreRssi; // if RSSI change 5% do PT\r
970         u1Byte PTModeSS;  // decide whitch rate should do PT\r
971         u1Byte RAstage;  // StageRA, decide how many times RA will be done between PT\r
972         u1Byte PTSmoothFactor;\r
973 #endif\r
974 } ODM_RA_INFO_T,*PODM_RA_INFO_T;\r
975 \r
976 typedef struct _IQK_MATRIX_REGS_SETTING{\r
977         BOOLEAN         bIQKDone;\r
978         s4Byte          Value[3][IQK_Matrix_REG_NUM];\r
979         BOOLEAN         bBWIqkResultSaved[3];   \r
980 }IQK_MATRIX_REGS_SETTING,*PIQK_MATRIX_REGS_SETTING;\r
981 \r
982 \r
983 //Remove PATHDIV_PARA struct to odm_PathDiv.h\r
984 \r
985 typedef struct ODM_RF_Calibration_Structure\r
986 {\r
987         //for tx power tracking\r
988         \r
989         u4Byte  RegA24; // for TempCCK\r
990         s4Byte  RegE94;\r
991         s4Byte  RegE9C;\r
992         s4Byte  RegEB4;\r
993         s4Byte  RegEBC; \r
994 \r
995         u1Byte          TXPowercount;\r
996         BOOLEAN bTXPowerTrackingInit; \r
997         BOOLEAN bTXPowerTracking;\r
998         u1Byte          TxPowerTrackControl; //for mp mode, turn off txpwrtracking as default\r
999         u1Byte          TM_Trigger;\r
1000         u1Byte          InternalPA5G[2];        //pathA / pathB\r
1001         \r
1002         u1Byte          ThermalMeter[2];    // ThermalMeter, index 0 for RFIC0, and 1 for RFIC1\r
1003         u1Byte          ThermalValue;\r
1004         u1Byte          ThermalValue_LCK;\r
1005         u1Byte          ThermalValue_IQK;\r
1006         u1Byte  ThermalValue_DPK;               \r
1007         u1Byte  ThermalValue_AVG[AVG_THERMAL_NUM];\r
1008         u1Byte  ThermalValue_AVG_index;         \r
1009         u1Byte  ThermalValue_RxGain;\r
1010         u1Byte  ThermalValue_Crystal;\r
1011         u1Byte  ThermalValue_DPKstore;\r
1012         u1Byte  ThermalValue_DPKtrack;\r
1013         BOOLEAN TxPowerTrackingInProgress;\r
1014         \r
1015         BOOLEAN bReloadtxpowerindex;    \r
1016         u1Byte  bRfPiEnable;\r
1017         u4Byte  TXPowerTrackingCallbackCnt; //cosa add for debug\r
1018 \r
1019 \r
1020         //------------------------- Tx power Tracking -------------------------//\r
1021         u1Byte  bCCKinCH14;\r
1022         u1Byte  CCK_index;\r
1023         u1Byte  OFDM_index[MAX_RF_PATH];\r
1024         s1Byte  PowerIndexOffset[MAX_RF_PATH];\r
1025         s1Byte  DeltaPowerIndex[MAX_RF_PATH];\r
1026         s1Byte  DeltaPowerIndexLast[MAX_RF_PATH];       \r
1027         BOOLEAN bTxPowerChanged;\r
1028                 \r
1029         u1Byte  ThermalValue_HP[HP_THERMAL_NUM];\r
1030         u1Byte  ThermalValue_HP_index;\r
1031         IQK_MATRIX_REGS_SETTING IQKMatrixRegSetting[IQK_Matrix_Settings_NUM];\r
1032         BOOLEAN bNeedIQK;\r
1033         BOOLEAN bIQKInProgress; \r
1034         u1Byte  Delta_IQK;\r
1035         u1Byte  Delta_LCK;\r
1036         s1Byte  BBSwingDiff2G, BBSwingDiff5G; // Unit: dB\r
1037     u1Byte  DeltaSwingTableIdx_2GCCKA_P[DELTA_SWINGIDX_SIZE];\r
1038     u1Byte  DeltaSwingTableIdx_2GCCKA_N[DELTA_SWINGIDX_SIZE];\r
1039     u1Byte  DeltaSwingTableIdx_2GCCKB_P[DELTA_SWINGIDX_SIZE];\r
1040     u1Byte  DeltaSwingTableIdx_2GCCKB_N[DELTA_SWINGIDX_SIZE];\r
1041     u1Byte  DeltaSwingTableIdx_2GA_P[DELTA_SWINGIDX_SIZE];\r
1042     u1Byte  DeltaSwingTableIdx_2GA_N[DELTA_SWINGIDX_SIZE];\r
1043     u1Byte  DeltaSwingTableIdx_2GB_P[DELTA_SWINGIDX_SIZE];\r
1044     u1Byte  DeltaSwingTableIdx_2GB_N[DELTA_SWINGIDX_SIZE];\r
1045     u1Byte  DeltaSwingTableIdx_5GA_P[BAND_NUM][DELTA_SWINGIDX_SIZE];\r
1046     u1Byte  DeltaSwingTableIdx_5GA_N[BAND_NUM][DELTA_SWINGIDX_SIZE];\r
1047     u1Byte  DeltaSwingTableIdx_5GB_P[BAND_NUM][DELTA_SWINGIDX_SIZE];\r
1048     u1Byte  DeltaSwingTableIdx_5GB_N[BAND_NUM][DELTA_SWINGIDX_SIZE];\r
1049     u1Byte  DeltaSwingTableIdx_2GA_P_8188E[DELTA_SWINGIDX_SIZE];\r
1050     u1Byte  DeltaSwingTableIdx_2GA_N_8188E[DELTA_SWINGIDX_SIZE];\r
1051     \r
1052         //--------------------------------------------------------------------//        \r
1053         \r
1054         //for IQK       \r
1055         u4Byte  RegC04;\r
1056         u4Byte  Reg874;\r
1057         u4Byte  RegC08;\r
1058         u4Byte  RegB68;\r
1059         u4Byte  RegB6C;\r
1060         u4Byte  Reg870;\r
1061         u4Byte  Reg860;\r
1062         u4Byte  Reg864;\r
1063         \r
1064         BOOLEAN bIQKInitialized;\r
1065         BOOLEAN bLCKInProgress;\r
1066         BOOLEAN bAntennaDetected;\r
1067         u4Byte  ADDA_backup[IQK_ADDA_REG_NUM];\r
1068         u4Byte  IQK_MAC_backup[IQK_MAC_REG_NUM];\r
1069         u4Byte  IQK_BB_backup_recover[9];\r
1070         u4Byte  IQK_BB_backup[IQK_BB_REG_NUM];  \r
1071 \r
1072         //for APK\r
1073         u4Byte  APKoutput[2][2]; //path A/B; output1_1a/output1_2a\r
1074         u1Byte  bAPKdone;\r
1075         u1Byte  bAPKThermalMeterIgnore;\r
1076         u1Byte  bDPdone;\r
1077         u1Byte  bDPPathAOK;\r
1078         u1Byte  bDPPathBOK;\r
1079 \r
1080         u4Byte  TxIQC_8723B[2][3][2]; // { {S1: 0xc94, 0xc80, 0xc4c} , {S0: 0xc9c, 0xc88, 0xc4c}}\r
1081         u4Byte  RxIQC_8723B[2][2][2]; // { {S1: 0xc14, 0xca0} ,           {S0: 0xc14, 0xca0}}\r
1082         u4Byte  TxLOK[2];\r
1083 \r
1084 }ODM_RF_CAL_T,*PODM_RF_CAL_T;\r
1085 //\r
1086 // ODM Dynamic common info value definition\r
1087 //\r
1088 \r
1089 typedef struct _FAST_ANTENNA_TRAINNING_\r
1090 {\r
1091         u1Byte  Bssid[6];\r
1092         u1Byte  antsel_rx_keep_0;\r
1093         u1Byte  antsel_rx_keep_1;\r
1094         u1Byte  antsel_rx_keep_2;\r
1095         u4Byte  antSumRSSI[7];\r
1096         u4Byte  antRSSIcnt[7];\r
1097         u4Byte  antAveRSSI[7];\r
1098         u1Byte  FAT_State;\r
1099         u4Byte  TrainIdx;\r
1100         u1Byte  antsel_a[ODM_ASSOCIATE_ENTRY_NUM];\r
1101         u1Byte  antsel_b[ODM_ASSOCIATE_ENTRY_NUM];\r
1102         u1Byte  antsel_c[ODM_ASSOCIATE_ENTRY_NUM];\r
1103         u4Byte  MainAnt_Sum[ODM_ASSOCIATE_ENTRY_NUM];\r
1104         u4Byte  AuxAnt_Sum[ODM_ASSOCIATE_ENTRY_NUM];\r
1105         u4Byte  MainAnt_Cnt[ODM_ASSOCIATE_ENTRY_NUM];\r
1106         u4Byte  AuxAnt_Cnt[ODM_ASSOCIATE_ENTRY_NUM];\r
1107         u1Byte  RxIdleAnt;\r
1108         BOOLEAN bBecomeLinked;\r
1109         u4Byte  MinMaxRSSI;\r
1110         u1Byte  idx_AntDiv_counter_2G;\r
1111         u1Byte  idx_AntDiv_counter_5G;\r
1112         u4Byte  AntDiv_2G_5G;\r
1113         u4Byte    CCK_counter_main;\r
1114         u4Byte    CCK_counter_aux;      \r
1115         u4Byte    OFDM_counter_main;\r
1116         u4Byte    OFDM_counter_aux;     \r
1117 \r
1118 }FAT_T,*pFAT_T;\r
1119 \r
1120 typedef enum _FAT_STATE\r
1121 {\r
1122         FAT_NORMAL_STATE                        = 0,\r
1123         FAT_TRAINING_STATE              = 1,\r
1124 }FAT_STATE_E, *PFAT_STATE_E;\r
1125 \r
1126 typedef enum _ANT_DIV_TYPE\r
1127 {\r
1128         NO_ANTDIV                       = 0xFF, \r
1129         CG_TRX_HW_ANTDIV                = 0x01,\r
1130         CGCS_RX_HW_ANTDIV       = 0x02,\r
1131         FIXED_HW_ANTDIV         = 0x03,\r
1132         CG_TRX_SMART_ANTDIV     = 0x04,\r
1133         CGCS_RX_SW_ANTDIV       = 0x05,\r
1134         S0S1_SW_ANTDIV          = 0x06 //8723B intrnal switch S0 S1\r
1135 }ANT_DIV_TYPE_E, *PANT_DIV_TYPE_E;\r
1136 \r
1137 typedef struct _ODM_PATH_DIVERSITY_\r
1138 {\r
1139         u1Byte  RespTxPath;\r
1140         u1Byte  PathSel[ODM_ASSOCIATE_ENTRY_NUM];\r
1141         u4Byte  PathA_Sum[ODM_ASSOCIATE_ENTRY_NUM];\r
1142         u4Byte  PathB_Sum[ODM_ASSOCIATE_ENTRY_NUM];\r
1143         u4Byte  PathA_Cnt[ODM_ASSOCIATE_ENTRY_NUM];\r
1144         u4Byte  PathB_Cnt[ODM_ASSOCIATE_ENTRY_NUM];\r
1145 }PATHDIV_T, *pPATHDIV_T;\r
1146 \r
1147 \r
1148 typedef enum _BASEBAND_CONFIG_PHY_REG_PG_VALUE_TYPE{\r
1149         PHY_REG_PG_RELATIVE_VALUE = 0,\r
1150         PHY_REG_PG_EXACT_VALUE = 1\r
1151 } PHY_REG_PG_TYPE;\r
1152 \r
1153 \r
1154 //\r
1155 // Antenna detection information from single tone mechanism, added by Roger, 2012.11.27.\r
1156 //\r
1157 typedef struct _ANT_DETECTED_INFO{\r
1158         BOOLEAN                 bAntDetected;\r
1159         u4Byte                  dBForAntA;\r
1160         u4Byte                  dBForAntB;\r
1161         u4Byte                  dBForAntO;\r
1162 }ANT_DETECTED_INFO, *PANT_DETECTED_INFO;\r
1163 \r
1164 //\r
1165 // 2011/09/22 MH Copy from SD4 defined structure. We use to support PHY DM integration.\r
1166 //\r
1167 #if(DM_ODM_SUPPORT_TYPE & ODM_WIN)\r
1168 #if (RT_PLATFORM != PLATFORM_LINUX)\r
1169 typedef \r
1170 #endif\r
1171 struct DM_Out_Source_Dynamic_Mechanism_Structure\r
1172 #else// for AP,ADSL,CE Team\r
1173 typedef  struct DM_Out_Source_Dynamic_Mechanism_Structure\r
1174 #endif\r
1175 {\r
1176         //RT_TIMER      FastAntTrainingTimer;\r
1177         //\r
1178         //      Add for different team use temporarily\r
1179         //\r
1180         PADAPTER                Adapter;                // For CE/NIC team\r
1181         prtl8192cd_priv priv;                   // For AP/ADSL team\r
1182         // WHen you use Adapter or priv pointer, you must make sure the pointer is ready.\r
1183         BOOLEAN                 odm_ready;\r
1184 \r
1185 #if(DM_ODM_SUPPORT_TYPE & (ODM_CE|ODM_WIN))\r
1186         rtl8192cd_priv          fake_priv;\r
1187 #endif\r
1188 #if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))\r
1189         // ADSL_AP_BUILD_WORKAROUND\r
1190         ADAPTER                 fake_adapter;\r
1191 #endif\r
1192         \r
1193         PHY_REG_PG_TYPE         PhyRegPgValueType;\r
1194         u1Byte                          PhyRegPgVersion;\r
1195 \r
1196         u8Byte                  DebugComponents;\r
1197         u4Byte                  DebugLevel;\r
1198         \r
1199         u4Byte                  NumQryPhyStatusAll;     //CCK + OFDM\r
1200         u4Byte                  LastNumQryPhyStatusAll; \r
1201         u4Byte                  RxPWDBAve;\r
1202         BOOLEAN                 MPDIG_2G;               //off MPDIG\r
1203         u1Byte                  Times_2G;\r
1204         \r
1205 //------ ODM HANDLE, DRIVER NEEDS NOT TO HOOK------//\r
1206         BOOLEAN                 bCckHighPower; \r
1207         u1Byte                  RFPathRxEnable;         // ODM_CMNINFO_RFPATH_ENABLE\r
1208         u1Byte                  ControlChannel;\r
1209 //------ ODM HANDLE, DRIVER NEEDS NOT TO HOOK------//\r
1210 \r
1211 //--------REMOVED COMMON INFO----------//\r
1212         //u1Byte                                PseudoMacPhyMode;\r
1213         //BOOLEAN                       *BTCoexist;\r
1214         //BOOLEAN                       PseudoBtCoexist;\r
1215         //u1Byte                                OPMode;\r
1216         //BOOLEAN                       bAPMode;\r
1217         //BOOLEAN                       bClientMode;\r
1218         //BOOLEAN                       bAdHocMode;\r
1219         //BOOLEAN                       bSlaveOfDMSP;\r
1220 //--------REMOVED COMMON INFO----------//\r
1221 \r
1222 \r
1223 //1  COMMON INFORMATION\r
1224 \r
1225         //\r
1226         // Init Value\r
1227         //\r
1228 //-----------HOOK BEFORE REG INIT-----------//  \r
1229         // ODM Platform info AP/ADSL/CE/MP = 1/2/3/4\r
1230         u1Byte                  SupportPlatform;                \r
1231         // ODM Support Ability DIG/RATR/TX_PWR_TRACK/ Â¡K¡K = 1/2/3/¡K\r
1232         u4Byte                  SupportAbility;\r
1233         // ODM PCIE/USB/SDIO = 1/2/3\r
1234         u1Byte                  SupportInterface;                       \r
1235         // ODM composite or independent. Bit oriented/ 92C+92D+ .... or any other type = 1/2/3/...\r
1236         u4Byte                  SupportICType;  \r
1237         // Cut Version TestChip/A-cut/B-cut... = 0/1/2/3/...\r
1238         u1Byte                  CutVersion;\r
1239         // Fab Version TSMC/UMC = 0/1\r
1240         u1Byte                  FabVersion;\r
1241         // RF Type 4T4R/3T3R/2T2R/1T2R/1T1R/...\r
1242         u1Byte                  RFType;\r
1243         u1Byte                  RFEType;        \r
1244         // Board Type Normal/HighPower/MiniCard/SLIM/Combo/... = 0/1/2/3/4/...\r
1245         u1Byte                  BoardType;\r
1246         u1Byte                  PackageType;\r
1247         u1Byte                  TypeGLNA;\r
1248         u1Byte                  TypeGPA;\r
1249         u1Byte                  TypeALNA;\r
1250         u1Byte                  TypeAPA;\r
1251         // with external LNA  NO/Yes = 0/1\r
1252         u1Byte                  ExtLNA;\r
1253         u1Byte                  ExtLNA5G;\r
1254         // with external PA  NO/Yes = 0/1\r
1255         u1Byte                  ExtPA;\r
1256         u1Byte                  ExtPA5G;\r
1257         // with external TRSW  NO/Yes = 0/1\r
1258         u1Byte                  ExtTRSW;\r
1259         u1Byte                  PatchID; //Customer ID\r
1260         BOOLEAN                 bInHctTest;\r
1261         BOOLEAN                 bWIFITest;\r
1262 \r
1263         BOOLEAN                 bDualMacSmartConcurrent;\r
1264         u4Byte                  BK_SupportAbility;\r
1265         u1Byte                  AntDivType;\r
1266 \r
1267         u1Byte                  odm_Regulation2_4G;\r
1268         u1Byte                  odm_Regulation5G;\r
1269 //-----------HOOK BEFORE REG INIT-----------//  \r
1270 \r
1271         //\r
1272         // Dynamic Value\r
1273         //      \r
1274 //--------- POINTER REFERENCE-----------//\r
1275 \r
1276         u1Byte                  u1Byte_temp;\r
1277         BOOLEAN                 BOOLEAN_temp;\r
1278         PADAPTER                PADAPTER_temp;\r
1279         \r
1280         // MAC PHY Mode SMSP/DMSP/DMDP = 0/1/2\r
1281         u1Byte                  *pMacPhyMode;\r
1282         //TX Unicast byte count\r
1283         u8Byte                  *pNumTxBytesUnicast;\r
1284         //RX Unicast byte count\r
1285         u8Byte                  *pNumRxBytesUnicast;\r
1286         // Wireless mode B/G/A/N = BIT0/BIT1/BIT2/BIT3\r
1287         u1Byte                  *pWirelessMode; //ODM_WIRELESS_MODE_E\r
1288         // Frequence band 2.4G/5G = 0/1\r
1289         u1Byte                  *pBandType;\r
1290         // Secondary channel offset don't_care/below/above = 0/1/2\r
1291         u1Byte                  *pSecChOffset;\r
1292         // Security mode Open/WEP/AES/TKIP = 0/1/2/3\r
1293         u1Byte                  *pSecurity;\r
1294         // BW info 20M/40M/80M = 0/1/2\r
1295         u1Byte                  *pBandWidth;\r
1296         // Central channel location Ch1/Ch2/....\r
1297         u1Byte                  *pChannel;      //central channel number\r
1298         BOOLEAN                 DPK_Done;\r
1299         // Common info for 92D DMSP\r
1300         \r
1301         BOOLEAN                 *pbGetValueFromOtherMac;\r
1302         PADAPTER                *pBuddyAdapter;\r
1303         BOOLEAN                 *pbMasterOfDMSP; //MAC0: master, MAC1: slave\r
1304         // Common info for Status\r
1305         BOOLEAN                 *pbScanInProcess;\r
1306         BOOLEAN                 *pbPowerSaving;\r
1307         // CCA Path 2-path/path-A/path-B = 0/1/2; using ODM_CCA_PATH_E.\r
1308         u1Byte                  *pOnePathCCA;\r
1309         //pMgntInfo->AntennaTest\r
1310         u1Byte                  *pAntennaTest;\r
1311         BOOLEAN                 *pbNet_closed;\r
1312         u1Byte                  *mp_mode;\r
1313         //u1Byte                        *pAidMap;\r
1314         u1Byte                  *pu1ForcedIgiLb;\r
1315 //--------- POINTER REFERENCE-----------//\r
1316         pu2Byte                 pForcedDataRate;\r
1317 //------------CALL BY VALUE-------------//\r
1318         BOOLEAN                 bLinkInProcess;\r
1319         BOOLEAN                 bWIFI_Direct;\r
1320         BOOLEAN                 bWIFI_Display;\r
1321         BOOLEAN                 bLinked;\r
1322 \r
1323         BOOLEAN                 bsta_state;\r
1324         u1Byte                  RSSI_Min;       \r
1325         u1Byte          InterfaceIndex; // Add for 92D  dual MAC: 0--Mac0 1--Mac1\r
1326         BOOLEAN         bIsMPChip;\r
1327         BOOLEAN                 bOneEntryOnly;\r
1328         // Common info for BTDM\r
1329         BOOLEAN                 bBtEnabled;                     // BT is disabled\r
1330         BOOLEAN                 bBtConnectProcess;      // BT HS is under connection progress.\r
1331         u1Byte                  btHsRssi;                               // BT HS mode wifi rssi value.\r
1332         BOOLEAN                 bBtHsOperation;         // BT HS mode is under progress\r
1333         BOOLEAN                 bBtDisableEdcaTurbo;    // Under some condition, don't enable the EDCA Turbo\r
1334         BOOLEAN                 bBtLimitedDig;                  // BT is busy.\r
1335 //------------CALL BY VALUE-------------//\r
1336         u1Byte                  RSSI_A;\r
1337         u1Byte                  RSSI_B;\r
1338         u8Byte                  RSSI_TRSW;      \r
1339         u8Byte                  RSSI_TRSW_H;\r
1340         u8Byte                  RSSI_TRSW_L;    \r
1341         u8Byte                  RSSI_TRSW_iso;\r
1342 \r
1343         u1Byte                  RxRate;\r
1344         BOOLEAN                 bNoisyState;\r
1345         u1Byte                  TxRate;\r
1346         u1Byte                  LinkedInterval;\r
1347         u1Byte                  preChannel;\r
1348         u4Byte                  TxagcOffsetValueA;\r
1349         BOOLEAN                 IsTxagcOffsetPositiveA;\r
1350         u4Byte                  TxagcOffsetValueB;\r
1351         BOOLEAN                 IsTxagcOffsetPositiveB;\r
1352         u8Byte                  lastTxOkCnt;\r
1353         u8Byte                  lastRxOkCnt;\r
1354         u4Byte                  BbSwingOffsetA;\r
1355         BOOLEAN                 IsBbSwingOffsetPositiveA;\r
1356         u4Byte                  BbSwingOffsetB;\r
1357         BOOLEAN                 IsBbSwingOffsetPositiveB;\r
1358         s1Byte                  TH_L2H_ini;\r
1359         s1Byte                  TH_EDCCA_HL_diff;\r
1360         s1Byte                  IGI_Base;\r
1361         u1Byte                  IGI_target;\r
1362         BOOLEAN                 ForceEDCCA;\r
1363         u1Byte                  AdapEn_RSSI;\r
1364         s1Byte                  Force_TH_H;\r
1365         s1Byte                  Force_TH_L;\r
1366         u1Byte                  IGI_LowerBound;\r
1367         u1Byte                  antdiv_rssi;\r
1368         u1Byte                  AntType;\r
1369         u1Byte                  pre_AntType;\r
1370         u1Byte                  antdiv_period;\r
1371         u1Byte                  antdiv_select;  \r
1372         u1Byte                  NdpaPeriod;\r
1373 \r
1374         // add by Yu Cehn for adaptivtiy\r
1375         BOOLEAN                 adaptivity_flag;\r
1376         BOOLEAN                 NHM_disable;\r
1377         BOOLEAN                 TxHangFlg;\r
1378         BOOLEAN                 Carrier_Sense_enable;\r
1379         u1Byte                  tolerance_cnt;\r
1380         u8Byte                  NHMCurTxOkcnt;\r
1381         u8Byte                  NHMCurRxOkcnt;\r
1382         u8Byte                  NHMLastTxOkcnt;\r
1383         u8Byte                  NHMLastRxOkcnt;\r
1384         u1Byte                  txEdcca1;\r
1385         u1Byte                  txEdcca0;\r
1386         s1Byte                  H2L_lb;\r
1387         s1Byte                  L2H_lb;\r
1388         u1Byte                  Adaptivity_IGI_upper;\r
1389         u1Byte                  NHM_cnt_0;\r
1390 \r
1391 \r
1392         ODM_NOISE_MONITOR noise_level;//[ODM_MAX_CHANNEL_NUM];\r
1393         //\r
1394         //2 Define STA info.\r
1395         // _ODM_STA_INFO\r
1396         // 2012/01/12 MH For MP, we need to reduce one array pointer for default port.??\r
1397         PSTA_INFO_T             pODM_StaInfo[ODM_ASSOCIATE_ENTRY_NUM];\r
1398 \r
1399 #if (RATE_ADAPTIVE_SUPPORT == 1)\r
1400         u2Byte                  CurrminRptTime;\r
1401         ODM_RA_INFO_T   RAInfo[ODM_ASSOCIATE_ENTRY_NUM]; //See HalMacID support\r
1402 #endif\r
1403         //\r
1404         // 2012/02/14 MH Add to share 88E ra with other SW team.\r
1405         // We need to colelct all support abilit to a proper area.\r
1406         //\r
1407         BOOLEAN                         RaSupport88E;\r
1408 \r
1409         // Define ...........\r
1410 \r
1411         // Latest packet phy info (ODM write)\r
1412         ODM_PHY_DBG_INFO_T       PhyDbgInfo;\r
1413         //PHY_INFO_88E          PhyInfo;\r
1414 \r
1415         // Latest packet phy info (ODM write)\r
1416         ODM_MAC_INFO            *pMacInfo;\r
1417         //MAC_INFO_88E          MacInfo;\r
1418 \r
1419         // Different Team independt structure??\r
1420 \r
1421         //\r
1422         //TX_RTP_CMN            TX_retrpo;\r
1423         //TX_RTP_88E            TX_retrpo;\r
1424         //TX_RTP_8195           TX_retrpo;\r
1425 \r
1426         //\r
1427         //ODM Structure\r
1428         //\r
1429         FAT_T                                           DM_FatTable;\r
1430         DIG_T                                           DM_DigTable;\r
1431         PS_T                                            DM_PSTable;\r
1432         Pri_CCA_T                                       DM_PriCCA;\r
1433         RXHP_T                                          DM_RXHP_Table;\r
1434         RA_T                                            DM_RA_Table;  \r
1435         FALSE_ALARM_STATISTICS          FalseAlmCnt;\r
1436         FALSE_ALARM_STATISTICS          FlaseAlmCntBuddyAdapter;\r
1437         //#ifdef CONFIG_ANTENNA_DIVERSITY\r
1438         SWAT_T                                          DM_SWAT_Table;\r
1439         BOOLEAN                                         RSSI_test;\r
1440         CFO_TRACKING                                    DM_CfoTrack;\r
1441         //#endif \r
1442         \r
1443 #if (DM_ODM_SUPPORT_TYPE & ODM_WIN)\r
1444         //Path Div Struct\r
1445         PATHDIV_PARA    pathIQK;\r
1446 #endif  \r
1447 \r
1448         EDCA_T          DM_EDCA_Table;\r
1449         u4Byte          WMMEDCA_BE;\r
1450         PATHDIV_T       DM_PathDiv;\r
1451         // Copy from SD4 structure\r
1452         //\r
1453         // ==================================================\r
1454         //\r
1455 \r
1456         //common\r
1457         //u1Byte                DM_Type;        \r
1458         //u1Byte    PSD_Report_RXHP[80];   // Add By Gary\r
1459         //u1Byte    PSD_func_flag;               // Add By Gary\r
1460         //for DIG\r
1461         //u1Byte                bDMInitialGainEnable;\r
1462         //u1Byte                binitialized; // for dm_initial_gain_Multi_STA use.\r
1463         //for Antenna diversity\r
1464         //u8    AntDivCfg;// 0:OFF , 1:ON, 2:by efuse\r
1465         //PSTA_INFO_T RSSI_target;\r
1466 \r
1467         BOOLEAN                 *pbDriverStopped;\r
1468         BOOLEAN                 *pbDriverIsGoingToPnpSetPowerSleep;\r
1469         BOOLEAN                 *pinit_adpt_in_progress;\r
1470 \r
1471         //PSD\r
1472         BOOLEAN                 bUserAssignLevel;\r
1473         RT_TIMER                PSDTimer;\r
1474         u1Byte                  RSSI_BT;                        //come from BT\r
1475         BOOLEAN                 bPSDinProcess;\r
1476         BOOLEAN                 bPSDactive;\r
1477         BOOLEAN                 bDMInitialGainEnable;\r
1478 \r
1479         //MPT DIG\r
1480         RT_TIMER                MPT_DIGTimer;\r
1481         \r
1482         //for rate adaptive, in fact,  88c/92c fw will handle this\r
1483         u1Byte                  bUseRAMask;\r
1484 \r
1485         ODM_RATE_ADAPTIVE       RateAdaptive;\r
1486 \r
1487         ANT_DETECTED_INFO       AntDetectedInfo; // Antenna detected information for RSSI tool\r
1488 \r
1489         ODM_RF_CAL_T    RFCalibrateInfo;\r
1490         \r
1491         //\r
1492         // TX power tracking\r
1493         //\r
1494         u1Byte                  BbSwingIdxOfdm[MAX_RF_PATH];\r
1495         u1Byte                  BbSwingIdxOfdmCurrent;\r
1496         u1Byte                  BbSwingIdxOfdmBase[MAX_RF_PATH];\r
1497         BOOLEAN                 BbSwingFlagOfdm;\r
1498         u1Byte                  BbSwingIdxCck;\r
1499         u1Byte                  BbSwingIdxCckCurrent;\r
1500         u1Byte                  BbSwingIdxCckBase;\r
1501         u1Byte                  DefaultOfdmIndex;\r
1502         u1Byte                  DefaultCckIndex;        \r
1503         BOOLEAN                 BbSwingFlagCck;\r
1504         \r
1505         s1Byte                  Absolute_OFDMSwingIdx[MAX_RF_PATH];   \r
1506         s1Byte                  Remnant_OFDMSwingIdx[MAX_RF_PATH];   \r
1507         s1Byte                  Remnant_CCKSwingIdx;\r
1508         s1Byte                  Modify_TxAGC_Value;       //Remnat compensate value at TxAGC \r
1509         BOOLEAN                 Modify_TxAGC_Flag_PathA;\r
1510         BOOLEAN                 Modify_TxAGC_Flag_PathB;\r
1511         BOOLEAN                 Modify_TxAGC_Flag_PathA_CCK;\r
1512         \r
1513         //\r
1514         // ODM system resource.\r
1515         //\r
1516 \r
1517         // ODM relative time.\r
1518         RT_TIMER                                PathDivSwitchTimer;\r
1519         //2011.09.27 add for Path Diversity\r
1520         RT_TIMER                                CCKPathDiversityTimer;\r
1521         RT_TIMER        FastAntTrainingTimer;\r
1522         \r
1523         // ODM relative workitem.\r
1524 #if (DM_ODM_SUPPORT_TYPE == ODM_WIN)\r
1525         #if USE_WORKITEM\r
1526         RT_WORK_ITEM                    PathDivSwitchWorkitem;\r
1527         RT_WORK_ITEM                    CCKPathDiversityWorkitem;\r
1528         RT_WORK_ITEM                    FastAntTrainingWorkitem;\r
1529         RT_WORK_ITEM                    MPT_DIGWorkitem;\r
1530         RT_WORK_ITEM                    RaRptWorkitem;\r
1531         #endif\r
1532 #endif\r
1533 \r
1534 #if(DM_ODM_SUPPORT_TYPE & ODM_WIN)\r
1535         \r
1536 #if (RT_PLATFORM != PLATFORM_LINUX)\r
1537 } DM_ODM_T, *PDM_ODM_T;         // DM_Dynamic_Mechanism_Structure\r
1538 #else\r
1539 };\r
1540 #endif  \r
1541 \r
1542 #else// for AP,ADSL,CE Team\r
1543 } DM_ODM_T, *PDM_ODM_T;         // DM_Dynamic_Mechanism_Structure\r
1544 #endif\r
1545 \r
1546 \r
1547 \r
1548 #if 1 //92c-series\r
1549 #define ODM_RF_PATH_MAX 2\r
1550 #else //jaguar - series\r
1551 #define ODM_RF_PATH_MAX 4\r
1552 #endif\r
1553 \r
1554 typedef enum _ODM_RF_RADIO_PATH {\r
1555     ODM_RF_PATH_A = 0,   //Radio Path A\r
1556     ODM_RF_PATH_B = 1,   //Radio Path B\r
1557     ODM_RF_PATH_C = 2,   //Radio Path C\r
1558     ODM_RF_PATH_D = 3,   //Radio Path D\r
1559     ODM_RF_PATH_AB,\r
1560     ODM_RF_PATH_AC,\r
1561     ODM_RF_PATH_AD,\r
1562     ODM_RF_PATH_BC,\r
1563     ODM_RF_PATH_BD,\r
1564     ODM_RF_PATH_CD,\r
1565     ODM_RF_PATH_ABC,\r
1566     ODM_RF_PATH_ACD,\r
1567     ODM_RF_PATH_BCD,\r
1568     ODM_RF_PATH_ABCD,\r
1569   //  ODM_RF_PATH_MAX,    //Max RF number 90 support\r
1570 } ODM_RF_RADIO_PATH_E, *PODM_RF_RADIO_PATH_E;\r
1571 \r
1572  typedef enum _ODM_RF_CONTENT{\r
1573         odm_radioa_txt = 0x1000,\r
1574         odm_radiob_txt = 0x1001,\r
1575         odm_radioc_txt = 0x1002,\r
1576         odm_radiod_txt = 0x1003\r
1577 } ODM_RF_CONTENT;\r
1578 \r
1579 typedef enum _ODM_BB_Config_Type{\r
1580     CONFIG_BB_PHY_REG,   \r
1581     CONFIG_BB_AGC_TAB,   \r
1582     CONFIG_BB_AGC_TAB_2G,\r
1583     CONFIG_BB_AGC_TAB_5G, \r
1584     CONFIG_BB_PHY_REG_PG,  \r
1585     CONFIG_BB_PHY_REG_MP,\r
1586     CONFIG_BB_AGC_TAB_DIFF,\r
1587 } ODM_BB_Config_Type, *PODM_BB_Config_Type;\r
1588 \r
1589 typedef enum _ODM_RF_Config_Type{ \r
1590         CONFIG_RF_RADIO,\r
1591     CONFIG_RF_TXPWR_LMT,\r
1592 } ODM_RF_Config_Type, *PODM_RF_Config_Type;\r
1593 \r
1594 typedef enum _ODM_FW_Config_Type{\r
1595     CONFIG_FW_NIC,\r
1596     CONFIG_FW_NIC_2,\r
1597     CONFIG_FW_AP,\r
1598     CONFIG_FW_MP,\r
1599     CONFIG_FW_WoWLAN,\r
1600     CONFIG_FW_WoWLAN_2,\r
1601     CONFIG_FW_AP_WoWLAN,\r
1602     CONFIG_FW_BT,\r
1603 } ODM_FW_Config_Type;\r
1604 \r
1605 // Status code\r
1606 #if (DM_ODM_SUPPORT_TYPE != ODM_WIN)\r
1607 typedef enum _RT_STATUS{\r
1608         RT_STATUS_SUCCESS,\r
1609         RT_STATUS_FAILURE,\r
1610         RT_STATUS_PENDING,\r
1611         RT_STATUS_RESOURCE,\r
1612         RT_STATUS_INVALID_CONTEXT,\r
1613         RT_STATUS_INVALID_PARAMETER,\r
1614         RT_STATUS_NOT_SUPPORT,\r
1615         RT_STATUS_OS_API_FAILED,\r
1616 }RT_STATUS,*PRT_STATUS;\r
1617 #endif // end of RT_STATUS definition\r
1618 \r
1619 #ifdef REMOVE_PACK\r
1620 #pragma pack()\r
1621 #endif\r
1622 \r
1623 //#include "odm_function.h"\r
1624 \r
1625 //3===========================================================\r
1626 //3 DIG\r
1627 //3===========================================================\r
1628 \r
1629 //Remove DIG by Yuchen\r
1630 \r
1631 //3===========================================================\r
1632 //3 AGC RX High Power Mode\r
1633 //3===========================================================\r
1634 #define          LNA_Low_Gain_1                      0x64\r
1635 #define          LNA_Low_Gain_2                      0x5A\r
1636 #define          LNA_Low_Gain_3                      0x58\r
1637 \r
1638 #define          FA_RXHP_TH1                           5000\r
1639 #define          FA_RXHP_TH2                           1500\r
1640 #define          FA_RXHP_TH3                             800\r
1641 #define          FA_RXHP_TH4                             600\r
1642 #define          FA_RXHP_TH5                             500\r
1643 \r
1644 //3===========================================================\r
1645 //3 EDCA\r
1646 //3===========================================================\r
1647 \r
1648 //3===========================================================\r
1649 //3 Dynamic Tx Power\r
1650 //3===========================================================\r
1651 //Dynamic Tx Power Control Threshold\r
1652 \r
1653 //Remove By YuChen\r
1654 \r
1655 //3===========================================================\r
1656 //3 Tx Power Tracking\r
1657 //3===========================================================\r
1658 #if 0 //mask this, since these have been defined in typdef.h, vivi\r
1659 #define OFDM_TABLE_SIZE         43\r
1660 #define CCK_TABLE_SIZE          33\r
1661 #endif  \r
1662 \r
1663 \r
1664 //3===========================================================\r
1665 //3 Rate Adaptive\r
1666 //3===========================================================\r
1667 //Remove to odm_RaInfo.h by RS_James\r
1668 \r
1669 //3===========================================================\r
1670 //3 BB Power Save\r
1671 //3===========================================================\r
1672 \r
1673 typedef enum tag_1R_CCA_Type_Definition\r
1674 {\r
1675         CCA_1R =0,\r
1676         CCA_2R = 1,\r
1677         CCA_MAX = 2,\r
1678 }DM_1R_CCA_E;\r
1679 \r
1680 typedef enum tag_RF_Type_Definition\r
1681 {\r
1682         RF_Save =0,\r
1683         RF_Normal = 1,\r
1684         RF_MAX = 2,\r
1685 }DM_RF_E;\r
1686 \r
1687 //3===========================================================\r
1688 //3 Antenna Diversity\r
1689 //3===========================================================\r
1690 typedef enum tag_SW_Antenna_Switch_Definition\r
1691 {\r
1692         Antenna_A = 1,\r
1693         Antenna_B = 2,  \r
1694         Antenna_MAX = 3,\r
1695 }DM_SWAS_E;\r
1696 \r
1697 \r
1698 // Maximal number of antenna detection mechanism needs to perform, added by Roger, 2011.12.28.\r
1699 #define MAX_ANTENNA_DETECTION_CNT       10 \r
1700 \r
1701 //\r
1702 // Extern Global Variables.\r
1703 //\r
1704 extern  u4Byte OFDMSwingTable[OFDM_TABLE_SIZE];\r
1705 extern  u1Byte CCKSwingTable_Ch1_Ch13[CCK_TABLE_SIZE][8];\r
1706 extern  u1Byte CCKSwingTable_Ch14 [CCK_TABLE_SIZE][8];\r
1707 \r
1708 extern  u4Byte OFDMSwingTable_New[OFDM_TABLE_SIZE];\r
1709 extern  u1Byte CCKSwingTable_Ch1_Ch13_New[CCK_TABLE_SIZE][8];\r
1710 extern  u1Byte CCKSwingTable_Ch14_New [CCK_TABLE_SIZE][8];\r
1711 \r
1712 extern  u4Byte TxScalingTable_Jaguar[TXSCALE_TABLE_SIZE];\r
1713 \r
1714 // <20121018, Kordan> In case fail to read TxPowerTrack.txt, we use the table of 88E as the default table.\r
1715 static u1Byte DeltaSwingTableIdx_2GA_P_8188E[] = {0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 4,  4,  4,  4,  4,  4,  5,  5,  7,  7,  8,  8,  8,  9,  9,  9,  9,  9};\r
1716 static u1Byte DeltaSwingTableIdx_2GA_N_8188E[] = {0, 0, 0, 2, 2, 3, 3, 4, 4, 4, 4, 5, 5,  6,  6,  7,  7,  7,  7,  8,  8,  9,  9, 10, 10, 10, 11, 11, 11, 11}; \r
1717 \r
1718 //\r
1719 // check Sta pointer valid or not\r
1720 //\r
1721 #if (DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))\r
1722 #define IS_STA_VALID(pSta)              (pSta && pSta->expire_to)\r
1723 #elif (DM_ODM_SUPPORT_TYPE & ODM_WIN)\r
1724 #define IS_STA_VALID(pSta)              (pSta && pSta->bUsed)\r
1725 #else\r
1726 #define IS_STA_VALID(pSta)              (pSta)\r
1727 #endif\r
1728 // 20100514 Joseph: Add definition for antenna switching test after link.\r
1729 // This indicates two different the steps. \r
1730 // In SWAW_STEP_PEAK, driver needs to switch antenna and listen to the signal on the air.\r
1731 // In SWAW_STEP_DETERMINE, driver just compares the signal captured in SWAW_STEP_PEAK\r
1732 // with original RSSI to determine if it is necessary to switch antenna.\r
1733 #define SWAW_STEP_PEAK          0\r
1734 #define SWAW_STEP_DETERMINE     1\r
1735 \r
1736 //Remove DIG by yuchen\r
1737 \r
1738 VOID\r
1739 ODM_SetAntenna(\r
1740         IN      PDM_ODM_T       pDM_Odm,\r
1741         IN      u1Byte          Antenna);\r
1742 \r
1743 \r
1744 //Remove BB power saving by Yuchen\r
1745 \r
1746 #define SwAntDivRestAfterLink   ODM_SwAntDivRestAfterLink\r
1747 VOID ODM_SwAntDivRestAfterLink( IN      PDM_ODM_T       pDM_Odm);\r
1748 \r
1749 #define dm_CheckTXPowerTracking         ODM_TXPowerTrackingCheck\r
1750 VOID    \r
1751 ODM_TXPowerTrackingCheck(\r
1752         IN              PDM_ODM_T               pDM_Odm\r
1753         );\r
1754                                                 \r
1755 //Remove ODM_RAStateCheck() by RS_James\r
1756 \r
1757 #if(DM_ODM_SUPPORT_TYPE & (ODM_WIN|ODM_AP|ODM_ADSL))\r
1758 //============================================================\r
1759 // function prototype\r
1760 //============================================================\r
1761 //#define DM_ChangeDynamicInitGainThresh                ODM_ChangeDynamicInitGainThresh\r
1762 //void  ODM_ChangeDynamicInitGainThresh(IN      PADAPTER        pAdapter,\r
1763 //                                                                                      IN      INT32           DM_Type,\r
1764 //                                                                                      IN      INT32           DM_Value);\r
1765 \r
1766 //Remove DIG by yuchen\r
1767 \r
1768 \r
1769 BOOLEAN\r
1770 ODM_CheckPowerStatus(\r
1771         IN      PADAPTER                Adapter\r
1772         );\r
1773 \r
1774 \r
1775 //Remove ODM_RateAdaptiveStateApInit() by RS_James\r
1776 \r
1777 //Remove Edca by Yuchen\r
1778 \r
1779 #if(DM_ODM_SUPPORT_TYPE==ODM_AP)\r
1780 #ifdef HW_ANT_SWITCH\r
1781 u1Byte\r
1782 ODM_Diversity_AntennaSelect(\r
1783         IN      PDM_ODM_T       pDM_Odm,\r
1784         IN      u1Byte  *data\r
1785 );\r
1786 #endif\r
1787 #endif\r
1788 \r
1789 #define SwAntDivResetBeforeLink         ODM_SwAntDivResetBeforeLink\r
1790 VOID ODM_SwAntDivResetBeforeLink(IN     PDM_ODM_T       pDM_Odm);\r
1791 \r
1792 #define SwAntDivCheckBeforeLink ODM_SwAntDivCheckBeforeLink\r
1793 \r
1794 BOOLEAN \r
1795 ODM_SwAntDivCheckBeforeLink(\r
1796         IN              PDM_ODM_T               pDM_Odm\r
1797         );\r
1798 \r
1799 \r
1800 #endif\r
1801 \r
1802 #define dm_SWAW_RSSI_Check      ODM_SwAntDivChkPerPktRssi\r
1803 VOID ODM_SwAntDivChkPerPktRssi( \r
1804         IN PDM_ODM_T            pDM_Odm,\r
1805         IN u1Byte                       StationID,\r
1806         IN PODM_PHY_INFO_T pPhyInfo\r
1807         );\r
1808 \r
1809 #if((DM_ODM_SUPPORT_TYPE==ODM_WIN)||(DM_ODM_SUPPORT_TYPE==ODM_CE))\r
1810 \r
1811 u4Byte ConvertTo_dB(u4Byte Value);\r
1812 \r
1813 u4Byte\r
1814 GetPSDData(\r
1815         PDM_ODM_T       pDM_Odm,\r
1816         unsigned int    point,\r
1817         u1Byte initial_gain_psd);\r
1818 \r
1819 #endif\r
1820 \r
1821 //Remove ODM_Get_Rate_Bitmap() by RS_James      \r
1822 \r
1823 #if(DM_ODM_SUPPORT_TYPE & (ODM_WIN))\r
1824 #define dm_PSDMonitorCallback   odm_PSDMonitorCallback\r
1825 VOID    odm_PSDMonitorCallback(PRT_TIMER                pTimer);\r
1826 \r
1827 VOID\r
1828 odm_PSDMonitorWorkItemCallback(\r
1829     IN PVOID            pContext\r
1830     );\r
1831 \r
1832 VOID\r
1833 PatchDCTone(\r
1834         IN      PDM_ODM_T       pDM_Odm,\r
1835         pu4Byte         PSD_report,\r
1836         u1Byte          initial_gain_psd\r
1837 );\r
1838 VOID\r
1839 ODM_PSDMonitor(\r
1840         IN      PDM_ODM_T       pDM_Odm\r
1841         );\r
1842 VOID    odm_PSD_Monitor(PDM_ODM_T       pDM_Odm);\r
1843 VOID    odm_PSDMonitorInit(PDM_ODM_T    pDM_Odm);\r
1844 \r
1845 VOID\r
1846 ODM_PSDDbgControl(\r
1847         IN      PADAPTER        Adapter,\r
1848         IN      u4Byte          mode,\r
1849         IN      u4Byte          btRssi\r
1850         );\r
1851 \r
1852 #endif  // DM_ODM_SUPPORT_TYPE\r
1853 \r
1854 \r
1855 #if (BEAMFORMING_SUPPORT == 1)\r
1856 BEAMFORMING_CAP\r
1857 Beamforming_GetEntryBeamCapByMacId(\r
1858  IN PMGNT_INFO pMgntInfo,\r
1859  IN u1Byte  MacId\r
1860  );\r
1861 #endif\r
1862 \r
1863 VOID\r
1864 odm_TXPowerTrackingInit(\r
1865         IN      PDM_ODM_T       pDM_Odm \r
1866         );\r
1867 \r
1868 VOID ODM_DMInit( IN     PDM_ODM_T       pDM_Odm);\r
1869 \r
1870 VOID\r
1871 ODM_DMWatchdog(\r
1872         IN              PDM_ODM_T                       pDM_Odm                 // For common use in the future\r
1873         );\r
1874 \r
1875 VOID\r
1876 ODM_CmnInfoInit(\r
1877         IN              PDM_ODM_T               pDM_Odm,\r
1878         IN              ODM_CMNINFO_E   CmnInfo,\r
1879         IN              u4Byte                  Value   \r
1880         );\r
1881 \r
1882 VOID\r
1883 ODM_CmnInfoHook(\r
1884         IN              PDM_ODM_T               pDM_Odm,\r
1885         IN              ODM_CMNINFO_E   CmnInfo,\r
1886         IN              PVOID                   pValue  \r
1887         );\r
1888 \r
1889 VOID\r
1890 ODM_CmnInfoPtrArrayHook(\r
1891         IN              PDM_ODM_T               pDM_Odm,\r
1892         IN              ODM_CMNINFO_E   CmnInfo,\r
1893         IN              u2Byte                  Index,\r
1894         IN              PVOID                   pValue  \r
1895         );\r
1896 \r
1897 VOID\r
1898 ODM_CmnInfoUpdate(\r
1899         IN              PDM_ODM_T               pDM_Odm,\r
1900         IN              u4Byte                  CmnInfo,\r
1901         IN              u8Byte                  Value   \r
1902         );\r
1903 \r
1904 VOID \r
1905 ODM_InitAllTimers(\r
1906     IN PDM_ODM_T        pDM_Odm \r
1907     );\r
1908 \r
1909 VOID \r
1910 ODM_CancelAllTimers(\r
1911     IN PDM_ODM_T    pDM_Odm \r
1912     );\r
1913 \r
1914 VOID\r
1915 ODM_ReleaseAllTimers(\r
1916     IN PDM_ODM_T        pDM_Odm \r
1917     );\r
1918 \r
1919 VOID\r
1920 ODM_ResetIQKResult(\r
1921     IN PDM_ODM_T pDM_Odm \r
1922     );\r
1923 \r
1924 \r
1925 #if (DM_ODM_SUPPORT_TYPE == ODM_WIN)\r
1926 VOID ODM_InitAllWorkItems(IN PDM_ODM_T  pDM_Odm );\r
1927 VOID ODM_FreeAllWorkItems(IN PDM_ODM_T  pDM_Odm );\r
1928 \r
1929 \r
1930 //===========================================//\r
1931 // Neil Chen----2011--06--15--\r
1932 \r
1933 //3 Path Diversity\r
1934 //===========================================================\r
1935 \r
1936 #define TP_MODE                0\r
1937 #define RSSI_MODE                      1\r
1938 #define TRAFFIC_LOW            0\r
1939 #define TRAFFIC_HIGH           1\r
1940 \r
1941 //#define   PATHDIV_ENABLE       1\r
1942 //#define dm_PathDiv_RSSI_Check ODM_PathDivChkPerPktRssi\r
1943 \r
1944 u8Byte\r
1945 PlatformDivision64(\r
1946         IN u8Byte       x,\r
1947         IN u8Byte       y\r
1948 );\r
1949 \r
1950 \r
1951 // 20100514 Joseph: Add definition for antenna switching test after link.\r
1952 // This indicates two different the steps. \r
1953 // In SWAW_STEP_PEAK, driver needs to switch antenna and listen to the signal on the air.\r
1954 // In SWAW_STEP_DETERMINE, driver just compares the signal captured in SWAW_STEP_PEAK\r
1955 // with original RSSI to determine if it is necessary to switch antenna.\r
1956 #define SWAW_STEP_PEAK          0\r
1957 #define SWAW_STEP_DETERMINE     1\r
1958 \r
1959 //====================================================\r
1960 //3 PathDiV End\r
1961 //====================================================\r
1962 \r
1963 //#define PathDivCheckBeforeLink8192C   ODM_PathDiversityBeforeLink92C\r
1964 \r
1965 #define DM_ChangeDynamicInitGainThresh          ODM_ChangeDynamicInitGainThresh\r
1966 //void  ODM_ChangeDynamicInitGainThresh(IN      PADAPTER        pAdapter,\r
1967 //                                                                                      IN      INT32           DM_Type,\r
1968 //                                                                                      IN      INT32           DM_Value);\r
1969 //\r
1970 \r
1971 \r
1972 typedef enum tag_DIG_Connect_Definition\r
1973 {\r
1974         DIG_STA_DISCONNECT = 0, \r
1975         DIG_STA_CONNECT = 1,\r
1976         DIG_STA_BEFORE_CONNECT = 2,\r
1977         DIG_MultiSTA_DISCONNECT = 3,\r
1978         DIG_MultiSTA_CONNECT = 4,\r
1979         DIG_CONNECT_MAX\r
1980 }DM_DIG_CONNECT_E;\r
1981 \r
1982 \r
1983 #define dm_SWAW_RSSI_Check      ODM_SwAntDivChkPerPktRssi\r
1984 \r
1985 //\r
1986 // 2012/01/12 MH Check afapter status. Temp fix BSOD.\r
1987 //\r
1988 #define HAL_ADAPTER_STS_CHK(pDM_Odm)\\r
1989         if (pDM_Odm->Adapter == NULL)\\r
1990         {\\r
1991                 return;\\r
1992         }\\r
1993 \r
1994 \r
1995 //\r
1996 // For new definition in MP temporarily fro power tracking,\r
1997 //\r
1998 #define odm_TXPowerTrackingDirectCall(_Adapter) \\r
1999         IS_HARDWARE_TYPE_8192D(_Adapter) ? odm_TXPowerTrackingCallback_ThermalMeter_92D(_Adapter) : \\r
2000         IS_HARDWARE_TYPE_8192C(_Adapter) ? odm_TXPowerTrackingCallback_ThermalMeter_92C(_Adapter) : \\r
2001         IS_HARDWARE_TYPE_8723A(_Adapter) ? odm_TXPowerTrackingCallback_ThermalMeter_8723A(_Adapter) :\\r
2002         ODM_TXPowerTrackingCallback_ThermalMeter(_Adapter)\r
2003 \r
2004 VOID\r
2005 ODM_SetTxAntByTxInfo_88C_92D(\r
2006         IN              PDM_ODM_T               pDM_Odm,\r
2007         IN              pu1Byte                 pDesc,\r
2008         IN              u1Byte                  macId   \r
2009         );\r
2010 \r
2011 #endif  // #if (DM_ODM_SUPPORT_TYPE == ODM_WIN)\r
2012 VOID\r
2013 ODM_AntselStatistics_88C(\r
2014         IN              PDM_ODM_T               pDM_Odm,\r
2015         IN              u1Byte                  MacId,\r
2016         IN              u4Byte                  PWDBAll,\r
2017         IN              BOOLEAN                 isCCKrate\r
2018 );\r
2019 \r
2020 #if( DM_ODM_SUPPORT_TYPE & (ODM_WIN |ODM_CE))\r
2021 \r
2022 VOID\r
2023 ODM_SingleDualAntennaDefaultSetting(\r
2024         IN              PDM_ODM_T               pDM_Odm\r
2025         );\r
2026 \r
2027 BOOLEAN\r
2028 ODM_SingleDualAntennaDetection(\r
2029         IN              PDM_ODM_T               pDM_Odm,\r
2030         IN              u1Byte                  mode\r
2031         );\r
2032 \r
2033 #endif  // #if((DM_ODM_SUPPORT_TYPE==ODM_WIN)||(DM_ODM_SUPPORT_TYPE==ODM_CE))\r
2034 VOID\r
2035 ODM_UpdateNoisyState(\r
2036         IN      PDM_ODM_T       pDM_Odm,\r
2037         IN      BOOLEAN         bNoisyStateFromC2H\r
2038 );\r
2039 \r
2040 u4Byte\r
2041 Set_RA_DM_Ratrbitmap_by_Noisy(\r
2042         IN      PDM_ODM_T       pDM_Odm,\r
2043         IN      WIRELESS_MODE   WirelessMode,\r
2044         IN      u4Byte                  ratr_bitmap,\r
2045         IN      u1Byte                  rssi_level\r
2046 );\r
2047 \r
2048 VOID\r
2049 ODM_UpdateInitRate(\r
2050         IN      PDM_ODM_T       pDM_Odm,\r
2051         IN      u1Byte          Rate\r
2052         );\r
2053 \r
2054 //Remove ODM_DynamicARFBSelect() by RS_James\r
2055 \r
2056 #if (DM_ODM_SUPPORT_TYPE == ODM_CE)\r
2057 void odm_dtc(PDM_ODM_T pDM_Odm);\r
2058 #endif /* #if (DM_ODM_SUPPORT_TYPE == ODM_CE) */\r
2059 \r
2060 #endif\r
2061 \r