1  /*
2   * Copyright (c) 2012-2020 The Linux Foundation. All rights reserved.
3   * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
4   *
5   * Permission to use, copy, modify, and/or distribute this software for
6   * any purpose with or without fee is hereby granted, provided that the
7   * above copyright notice and this permission notice appear in all
8   * copies.
9   *
10   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
11   * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
12   * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
13   * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
14   * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
15   * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
16   * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17   * PERFORMANCE OF THIS SOFTWARE.
18   */
19  
20  /**
21   * DOC: This file contains centralized definitions of converged configuration.
22   */
23  
24  #ifndef __CFG_MLME_RATES_H
25  #define __CFG_MLME_RATES_H
26  
27  #define CFG_SUPPORTED_RATES_11B_LEN    4
28  #define CFG_SUPPORTED_RATES_11A_LEN    8
29  #define CFG_OPERATIONAL_RATE_SET_LEN    12
30  #define CFG_EXTENDED_OPERATIONAL_RATE_SET_LEN    8
31  #define CFG_SUPPORTED_MCS_SET_LEN    16
32  #define CFG_BASIC_MCS_SET_LEN    16
33  #define CFG_CURRENT_MCS_SET_LEN    16
34  #define CFG_MLME_RATE_MASK_LEN    4
35  
36  /*
37   * <ini>
38   * gMaxHTMCSForTxData - max HT mcs for TX
39   * @Min: 0
40   * @Max: 383
41   * @Default: 0
42   *
43   * This ini is used to configure the max HT mcs
44   * for tx data.
45   *
46   * Usage: External
47   *
48   * bits 0-15:  max HT mcs
49   * bits 16-31: zero to disable, otherwise enable.
50   *
51   * </ini>
52   */
53  #define CFG_MAX_HT_MCS_FOR_TX_DATA CFG_INI_UINT( \
54  		"gMaxHTMCSForTxData", \
55  		0, \
56  		0x17f, \
57  		0, \
58  		CFG_VALUE_OR_DEFAULT, \
59  		"Max HT Mcs for Tx Data")
60  
61  /*
62   * <ini>
63   * gDisableABGRateForTxData - disable abg rate for tx data
64   * @Min: 0
65   * @Max: 1
66   * @Default: 0
67   *
68   * This ini is used to disable abg rate for tx data.
69   *
70   * Usage: External
71   *
72   * </ini>
73   */
74  #define CFG_DISABLE_ABG_RATE_FOR_TX_DATA CFG_INI_BOOL( \
75  		"gDisableABGRateForTxData", \
76  		0, \
77  		"Disable ABG RATE for TX Data")
78  
79  /*
80   * <ini>
81   * gSapMaxMCSForTxData - sap 11n max mcs
82   * @Min: 0
83   * @Max: 383
84   * @Default: 0
85   *
86   * This ini configure SAP 11n max mcs
87   *
88   * Usage: External
89   *
90   * </ini>
91   */
92  #define CFG_SAP_MAX_MCS_FOR_TX_DATA CFG_INI_UINT( \
93  		"gSapMaxMCSForTxData", \
94  		0, \
95  		383, \
96  		0, \
97  		CFG_VALUE_OR_DEFAULT, \
98  		"SAP Max MCS for TX Data")
99  
100  /*
101   * <ini>
102   * disable_high_ht_mcs_2x2 - disable high mcs index for 2nd stream in 2.4G
103   * @Min: 0
104   * @Max: 8
105   * @Default: 0
106   *
107   * This ini is used to disable high HT MCS index for 2.4G STA connection.
108   * It has been introduced to resolve IOT issue with one of the vendor.
109   *
110   * Note: This INI is not useful with 1x1 setting. If some platform supports
111   * only 1x1 then this INI is not useful.
112   *
113   * 0 - It won't disable any HT MCS index (just like normal HT MCS)
114   * 1 - It will disable 15th bit from HT RX MCS set (from 8-15 bits slot)
115   * 2 - It will disable 14th & 15th bits from HT RX MCS set
116   * 3 - It will disable 13th, 14th, & 15th bits from HT RX MCS set
117   * and so on.
118   *
119   * Related: STA
120   *
121   * Supported Feature: 11n
122   *
123   * Usage: External
124   */
125  #define CFG_DISABLE_HIGH_HT_RX_MCS_2x2 CFG_INI_UINT( \
126  		"disable_high_ht_mcs_2x2", \
127  		0, \
128  		8, \
129  		0, \
130  		CFG_VALUE_OR_DEFAULT, \
131  		"Disable high MCS index for 2x2")
132  
133  #define CFG_CFP_PERIOD CFG_UINT( \
134  		"cfpPeriod", \
135  		0, \
136  		255, \
137  		1, \
138  		CFG_VALUE_OR_DEFAULT, \
139  		"CFP Period")
140  
141  #define CFG_CFP_MAX_DURATION CFG_UINT( \
142  		"cfpMaxDuration", \
143  		0, \
144  		65535, \
145  		30000, \
146  		CFG_VALUE_OR_DEFAULT, \
147  		"CFP Max Duration")
148  /*
149   * <cfg>
150   * supported_rates_11b - supported rates for 11b
151   * @Min: 0 minimum length of supported rates
152   * @Max: default data length of supported rates in string format
153   * @Default: 2, 4, 11, 22
154   */
155  #define CFG_SUPPORTED_RATES_11B_DATA "2, 4, 11, 22"
156  #define CFG_SUPPORTED_RATES_11B CFG_STRING( \
157  		"supported_rates_11b", \
158  		0, \
159  		sizeof(CFG_SUPPORTED_RATES_11B_DATA) - 1, \
160  		CFG_SUPPORTED_RATES_11B_DATA, \
161  		"Supported rates for 11B")
162  
163  /*
164   * <cfg>
165   * supported_rates_11a - supported rates for 11a
166   * @Min: 0 minimum length of supported rates
167   * @Max: default data length of supported rates in string format
168   * @Default: 12, 18, 24, 36, 48, 72, 96, 108
169   */
170  #define CFG_SUPPORTED_RATES_11A_DATA "12, 18, 24, 36, 48, 72, 96, 108"
171  #define CFG_SUPPORTED_RATES_11A CFG_STRING( \
172  		"supported_rates_11a", \
173  		0, \
174  		sizeof(CFG_SUPPORTED_RATES_11A_DATA) - 1, \
175  		CFG_SUPPORTED_RATES_11A_DATA, \
176  		"Supported rates for 11A")
177  
178  /*
179   * <cfg>
180   * supported_mcs_set - supported MCS set data
181   * @Min: 0 minimum length of supported MCS set
182   * @Max: default data length of supported mcs set in string format
183   * @Default: 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
184   * 0x0, 0x0, 0x0
185   */
186  #define CFG_SUPPORTED_MCS_SET_DATA "0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0"
187  #define CFG_SUPPORTED_MCS_SET CFG_STRING( \
188  		"supported_mcs_set", \
189  		0, \
190  		sizeof(CFG_SUPPORTED_MCS_SET_DATA) - 1, \
191  		CFG_SUPPORTED_MCS_SET_DATA, \
192  		"supported MCS set")
193  
194  /*
195   * <cfg>
196   * basic_mcs_set - basic MCS set data
197   * @Min: 0 minimum length of basic MCS set
198   * @Max: default data length of basic mcs set in string format
199   * @Default: 0x00, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
200   * 0x0, 0x0, 0x0
201   */
202  #define CFG_BASIC_MCS_SET_DATA "0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0"
203  #define CFG_BASIC_MCS_SET CFG_STRING( \
204  		"basic_mcs_set", \
205  		0, \
206  		sizeof(CFG_BASIC_MCS_SET_DATA) - 1, \
207  		CFG_BASIC_MCS_SET_DATA, \
208  		"basic MCS set")
209  
210  /*
211   * <cfg>
212   * current_mcs_set - current MCS set data
213   * @Min: 0 minimum length of current MCS set
214   * @Max: default data length of current mcs set in string format
215   * @Default: 0x00, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
216   * 0x0, 0x0, 0x0
217   */
218  #define CFG_CURRENT_MCS_SET_DATA "0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0"
219  #define CFG_CURRENT_MCS_SET CFG_STRING( \
220  		"current_mcs_set", \
221  		0, \
222  		sizeof(CFG_CURRENT_MCS_SET_DATA) - 1, \
223  		CFG_CURRENT_MCS_SET_DATA, \
224  		"current MCS set")
225  
226  /*
227   * <cfg>
228   * ratemask_type - PHY type for the ratemask.
229   * @Min: 0 No rate mask set defined - disabled the configuration
230   * @Max: 4
231   * @Default: 0
232   *
233   * This ini is used to set the PHY type for ratemask in rate selection.
234   *
235   * 0 = Disables the configuration
236   * 1 = The rate mask specified is for CCK/OFDM configuration
237   * 2 = The rate mask specified is for HT configuration
238   * 3 = The rate mask specified is for VHT configuration
239   * 4 = The rate mask specified is for HE/11ax configuration
240   *
241   * Related: CFG_RATEMASK_SET
242   *
243   * Usage: External
244   */
245  #define CFG_RATEMASK_TYPE CFG_INI_UINT( \
246  		"ratemask_type", \
247  		0, \
248  		4, \
249  		0, \
250  		CFG_VALUE_OR_DEFAULT, \
251  		"Ratemask type")
252  
253  /*
254   * <cfg>
255   * ratemask_set - ratemasks for a PHY type used in rate selection
256   * @Min: default data length of ratemask in string format
257   * @Max: default data length of ratemask in string format
258   * @Default: 0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF
259   *
260   * This is used to set the rate mask value to be used in rate selection.
261   * Each of the four words must be configured.
262   * A bit value of 1 represents rate is enabled
263   * A bit value of 0 represents rate is disabled
264   *
265   * [b31-b0],[b63-b32],[b95-b64],[b127-b96]
266   * For HE targets, 12 bits correpond to one NSS setting. Ex:
267   * b0-13  => NSS1, MCS 0-13
268   * b14-27 => NSS2, MCS 0-13 and so on for other NSS.
269   * Note that the bit representation is continuous.
270   *
271   * For VHT targets, 12 bits correspond to one NSS setting.
272   * b0-11   => NSS1, MCS 0-11
273   * b12-23 => NSS2, MCS 0-11 and so on for other NSS.
274   *
275   * For HT targets, 8 bits correspond to one NSS setting.
276   * b0-7  => NSS1, MCS 0-7
277   * b8-15 => NSS2, MCS 0-7 and so on for other NSS.
278   *
279   * For OFDM/CCK targets, 8 bits correspond to one NSS setting.
280   * Bit position  |-b3-|-b2-|-b1-|-b0-|
281   * Rates in Mbps |-1 -|-2 -|-5.5|-11-| CCK Rates
282   *
283   * Bit position  |-b11-|-b10-|-b09-|-b08-|-b07-|-b06-|-b05-|-b04-|
284   * Rates in Mbps |- 9 -|- 18-|-36 -|-54 -|- 6 -|-12 -| -24-|-48- | OFDM Rates
285   *
286   * Related: CFG_RATEMASK_TYPE
287   *
288   * Usage: External
289   */
290  #define CFG_RATEMASK_DATA "0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF"
291  #define CFG_RATEMASK_SET CFG_INI_STRING( \
292  		"ratemask_set", \
293  		0, \
294  		sizeof(CFG_RATEMASK_DATA) - 1, \
295  		CFG_RATEMASK_DATA, \
296  		"Ratemasks for rate selection")
297  
298  #define CFG_RATES_ALL \
299  	CFG(CFG_MAX_HT_MCS_FOR_TX_DATA) \
300  	CFG(CFG_DISABLE_ABG_RATE_FOR_TX_DATA) \
301  	CFG(CFG_SAP_MAX_MCS_FOR_TX_DATA) \
302  	CFG(CFG_DISABLE_HIGH_HT_RX_MCS_2x2) \
303  	CFG(CFG_CFP_PERIOD) \
304  	CFG(CFG_CFP_MAX_DURATION) \
305  	CFG(CFG_SUPPORTED_RATES_11B) \
306  	CFG(CFG_SUPPORTED_RATES_11A) \
307  	CFG(CFG_SUPPORTED_MCS_SET) \
308  	CFG(CFG_BASIC_MCS_SET) \
309  	CFG(CFG_CURRENT_MCS_SET) \
310  	CFG(CFG_RATEMASK_TYPE) \
311  	CFG(CFG_RATEMASK_SET)
312  
313  #endif /* __CFG_MLME_RATES_H */
314