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