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
22 #ifndef __HALDMOUTSRC_H__
\r
23 #define __HALDMOUTSRC_H__
\r
25 //============================================================
\r
27 //============================================================
\r
29 // 2011/09/22 MH Define all team supprt ability.
\r
33 // 2011/09/22 MH Define for all teams. Please Define the constan in your precomp header.
\r
35 //#define DM_ODM_SUPPORT_AP 0
\r
36 //#define DM_ODM_SUPPORT_ADSL 0
\r
37 //#define DM_ODM_SUPPORT_CE 0
\r
38 //#define DM_ODM_SUPPORT_MP 1
\r
41 // 2011/09/28 MH Define ODM SW team support flag.
\r
47 // Antenna Switch Relative Definition.
\r
52 // Add new function SwAntDivCheck8192C().
\r
53 // This is the main function of Antenna diversity function before link.
\r
54 // Mainly, it just retains last scan result and scan again.
\r
55 // After that, it compares the scan result to see which one gets better RSSI.
\r
56 // It selects antenna with better receiving power and returns better scan result.
\r
60 #define TRAFFIC_LOW 0
\r
61 #define TRAFFIC_HIGH 1
\r
64 //============================================================
\r
65 //3 Tx Power Tracking
\r
66 //3============================================================
\r
67 #define DPK_DELTA_MAPPING_NUM 13
\r
68 #define index_mapping_HP_NUM 15
\r
69 #define OFDM_TABLE_SIZE 43
\r
70 #define CCK_TABLE_SIZE 33
\r
71 #define TXSCALE_TABLE_SIZE 37
\r
72 #define TXPWR_TRACK_TABLE_SIZE 30
\r
73 #define DELTA_SWINGIDX_SIZE 30
\r
76 //============================================================
\r
78 //3============================================================
\r
80 #define AFH_PSD 1 //0:normal PSD scan, 1: only do 20 pts PSD
\r
81 #define MODE_40M 0 //0:20M, 1:40M
\r
83 #define PSD_CHMIN 20 // Minimum channel number for BT AFH
\r
84 #define SIR_STEP_SIZE 3
\r
85 #define Smooth_Size_1 5
\r
86 #define Smooth_TH_1 3
\r
87 #define Smooth_Size_2 10
\r
88 #define Smooth_TH_2 4
\r
89 #define Smooth_Size_3 20
\r
90 #define Smooth_TH_3 4
\r
91 #define Smooth_Step_Size 5
\r
92 #define Adaptive_SIR 1
\r
93 #if(RTL8723_FPGA_VERIFICATION == 1)
\r
94 #define PSD_RESCAN 1
\r
96 #define PSD_RESCAN 4
\r
98 #define PSD_SCAN_INTERVAL 700 //ms
\r
102 //8723A High Power IGI Setting
\r
103 #define DM_DIG_HIGH_PWR_IGI_LOWER_BOUND 0x22
\r
104 #define DM_DIG_Gmode_HIGH_PWR_IGI_LOWER_BOUND 0x28
\r
105 #define DM_DIG_HIGH_PWR_THRESHOLD 0x3a
\r
106 #define DM_DIG_LOW_PWR_THRESHOLD 0x14
\r
109 #define ANTTESTALL 0x00 //Ant A or B will be Testing
\r
110 #define ANTTESTA 0x01 //Ant A will be Testing
\r
111 #define ANTTESTB 0x02 //Ant B will be testing
\r
114 #define DM_DIG_FA_TH0_LPS 4 //-> 4 in lps
\r
115 #define DM_DIG_FA_TH1_LPS 15 //-> 15 lps
\r
116 #define DM_DIG_FA_TH2_LPS 30 //-> 30 lps
\r
117 #define RSSI_OFFSET_DIG 0x05;
\r
121 //for 8723A Ant Definition--2012--06--07 due to different IC may be different ANT define
\r
122 #define MAIN_ANT 1 //Ant A or Ant Main
\r
123 #define AUX_ANT 2 //AntB or Ant Aux
\r
124 #define MAX_ANT 3 // 3 for AP using
\r
127 //Antenna Diversity Type
\r
128 #define SW_ANTDIV 0
\r
129 #define HW_ANTDIV 1
\r
130 //============================================================
\r
131 // structure and define
\r
132 //============================================================
\r
135 // 2011/09/20 MH Add for AP/ADSLpseudo DM structuer requirement.
\r
136 // We need to remove to other position???
\r
138 #if(DM_ODM_SUPPORT_TYPE & (ODM_CE|ODM_WIN))
\r
139 typedef struct rtl8192cd_priv {
\r
142 }rtl8192cd_priv, *prtl8192cd_priv;
\r
146 #if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))
\r
147 typedef struct _ADAPTER{
\r
149 #ifdef AP_BUILD_WORKAROUND
\r
150 HAL_DATA_TYPE* temp2;
\r
151 prtl8192cd_priv priv;
\r
153 }ADAPTER, *PADAPTER;
\r
156 #if (DM_ODM_SUPPORT_TYPE == ODM_AP)
\r
158 typedef struct _WLAN_STA{
\r
160 } WLAN_STA, *PRT_WLAN_STA;
\r
164 typedef struct _Dynamic_Initial_Gain_Threshold_
\r
166 u1Byte Dig_Enable_Flag;
\r
167 u1Byte Dig_Ext_Port_Stage;
\r
170 int RssiHighThresh;
\r
172 u4Byte FALowThresh;
\r
173 u4Byte FAHighThresh;
\r
175 u1Byte CurSTAConnectState;
\r
176 u1Byte PreSTAConnectState;
\r
177 u1Byte CurMultiSTAConnectState;
\r
181 u1Byte BT30_CurIGI;
\r
182 u1Byte BackupIGValue;
\r
185 s1Byte BackoffVal_range_max;
\r
186 s1Byte BackoffVal_range_min;
\r
187 u1Byte rx_gain_range_max;
\r
188 u1Byte rx_gain_range_min;
\r
189 u1Byte Rssi_val_min;
\r
191 u1Byte PreCCK_CCAThres;
\r
192 u1Byte CurCCK_CCAThres;
\r
193 u1Byte PreCCKPDState;
\r
194 u1Byte CurCCKPDState;
\r
197 u1Byte ForbiddenIGI;
\r
198 u4Byte Recover_cnt;
\r
200 u1Byte DIG_Dynamic_MIN_0;
\r
201 u1Byte DIG_Dynamic_MIN_1;
\r
202 BOOLEAN bMediaConnect_0;
\r
203 BOOLEAN bMediaConnect_1;
\r
205 u4Byte AntDiv_RSSI_max;
\r
209 typedef struct _Dynamic_Power_Saving_
\r
211 u1Byte PreCCAState;
\r
212 u1Byte CurCCAState;
\r
220 u4Byte Reg874,RegC70,Reg85C,RegA74;
\r
224 typedef struct _FALSE_ALARM_STATISTICS{
\r
225 u4Byte Cnt_Parity_Fail;
\r
226 u4Byte Cnt_Rate_Illegal;
\r
227 u4Byte Cnt_Crc8_fail;
\r
228 u4Byte Cnt_Mcs_fail;
\r
229 u4Byte Cnt_Ofdm_fail;
\r
230 u4Byte Cnt_Cck_fail;
\r
232 u4Byte Cnt_Fast_Fsync;
\r
233 u4Byte Cnt_SB_Search_fail;
\r
234 u4Byte Cnt_OFDM_CCA;
\r
235 u4Byte Cnt_CCK_CCA;
\r
236 u4Byte Cnt_CCA_all;
\r
237 u4Byte Cnt_BW_USC; //Gary
\r
238 u4Byte Cnt_BW_LSC; //Gary
\r
239 }FALSE_ALARM_STATISTICS, *PFALSE_ALARM_STATISTICS;
\r
241 typedef struct _Dynamic_Primary_CCA{
\r
242 u1Byte PriCCA_flag;
\r
245 u1Byte DupRTS_flag;
\r
246 u1Byte Monitor_flag;
\r
249 }Pri_CCA_T, *pPri_CCA_T;
\r
251 typedef struct _Rate_Adaptive_Table_{
\r
252 u1Byte firstconnect;
\r
255 typedef struct _RX_High_Power_
\r
258 u1Byte PSD_func_trigger;
\r
259 u1Byte PSD_bitmap_RXHP[80];
\r
264 BOOLEAN First_time_enter;
\r
265 BOOLEAN RXHP_enable;
\r
268 #if (DM_ODM_SUPPORT_TYPE == ODM_WIN)
\r
270 RT_WORK_ITEM PSDTimeWorkitem;
\r
276 #if(DM_ODM_SUPPORT_TYPE & (ODM_CE))
\r
277 #define ASSOCIATE_ENTRY_NUM 32 // Max size of AsocEntry[].
\r
278 #define ODM_ASSOCIATE_ENTRY_NUM ASSOCIATE_ENTRY_NUM
\r
280 #elif(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))
\r
281 #define ASSOCIATE_ENTRY_NUM NUM_STAT
\r
282 #define ODM_ASSOCIATE_ENTRY_NUM ASSOCIATE_ENTRY_NUM+1
\r
286 // 2012/01/12 MH Revise for compatiable with other SW team.
\r
287 // 0 is for STA 1-n is for AP clients.
\r
289 #define ODM_ASSOCIATE_ENTRY_NUM ASSOCIATE_ENTRY_NUM+1// Default port only one
\r
292 //#ifdef CONFIG_ANTENNA_DIVERSITY
\r
293 // This indicates two different the steps.
\r
294 // In SWAW_STEP_PEAK, driver needs to switch antenna and listen to the signal on the air.
\r
295 // In SWAW_STEP_DETERMINE, driver just compares the signal captured in SWAW_STEP_PEAK
\r
296 // with original RSSI to determine if it is necessary to switch antenna.
\r
297 #define SWAW_STEP_PEAK 0
\r
298 #define SWAW_STEP_DETERMINE 1
\r
301 #define RSSI_MODE 1
\r
302 #define TRAFFIC_LOW 0
\r
303 #define TRAFFIC_HIGH 1
\r
304 #define TRAFFIC_UltraLOW 2
\r
306 typedef struct _SW_Antenna_Switch_
\r
308 u1Byte Double_chk_flag;
\r
313 u1Byte RSSI_Trying;
\r
315 u1Byte bTriggerAntennaSwitch;
\r
316 u1Byte SelectAntennaMap;
\r
317 u1Byte RSSI_target;
\r
320 // Before link Antenna Switch check
\r
321 u1Byte SWAS_NoLink_State;
\r
322 u4Byte SWAS_NoLink_BK_Reg860;
\r
323 u4Byte SWAS_NoLink_BK_Reg92c;
\r
324 BOOLEAN ANTA_ON; //To indicate Ant A is or not
\r
325 BOOLEAN ANTB_ON; //To indicate Ant B is on or not
\r
334 u8Byte lastTxOkCnt;
\r
335 u8Byte lastRxOkCnt;
\r
336 u8Byte TXByteCnt_A;
\r
337 u8Byte TXByteCnt_B;
\r
338 u8Byte RXByteCnt_A;
\r
339 u8Byte RXByteCnt_B;
\r
340 u1Byte TrafficLoad;
\r
342 u1Byte Train_time_flag;
\r
343 RT_TIMER SwAntennaSwitchTimer;
\r
344 RT_TIMER SwAntennaSwitchTimer_8723B;
\r
345 #if (DM_ODM_SUPPORT_TYPE == ODM_WIN)
\r
347 RT_WORK_ITEM SwAntennaSwitchWorkitem;
\r
348 RT_WORK_ITEM SwAntennaSwitchWorkitem_8723B;
\r
352 #ifdef CONFIG_SW_ANTENNA_DIVERSITY
\r
353 _timer SwAntennaSwitchTimer;
\r
354 u8Byte lastTxOkCnt;
\r
355 u8Byte lastRxOkCnt;
\r
356 u8Byte TXByteCnt_A;
\r
357 u8Byte TXByteCnt_B;
\r
358 u8Byte RXByteCnt_A;
\r
359 u8Byte RXByteCnt_B;
\r
360 u1Byte DoubleComfirm;
\r
361 u1Byte TrafficLoad;
\r
362 //SW Antenna Switch
\r
367 #ifdef CONFIG_HW_ANTENNA_DIVERSITY
\r
368 //Hybrid Antenna Diversity
\r
369 u4Byte CCK_Ant1_Cnt[ASSOCIATE_ENTRY_NUM+1];
\r
370 u4Byte CCK_Ant2_Cnt[ASSOCIATE_ENTRY_NUM+1];
\r
371 u4Byte OFDM_Ant1_Cnt[ASSOCIATE_ENTRY_NUM+1];
\r
372 u4Byte OFDM_Ant2_Cnt[ASSOCIATE_ENTRY_NUM+1];
\r
373 u4Byte RSSI_Ant1_Sum[ASSOCIATE_ENTRY_NUM+1];
\r
374 u4Byte RSSI_Ant2_Sum[ASSOCIATE_ENTRY_NUM+1];
\r
375 u1Byte TxAnt[ASSOCIATE_ENTRY_NUM+1];
\r
385 typedef struct _EDCA_TURBO_
\r
387 BOOLEAN bCurrentTurboEDCA;
\r
388 BOOLEAN bIsCurRDLState;
\r
390 #if(DM_ODM_SUPPORT_TYPE == ODM_CE )
\r
391 u4Byte prv_traffic_idx; // edca turbo
\r
396 typedef struct _ODM_RATE_ADAPTIVE
\r
398 u1Byte Type; // DM_Type_ByFW/DM_Type_ByDriver
\r
399 u1Byte LdpcThres; // if RSSI > LdpcThres => switch from LPDC to BCC
\r
401 BOOLEAN bLowerRtsRate;
\r
402 u1Byte HighRSSIThresh; // if RSSI > HighRSSIThresh => RATRState is DM_RATR_STA_HIGH
\r
403 u1Byte LowRSSIThresh; // if RSSI <= LowRSSIThresh => RATRState is DM_RATR_STA_LOW
\r
404 u1Byte RATRState; // Current RSSI level, DM_RATR_STA_HIGH/DM_RATR_STA_MIDDLE/DM_RATR_STA_LOW
\r
406 } ODM_RATE_ADAPTIVE, *PODM_RATE_ADAPTIVE;
\r
409 #if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))
\r
412 #ifdef ADSL_AP_BUILD_WORKAROUND
\r
413 #define MAX_TOLERANCE 5
\r
414 #define IQK_DELAY_TIME 1 //ms
\r
418 // Indicate different AP vendor for IOT issue.
\r
420 typedef enum _HT_IOT_PEER
\r
422 HT_IOT_PEER_UNKNOWN = 0,
\r
423 HT_IOT_PEER_REALTEK = 1,
\r
424 HT_IOT_PEER_REALTEK_92SE = 2,
\r
425 HT_IOT_PEER_BROADCOM = 3,
\r
426 HT_IOT_PEER_RALINK = 4,
\r
427 HT_IOT_PEER_ATHEROS = 5,
\r
428 HT_IOT_PEER_CISCO = 6,
\r
429 HT_IOT_PEER_MERU = 7,
\r
430 HT_IOT_PEER_MARVELL = 8,
\r
431 HT_IOT_PEER_REALTEK_SOFTAP = 9,// peer is RealTek SOFT_AP, by Bohn, 2009.12.17
\r
432 HT_IOT_PEER_SELF_SOFTAP = 10, // Self is SoftAP
\r
433 HT_IOT_PEER_AIRGO = 11,
\r
434 HT_IOT_PEER_INTEL = 12,
\r
435 HT_IOT_PEER_RTK_APCLIENT = 13,
\r
436 HT_IOT_PEER_REALTEK_81XX = 14,
\r
437 HT_IOT_PEER_REALTEK_WOW = 15,
\r
438 HT_IOT_PEER_MAX = 16
\r
439 }HT_IOT_PEER_E, *PHTIOT_PEER_E;
\r
440 #endif//#if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))
\r
444 #define IQK_MAC_REG_NUM 4
\r
445 #define IQK_ADDA_REG_NUM 16
\r
446 #define IQK_BB_REG_NUM_MAX 10
\r
447 #if (RTL8192D_SUPPORT==1)
\r
448 #define IQK_BB_REG_NUM 10
\r
450 #define IQK_BB_REG_NUM 9
\r
452 #define HP_THERMAL_NUM 8
\r
454 #define AVG_THERMAL_NUM 8
\r
455 #define IQK_Matrix_REG_NUM 8
\r
456 #define IQK_Matrix_Settings_NUM 14+24+21 // Channels_2_4G_NUM + Channels_5G_20M_NUM + Channels_5G
\r
458 #define DM_Type_ByFW 0
\r
459 #define DM_Type_ByDriver 1
\r
462 // Declare for common info
\r
464 #define MAX_PATH_NUM_92CS 2
\r
465 #define MAX_PATH_NUM_8188E 1
\r
466 #define MAX_PATH_NUM_8192E 2
\r
467 #define MAX_PATH_NUM_8723B 1
\r
468 #define MAX_PATH_NUM_8812A 2
\r
469 #define MAX_PATH_NUM_8821A 1
\r
471 #define IQK_THRESHOLD 8
\r
473 typedef struct _ODM_Phy_Status_Info_
\r
476 // Be care, if you want to add any element please insert between
\r
477 // RxPWDBAll & SignalStrength.
\r
479 #if (DM_ODM_SUPPORT_TYPE & (ODM_WIN))
\r
485 u1Byte SignalQuality; // in 0-100 index.
\r
486 s1Byte RxMIMOSignalQuality[4]; //per-path's EVM
\r
487 u1Byte RxMIMOEVMdbm[4]; //per-path's EVM dbm
\r
489 u1Byte RxMIMOSignalStrength[4];// in 0~100 index
\r
491 u2Byte Cfo_short[4]; // per-path's Cfo_short
\r
492 u2Byte Cfo_tail[4]; // per-path's Cfo_tail
\r
494 #if (DM_ODM_SUPPORT_TYPE & (ODM_WIN|ODM_CE))
\r
495 s1Byte RxPower; // in dBm Translate from PWdB
\r
496 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
497 u1Byte BTRxRSSIPercentage;
\r
498 u1Byte SignalStrength; // in 0-100 index.
\r
500 s1Byte RxPwr[4]; //per-path's pwdb
\r
502 u1Byte RxSNR[4]; //per-path's SNR
\r
504 u1Byte btCoexPwrAdjust;
\r
505 }ODM_PHY_INFO_T,*PODM_PHY_INFO_T;
\r
508 typedef struct _ODM_Per_Pkt_Info_
\r
513 BOOLEAN bPacketMatchBSSID;
\r
514 BOOLEAN bPacketToSelf;
\r
515 BOOLEAN bPacketBeacon;
\r
516 }ODM_PACKET_INFO_T,*PODM_PACKET_INFO_T;
\r
519 typedef struct _ODM_Phy_Dbg_Info_
\r
521 //ODM Write,debug info
\r
523 u8Byte NumQryPhyStatus;
\r
524 u8Byte NumQryPhyStatusCCK;
\r
525 u8Byte NumQryPhyStatusOFDM;
\r
526 u1Byte NumQryBeaconPkt;
\r
530 }ODM_PHY_DBG_INFO_T;
\r
533 typedef struct _ODM_Mac_Status_Info_
\r
540 typedef enum tag_Dynamic_ODM_Support_Ability_Type
\r
543 ODM_DIG = 0x00000001,
\r
544 ODM_HIGH_POWER = 0x00000002,
\r
545 ODM_CCK_CCA_TH = 0x00000004,
\r
546 ODM_FA_STATISTICS = 0x00000008,
\r
547 ODM_RAMASK = 0x00000010,
\r
548 ODM_RSSI_MONITOR = 0x00000020,
\r
549 ODM_SW_ANTDIV = 0x00000040,
\r
550 ODM_HW_ANTDIV = 0x00000080,
\r
551 ODM_BB_PWRSV = 0x00000100,
\r
552 ODM_2TPATHDIV = 0x00000200,
\r
553 ODM_1TPATHDIV = 0x00000400,
\r
554 ODM_PSD2AFH = 0x00000800
\r
558 // 2011/20/20 MH For MP driver RT_WLAN_STA = STA_INFO_T
\r
559 // Please declare below ODM relative info in your STA info structure.
\r
562 typedef struct _ODM_STA_INFO{
\r
564 BOOLEAN bUsed; // record the sta status link or not?
\r
565 //u1Byte WirelessMode; //
\r
566 u1Byte IOTPeer; // Enum value. HT_IOT_PEER_E
\r
569 //1 PHY_STATUS_INFO
\r
570 u1Byte RSSI_Path[4]; //
\r
576 //1 TX_INFO (may changed by IC)
\r
577 //TX_INFO_T pTxInfo; // Define in IC folder. Move lower layer.
\r
579 u1Byte ANTSEL_A; //in Jagar: 4bit; others: 2bit
\r
580 u1Byte ANTSEL_B; //in Jagar: 4bit; others: 2bit
\r
581 u1Byte ANTSEL_C; //only in Jagar: 4bit
\r
582 u1Byte ANTSEL_D; //only in Jagar: 4bit
\r
583 u1Byte TX_ANTL; //not in Jagar: 2bit
\r
584 u1Byte TX_ANT_HT; //not in Jagar: 2bit
\r
585 u1Byte TX_ANT_CCK; //not in Jagar: 2bit
\r
586 u1Byte TXAGC_A; //not in Jagar: 4bit
\r
587 u1Byte TXAGC_B; //not in Jagar: 4bit
\r
588 u1Byte TXPWR_OFFSET; //only in Jagar: 3bit
\r
589 u1Byte TX_ANT; //only in Jagar: 4bit for TX_ANTL/TX_ANTHT/TX_ANT_CCK
\r
593 // Please use compile flag to disabe the strcutrue for other IC except 88E.
\r
594 // Move To lower layer.
\r
596 // ODM Write Wilson will handle this part(said by Luke.Lee)
\r
597 //TX_RPT_T pTxRpt; // Define in IC folder. Move lower layer.
\r
599 //1 For 88E RA (don't redefine the naming)
\r
602 u1Byte rssi_sta_ra;
\v\r
604 u1Byte Decision_rate;
\r
608 // Driver write Wilson handle.
\r
609 //1 TX_RPT (don't redefine the naming)
\r
610 u2Byte RTY[4]; // ???
\r
611 u2Byte TOTAL; // ???
\r
612 u2Byte DROP; // ???
\r
614 // Please use compile flag to disabe the strcutrue for other IC except 88E.
\r
618 }ODM_STA_INFO_T, *PODM_STA_INFO_T;
\r
622 // 2011/10/20 MH Define Common info enum for all team.
\r
624 typedef enum _ODM_Common_Info_Definition
\r
626 //-------------REMOVED CASE-----------//
\r
627 //ODM_CMNINFO_CCK_HP,
\r
628 //ODM_CMNINFO_RFPATH_ENABLE, // Define as ODM write???
\r
629 //ODM_CMNINFO_BT_COEXIST, // ODM_BT_COEXIST_E
\r
630 //ODM_CMNINFO_OP_MODE, // ODM_OPERATION_MODE_E
\r
631 //-------------REMOVED CASE-----------//
\r
637 //-----------HOOK BEFORE REG INIT-----------//
\r
638 ODM_CMNINFO_PLATFORM = 0,
\r
639 ODM_CMNINFO_ABILITY, // ODM_ABILITY_E
\r
640 ODM_CMNINFO_INTERFACE, // ODM_INTERFACE_E
\r
641 ODM_CMNINFO_MP_TEST_CHIP,
\r
642 ODM_CMNINFO_IC_TYPE, // ODM_IC_TYPE_E
\r
643 ODM_CMNINFO_CUT_VER, // ODM_CUT_VERSION_E
\r
644 ODM_CMNINFO_FAB_VER, // ODM_FAB_E
\r
645 ODM_CMNINFO_RF_TYPE, // ODM_RF_PATH_E or ODM_RF_TYPE_E?
\r
646 ODM_CMNINFO_RFE_TYPE,
\r
647 ODM_CMNINFO_BOARD_TYPE, // ODM_BOARD_TYPE_E
\r
648 ODM_CMNINFO_PACKAGE_TYPE,
\r
649 ODM_CMNINFO_EXT_LNA, // TRUE
\r
650 ODM_CMNINFO_5G_EXT_LNA,
\r
651 ODM_CMNINFO_EXT_PA,
\r
652 ODM_CMNINFO_5G_EXT_PA,
\r
657 ODM_CMNINFO_EXT_TRSW,
\r
658 ODM_CMNINFO_PATCH_ID, //CUSTOMER ID
\r
659 ODM_CMNINFO_BINHCT_TEST,
\r
660 ODM_CMNINFO_BWIFI_TEST,
\r
661 ODM_CMNINFO_SMART_CONCURRENT,
\r
662 //-----------HOOK BEFORE REG INIT-----------//
\r
668 //--------- POINTER REFERENCE-----------//
\r
669 ODM_CMNINFO_MAC_PHY_MODE, // ODM_MAC_PHY_MODE_E
\r
670 ODM_CMNINFO_TX_UNI,
\r
671 ODM_CMNINFO_RX_UNI,
\r
672 ODM_CMNINFO_WM_MODE, // ODM_WIRELESS_MODE_E
\r
673 ODM_CMNINFO_BAND, // ODM_BAND_TYPE_E
\r
674 ODM_CMNINFO_SEC_CHNL_OFFSET, // ODM_SEC_CHNL_OFFSET_E
\r
675 ODM_CMNINFO_SEC_MODE, // ODM_SECURITY_E
\r
676 ODM_CMNINFO_BW, // ODM_BW_E
\r
678 ODM_CMNINFO_FORCED_RATE,
\r
680 ODM_CMNINFO_DMSP_GET_VALUE,
\r
681 ODM_CMNINFO_BUDDY_ADAPTOR,
\r
682 ODM_CMNINFO_DMSP_IS_MASTER,
\r
684 ODM_CMNINFO_POWER_SAVING,
\r
685 ODM_CMNINFO_ONE_PATH_CCA, // ODM_CCA_PATH_E
\r
686 ODM_CMNINFO_DRV_STOP,
\r
687 ODM_CMNINFO_PNP_IN,
\r
688 ODM_CMNINFO_INIT_ON,
\r
689 ODM_CMNINFO_ANT_TEST,
\r
690 ODM_CMNINFO_NET_CLOSED,
\r
691 ODM_CMNINFO_MP_MODE,
\r
692 //ODM_CMNINFO_RTSTA_AID, // For win driver only?
\r
693 ODM_CMNINFO_FORCED_IGI_LB,
\r
694 //--------- POINTER REFERENCE-----------//
\r
696 //------------CALL BY VALUE-------------//
\r
697 ODM_CMNINFO_WIFI_DIRECT,
\r
698 ODM_CMNINFO_WIFI_DISPLAY,
\r
699 ODM_CMNINFO_LINK_IN_PROGRESS,
\r
701 ODM_CMNINFO_STATION_STATE,
\r
702 ODM_CMNINFO_RSSI_MIN,
\r
703 ODM_CMNINFO_DBG_COMP, // u8Byte
\r
704 ODM_CMNINFO_DBG_LEVEL, // u4Byte
\r
705 ODM_CMNINFO_RA_THRESHOLD_HIGH, // u1Byte
\r
706 ODM_CMNINFO_RA_THRESHOLD_LOW, // u1Byte
\r
707 ODM_CMNINFO_RF_ANTENNA_TYPE, // u1Byte
\r
708 ODM_CMNINFO_BT_DISABLED,
\r
709 ODM_CMNINFO_BT_HS_CONNECT_PROCESS,
\r
710 ODM_CMNINFO_BT_HS_RSSI,
\r
711 ODM_CMNINFO_BT_OPERATION,
\r
712 ODM_CMNINFO_BT_LIMITED_DIG, //Need to Limited Dig or not
\r
713 ODM_CMNINFO_BT_DISABLE_EDCA,
\r
714 //------------CALL BY VALUE-------------//
\r
717 // Dynamic ptr array hook itms.
\r
719 ODM_CMNINFO_STA_STATUS,
\r
720 ODM_CMNINFO_PHY_STATUS,
\r
721 ODM_CMNINFO_MAC_STATUS,
\r
729 // 2011/10/20 MH Define ODM support ability. ODM_CMNINFO_ABILITY
\r
731 typedef enum _ODM_Support_Ability_Definition
\r
734 // BB ODM section BIT 0-15
\r
737 ODM_BB_RA_MASK = BIT1,
\r
738 ODM_BB_DYNAMIC_TXPWR = BIT2,
\r
739 ODM_BB_FA_CNT = BIT3,
\r
740 ODM_BB_RSSI_MONITOR = BIT4,
\r
741 ODM_BB_CCK_PD = BIT5,
\r
742 ODM_BB_ANT_DIV = BIT6,
\r
743 ODM_BB_PWR_SAVE = BIT7,
\r
744 ODM_BB_PWR_TRAIN = BIT8,
\r
745 ODM_BB_RATE_ADAPTIVE = BIT9,
\r
746 ODM_BB_PATH_DIV = BIT10,
\r
747 ODM_BB_PSD = BIT11,
\r
748 ODM_BB_RXHP = BIT12,
\r
749 ODM_BB_ADAPTIVITY = BIT13,
\r
750 ODM_BB_DYNAMIC_ATC = BIT14,
\r
753 // MAC DM section BIT 16-23
\r
755 ODM_MAC_EDCA_TURBO = BIT16,
\r
756 ODM_MAC_EARLY_MODE = BIT17,
\r
759 // RF ODM section BIT 24-31
\r
761 ODM_RF_TX_PWR_TRACK = BIT24,
\r
762 ODM_RF_RX_GAIN_TRACK = BIT25,
\r
763 ODM_RF_CALIBRATION = BIT26,
\r
767 // ODM_CMNINFO_INTERFACE
\r
768 typedef enum tag_ODM_Support_Interface_Definition
\r
770 ODM_ITRF_PCIE = 0x1,
\r
771 ODM_ITRF_USB = 0x2,
\r
772 ODM_ITRF_SDIO = 0x4,
\r
773 ODM_ITRF_ALL = 0x7,
\r
776 // ODM_CMNINFO_IC_TYPE
\r
777 typedef enum tag_ODM_Support_IC_Type_Definition
\r
779 ODM_RTL8192S = BIT0,
\r
780 ODM_RTL8192C = BIT1,
\r
781 ODM_RTL8192D = BIT2,
\r
782 ODM_RTL8723A = BIT3,
\r
783 ODM_RTL8188E = BIT4,
\r
784 ODM_RTL8812 = BIT5,
\r
785 ODM_RTL8821 = BIT6,
\r
786 ODM_RTL8192E = BIT7,
\r
787 ODM_RTL8723B = BIT8,
\r
788 ODM_RTL8813A = BIT9,
\r
789 ODM_RTL8881A = BIT10
\r
792 #define ODM_IC_11N_SERIES (ODM_RTL8192S|ODM_RTL8192C|ODM_RTL8192D|ODM_RTL8723A|ODM_RTL8188E|ODM_RTL8192E|ODM_RTL8723B)
\r
793 #define ODM_IC_11AC_SERIES (ODM_RTL8812|ODM_RTL8821|ODM_RTL8813A|ODM_RTL8881A)
\r
795 #if (DM_ODM_SUPPORT_TYPE == ODM_AP)
\r
796 #ifdef RTK_AC_SUPPORT
\r
797 #define ODM_IC_11AC_SERIES_SUPPORT 1
\r
799 #define ODM_IC_11AC_SERIES_SUPPORT 0
\r
802 #define ODM_IC_11AC_SERIES_SUPPORT 1
\r
805 //ODM_CMNINFO_CUT_VER
\r
806 typedef enum tag_ODM_Cut_Version_Definition
\r
817 }ODM_CUT_VERSION_E;
\r
819 // ODM_CMNINFO_FAB_VER
\r
820 typedef enum tag_ODM_Fab_Version_Definition
\r
826 // ODM_CMNINFO_RF_TYPE
\r
828 // For example 1T2R (A+AB = BIT0|BIT4|BIT5)
\r
830 typedef enum tag_ODM_RF_Path_Bit_Definition
\r
832 ODM_RF_TX_A = BIT0,
\r
833 ODM_RF_TX_B = BIT1,
\r
834 ODM_RF_TX_C = BIT2,
\r
835 ODM_RF_TX_D = BIT3,
\r
836 ODM_RF_RX_A = BIT4,
\r
837 ODM_RF_RX_B = BIT5,
\r
838 ODM_RF_RX_C = BIT6,
\r
839 ODM_RF_RX_D = BIT7,
\r
843 typedef enum tag_ODM_RF_Type_Definition
\r
857 // ODM Dynamic common info value definition
\r
860 //typedef enum _MACPHY_MODE_8192D{
\r
861 // SINGLEMAC_SINGLEPHY,
\r
862 // DUALMAC_DUALPHY,
\r
863 // DUALMAC_SINGLEPHY,
\r
864 //}MACPHY_MODE_8192D,*PMACPHY_MODE_8192D;
\r
865 // Above is the original define in MP driver. Please use the same define. THX.
\r
866 typedef enum tag_ODM_MAC_PHY_Mode_Definition
\r
871 }ODM_MAC_PHY_MODE_E;
\r
874 typedef enum tag_BT_Coexist_Definition
\r
882 // ODM_CMNINFO_OP_MODE
\r
883 typedef enum tag_Operation_Mode_Definition
\r
885 ODM_NO_LINK = BIT0,
\r
888 ODM_POWERSAVE = BIT3,
\r
889 ODM_AP_MODE = BIT4,
\r
890 ODM_CLIENT_MODE = BIT5,
\r
892 ODM_WIFI_DIRECT = BIT7,
\r
893 ODM_WIFI_DISPLAY = BIT8,
\r
894 }ODM_OPERATION_MODE_E;
\r
896 // ODM_CMNINFO_WM_MODE
\r
897 #if (DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_CE))
\r
898 typedef enum tag_Wireless_Mode_Definition
\r
900 ODM_WM_UNKNOW = 0x0,
\r
904 ODM_WM_N24G = BIT3,
\r
906 ODM_WM_AUTO = BIT5,
\r
908 }ODM_WIRELESS_MODE_E;
\r
910 typedef enum tag_Wireless_Mode_Definition
\r
912 ODM_WM_UNKNOWN = 0x00,
\r
916 ODM_WM_AUTO = BIT3,
\r
917 ODM_WM_N24G = BIT4,
\r
919 ODM_WM_AC_5G = BIT6,
\r
920 ODM_WM_AC_24G = BIT7,
\r
921 ODM_WM_AC_ONLY = BIT8,
\r
923 }ODM_WIRELESS_MODE_E;
\r
926 // ODM_CMNINFO_BAND
\r
927 typedef enum tag_Band_Type_Definition
\r
936 // ODM_CMNINFO_SEC_CHNL_OFFSET
\r
937 typedef enum tag_Secondary_Channel_Offset_Definition
\r
942 }ODM_SEC_CHNL_OFFSET_E;
\r
944 // ODM_CMNINFO_SEC_MODE
\r
945 typedef enum tag_Security_Definition
\r
950 ODM_SEC_RESERVE = 3,
\r
951 ODM_SEC_AESCCMP = 4,
\r
952 ODM_SEC_WEP104 = 5,
\r
953 ODM_WEP_WPA_MIXED = 6, // WEP + WPA
\r
958 typedef enum tag_Bandwidth_Definition
\r
968 // ODM_CMNINFO_BOARD_TYPE
\r
969 // For non-AC-series IC , ODM_BOARD_5G_EXT_PA and ODM_BOARD_5G_EXT_LNA are ignored
\r
970 // For AC-series IC, external PA & LNA can be indivisuallly added on 2.4G and/or 5G
\r
971 typedef enum tag_Board_Definition
\r
973 ODM_BOARD_DEFAULT = 0, // The DEFAULT case.
\r
974 ODM_BOARD_MINICARD = BIT(0), // 0 = non-mini card, 1= mini card.
\r
975 ODM_BOARD_SLIM = BIT(1), // 0 = non-slim card, 1 = slim card
\r
976 ODM_BOARD_BT = BIT(2), // 0 = without BT card, 1 = with BT
\r
977 ODM_BOARD_EXT_PA = BIT(3), // 0 = no 2G ext-PA, 1 = existing 2G ext-PA
\r
978 ODM_BOARD_EXT_LNA = BIT(4), // 0 = no 2G ext-LNA, 1 = existing 2G ext-LNA
\r
979 ODM_BOARD_EXT_TRSW = BIT(5), // 0 = no ext-TRSW, 1 = existing ext-TRSW
\r
980 ODM_BOARD_EXT_PA_5G = BIT(6), // 0 = no 5G ext-PA, 1 = existing 5G ext-PA
\r
981 ODM_BOARD_EXT_LNA_5G= BIT(7), // 0 = no 5G ext-LNA, 1 = existing 5G ext-LNA
\r
984 typedef enum tag_ODM_Package_Definition
\r
986 ODM_PACKAGE_DEFAULT = 0,
\r
987 ODM_PACKAGE_QFN68 = BIT(0),
\r
988 ODM_PACKAGE_TFBGA90 = BIT(1),
\r
989 ODM_PACKAGE_TFBGA79 = BIT(2),
\r
990 }ODM_Package_TYPE_E;
\r
992 typedef enum tag_ODM_TYPE_GPA_Definition
\r
995 TYPE_GPA1 = BIT(1)|BIT(0)
\r
998 typedef enum tag_ODM_TYPE_APA_Definition
\r
1001 TYPE_APA1 = BIT(1)|BIT(0)
\r
1004 typedef enum tag_ODM_TYPE_GLNA_Definition
\r
1007 TYPE_GLNA1 = BIT(2)|BIT(0),
\r
1008 TYPE_GLNA2 = BIT(3)|BIT(1),
\r
1009 TYPE_GLNA3 = BIT(3)|BIT(2)|BIT(1)|BIT(0)
\r
1012 typedef enum tag_ODM_TYPE_ALNA_Definition
\r
1015 TYPE_ALNA1 = BIT(2)|BIT(0),
\r
1016 TYPE_ALNA2 = BIT(3)|BIT(1),
\r
1017 TYPE_ALNA3 = BIT(3)|BIT(2)|BIT(1)|BIT(0)
\r
1020 // ODM_CMNINFO_ONE_PATH_CCA
\r
1021 typedef enum tag_CCA_Path
\r
1029 typedef struct _ODM_RA_Info_
\r
1036 u1Byte PreRssiStaRA;
\r
1038 u1Byte DecisionRate;
\r
1040 u1Byte HighestRate;
\r
1041 u1Byte LowestRate;
\r
1049 u1Byte RAWaitingCounter;
\r
1050 u1Byte RAPendingCounter;
\r
1051 #if 1 //POWER_TRAINING_ACTIVE == 1 // For compile pass only~!
\r
1052 u1Byte PTActive; // on or off
\r
1053 u1Byte PTTryState; // 0 trying state, 1 for decision state
\r
1054 u1Byte PTStage; // 0~6
\r
1055 u1Byte PTStopCount; //Stop PT counter
\r
1056 u1Byte PTPreRate; // if rate change do PT
\r
1057 u1Byte PTPreRssi; // if RSSI change 5% do PT
\r
1058 u1Byte PTModeSS; // decide whitch rate should do PT
\r
1059 u1Byte RAstage; // StageRA, decide how many times RA will be done between PT
\r
1060 u1Byte PTSmoothFactor;
\r
1062 } ODM_RA_INFO_T,*PODM_RA_INFO_T;
\r
1064 typedef struct _IQK_MATRIX_REGS_SETTING{
\r
1066 s4Byte Value[3][IQK_Matrix_REG_NUM];
\r
1067 BOOLEAN bBWIqkResultSaved[3];
\r
1068 }IQK_MATRIX_REGS_SETTING,*PIQK_MATRIX_REGS_SETTING;
\r
1070 #if (DM_ODM_SUPPORT_TYPE & ODM_WIN)
\r
1071 typedef struct _PathDiv_Parameter_define_
\r
1073 u4Byte org_5g_RegE30;
\r
1074 u4Byte org_5g_RegC14;
\r
1075 u4Byte org_5g_RegCA0;
\r
1076 u4Byte swt_5g_RegE30;
\r
1077 u4Byte swt_5g_RegC14;
\r
1078 u4Byte swt_5g_RegCA0;
\r
1079 //for 2G IQK information
\r
1080 u4Byte org_2g_RegC80;
\r
1081 u4Byte org_2g_RegC4C;
\r
1082 u4Byte org_2g_RegC94;
\r
1083 u4Byte org_2g_RegC14;
\r
1084 u4Byte org_2g_RegCA0;
\r
1086 u4Byte swt_2g_RegC80;
\r
1087 u4Byte swt_2g_RegC4C;
\r
1088 u4Byte swt_2g_RegC94;
\r
1089 u4Byte swt_2g_RegC14;
\r
1090 u4Byte swt_2g_RegCA0;
\r
1091 }PATHDIV_PARA,*pPATHDIV_PARA;
\r
1095 typedef struct ODM_RF_Calibration_Structure
\r
1097 //for tx power tracking
\r
1099 u4Byte RegA24; // for TempCCK
\r
1105 u1Byte TXPowercount;
\r
1106 BOOLEAN bTXPowerTrackingInit;
\r
1107 BOOLEAN bTXPowerTracking;
\r
1108 u1Byte TxPowerTrackControl; //for mp mode, turn off txpwrtracking as default
\r
1109 u1Byte TM_Trigger;
\r
1110 u1Byte InternalPA5G[2]; //pathA / pathB
\r
1112 u1Byte ThermalMeter[2]; // ThermalMeter, index 0 for RFIC0, and 1 for RFIC1
\r
1113 u1Byte ThermalValue;
\r
1114 u1Byte ThermalValue_LCK;
\r
1115 u1Byte ThermalValue_IQK;
\r
1116 u1Byte ThermalValue_DPK;
\r
1117 u1Byte ThermalValue_AVG[AVG_THERMAL_NUM];
\r
1118 u1Byte ThermalValue_AVG_index;
\r
1119 u1Byte ThermalValue_RxGain;
\r
1120 u1Byte ThermalValue_Crystal;
\r
1121 u1Byte ThermalValue_DPKstore;
\r
1122 u1Byte ThermalValue_DPKtrack;
\r
1123 BOOLEAN TxPowerTrackingInProgress;
\r
1125 BOOLEAN bReloadtxpowerindex;
\r
1126 u1Byte bRfPiEnable;
\r
1127 u4Byte TXPowerTrackingCallbackCnt; //cosa add for debug
\r
1130 //------------------------- Tx power Tracking -------------------------//
\r
1131 u1Byte bCCKinCH14;
\r
1133 u1Byte OFDM_index[MAX_RF_PATH];
\r
1134 s1Byte PowerIndexOffset[MAX_RF_PATH];
\r
1135 s1Byte DeltaPowerIndex[MAX_RF_PATH];
\r
1136 s1Byte DeltaPowerIndexLast[MAX_RF_PATH];
\r
1137 BOOLEAN bTxPowerChanged;
\r
1139 u1Byte ThermalValue_HP[HP_THERMAL_NUM];
\r
1140 u1Byte ThermalValue_HP_index;
\r
1141 IQK_MATRIX_REGS_SETTING IQKMatrixRegSetting[IQK_Matrix_Settings_NUM];
\r
1143 BOOLEAN bIQKInProgress;
\r
1146 s1Byte BBSwingDiff2G, BBSwingDiff5G; // Unit: dB
\r
1147 u1Byte DeltaSwingTableIdx_2GCCKA_P[DELTA_SWINGIDX_SIZE];
\r
1148 u1Byte DeltaSwingTableIdx_2GCCKA_N[DELTA_SWINGIDX_SIZE];
\r
1149 u1Byte DeltaSwingTableIdx_2GCCKB_P[DELTA_SWINGIDX_SIZE];
\r
1150 u1Byte DeltaSwingTableIdx_2GCCKB_N[DELTA_SWINGIDX_SIZE];
\r
1151 u1Byte DeltaSwingTableIdx_2GA_P[DELTA_SWINGIDX_SIZE];
\r
1152 u1Byte DeltaSwingTableIdx_2GA_N[DELTA_SWINGIDX_SIZE];
\r
1153 u1Byte DeltaSwingTableIdx_2GB_P[DELTA_SWINGIDX_SIZE];
\r
1154 u1Byte DeltaSwingTableIdx_2GB_N[DELTA_SWINGIDX_SIZE];
\r
1155 u1Byte DeltaSwingTableIdx_5GA_P[BAND_NUM][DELTA_SWINGIDX_SIZE];
\r
1156 u1Byte DeltaSwingTableIdx_5GA_N[BAND_NUM][DELTA_SWINGIDX_SIZE];
\r
1157 u1Byte DeltaSwingTableIdx_5GB_P[BAND_NUM][DELTA_SWINGIDX_SIZE];
\r
1158 u1Byte DeltaSwingTableIdx_5GB_N[BAND_NUM][DELTA_SWINGIDX_SIZE];
\r
1159 u1Byte DeltaSwingTableIdx_2GA_P_8188E[DELTA_SWINGIDX_SIZE];
\r
1160 u1Byte DeltaSwingTableIdx_2GA_N_8188E[DELTA_SWINGIDX_SIZE];
\r
1162 //--------------------------------------------------------------------//
\r
1174 BOOLEAN bIQKInitialized;
\r
1175 BOOLEAN bLCKInProgress;
\r
1176 BOOLEAN bAntennaDetected;
\r
1177 u4Byte ADDA_backup[IQK_ADDA_REG_NUM];
\r
1178 u4Byte IQK_MAC_backup[IQK_MAC_REG_NUM];
\r
1179 u4Byte IQK_BB_backup_recover[9];
\r
1180 u4Byte IQK_BB_backup[IQK_BB_REG_NUM];
\r
1183 u4Byte APKoutput[2][2]; //path A/B; output1_1a/output1_2a
\r
1185 u1Byte bAPKThermalMeterIgnore;
\r
1187 u1Byte bDPPathAOK;
\r
1188 u1Byte bDPPathBOK;
\r
1190 u4Byte TxIQC_8723B[2][3][2]; // { {S1: 0xc94, 0xc80, 0xc4c} , {S0: 0xc9c, 0xc88, 0xc4c}}
\r
1191 u4Byte RxIQC_8723B[2][2][2]; // { {S1: 0xc14, 0xca0} , {S0: 0xc14, 0xca0}}
\r
1194 }ODM_RF_CAL_T,*PODM_RF_CAL_T;
\r
1196 // ODM Dynamic common info value definition
\r
1199 typedef struct _FAST_ANTENNA_TRAINNING_
\r
1202 u1Byte antsel_rx_keep_0;
\r
1203 u1Byte antsel_rx_keep_1;
\r
1204 u1Byte antsel_rx_keep_2;
\r
1205 u4Byte antSumRSSI[7];
\r
1206 u4Byte antRSSIcnt[7];
\r
1207 u4Byte antAveRSSI[7];
\r
1210 u1Byte antsel_a[ODM_ASSOCIATE_ENTRY_NUM];
\r
1211 u1Byte antsel_b[ODM_ASSOCIATE_ENTRY_NUM];
\r
1212 u1Byte antsel_c[ODM_ASSOCIATE_ENTRY_NUM];
\r
1213 u4Byte MainAnt_Sum[ODM_ASSOCIATE_ENTRY_NUM];
\r
1214 u4Byte AuxAnt_Sum[ODM_ASSOCIATE_ENTRY_NUM];
\r
1215 u4Byte MainAnt_Cnt[ODM_ASSOCIATE_ENTRY_NUM];
\r
1216 u4Byte AuxAnt_Cnt[ODM_ASSOCIATE_ENTRY_NUM];
\r
1218 BOOLEAN bBecomeLinked;
\r
1219 u4Byte MinMaxRSSI;
\r
1220 u1Byte idx_AntDiv_counter_2G;
\r
1221 u1Byte idx_AntDiv_counter_5G;
\r
1222 u4Byte AntDiv_2G_5G;
\r
1223 u4Byte CCK_counter_main;
\r
1224 u4Byte CCK_counter_aux;
\r
1225 u4Byte OFDM_counter_main;
\r
1226 u4Byte OFDM_counter_aux;
\r
1230 typedef enum _FAT_STATE
\r
1232 FAT_NORMAL_STATE = 0,
\r
1233 FAT_TRAINING_STATE = 1,
\r
1234 }FAT_STATE_E, *PFAT_STATE_E;
\r
1236 typedef enum _ANT_DIV_TYPE
\r
1238 NO_ANTDIV = 0xFF,
\r
1239 CG_TRX_HW_ANTDIV = 0x01,
\r
1240 CGCS_RX_HW_ANTDIV = 0x02,
\r
1241 FIXED_HW_ANTDIV = 0x03,
\r
1242 CG_TRX_SMART_ANTDIV = 0x04,
\r
1243 CGCS_RX_SW_ANTDIV = 0x05,
\r
1244 S0S1_SW_ANTDIV = 0x06 //8723B intrnal switch S0 S1
\r
1245 }ANT_DIV_TYPE_E, *PANT_DIV_TYPE_E;
\r
1247 typedef struct _ODM_PATH_DIVERSITY_
\r
1249 u1Byte RespTxPath;
\r
1250 u1Byte PathSel[ODM_ASSOCIATE_ENTRY_NUM];
\r
1251 u4Byte PathA_Sum[ODM_ASSOCIATE_ENTRY_NUM];
\r
1252 u4Byte PathB_Sum[ODM_ASSOCIATE_ENTRY_NUM];
\r
1253 u4Byte PathA_Cnt[ODM_ASSOCIATE_ENTRY_NUM];
\r
1254 u4Byte PathB_Cnt[ODM_ASSOCIATE_ENTRY_NUM];
\r
1255 }PATHDIV_T, *pPATHDIV_T;
\r
1258 typedef enum _BASEBAND_CONFIG_PHY_REG_PG_VALUE_TYPE{
\r
1259 PHY_REG_PG_RELATIVE_VALUE = 0,
\r
1260 PHY_REG_PG_EXACT_VALUE = 1
\r
1261 } PHY_REG_PG_TYPE;
\r
1265 // Antenna detection information from single tone mechanism, added by Roger, 2012.11.27.
\r
1267 typedef struct _ANT_DETECTED_INFO{
\r
1268 BOOLEAN bAntDetected;
\r
1272 }ANT_DETECTED_INFO, *PANT_DETECTED_INFO;
\r
1275 // 2011/09/22 MH Copy from SD4 defined structure. We use to support PHY DM integration.
\r
1277 #if(DM_ODM_SUPPORT_TYPE & ODM_WIN)
\r
1278 #if (RT_PLATFORM != PLATFORM_LINUX)
\r
1281 struct DM_Out_Source_Dynamic_Mechanism_Structure
\r
1282 #else// for AP,ADSL,CE Team
\r
1283 typedef struct DM_Out_Source_Dynamic_Mechanism_Structure
\r
1286 //RT_TIMER FastAntTrainingTimer;
\r
1288 // Add for different team use temporarily
\r
1290 PADAPTER Adapter; // For CE/NIC team
\r
1291 prtl8192cd_priv priv; // For AP/ADSL team
\r
1292 // WHen you use Adapter or priv pointer, you must make sure the pointer is ready.
\r
1293 BOOLEAN odm_ready;
\r
1295 #if(DM_ODM_SUPPORT_TYPE & (ODM_CE|ODM_WIN))
\r
1296 rtl8192cd_priv fake_priv;
\r
1298 #if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))
\r
1299 // ADSL_AP_BUILD_WORKAROUND
\r
1300 ADAPTER fake_adapter;
\r
1303 PHY_REG_PG_TYPE PhyRegPgValueType;
\r
1304 u1Byte PhyRegPgVersion;
\r
1306 u8Byte DebugComponents;
\r
1307 u4Byte DebugLevel;
\r
1309 u8Byte NumQryPhyStatusAll; //CCK + OFDM
\r
1310 u8Byte LastNumQryPhyStatusAll;
\r
1312 u8Byte RxPWDBAve_final;
\r
1313 BOOLEAN MPDIG_2G; //off MPDIG
\r
1316 //------ ODM HANDLE, DRIVER NEEDS NOT TO HOOK------//
\r
1317 BOOLEAN bCckHighPower;
\r
1318 u1Byte RFPathRxEnable; // ODM_CMNINFO_RFPATH_ENABLE
\r
1319 u1Byte ControlChannel;
\r
1320 //------ ODM HANDLE, DRIVER NEEDS NOT TO HOOK------//
\r
1322 //--------REMOVED COMMON INFO----------//
\r
1323 //u1Byte PseudoMacPhyMode;
\r
1324 //BOOLEAN *BTCoexist;
\r
1325 //BOOLEAN PseudoBtCoexist;
\r
1327 //BOOLEAN bAPMode;
\r
1328 //BOOLEAN bClientMode;
\r
1329 //BOOLEAN bAdHocMode;
\r
1330 //BOOLEAN bSlaveOfDMSP;
\r
1331 //--------REMOVED COMMON INFO----------//
\r
1334 //1 COMMON INFORMATION
\r
1339 //-----------HOOK BEFORE REG INIT-----------//
\r
1340 // ODM Platform info AP/ADSL/CE/MP = 1/2/3/4
\r
1341 u1Byte SupportPlatform;
\r
1342 // ODM Support Ability DIG/RATR/TX_PWR_TRACK/ ¡K¡K = 1/2/3/¡K
\r
1343 u4Byte SupportAbility;
\r
1344 // ODM PCIE/USB/SDIO = 1/2/3
\r
1345 u1Byte SupportInterface;
\r
1346 // ODM composite or independent. Bit oriented/ 92C+92D+ .... or any other type = 1/2/3/...
\r
1347 u4Byte SupportICType;
\r
1348 // Cut Version TestChip/A-cut/B-cut... = 0/1/2/3/...
\r
1349 u1Byte CutVersion;
\r
1350 // Fab Version TSMC/UMC = 0/1
\r
1351 u1Byte FabVersion;
\r
1352 // RF Type 4T4R/3T3R/2T2R/1T2R/1T1R/...
\r
1355 // Board Type Normal/HighPower/MiniCard/SLIM/Combo/... = 0/1/2/3/4/...
\r
1357 u1Byte PackageType;
\r
1362 // with external LNA NO/Yes = 0/1
\r
1365 // with external PA NO/Yes = 0/1
\r
1368 // with external TRSW NO/Yes = 0/1
\r
1370 u1Byte PatchID; //Customer ID
\r
1371 BOOLEAN bInHctTest;
\r
1372 BOOLEAN bWIFITest;
\r
1374 BOOLEAN bDualMacSmartConcurrent;
\r
1375 u4Byte BK_SupportAbility;
\r
1376 u1Byte AntDivType;
\r
1377 //-----------HOOK BEFORE REG INIT-----------//
\r
1382 //--------- POINTER REFERENCE-----------//
\r
1384 u1Byte u1Byte_temp;
\r
1385 BOOLEAN BOOLEAN_temp;
\r
1386 PADAPTER PADAPTER_temp;
\r
1388 // MAC PHY Mode SMSP/DMSP/DMDP = 0/1/2
\r
1389 u1Byte *pMacPhyMode;
\r
1390 //TX Unicast byte count
\r
1391 u8Byte *pNumTxBytesUnicast;
\r
1392 //RX Unicast byte count
\r
1393 u8Byte *pNumRxBytesUnicast;
\r
1394 // Wireless mode B/G/A/N = BIT0/BIT1/BIT2/BIT3
\r
1395 u1Byte *pWirelessMode; //ODM_WIRELESS_MODE_E
\r
1396 // Frequence band 2.4G/5G = 0/1
\r
1397 u1Byte *pBandType;
\r
1398 // Secondary channel offset don't_care/below/above = 0/1/2
\r
1399 u1Byte *pSecChOffset;
\r
1400 // Security mode Open/WEP/AES/TKIP = 0/1/2/3
\r
1401 u1Byte *pSecurity;
\r
1402 // BW info 20M/40M/80M = 0/1/2
\r
1403 u1Byte *pBandWidth;
\r
1404 // Central channel location Ch1/Ch2/....
\r
1405 u1Byte *pChannel; //central channel number
\r
1407 // Common info for 92D DMSP
\r
1409 BOOLEAN *pbGetValueFromOtherMac;
\r
1410 PADAPTER *pBuddyAdapter;
\r
1411 BOOLEAN *pbMasterOfDMSP; //MAC0: master, MAC1: slave
\r
1412 // Common info for Status
\r
1413 BOOLEAN *pbScanInProcess;
\r
1414 BOOLEAN *pbPowerSaving;
\r
1415 // CCA Path 2-path/path-A/path-B = 0/1/2; using ODM_CCA_PATH_E.
\r
1416 u1Byte *pOnePathCCA;
\r
1417 //pMgntInfo->AntennaTest
\r
1418 u1Byte *pAntennaTest;
\r
1419 BOOLEAN *pbNet_closed;
\r
1421 //u1Byte *pAidMap;
\r
1422 u1Byte *pu1ForcedIgiLb;
\r
1423 //--------- POINTER REFERENCE-----------//
\r
1424 pu2Byte pForcedDataRate;
\r
1425 //------------CALL BY VALUE-------------//
\r
1426 BOOLEAN bLinkInProcess;
\r
1427 BOOLEAN bWIFI_Direct;
\r
1428 BOOLEAN bWIFI_Display;
\r
1431 BOOLEAN bsta_state;
\r
1433 u1Byte InterfaceIndex; // Add for 92D dual MAC: 0--Mac0 1--Mac1
\r
1434 BOOLEAN bIsMPChip;
\r
1435 BOOLEAN bOneEntryOnly;
\r
1436 // Common info for BTDM
\r
1437 BOOLEAN bBtDisabled; // BT is disabled
\r
1438 BOOLEAN bBtConnectProcess; // BT HS is under connection progress.
\r
1439 u1Byte btHsRssi; // BT HS mode wifi rssi value.
\r
1440 BOOLEAN bBtHsOperation; // BT HS mode is under progress
\r
1441 BOOLEAN bBtDisableEdcaTurbo; // Under some condition, don't enable the EDCA Turbo
\r
1442 BOOLEAN bBtLimitedDig; // BT is busy.
\r
1443 //------------CALL BY VALUE-------------//
\r
1446 u8Byte RSSI_TRSW;
\r
1447 u8Byte RSSI_TRSW_H;
\r
1448 u8Byte RSSI_TRSW_L;
\r
1449 u8Byte RSSI_TRSW_iso;
\r
1453 BOOLEAN bNoisyState;
\r
1455 u1Byte LinkedInterval;
\r
1456 u1Byte preChannel;
\r
1457 u4Byte TxagcOffsetValueA;
\r
1458 BOOLEAN IsTxagcOffsetPositiveA;
\r
1459 u4Byte TxagcOffsetValueB;
\r
1460 BOOLEAN IsTxagcOffsetPositiveB;
\r
1461 u8Byte lastTxOkCnt;
\r
1462 u8Byte lastRxOkCnt;
\r
1463 u4Byte BbSwingOffsetA;
\r
1464 BOOLEAN IsBbSwingOffsetPositiveA;
\r
1465 u4Byte BbSwingOffsetB;
\r
1466 BOOLEAN IsBbSwingOffsetPositiveB;
\r
1467 s1Byte TH_L2H_ini;
\r
1468 s1Byte TH_EDCCA_HL_diff;
\r
1470 u1Byte IGI_target;
\r
1471 BOOLEAN ForceEDCCA;
\r
1472 u1Byte AdapEn_RSSI;
\r
1473 s1Byte Force_TH_H;
\r
1474 s1Byte Force_TH_L;
\r
1475 u1Byte IGI_LowerBound;
\r
1476 u1Byte antdiv_rssi;
\r
1478 u1Byte pre_AntType;
\r
1479 u1Byte antdiv_period;
\r
1480 u1Byte antdiv_select;
\r
1481 //2 Define STA info.
\r
1483 // 2012/01/12 MH For MP, we need to reduce one array pointer for default port.??
\r
1484 PSTA_INFO_T pODM_StaInfo[ODM_ASSOCIATE_ENTRY_NUM];
\r
1486 #if (RATE_ADAPTIVE_SUPPORT == 1)
\r
1487 u2Byte CurrminRptTime;
\r
1488 ODM_RA_INFO_T RAInfo[ODM_ASSOCIATE_ENTRY_NUM]; //See HalMacID support
\r
1491 // 2012/02/14 MH Add to share 88E ra with other SW team.
\r
1492 // We need to colelct all support abilit to a proper area.
\r
1494 BOOLEAN RaSupport88E;
\r
1496 // Define ...........
\r
1498 // Latest packet phy info (ODM write)
\r
1499 ODM_PHY_DBG_INFO_T PhyDbgInfo;
\r
1500 //PHY_INFO_88E PhyInfo;
\r
1502 // Latest packet phy info (ODM write)
\r
1503 ODM_MAC_INFO *pMacInfo;
\r
1504 //MAC_INFO_88E MacInfo;
\r
1506 // Different Team independt structure??
\r
1509 //TX_RTP_CMN TX_retrpo;
\r
1510 //TX_RTP_88E TX_retrpo;
\r
1511 //TX_RTP_8195 TX_retrpo;
\r
1516 FAT_T DM_FatTable;
\r
1517 DIG_T DM_DigTable;
\r
1519 Pri_CCA_T DM_PriCCA;
\r
1520 RXHP_T DM_RXHP_Table;
\r
1521 RA_T DM_RA_Table;
\r
1522 FALSE_ALARM_STATISTICS FalseAlmCnt;
\r
1523 FALSE_ALARM_STATISTICS FlaseAlmCntBuddyAdapter;
\r
1524 //#ifdef CONFIG_ANTENNA_DIVERSITY
\r
1525 SWAT_T DM_SWAT_Table;
\r
1526 BOOLEAN RSSI_test;
\r
1529 #if (DM_ODM_SUPPORT_TYPE & ODM_WIN)
\r
1531 PATHDIV_PARA pathIQK;
\r
1534 EDCA_T DM_EDCA_Table;
\r
1535 u4Byte WMMEDCA_BE;
\r
1536 PATHDIV_T DM_PathDiv;
\r
1537 // Copy from SD4 structure
\r
1539 // ==================================================
\r
1543 //u1Byte DM_Type;
\r
1544 //u1Byte PSD_Report_RXHP[80]; // Add By Gary
\r
1545 //u1Byte PSD_func_flag; // Add By Gary
\r
1547 //u1Byte bDMInitialGainEnable;
\r
1548 //u1Byte binitialized; // for dm_initial_gain_Multi_STA use.
\r
1549 //for Antenna diversity
\r
1550 //u8 AntDivCfg;// 0:OFF , 1:ON, 2:by efuse
\r
1551 //PSTA_INFO_T RSSI_target;
\r
1553 BOOLEAN *pbDriverStopped;
\r
1554 BOOLEAN *pbDriverIsGoingToPnpSetPowerSleep;
\r
1555 BOOLEAN *pinit_adpt_in_progress;
\r
1558 BOOLEAN bUserAssignLevel;
\r
1559 RT_TIMER PSDTimer;
\r
1560 u1Byte RSSI_BT; //come from BT
\r
1561 BOOLEAN bPSDinProcess;
\r
1562 BOOLEAN bPSDactive;
\r
1563 BOOLEAN bDMInitialGainEnable;
\r
1566 RT_TIMER MPT_DIGTimer;
\r
1568 //for rate adaptive, in fact, 88c/92c fw will handle this
\r
1569 u1Byte bUseRAMask;
\r
1571 ODM_RATE_ADAPTIVE RateAdaptive;
\r
1573 ANT_DETECTED_INFO AntDetectedInfo; // Antenna detected information for RSSI tool
\r
1575 ODM_RF_CAL_T RFCalibrateInfo;
\r
1578 // TX power tracking
\r
1580 u1Byte BbSwingIdxOfdm[MAX_RF_PATH];
\r
1581 u1Byte BbSwingIdxOfdmCurrent;
\r
1582 u1Byte BbSwingIdxOfdmBase[MAX_RF_PATH];
\r
1583 BOOLEAN BbSwingFlagOfdm;
\r
1584 u1Byte BbSwingIdxCck;
\r
1585 u1Byte BbSwingIdxCckCurrent;
\r
1586 u1Byte BbSwingIdxCckBase;
\r
1587 u1Byte DefaultOfdmIndex;
\r
1588 u1Byte DefaultCckIndex;
\r
1589 BOOLEAN BbSwingFlagCck;
\r
1591 s1Byte Absolute_OFDMSwingIdx[MAX_RF_PATH];
\r
1592 s1Byte Remnant_OFDMSwingIdx[MAX_RF_PATH];
\r
1593 s1Byte Remnant_CCKSwingIdx;
\r
1594 s1Byte Modify_TxAGC_Value; //Remnat compensate value at TxAGC
\r
1595 BOOLEAN Modify_TxAGC_Flag_PathA;
\r
1596 BOOLEAN Modify_TxAGC_Flag_PathB;
\r
1597 BOOLEAN Modify_TxAGC_Flag_PathA_CCK;
\r
1600 // Dynamic ATC switch
\r
1602 BOOLEAN bATCStatus;
\r
1603 BOOLEAN largeCFOHit;
\r
1604 BOOLEAN bIsfreeze;
\r
1608 u1Byte CFOThreshold;
\r
1609 u4Byte packetCount;
\r
1610 u4Byte packetCount_pre;
\r
1613 // ODM system resource.
\r
1616 // ODM relative time.
\r
1617 RT_TIMER PathDivSwitchTimer;
\r
1618 //2011.09.27 add for Path Diversity
\r
1619 RT_TIMER CCKPathDiversityTimer;
\r
1620 RT_TIMER FastAntTrainingTimer;
\r
1622 // ODM relative workitem.
\r
1623 #if (DM_ODM_SUPPORT_TYPE == ODM_WIN)
\r
1625 RT_WORK_ITEM PathDivSwitchWorkitem;
\r
1626 RT_WORK_ITEM CCKPathDiversityWorkitem;
\r
1627 RT_WORK_ITEM FastAntTrainingWorkitem;
\r
1628 RT_WORK_ITEM MPT_DIGWorkitem;
\r
1629 RT_WORK_ITEM RaRptWorkitem;
\r
1633 #if(DM_ODM_SUPPORT_TYPE & ODM_WIN)
\r
1635 #if (RT_PLATFORM != PLATFORM_LINUX)
\r
1636 } DM_ODM_T, *PDM_ODM_T; // DM_Dynamic_Mechanism_Structure
\r
1641 #else// for AP,ADSL,CE Team
\r
1642 } DM_ODM_T, *PDM_ODM_T; // DM_Dynamic_Mechanism_Structure
\r
1647 #if 1 //92c-series
\r
1648 #define ODM_RF_PATH_MAX 2
\r
1649 #else //jaguar - series
\r
1650 #define ODM_RF_PATH_MAX 4
\r
1653 typedef enum _ODM_RF_RADIO_PATH {
\r
1654 ODM_RF_PATH_A = 0, //Radio Path A
\r
1655 ODM_RF_PATH_B = 1, //Radio Path B
\r
1656 ODM_RF_PATH_C = 2, //Radio Path C
\r
1657 ODM_RF_PATH_D = 3, //Radio Path D
\r
1668 // ODM_RF_PATH_MAX, //Max RF number 90 support
\r
1669 } ODM_RF_RADIO_PATH_E, *PODM_RF_RADIO_PATH_E;
\r
1671 typedef enum _ODM_RF_CONTENT{
\r
1672 odm_radioa_txt = 0x1000,
\r
1673 odm_radiob_txt = 0x1001,
\r
1674 odm_radioc_txt = 0x1002,
\r
1675 odm_radiod_txt = 0x1003
\r
1678 typedef enum _ODM_BB_Config_Type{
\r
1679 CONFIG_BB_PHY_REG,
\r
1680 CONFIG_BB_AGC_TAB,
\r
1681 CONFIG_BB_AGC_TAB_2G,
\r
1682 CONFIG_BB_AGC_TAB_5G,
\r
1683 CONFIG_BB_PHY_REG_PG,
\r
1684 CONFIG_BB_PHY_REG_MP,
\r
1685 CONFIG_BB_AGC_TAB_DIFF,
\r
1686 } ODM_BB_Config_Type, *PODM_BB_Config_Type;
\r
1688 typedef enum _ODM_RF_Config_Type{
\r
1690 CONFIG_RF_TXPWR_LMT,
\r
1691 } ODM_RF_Config_Type, *PODM_RF_Config_Type;
\r
1693 typedef enum _ODM_FW_Config_Type{
\r
1699 CONFIG_FW_WoWLAN_2,
\r
1700 CONFIG_FW_AP_WoWLAN,
\r
1702 } ODM_FW_Config_Type;
\r
1705 #if (DM_ODM_SUPPORT_TYPE != ODM_WIN)
\r
1706 typedef enum _RT_STATUS{
\r
1707 RT_STATUS_SUCCESS,
\r
1708 RT_STATUS_FAILURE,
\r
1709 RT_STATUS_PENDING,
\r
1710 RT_STATUS_RESOURCE,
\r
1711 RT_STATUS_INVALID_CONTEXT,
\r
1712 RT_STATUS_INVALID_PARAMETER,
\r
1713 RT_STATUS_NOT_SUPPORT,
\r
1714 RT_STATUS_OS_API_FAILED,
\r
1715 }RT_STATUS,*PRT_STATUS;
\r
1716 #endif // end of RT_STATUS definition
\r
1718 #ifdef REMOVE_PACK
\r
1722 //#include "odm_function.h"
\r
1724 //3===========================================================
\r
1726 //3===========================================================
\r
1728 typedef enum tag_Dynamic_Init_Gain_Operation_Type_Definition
\r
1730 DIG_TYPE_THRESH_HIGH = 0,
\r
1731 DIG_TYPE_THRESH_LOW = 1,
\r
1732 DIG_TYPE_BACKOFF = 2,
\r
1733 DIG_TYPE_RX_GAIN_MIN = 3,
\r
1734 DIG_TYPE_RX_GAIN_MAX = 4,
\r
1735 DIG_TYPE_ENABLE = 5,
\r
1736 DIG_TYPE_DISABLE = 6,
\r
1740 typedef enum tag_CCK_Packet_Detection_Threshold_Type_Definition
\r
1742 CCK_PD_STAGE_LowRssi = 0,
\r
1743 CCK_PD_STAGE_HighRssi = 1,
\r
1744 CCK_PD_STAGE_MAX = 3,
\r
1747 typedef enum tag_DIG_EXT_PORT_ALGO_Definition
\r
1749 DIG_EXT_PORT_STAGE_0 = 0,
\r
1750 DIG_EXT_PORT_STAGE_1 = 1,
\r
1751 DIG_EXT_PORT_STAGE_2 = 2,
\r
1752 DIG_EXT_PORT_STAGE_3 = 3,
\r
1753 DIG_EXT_PORT_STAGE_MAX = 4,
\r
1754 }DM_DIG_EXT_PORT_ALG_E;
\r
1756 typedef enum tag_DIG_Connect_Definition
\r
1758 DIG_STA_DISCONNECT = 0,
\r
1759 DIG_STA_CONNECT = 1,
\r
1760 DIG_STA_BEFORE_CONNECT = 2,
\r
1761 DIG_MultiSTA_DISCONNECT = 3,
\r
1762 DIG_MultiSTA_CONNECT = 4,
\r
1764 }DM_DIG_CONNECT_E;
\r
1767 #define DM_MultiSTA_InitGainChangeNotify(Event) {DM_DigTable.CurMultiSTAConnectState = Event;}
\r
1769 #define DM_MultiSTA_InitGainChangeNotify_CONNECT(_ADAPTER) \
\r
1770 DM_MultiSTA_InitGainChangeNotify(DIG_MultiSTA_CONNECT)
\r
1772 #define DM_MultiSTA_InitGainChangeNotify_DISCONNECT(_ADAPTER) \
\r
1773 DM_MultiSTA_InitGainChangeNotify(DIG_MultiSTA_DISCONNECT)
\r
1775 #define DM_DIG_THRESH_HIGH 40
\r
1776 #define DM_DIG_THRESH_LOW 35
\r
1778 #define DM_FALSEALARM_THRESH_LOW 400
\r
1779 #define DM_FALSEALARM_THRESH_HIGH 1000
\r
1781 #define DM_DIG_MAX_NIC 0x3e
\r
1782 #define DM_DIG_MIN_NIC 0x1e //0x22//0x1c
\r
1784 #define DM_DIG_MAX_AP 0x32
\r
1785 #define DM_DIG_MIN_AP 0x20
\r
1787 #define DM_DIG_MAX_NIC_HP 0x46
\r
1788 #define DM_DIG_MIN_NIC_HP 0x2e
\r
1790 #define DM_DIG_MAX_AP_HP 0x42
\r
1791 #define DM_DIG_MIN_AP_HP 0x30
\r
1793 //vivi 92c&92d has different definition, 20110504
\r
1795 #ifdef CONFIG_SPECIAL_SETTING_FOR_FUNAI_TV
\r
1796 #define DM_DIG_FA_TH0 0x80//0x20
\r
1798 #define DM_DIG_FA_TH0 0x200//0x20
\r
1800 #define DM_DIG_FA_TH1 0x300//0x100
\r
1801 #define DM_DIG_FA_TH2 0x400//0x200
\r
1803 #define DM_DIG_FA_TH0_92D 0x100
\r
1804 #define DM_DIG_FA_TH1_92D 0x400
\r
1805 #define DM_DIG_FA_TH2_92D 0x600
\r
1807 #define DM_DIG_BACKOFF_MAX 12
\r
1808 #define DM_DIG_BACKOFF_MIN -4
\r
1809 #define DM_DIG_BACKOFF_DEFAULT 10
\r
1811 //3===========================================================
\r
1812 //3 AGC RX High Power Mode
\r
1813 //3===========================================================
\r
1814 #define LNA_Low_Gain_1 0x64
\r
1815 #define LNA_Low_Gain_2 0x5A
\r
1816 #define LNA_Low_Gain_3 0x58
\r
1818 #define FA_RXHP_TH1 5000
\r
1819 #define FA_RXHP_TH2 1500
\r
1820 #define FA_RXHP_TH3 800
\r
1821 #define FA_RXHP_TH4 600
\r
1822 #define FA_RXHP_TH5 500
\r
1824 //3===========================================================
\r
1826 //3===========================================================
\r
1828 //3===========================================================
\r
1829 //3 Dynamic Tx Power
\r
1830 //3===========================================================
\r
1831 //Dynamic Tx Power Control Threshold
\r
1832 #define TX_POWER_NEAR_FIELD_THRESH_LVL2 74
\r
1833 #define TX_POWER_NEAR_FIELD_THRESH_LVL1 67
\r
1834 #define TX_POWER_NEAR_FIELD_THRESH_AP 0x3F
\r
1836 #define TxHighPwrLevel_Normal 0
\r
1837 #define TxHighPwrLevel_Level1 1
\r
1838 #define TxHighPwrLevel_Level2 2
\r
1839 #define TxHighPwrLevel_BT1 3
\r
1840 #define TxHighPwrLevel_BT2 4
\r
1841 #define TxHighPwrLevel_15 5
\r
1842 #define TxHighPwrLevel_35 6
\r
1843 #define TxHighPwrLevel_50 7
\r
1844 #define TxHighPwrLevel_70 8
\r
1845 #define TxHighPwrLevel_100 9
\r
1847 //3===========================================================
\r
1848 //3 Tx Power Tracking
\r
1849 //3===========================================================
\r
1850 #if 0 //mask this, since these have been defined in typdef.h, vivi
\r
1851 #define OFDM_TABLE_SIZE 43
\r
1852 #define CCK_TABLE_SIZE 33
\r
1856 //3===========================================================
\r
1858 //3===========================================================
\r
1859 #define DM_RATR_STA_INIT 0
\r
1860 #define DM_RATR_STA_HIGH 1
\r
1861 #define DM_RATR_STA_MIDDLE 2
\r
1862 #define DM_RATR_STA_LOW 3
\r
1864 //3===========================================================
\r
1866 //3===========================================================
\r
1869 //3===========================================================
\r
1870 //3 Dynamic ATC switch
\r
1871 //3===========================================================
\r
1872 #define ATC_Status_Off 0x0 // enable
\r
1873 #define ATC_Status_On 0x1 // disable
\r
1874 #define CFO_Threshold_Xtal 10 // kHz
\r
1875 #define CFO_Threshold_ATC 80 // kHz
\r
1877 typedef enum tag_1R_CCA_Type_Definition
\r
1884 typedef enum tag_RF_Type_Definition
\r
1891 //3===========================================================
\r
1892 //3 Antenna Diversity
\r
1893 //3===========================================================
\r
1894 typedef enum tag_SW_Antenna_Switch_Definition
\r
1902 // Maximal number of antenna detection mechanism needs to perform, added by Roger, 2011.12.28.
\r
1903 #define MAX_ANTENNA_DETECTION_CNT 10
\r
1906 // Extern Global Variables.
\r
1908 extern u4Byte OFDMSwingTable[OFDM_TABLE_SIZE];
\r
1909 extern u1Byte CCKSwingTable_Ch1_Ch13[CCK_TABLE_SIZE][8];
\r
1910 extern u1Byte CCKSwingTable_Ch14 [CCK_TABLE_SIZE][8];
\r
1912 extern u4Byte OFDMSwingTable_New[OFDM_TABLE_SIZE];
\r
1913 extern u1Byte CCKSwingTable_Ch1_Ch13_New[CCK_TABLE_SIZE][8];
\r
1914 extern u1Byte CCKSwingTable_Ch14_New [CCK_TABLE_SIZE][8];
\r
1916 extern u4Byte TxScalingTable_Jaguar[TXSCALE_TABLE_SIZE];
\r
1918 // <20121018, Kordan> In case fail to read TxPowerTrack.txt, we use the table of 88E as the default table.
\r
1919 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
1920 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
1923 // check Sta pointer valid or not
\r
1925 #if (DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))
\r
1926 #define IS_STA_VALID(pSta) (pSta && pSta->expire_to)
\r
1927 #elif (DM_ODM_SUPPORT_TYPE & ODM_WIN)
\r
1928 #define IS_STA_VALID(pSta) (pSta && pSta->bUsed)
\r
1930 #define IS_STA_VALID(pSta) (pSta)
\r
1932 // 20100514 Joseph: Add definition for antenna switching test after link.
\r
1933 // This indicates two different the steps.
\r
1934 // In SWAW_STEP_PEAK, driver needs to switch antenna and listen to the signal on the air.
\r
1935 // In SWAW_STEP_DETERMINE, driver just compares the signal captured in SWAW_STEP_PEAK
\r
1936 // with original RSSI to determine if it is necessary to switch antenna.
\r
1937 #define SWAW_STEP_PEAK 0
\r
1938 #define SWAW_STEP_DETERMINE 1
\r
1940 VOID ODM_Write_DIG(IN PDM_ODM_T pDM_Odm, IN u1Byte CurrentIGI);
\r
1941 VOID ODM_Write_CCK_CCA_Thres(IN PDM_ODM_T pDM_Odm, IN u1Byte CurCCK_CCAThres);
\r
1945 IN PDM_ODM_T pDM_Odm,
\r
1946 IN u1Byte Antenna);
\r
1949 #define dm_RF_Saving ODM_RF_Saving
\r
1950 void ODM_RF_Saving( IN PDM_ODM_T pDM_Odm,
\r
1951 IN u1Byte bForceInNormal );
\r
1953 #define SwAntDivRestAfterLink ODM_SwAntDivRestAfterLink
\r
1954 VOID ODM_SwAntDivRestAfterLink( IN PDM_ODM_T pDM_Odm);
\r
1956 #define dm_CheckTXPowerTracking ODM_TXPowerTrackingCheck
\r
1958 ODM_TXPowerTrackingCheck(
\r
1959 IN PDM_ODM_T pDM_Odm
\r
1964 IN PDM_ODM_T pDM_Odm,
\r
1966 IN BOOLEAN bForceUpdate,
\r
1967 OUT pu1Byte pRATRState
\r
1970 #if(DM_ODM_SUPPORT_TYPE & (ODM_WIN|ODM_AP|ODM_ADSL))
\r
1971 //============================================================
\r
1972 // function prototype
\r
1973 //============================================================
\r
1974 //#define DM_ChangeDynamicInitGainThresh ODM_ChangeDynamicInitGainThresh
\r
1975 //void ODM_ChangeDynamicInitGainThresh(IN PADAPTER pAdapter,
\r
1976 // IN INT32 DM_Type,
\r
1977 // IN INT32 DM_Value);
\r
1979 ODM_ChangeDynamicInitGainThresh(
\r
1980 IN PDM_ODM_T pDM_Odm,
\r
1981 IN u4Byte DM_Type,
\r
1982 IN u4Byte DM_Value
\r
1986 ODM_CheckPowerStatus(
\r
1987 IN PADAPTER Adapter
\r
1991 #if (DM_ODM_SUPPORT_TYPE != ODM_ADSL)
\r
1993 ODM_RateAdaptiveStateApInit(
\r
1994 IN PADAPTER Adapter ,
\r
1995 IN PRT_WLAN_STA pEntry
\r
1998 #define AP_InitRateAdaptiveState ODM_RateAdaptiveStateApInit
\r
2001 #if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))
\r
2004 ODM_IotEdcaSwitch(
\r
2005 IN PDM_ODM_T pDM_Odm,
\r
2006 IN unsigned char enable
\r
2011 ODM_ChooseIotMainSTA(
\r
2012 IN PDM_ODM_T pDM_Odm,
\r
2013 IN PSTA_INFO_T pstat
\r
2017 #if(DM_ODM_SUPPORT_TYPE==ODM_AP)
\r
2018 #ifdef HW_ANT_SWITCH
\r
2020 ODM_Diversity_AntennaSelect(
\r
2021 IN PDM_ODM_T pDM_Odm,
\r
2027 #define SwAntDivResetBeforeLink ODM_SwAntDivResetBeforeLink
\r
2028 VOID ODM_SwAntDivResetBeforeLink(IN PDM_ODM_T pDM_Odm);
\r
2030 #define SwAntDivCheckBeforeLink ODM_SwAntDivCheckBeforeLink
\r
2033 ODM_SwAntDivCheckBeforeLink(
\r
2034 IN PDM_ODM_T pDM_Odm
\r
2040 #define dm_SWAW_RSSI_Check ODM_SwAntDivChkPerPktRssi
\r
2041 VOID ODM_SwAntDivChkPerPktRssi(
\r
2042 IN PDM_ODM_T pDM_Odm,
\r
2043 IN u1Byte StationID,
\r
2044 IN PODM_PHY_INFO_T pPhyInfo
\r
2047 #if((DM_ODM_SUPPORT_TYPE==ODM_WIN)||(DM_ODM_SUPPORT_TYPE==ODM_CE))
\r
2049 u4Byte ConvertTo_dB(u4Byte Value);
\r
2053 PDM_ODM_T pDM_Odm,
\r
2054 unsigned int point,
\r
2055 u1Byte initial_gain_psd);
\r
2059 #if (DM_ODM_SUPPORT_TYPE == ODM_CE)
\r
2062 odm_DIGbyRSSI_LPS(
\r
2063 IN PDM_ODM_T pDM_Odm
\r
2066 u4Byte ODM_Get_Rate_Bitmap(
\r
2067 IN PDM_ODM_T pDM_Odm,
\r
2069 IN u4Byte ra_mask,
\r
2070 IN u1Byte rssi_level);
\r
2075 #if(DM_ODM_SUPPORT_TYPE & (ODM_WIN))
\r
2076 #define dm_PSDMonitorCallback odm_PSDMonitorCallback
\r
2077 VOID odm_PSDMonitorCallback(PRT_TIMER pTimer);
\r
2080 odm_PSDMonitorWorkItemCallback(
\r
2086 IN PDM_ODM_T pDM_Odm
\r
2091 IN PDM_ODM_T pDM_Odm,
\r
2092 pu4Byte PSD_report,
\r
2093 u1Byte initial_gain_psd
\r
2097 IN PDM_ODM_T pDM_Odm
\r
2099 VOID odm_PSD_Monitor(PDM_ODM_T pDM_Odm);
\r
2100 VOID odm_PSDMonitorInit(PDM_ODM_T pDM_Odm);
\r
2103 ODM_PSDDbgControl(
\r
2104 IN PADAPTER Adapter,
\r
2109 #endif // DM_ODM_SUPPORT_TYPE
\r
2112 #if (BEAMFORMING_SUPPORT == 1)
\r
2114 Beamforming_GetEntryBeamCapByMacId(
\r
2115 IN PMGNT_INFO pMgntInfo,
\r
2122 VOID ODM_DMInit( IN PDM_ODM_T pDM_Odm);
\r
2126 IN PDM_ODM_T pDM_Odm // For common use in the future
\r
2131 IN PDM_ODM_T pDM_Odm,
\r
2132 IN ODM_CMNINFO_E CmnInfo,
\r
2138 IN PDM_ODM_T pDM_Odm,
\r
2139 IN ODM_CMNINFO_E CmnInfo,
\r
2144 ODM_CmnInfoPtrArrayHook(
\r
2145 IN PDM_ODM_T pDM_Odm,
\r
2146 IN ODM_CMNINFO_E CmnInfo,
\r
2152 ODM_CmnInfoUpdate(
\r
2153 IN PDM_ODM_T pDM_Odm,
\r
2154 IN u4Byte CmnInfo,
\r
2159 ODM_InitAllTimers(
\r
2160 IN PDM_ODM_T pDM_Odm
\r
2164 ODM_CancelAllTimers(
\r
2165 IN PDM_ODM_T pDM_Odm
\r
2169 ODM_ReleaseAllTimers(
\r
2170 IN PDM_ODM_T pDM_Odm
\r
2174 ODM_ResetIQKResult(
\r
2175 IN PDM_ODM_T pDM_Odm
\r
2179 #if (DM_ODM_SUPPORT_TYPE == ODM_WIN)
\r
2180 VOID ODM_InitAllWorkItems(IN PDM_ODM_T pDM_Odm );
\r
2181 VOID ODM_FreeAllWorkItems(IN PDM_ODM_T pDM_Odm );
\r
2183 VOID odm_PathDivChkAntSwitch(PDM_ODM_T pDM_Odm);
\r
2184 VOID ODM_PathDivRestAfterLink(
\r
2185 IN PDM_ODM_T pDM_Odm
\r
2189 //===========================================//
\r
2190 // Neil Chen----2011--06--15--
\r
2192 //3 Path Diversity
\r
2193 //===========================================================
\r
2196 #define RSSI_MODE 1
\r
2197 #define TRAFFIC_LOW 0
\r
2198 #define TRAFFIC_HIGH 1
\r
2200 //#define PATHDIV_ENABLE 1
\r
2202 //VOID odm_PathDivChkAntSwitch(PADAPTER Adapter,u1Byte Step);
\r
2203 VOID ODM_PathDivRestAfterLink(
\r
2204 IN PDM_ODM_T pDM_Odm
\r
2207 #define dm_PathDiv_RSSI_Check ODM_PathDivChkPerPktRssi
\r
2208 VOID ODM_PathDivChkPerPktRssi(PADAPTER Adapter,
\r
2209 BOOLEAN bIsDefPort,
\r
2210 BOOLEAN bMatchBSSID,
\r
2211 PRT_WLAN_STA pEntry,
\r
2215 PlatformDivision64(
\r
2221 // 20100514 Joseph: Add definition for antenna switching test after link.
\r
2222 // This indicates two different the steps.
\r
2223 // In SWAW_STEP_PEAK, driver needs to switch antenna and listen to the signal on the air.
\r
2224 // In SWAW_STEP_DETERMINE, driver just compares the signal captured in SWAW_STEP_PEAK
\r
2225 // with original RSSI to determine if it is necessary to switch antenna.
\r
2226 #define SWAW_STEP_PEAK 0
\r
2227 #define SWAW_STEP_DETERMINE 1
\r
2229 //====================================================
\r
2231 //====================================================
\r
2233 #define PathDivCheckBeforeLink8192C ODM_PathDiversityBeforeLink92C
\r
2235 ODM_PathDiversityBeforeLink92C(
\r
2236 //IN PADAPTER Adapter
\r
2237 IN PDM_ODM_T pDM_Odm
\r
2240 #define DM_ChangeDynamicInitGainThresh ODM_ChangeDynamicInitGainThresh
\r
2241 //void ODM_ChangeDynamicInitGainThresh(IN PADAPTER pAdapter,
\r
2242 // IN INT32 DM_Type,
\r
2243 // IN INT32 DM_Value);
\r
2248 ODM_CCKPathDiversityChkPerPktRssi(
\r
2250 BOOLEAN bIsDefPort,
\r
2251 BOOLEAN bMatchBSSID,
\r
2252 PRT_WLAN_STA pEntry,
\r
2258 typedef enum tag_DIG_Connect_Definition
\r
2260 DIG_STA_DISCONNECT = 0,
\r
2261 DIG_STA_CONNECT = 1,
\r
2262 DIG_STA_BEFORE_CONNECT = 2,
\r
2263 DIG_MultiSTA_DISCONNECT = 3,
\r
2264 DIG_MultiSTA_CONNECT = 4,
\r
2266 }DM_DIG_CONNECT_E;
\r
2270 ODM_FillTXPathInTXDESC(
\r
2271 IN PADAPTER Adapter,
\r
2277 #define dm_SWAW_RSSI_Check ODM_SwAntDivChkPerPktRssi
\r
2280 // 2012/01/12 MH Check afapter status. Temp fix BSOD.
\r
2282 #define HAL_ADAPTER_STS_CHK(pDM_Odm)\
\r
2283 if (pDM_Odm->Adapter == NULL)\
\r
2290 // For new definition in MP temporarily fro power tracking,
\r
2292 #define odm_TXPowerTrackingDirectCall(_Adapter) \
\r
2293 IS_HARDWARE_TYPE_8192D(_Adapter) ? odm_TXPowerTrackingCallback_ThermalMeter_92D(_Adapter) : \
\r
2294 IS_HARDWARE_TYPE_8192C(_Adapter) ? odm_TXPowerTrackingCallback_ThermalMeter_92C(_Adapter) : \
\r
2295 IS_HARDWARE_TYPE_8723A(_Adapter) ? odm_TXPowerTrackingCallback_ThermalMeter_8723A(_Adapter) :\
\r
2296 ODM_TXPowerTrackingCallback_ThermalMeter(_Adapter)
\r
2299 ODM_SetTxAntByTxInfo_88C_92D(
\r
2300 IN PDM_ODM_T pDM_Odm,
\r
2305 #endif // #if (DM_ODM_SUPPORT_TYPE == ODM_WIN)
\r
2307 ODM_AntselStatistics_88C(
\r
2308 IN PDM_ODM_T pDM_Odm,
\r
2310 IN u4Byte PWDBAll,
\r
2311 IN BOOLEAN isCCKrate
\r
2314 #if( DM_ODM_SUPPORT_TYPE & (ODM_WIN |ODM_CE))
\r
2317 ODM_SingleDualAntennaDefaultSetting(
\r
2318 IN PDM_ODM_T pDM_Odm
\r
2322 ODM_SingleDualAntennaDetection(
\r
2323 IN PDM_ODM_T pDM_Odm,
\r
2328 ODM_DynamicATCSwitch(
\r
2329 IN PDM_ODM_T pDM_Odm
\r
2333 #endif // #if((DM_ODM_SUPPORT_TYPE==ODM_WIN)||(DM_ODM_SUPPORT_TYPE==ODM_CE))
\r
2335 ODM_UpdateNoisyState(
\r
2336 IN PDM_ODM_T pDM_Odm,
\r
2337 IN BOOLEAN bNoisyStateFromC2H
\r
2341 Set_RA_DM_Ratrbitmap_by_Noisy(
\r
2342 IN PDM_ODM_T pDM_Odm,
\r
2343 IN WIRELESS_MODE WirelessMode,
\r
2344 IN u4Byte ratr_bitmap,
\r
2345 IN u1Byte rssi_level
\r
2349 ODM_UpdateInitRate(
\r
2350 IN PDM_ODM_T pDM_Odm,
\r
2355 ODM_DynamicARFBSelect(
\r
2356 IN PDM_ODM_T pDM_Odm,
\r
2358 IN BOOLEAN Collision_State
\r
2361 #if (DM_ODM_SUPPORT_TYPE == ODM_CE)
\r
2362 void odm_dtc(PDM_ODM_T pDM_Odm);
\r
2363 #endif /* #if (DM_ODM_SUPPORT_TYPE == ODM_CE) */
\r