1 /******************************************************************************
3 * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
5 * This program is free software; you can redistribute it and/or modify it
6 * under the terms of version 2 of the GNU General Public License as
7 * published by the Free Software Foundation.
9 * This program is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
14 * You should have received a copy of the GNU General Public License along with
15 * this program; if not, write to the Free Software Foundation, Inc.,
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
19 ******************************************************************************/
21 #ifndef __PHYDMPATHDIV_H__
22 #define __PHYDMPATHDIV_H__
23 /*#define PATHDIV_VERSION "2.0" //2014.11.04*/
24 #define PATHDIV_VERSION "3.0" /*2015.01.13 Dino*/
26 #if(defined(CONFIG_PATH_DIVERSITY))
27 #define USE_PATH_A_AS_DEFAULT_ANT //for 8814 dynamic TX path selection
29 #define NUM_RESET_DTP_PERIOD 5
30 #define ANT_DECT_RSSI_TH 3
37 #define PHYDM_AUTO_PATH 0
38 #define PHYDM_FIX_PATH 1
40 #define NUM_CHOOSE2_FROM4 6
41 #define NUM_CHOOSE3_FROM4 4
48 #define PHYDM_AB (BIT0 | BIT1) // 0
49 #define PHYDM_AC (BIT0 | BIT2) // 1
50 #define PHYDM_AD (BIT0 | BIT3) // 2
51 #define PHYDM_BC (BIT1 | BIT2) // 3
52 #define PHYDM_BD (BIT1 | BIT3) // 4
53 #define PHYDM_CD (BIT2 | BIT3) // 5
55 #define PHYDM_ABC (BIT0 | BIT1 | BIT2) /* 0*/
56 #define PHYDM_ABD (BIT0 | BIT1 | BIT3) /* 1*/
57 #define PHYDM_ACD (BIT0 | BIT2 | BIT3) /* 2*/
58 #define PHYDM_BCD (BIT1 | BIT2 | BIT3) /* 3*/
60 #define PHYDM_ABCD (BIT0 | BIT1 | BIT2 | BIT3)
63 typedef enum dtp_state
70 typedef enum path_div_type
72 PHYDM_2R_PATH_DIV = 1,
77 phydm_process_rssi_for_path_div(
78 IN OUT PVOID pDM_VOID,
79 IN PVOID p_phy_info_void,
80 IN PVOID p_pkt_info_void
83 typedef struct _ODM_PATH_DIVERSITY_
86 u1Byte PathSel[ODM_ASSOCIATE_ENTRY_NUM];
87 u4Byte PathA_Sum[ODM_ASSOCIATE_ENTRY_NUM];
88 u4Byte PathB_Sum[ODM_ASSOCIATE_ENTRY_NUM];
89 u2Byte PathA_Cnt[ODM_ASSOCIATE_ENTRY_NUM];
90 u2Byte PathB_Cnt[ODM_ASSOCIATE_ENTRY_NUM];
94 u4Byte path_a_sum_all;
95 u4Byte path_b_sum_all;
96 u4Byte path_c_sum_all;
97 u4Byte path_d_sum_all;
99 u4Byte path_a_cnt_all;
100 u4Byte path_b_cnt_all;
101 u4Byte path_c_cnt_all;
102 u4Byte path_d_cnt_all;
105 BOOLEAN bBecomeLinked;
109 u1Byte num_candidate;
110 u1Byte ant_candidate_1;
111 u1Byte ant_candidate_2;
112 u1Byte ant_candidate_3;
114 u1Byte dtp_check_patha_counter;
115 BOOLEAN fix_path_bfer;
116 u1Byte search_space_2[NUM_CHOOSE2_FROM4];
117 u1Byte search_space_3[NUM_CHOOSE3_FROM4];
120 u1Byte use_path_a_as_default_ant;
121 BOOLEAN is_pathA_exist;
124 }PATHDIV_T, *pPATHDIV_T;
127 #endif //#if(defined(CONFIG_PATH_DIVERSITY))
130 phydm_c2h_dtp_handler(
137 odm_PathDiversityInit(
149 IN u4Byte *const dm_value,
157 //1 [OLD IC]--------------------------------------------------------------------------------
164 #if(DM_ODM_SUPPORT_TYPE & (ODM_WIN))
166 //#define PATHDIV_ENABLE 1
167 #define dm_PathDiv_RSSI_Check ODM_PathDivChkPerPktRssi
168 #define PathDivCheckBeforeLink8192C ODM_PathDiversityBeforeLink92C
173 typedef struct _PathDiv_Parameter_define_
175 u4Byte org_5g_RegE30;
176 u4Byte org_5g_RegC14;
177 u4Byte org_5g_RegCA0;
178 u4Byte swt_5g_RegE30;
179 u4Byte swt_5g_RegC14;
180 u4Byte swt_5g_RegCA0;
181 //for 2G IQK information
182 u4Byte org_2g_RegC80;
183 u4Byte org_2g_RegC4C;
184 u4Byte org_2g_RegC94;
185 u4Byte org_2g_RegC14;
186 u4Byte org_2g_RegCA0;
188 u4Byte swt_2g_RegC80;
189 u4Byte swt_2g_RegC4C;
190 u4Byte swt_2g_RegC94;
191 u4Byte swt_2g_RegC14;
192 u4Byte swt_2g_RegCA0;
193 }PATHDIV_PARA,*pPATHDIV_PARA;
196 odm_PathDiversityInit_92C(
201 odm_2TPathDiversityInit_92C(
206 odm_1TPathDiversityInit_92C(
216 ODM_PathDiversityBeforeLink92C(
217 //IN PADAPTER Adapter
222 odm_PathDiversityAfterLink_92C(
229 IN u1Byte DefaultRespPath
233 odm_OFDMTXPathDiversity_92C(
238 odm_CCKTXPathDiversity_92C(
243 odm_ResetPathDiversity_92C(
248 odm_CCKTXPathDiversityCallback(
253 odm_CCKTXPathDiversityWorkItemCallback(
258 odm_PathDivChkAntSwitchCallback(
263 odm_PathDivChkAntSwitchWorkitemCallback(
269 odm_PathDivChkAntSwitch(
274 ODM_CCKPathDiversityChkPerPktRssi(
284 ODM_PathDivChkPerPktRssi(
293 ODM_PathDivRestAfterLink(
298 ODM_FillTXPathInTXDESC(
310 odm_SwAntDivSelectScanChnl(
315 odm_SwAntDivConstructScanChnl(
320 #endif //#if(DM_ODM_SUPPORT_TYPE & (ODM_WIN))
323 #endif //#ifndef __ODMPATHDIV_H__