Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
nu11secur1ty
GitHub Repository: nu11secur1ty/Kali-Linux
Path: blob/master/ALFA-W1F1/RTL8814AU/hal/phydm/phydm_ccx.h
1307 views
1
/******************************************************************************
2
*
3
* Copyright(c) 2007 - 2017 Realtek Corporation.
4
*
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.
8
*
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
12
* more details.
13
*
14
* The full GNU General Public License is included in this distribution in the
15
* file called LICENSE.
16
*
17
* Contact Information:
18
* wlanfae <[email protected]>
19
* Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park,
20
* Hsinchu 300, Taiwan.
21
*
22
* Larry Finger <[email protected]>
23
*
24
*****************************************************************************/
25
26
#ifndef __PHYDMCCX_H__
27
#define __PHYDMCCX_H__
28
29
/* 2019.03.27 add noise_pwr in env_mntr_rpt.*/
30
#define CCX_VERSION "2.4"
31
32
/* @1 ============================================================
33
* 1 Definition
34
* 1 ============================================================
35
*/
36
#define CCX_EN 1
37
38
#define MAX_ENV_MNTR_TIME 8 /*second*/
39
#define IGI_TO_NHM_TH_MULTIPLIER 2
40
#define MS_TO_4US_RATIO 250
41
#define CCA_CAP 14
42
#define CLM_MAX_REPORT_TIME 10
43
#define DEVIDER_ERROR 0xffff
44
#define CLM_PERIOD_MAX 65535
45
#define NHM_PERIOD_MAX 65534
46
#define NHM_TH_NUM 11 /*threshold number of NHM*/
47
#define NHM_RPT_NUM 12
48
#ifdef NHM_DYM_PW_TH_SUPPORT
49
#define DYM_PWTH_CCA_CAP 24
50
#define NHM_1PEAK_PS 1 /* @case1 : positive skew*/
51
#define NHM_1PEAK_NS 2 /* @case2 : negative skew*/
52
#define NHM_1PEAK_SYM 3 /* @case3 : symmetry*/
53
#define NHM_TH1 33 /* @13%, for step2 decision*/
54
#define NHM_TH2 35 /* @14%, for step3_c1_c2 decision*/
55
#define NHM_TH3 31 /* @12%, for step3_c3 decision*/
56
#define NHM_TH4 178 /* @70%, for step4 decision*/
57
#define NHM_TH5 25 /* @10%, for step5_c1_c2 decision*/
58
#define NHM_TH6 39 /* @15%, for step5_c3 decision*/
59
#endif
60
61
#define IGI_2_NHM_TH(igi) ((igi) << 1)/*NHM_threshold = IGI * 2*/
62
#define NTH_TH_2_RSSI(th) ((th >> 1) - 10)
63
64
/*@FAHM*/
65
#define FAHM_INCLD_FA BIT(0)
66
#define FAHM_INCLD_CRC_OK BIT(1)
67
#define FAHM_INCLD_CRC_ER BIT(2)
68
69
#define NHM_SUCCESS BIT(0)
70
#define CLM_SUCCESS BIT(1)
71
#define FAHM_SUCCESS BIT(2)
72
#define ENV_MNTR_FAIL 0xff
73
74
/* @1 ============================================================
75
* 1 enumrate
76
* 1 ============================================================
77
*/
78
enum phydm_clm_level {
79
CLM_RELEASE = 0,
80
CLM_LV_1 = 1, /* @Low Priority function */
81
CLM_LV_2 = 2, /* @Middle Priority function */
82
CLM_LV_3 = 3, /* @High priority function (ex: Check hang function) */
83
CLM_LV_4 = 4, /* @Debug function (the highest priority) */
84
CLM_MAX_NUM = 5
85
};
86
87
enum phydm_nhm_level {
88
NHM_RELEASE = 0,
89
NHM_LV_1 = 1, /* @Low Priority function */
90
NHM_LV_2 = 2, /* @Middle Priority function */
91
NHM_LV_3 = 3, /* @High priority function (ex: Check hang function) */
92
NHM_LV_4 = 4, /* @Debug function (the highest priority) */
93
NHM_MAX_NUM = 5
94
};
95
96
enum nhm_divider_opt_all {
97
NHM_CNT_ALL = 0, /*nhm SUM report <= 255*/
98
NHM_VALID = 1, /*nhm SUM report = 255*/
99
NHM_CNT_INIT
100
};
101
102
enum nhm_setting {
103
SET_NHM_SETTING,
104
STORE_NHM_SETTING,
105
RESTORE_NHM_SETTING
106
};
107
108
enum nhm_option_cca_all {
109
NHM_EXCLUDE_CCA = 0,
110
NHM_INCLUDE_CCA = 1,
111
NHM_CCA_INIT
112
};
113
114
enum nhm_option_txon_all {
115
NHM_EXCLUDE_TXON = 0,
116
NHM_INCLUDE_TXON = 1,
117
NHM_TXON_INIT
118
};
119
120
enum nhm_application {
121
NHM_BACKGROUND = 0,/*@default*/
122
NHM_ACS = 1,
123
IEEE_11K_HIGH = 2,
124
IEEE_11K_LOW = 3,
125
INTEL_XBOX = 4,
126
NHM_DBG = 5, /*@manual trigger*/
127
};
128
129
enum clm_application {
130
CLM_BACKGROUND = 0,/*@default*/
131
CLM_ACS = 1,
132
};
133
134
enum clm_monitor_mode {
135
CLM_DRIVER_MNTR = 1,
136
CLM_FW_MNTR = 2
137
};
138
139
/* @1 ============================================================
140
* 1 structure
141
* 1 ============================================================
142
*/
143
struct env_trig_rpt {
144
u8 nhm_rpt_stamp;
145
u8 clm_rpt_stamp;
146
};
147
148
149
struct env_mntr_rpt {
150
u8 nhm_ratio;
151
u8 nhm_result[NHM_RPT_NUM];
152
u8 clm_ratio;
153
u8 nhm_rpt_stamp;
154
u8 clm_rpt_stamp;
155
u8 nhm_noise_pwr;
156
};
157
158
struct nhm_para_info {
159
enum nhm_option_txon_all incld_txon; /*@Include TX on*/
160
enum nhm_option_cca_all incld_cca; /*@Include CCA*/
161
enum nhm_divider_opt_all div_opt; /*@divider option*/
162
enum nhm_application nhm_app;
163
enum phydm_nhm_level nhm_lv;
164
u16 mntr_time; /*@0~262 unit ms*/
165
};
166
167
struct clm_para_info {
168
enum clm_application clm_app;
169
enum phydm_clm_level clm_lv;
170
u16 mntr_time; /*@0~262 unit ms*/
171
};
172
173
struct ccx_info {
174
u32 nhm_trigger_time;
175
u32 clm_trigger_time;
176
u64 start_time; /*@monitor for the test duration*/
177
#ifdef NHM_SUPPORT
178
enum nhm_application nhm_app;
179
enum nhm_option_txon_all nhm_include_txon;
180
enum nhm_option_cca_all nhm_include_cca;
181
enum nhm_divider_opt_all nhm_divider_opt;
182
/*Report*/
183
u8 nhm_th[NHM_TH_NUM];
184
u8 nhm_result[NHM_RPT_NUM];
185
u16 nhm_period; /* @4us per unit */
186
u8 nhm_igi;
187
u8 nhm_manual_ctrl;
188
u8 nhm_ratio; /*@1% per nuit, it means the interference igi can't overcome.*/
189
u8 nhm_rpt_sum;
190
u16 nhm_duration; /*@Real time of NHM_VALID */
191
u8 nhm_set_lv;
192
boolean nhm_ongoing;
193
u8 nhm_rpt_stamp;
194
u8 nhm_noise_pwr;
195
u8 nhm_noise_pwr_point;
196
#ifdef NHM_DYM_PW_TH_SUPPORT
197
boolean nhm_dym_pw_th_en;
198
boolean nhm_dym_1_peak_en;
199
boolean dym_pwth_manual_ctrl;
200
u8 nhm_pw_th_rf20_dft;
201
u8 nhm_pw_th_max;
202
u8 nhm_period_decre;
203
u8 nhm_sl_pw_th;
204
#endif
205
#endif
206
207
#ifdef CLM_SUPPORT
208
enum clm_application clm_app;
209
u8 clm_manual_ctrl;
210
u8 clm_set_lv;
211
boolean clm_ongoing;
212
u16 clm_period; /* @4us per unit */
213
u16 clm_result;
214
u8 clm_ratio;
215
u32 clm_fw_result_acc;
216
u8 clm_fw_result_cnt;
217
enum clm_monitor_mode clm_mntr_mode;
218
u8 clm_rpt_stamp;
219
#endif
220
#ifdef FAHM_SUPPORT
221
boolean fahm_ongoing;
222
u8 env_mntr_igi;
223
u8 fahm_nume_sel; /*@fahm_numerator_sel: select {FA, CRCOK, CRC_fail} */
224
u8 fahm_denom_sel; /*@fahm_denominator_sel: select {FA, CRCOK, CRC_fail} */
225
u16 fahm_period; /*unit: 4us*/
226
#endif
227
};
228
229
/* @1 ============================================================
230
* 1 Function Prototype
231
* 1 ============================================================
232
*/
233
234
#ifdef FAHM_SUPPORT
235
void phydm_fahm_init(void *dm_void);
236
237
void phydm_fahm_dbg(void *dm_void, char input[][16], u32 *_used, char *output,
238
u32 *_out_len);
239
#endif
240
241
/*@NHM*/
242
#ifdef NHM_SUPPORT
243
void phydm_nhm_dbg(void *dm_void, char input[][16], u32 *_used, char *output,
244
u32 *_out_len);
245
u8 phydm_get_igi(void *dm_void, enum bb_path path);
246
#endif
247
248
/*@CLM*/
249
#ifdef CLM_SUPPORT
250
void phydm_clm_c2h_report_handler(void *dm_void, u8 *cmd_buf, u8 cmd_len);
251
252
void phydm_clm_dbg(void *dm_void, char input[][16], u32 *_used, char *output,
253
u32 *_out_len);
254
#endif
255
256
u8 phydm_env_mntr_trigger(void *dm_void, struct nhm_para_info *nhm_para,
257
struct clm_para_info *clm_para,
258
struct env_trig_rpt *rpt);
259
260
u8 phydm_env_mntr_result(void *dm_void, struct env_mntr_rpt *rpt);
261
262
void phydm_env_mntr_watchdog(void *dm_void);
263
264
void phydm_env_monitor_init(void *dm_void);
265
266
void phydm_env_mntr_dbg(void *dm_void, char input[][16], u32 *_used,
267
char *output, u32 *_out_len);
268
#endif
269
270