1 /*
2  * Copyright (c) 2012-2021 The Linux Foundation. All rights reserved.
3  *
4  * Permission to use, copy, modify, and/or distribute this software for
5  * any purpose with or without fee is hereby granted, provided that the
6  * above copyright notice and this permission notice appear in all
7  * copies.
8  *
9  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
10  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
11  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
12  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
13  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
14  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
15  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
16  * PERFORMANCE OF THIS SOFTWARE.
17  */
18 
19 /**
20  * DOC: This file contains centralized definitions of converged configuration.
21  */
22 
23 #ifndef __CFG_MLME_HT_CAPS_H
24 #define __CFG_MLME_HT_CAPS_H
25 
26 /*
27  * <ini>
28  * gTxLdpcEnable - Config Param to enable Tx LDPC capability
29  * @Min: 0
30  * @Max: 3
31  * @Default: 3
32  *
33  * This ini is used to enable/disable Tx LDPC capability
34  * 0 - disable
35  * 1 - HT LDPC enable
36  * 2 - VHT LDPC enable
37  * 3 - HT & VHT LDPC enable
38  *
39  * Related: STA/SAP/P2P/IBSS/NAN.
40  *
41  * Supported Feature: Concurrency/Standalone
42  *
43  * Usage: External
44  *
45  * </ini>
46  */
47 #define CFG_TX_LDPC_ENABLE CFG_INI_UINT( \
48 		"gTxLdpcEnable", \
49 		0, \
50 		3, \
51 		3, \
52 		CFG_VALUE_OR_DEFAULT, \
53 		"Tx LDPC capability")
54 
55 /*
56  * <ini>
57  * gEnableRXLDPC - Config Param to enable Rx LDPC capability
58  * @Min: 0
59  * @Max: 1
60  * @Default: 1
61  *
62  * This ini is used to enable/disable Rx LDPC capability
63  * 0 - disable Rx LDPC
64  * 1 - enable Rx LDPC
65  *
66  * Related: STA/SAP/P2P/IBSS/NAN.
67  *
68  * Supported Feature: Concurrency/Standalone
69  *
70  * Usage: External
71  *
72  * </ini>
73  */
74 #define CFG_RX_LDPC_ENABLE CFG_INI_BOOL( \
75 		"gEnableRXLDPC", \
76 		1, \
77 		"Rx LDPC capability")
78 
79 /*
80  * <ini>
81  * gEnableTXSTBC - Enables/disables Tx STBC capability in STA mode
82  * @Min: 0
83  * @Max: 1
84  * @Default: 1
85  *
86  * This ini is used to set default Tx STBC capability
87  *
88  * Related: None
89  *
90  * Supported Feature: STA
91  *
92  * Usage: External
93  *
94  * </ini>
95  */
96 #define CFG_TX_STBC_ENABLE CFG_INI_BOOL( \
97 		"gEnableTXSTBC", \
98 		1, \
99 		"Tx STBC capability")
100 
101 /*
102  * <ini>
103  * gEnableRXSTBC - Enables/disables Rx STBC capability in STA mode
104  * @Min: 0
105  * @Max: 1
106  * @Default: 1
107  *
108  * This ini is used to set default Rx STBC capability
109  *
110  * Related: None
111  *
112  * Supported Feature: STA
113  *
114  * Usage: External
115  *
116  * </ini>
117  */
118 #define CFG_RX_STBC_ENABLE CFG_INI_BOOL( \
119 		"gEnableRXSTBC", \
120 		1, \
121 		"Rx STBC capability")
122 
123 /*
124  * <ini>
125  * gShortGI20Mhz - Short Guard Interval for HT20
126  * @Min: 0
127  * @Max: 1
128  * @Default: 1
129  *
130  * This ini is used to set default short interval for HT20
131  *
132  * Related: None
133  *
134  * Supported Feature: STA
135  *
136  * Usage: External
137  *
138  * </ini>
139  */
140 #define CFG_SHORT_GI_20MHZ CFG_INI_BOOL( \
141 		"gShortGI20Mhz", \
142 		1, \
143 		"Short Guard Interval for HT20")
144 
145 /*
146  * <ini>
147  * gShortGI40Mhz - It will check gShortGI20Mhz and
148  * gShortGI40Mhz from session entry
149  * @Min: 0
150  * @Max: 1
151  * @Default: 1
152  *
153  * This ini is used to set default gShortGI40Mhz
154  *
155  * Related: None
156  *
157  * Supported Feature: STA
158  *
159  * Usage: External
160  *
161  * </ini>
162  */
163 #define CFG_SHORT_GI_40MHZ CFG_INI_BOOL( \
164 		"gShortGI40Mhz", \
165 		1, \
166 		"Short Guard Interval for HT40")
167 
168 #define CFG_HT_CAP_INFO CFG_UINT( \
169 		"ht_cap_info", \
170 		0, \
171 		65535, \
172 		364, \
173 		CFG_VALUE_OR_DEFAULT, \
174 		"HT cap info")
175 
176 /*
177  * <ini>
178  * gShortPreamble - Set Short Preamble
179  * @Min: 0
180  * @Max: 1
181  * @Default: 1
182  *
183  * This ini is used to set default short Preamble
184  *
185  * Related: None
186  *
187  * Supported Feature: STA
188  *
189  * Usage: External
190  *
191  * </ini>
192  */
193 #define CFG_SHORT_PREAMBLE CFG_INI_BOOL( \
194 		"gShortPreamble", \
195 		1, \
196 		"Short Preamble")
197 
198 #define CFG_HT_AMPDU_PARAMS CFG_UINT( \
199 		"ht_ampdu_params", \
200 		0, \
201 		255, \
202 		0, \
203 		CFG_VALUE_OR_DEFAULT, \
204 		"HT AMPDU Params")
205 
206 #define CFG_EXT_HT_CAP_INFO CFG_UINT( \
207 		"ext_ht_cap_info", \
208 		0, \
209 		65535, \
210 		1024, \
211 		CFG_VALUE_OR_DEFAULT, \
212 		"HT Ext Cap Info")
213 
214 #define CFG_HT_INFO_FIELD_1 CFG_UINT( \
215 		"ht_info_field_1", \
216 		0, \
217 		255, \
218 		15, \
219 		CFG_VALUE_OR_DEFAULT, \
220 		"HT Info Field 1")
221 
222 #define CFG_HT_INFO_FIELD_2 CFG_UINT( \
223 		"ht_info_field_2", \
224 		0, \
225 		65535, \
226 		0, \
227 		CFG_VALUE_OR_DEFAULT, \
228 		"HT Info Field 2")
229 
230 #define CFG_HT_INFO_FIELD_3 CFG_UINT( \
231 		"ht_info_field_3", \
232 		0, \
233 		65535, \
234 		0, \
235 		CFG_VALUE_OR_DEFAULT, \
236 		"HT Info Field 3")
237 
238 /*
239  * <ini>
240  * gEnableHtSMPS - Enable the SM Power Save
241  * @Min: 0
242  * @Max: 1
243  * @Default: 0
244  *
245  * This ini is used to enable SM Power Save
246  *
247  * Related: None
248  *
249  * Supported Feature: STA
250  *
251  * Usage: External
252  *
253  * </ini>
254  */
255 #define CFG_ENABLE_HT_SMPS CFG_INI_BOOL( \
256 	"gEnableHtSMPS", \
257 	0, \
258 	"Enable HT SM PowerSave")
259 
260 /*
261  * <ini>
262  * gHtSMPS - SMPS Mode
263  * @Min: 0
264  * @Max: 3
265  * @Default: 3
266  *
267  * This ini is used to set default SM Power Save Antenna mode
268  * 0 - Static
269  * 1 - Dynamic
270  * 2 - Reserved/Invalid
271  * 3 - Disabled
272  *
273  * Related: None
274  *
275  * Supported Feature: STA
276  *
277  * Usage: External
278  *
279  * </ini>
280  */
281 #define CFG_HT_SMPS_MODE CFG_INI_UINT( \
282 	"gHtSMPS", \
283 	0, \
284 	3, \
285 	3, \
286 	CFG_VALUE_OR_DEFAULT, \
287 	"HT SM Power Save Config")
288 
289 /*
290  * <ini>
291  * gMaxAmsduNum - Max number of MSDU's in aggregate
292  * @Min: 0
293  * @Max: 15
294  * @Default: 0
295  *
296  * gMaxAmsduNum is the number of MSDU's transmitted in the aggregated
297  * frame. Setting it to a value larger than 1 enables transmit aggregation.
298  * Set the value to 0 to enable FW automode selection where it decides
299  * the maximum number of MSDUs in AMSDU based on connection mode.
300  *
301  * It is a PHY parameter that applies to all vdev's in firmware.
302  *
303  * Supported Feature: 11n aggregation
304  *
305  * Usage: Internal
306  *
307  * </ini>
308  */
309 #define CFG_MAX_AMSDU_NUM CFG_INI_UINT( \
310 	"gMaxAmsduNum", \
311 	0, \
312 	15, \
313 	0, \
314 	CFG_VALUE_OR_DEFAULT, \
315 	"Max AMSDU Number")
316 
317 /*
318  * <ini>
319  * gMaxRxAmpduFactor - Provide the maximum ampdu factor.
320  * @Min: 0
321  * @Max: 3
322  * @Default: 3
323  *
324  * This ini is used to set default maxampdu factor
325  *
326  * Related: None
327  *
328  * Supported Feature: STA
329  *
330  * Usage: External
331  *
332  * </ini>
333  */
334 #define CFG_MAX_RX_AMPDU_FACTOR CFG_INI_UINT( \
335 	"gMaxRxAmpduFactor", \
336 	0, \
337 	3, \
338 	3, \
339 	CFG_VALUE_OR_DEFAULT, \
340 	"Max Rx AMPDU Factor")
341 
342 /*
343  * <ini>
344  * ght_mpdu_density - Configuration option for HT MPDU density
345  * @Min: 0
346  * @Max: 7
347  * @Default: 4
348  *
349  * This ini is used to set default MPDU Density
350  *
351  * Related: None
352  *
353  * Supported Feature: STA
354  *
355  * Usage: External
356  *
357  * As per (Table 8-125 802.11-2012)
358  * 0 for no restriction
359  * 1 for 1/4 micro sec
360  * 2 for 1/2 micro sec
361  * 3 for 1 micro sec
362  * 4 for 2 micro sec
363  * 5 for 4 micro sec
364  * 6 for 8 micro sec
365  * 7 for 16 micro sec
366  *
367  * </ini>
368  */
369 #define CFG_MPDU_DENSITY CFG_INI_UINT( \
370 	"ght_mpdu_density", \
371 	0, \
372 	7, \
373 	4, \
374 	CFG_VALUE_OR_DEFAULT, \
375 	"MPDU Density")
376 
377 /*
378  * <ini>
379  * gShortSlotTimeEnabled - It will set slot timing slot.
380  * @Min: 0
381  * @Max: 1
382  * @Default: 1
383  *
384  * This ini is used to set default timing slot.
385  *
386  * Related: None
387  *
388  * Supported Feature: STA
389  *
390  * Usage: External
391  *
392  * </ini>
393  */
394 #define CFG_SHORT_SLOT_TIME_ENABLED CFG_INI_BOOL( \
395 	"gShortSlotTimeEnabled", \
396 	1, \
397 	"Short Slot Time Enabled")
398 
399 #define CFG_HT_CAPS_ALL \
400 	CFG(CFG_HT_CAP_INFO) \
401 	CFG(CFG_TX_LDPC_ENABLE) \
402 	CFG(CFG_RX_LDPC_ENABLE) \
403 	CFG(CFG_TX_STBC_ENABLE) \
404 	CFG(CFG_RX_STBC_ENABLE) \
405 	CFG(CFG_SHORT_GI_20MHZ) \
406 	CFG(CFG_SHORT_GI_40MHZ) \
407 	CFG(CFG_SHORT_PREAMBLE) \
408 	CFG(CFG_HT_AMPDU_PARAMS) \
409 	CFG(CFG_EXT_HT_CAP_INFO) \
410 	CFG(CFG_HT_INFO_FIELD_1) \
411 	CFG(CFG_HT_INFO_FIELD_2) \
412 	CFG(CFG_HT_INFO_FIELD_3) \
413 	CFG(CFG_ENABLE_HT_SMPS) \
414 	CFG(CFG_HT_SMPS_MODE) \
415 	CFG(CFG_MAX_AMSDU_NUM) \
416 	CFG(CFG_MAX_RX_AMPDU_FACTOR) \
417 	CFG(CFG_MPDU_DENSITY) \
418 	CFG(CFG_SHORT_SLOT_TIME_ENABLED)
419 
420 #endif /* __CFG_MLME_HT_CAPS_H */
421