1 /*
2  * Copyright (c) 2012-2021 The Linux Foundation. All rights reserved.
3  * Copyright (c) 2021-2024 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 action oui configuration.
22  */
23 #ifndef __WLAN_ACTION_OUI_CFG_H__
24 #define __WLAN_ACTION_OUI_CFG_H__
25 /*
26  * Start of action oui inis
27  *
28  * To enable action oui feature, set gEnableActionOUI
29  *
30  * Each action oui is expected in the following format:
31  * <Extension 1> <Extension 2> ..... <Extension 10> (maximum 10)
32  *
33  * whereas, each Extension is separated by space and have the following format:
34  * <Token1> <Token2> <Token3> <Token4> <Token5> <Token6> <Token7> <Token8>
35  * where each Token is a string of hexa-decimal digits and
36  * following are the details about each token
37  *
38  * Token1 = OUI
39  * Token2 = Data_Length
40  * Token3 = Data
41  * Token4 = Data_Mask
42  * Token5 = Info_Presence_Bit
43  * Token6 = MAC_Address
44  * Token7 = Mac_Address Mask
45  * Token8 = Capability
46  *
47  * <OUI> is mandatory and it can be either 3 or 5 bytes means 6 or 10
48  * hexa-decimal characters
49  * If the OUI and Data checks needs to be ignored, the oui FFFFFF
50  * needs to be provided as OUI and bit 0 of Info_Presence_Bit should
51  * be set to 0.
52  *
53  * <Data_Length> is mandatory field and should give length of
54  * the <Data> if present else zero
55  *
56  * Presence of <Data> is controlled by <Data_Length>, if <Data_Length> is 0,
57  * then <Data> is not expected else Data of the size Data Length bytes are
58  * expected which means the length of Data string is 2 * Data Length,
59  * since every byte constitutes two hexa-decimal characters.
60  *
61  * <Data_Mask> is mandatory if <Data> is present and length of the
62  * Data mask string depends on the <Data Length>
63  * If <Data Length> is 06, then length of Data Mask string is
64  * 2 characters (represents 1 byte)
65  * data_mask_length = ((Data_Length - (Data_Length % 8)) / 8) +
66  *		      ((Data_Length % 8) ? 1 : 0)
67  * and <Data_Mask> has to be constructed from left to right.
68  *
69  * Presence of <Mac_Address> and <Capability> is
70  * controlled by <Info_Presence_Bit> which is mandatory
71  * <Info_Presence_Bit> will give the information for
72  *   OUI – bit 0 Should be set to 1
73  *		 Setting to 0 will ignore OUI and data check
74  *   Mac Address present – bit 1
75  *   NSS – bit 2
76  *   HT check – bit 3
77  *   VHT check – bit 4
78  *   Band info – bit 5
79  *   reserved – bit 6 (should always be zero)
80  *   reserved – bit 7 (should always be zero)
81  * and should be constructed from right to left (b7b6b5b4b3b2b1b0)
82  *
83  * <Mac_Address_Mask> for <Mac_Address> should be constructed from left to right
84  *
85  * <Capability> is 1 byte long and it contains the below info
86  *   NSS – 4 bits starting from LSB (b0 – b3)
87  *   HT enabled – bit 4
88  *   VHT enabled – bit 5
89  *   2G band – bit 6
90  *   5G band – bit 7
91  * and should be constructed from right to left (b7b6b5b4b3b2b1b0)
92  * <Capability> is present if at least one of the bit is set
93  * from b2 - b6 in <Info_Presence_Bit>
94  *
95  * Example 1:
96  *
97  * OUI is 00-10-18, data length is 05 (hex form), data is 02-11-04-5C-DE and
98  * need to consider first 3 bytes and last byte of data for comparison
99  * mac-addr EE-1A-59-FE-FD-AF is present and first 3 bytes and last byte of
100  * mac address should be considered for comparison
101  * capability is not present
102  * then action OUI for gActionOUIITOExtension is as follows:
103  *
104  * gActionOUIITOExtension=001018 05 0211045CDE E8 03 EE1A59FEFDAF E4
105  *
106  * data mask calculation in above example:
107  * Data[0] = 02 ---- d0 = 1
108  * Data[1] = 11 ---- d1 = 1
109  * Data[2] = 04 ---- d2 = 1
110  * Data[3] = 5C ---- d3 = 0
111  * Data[4] = DE ---- d4 = 1
112  * data_mask = d0d1d2d3d4 + append with zeros to complete 8-bit = 11101000 = E8
113  *
114  * mac mask calculation in above example:
115  * mac_addr[0] = EE ---- m0 = 1
116  * mac_addr[1] = 1A ---- m1 = 1
117  * mac_addr[2] = 59 ---- m2 = 1
118  * mac_addr[3] = FE ---- m3 = 0
119  * mac_addr[4] = FD ---- m4 = 0
120  * mac_addr[5] = AF ---- m5 = 1
121  * mac_mask = m0m1m2m3m4m5 + append with zeros to complete 8-bit = 11100100 = E4
122  *
123  * Example 2:
124  *
125  * OUI is 00-10-18, data length is 00 and no Mac Address and capability
126  *
127  * gActionOUIITOExtension=001018 00 01
128  *
129  */
130 
131 /*
132  * <ini>
133  * gEnableActionOUI - Enable/Disable action oui feature
134  * @Min: 0 (disable)
135  * @Max: 1 (enable)
136  * @Default: 1 (enable)
137  *
138  * This ini is used to enable the action oui feature to control
139  * mode of connection, connected AP's in-activity time, Tx rate etc.,
140  *
141  * Related: If gEnableActionOUI is set, then at least one of the following inis
142  * must be set with the proper action oui extensions:
143  * gActionOUIConnect1x1, gActionOUIITOExtension, gActionOUICCKM1X1
144  *
145  * Supported Feature: action ouis
146  *
147  * Usage: External
148  *
149  * </ini>
150  */
151 #define CFG_ENABLE_ACTION_OUI CFG_INI_BOOL( \
152 	"gEnableActionOUI", \
153 	1, \
154 	"Enable/Disable action oui feature")
155 
156 /*
157  * <ini>
158  * gActionOUIConnect1x1 - Used to specify action OUIs for 1x1 connection
159  * @Default: 000C43 00 25 C2 001018 06 02FFF02C0000 BC 25 42 001018 06 02FF040C0000 BC 25 42 00037F 00 35 6C 001018 06 02FF009C0000 BC 25 48
160  * Note: User should strictly add new action OUIs at the end of this
161  * default value.
162  *
163  * Default OUIs: (All values in Hex)
164  * OUI 1 : 000C43
165  *   OUI data Len : 00
166  *   Info Mask : 25 - Check for NSS and Band
167  *   Capabilities: C2 - NSS == 2 && Band == 2G || Band == 5G
168  * OUI 2 : 001018
169  *   OUI data Len : 06
170  *   OUI Data : 02FFF02C0000
171  *   OUI data Mask: BC - 10111100
172  *   Info Mask : 25 - Check for NSS and Band
173  *   Capabilities: 42 - NSS == 2 && Band == 2G
174  * OUI 3 : 001018
175  *   OUI data Len : 06
176  *   OUI Data : 02FF040C0000
177  *   OUI data Mask: BC - 10111100
178  *   Info Mask : 25 - Check for NSS and Band
179  *   Capabilities: 42 - NSS == 2 && Band == 2G
180  * OUI 4 : 00037F
181  *   OUI data Len : 00
182  *   Info Mask : 35 - Check for NSS, VHT Caps and Band
183  *   Capabilities: 6C - (NSS == 3 or 4) && VHT Caps Preset && Band == 2G
184  * OUI 5 : 001018
185  *   OUI data Len : 06
186  *   OUI Data : 02FF009C0000
187  *   OUI data Mask: BC - 10111100
188  *   Info Mask : 25 - Check for NSS and Band
189  *   Capabilities: 48 - NSS == 4 && Band == 2G
190  *
191  * This ini is used to specify the AP OUIs with which only 1x1 connection
192  * is allowed.
193  *
194  * Related: None
195  *
196  * Supported Feature: Action OUIs
197  *
198  * Usage: External
199  *
200  * </ini>
201  */
202 #define CFG_ACTION_OUI_CONNECT_1X1 CFG_INI_STRING( \
203 	"gActionOUIConnect1x1", \
204 	0, \
205 	ACTION_OUI_MAX_STR_LEN, \
206 	"000C43 00 25 C2 001018 06 02FFF02C0000 BC 25 42 001018 06 02FF040C0000 BC 25 42 00037F 00 35 6C 001018 06 02FF009C0000 BC 25 48", \
207 	"Used to specify action OUIs for 1x1 connection")
208 
209 /*
210  * <ini>
211  * gActionOUIITOExtension - Used to extend in-activity time for specified APs
212  * @Default: 00037F 06 01010000FF7F FC 01 000AEB 02 0100 C0 01 000B86 03 010408 E0 01
213  * Note: User should strictly add new action OUIs at the end of this
214  * default value.
215  *
216  * Default OUIs: (All values in Hex)
217  * OUI 1: 00037F
218  *   OUI data Len: 06
219  *   OUI Data: 01010000FF7F
220  *   OUI data Mask: FC - 11111100
221  *   Info Mask : 01 - only OUI present in Info mask
222  *
223  * OUI 2: 000AEB
224  *   OUI data Len: 02
225  *   OUI Data: 0100
226  *   OUI data Mask: C0 - 11000000
227  *   Info Mask : 01 - only OUI present in Info mask
228  *
229  * OUI 3: 000B86
230  *   OUI data Len: 03
231  *   OUI Data: 010408
232  *   OUI data Mask: E0 - 11100000
233  *   Info Mask : 01 - only OUI present in Info mask
234  *
235  * This ini is used to specify AP OUIs using which station's in-activity time
236  * can be extended with the respective APs
237  *
238  * Related: None
239  *
240  * Supported Feature: Action OUIs
241  *
242  * Usage: External
243  *
244  * </ini>
245  */
246 #define CFG_ACTION_OUI_ITO_EXTENSION CFG_INI_STRING( \
247 	"gActionOUIITOExtension", \
248 	0, \
249 	ACTION_OUI_MAX_STR_LEN, \
250 	"00037F 06 01010000FF7F FC 01 000AEB 02 0100 C0 01 000B86 03 010408 E0 01", \
251 	"Used to extend in-activity time for specified APs")
252 
253 /*
254  * <ini>
255  * gActionOUICCKM1X1 - Used to specify action OUIs to control station's TX rates
256  *
257  * This ini is used to specify AP OUIs for which station's CCKM TX rates
258  * should be 1x1 only.
259  *
260  * Related: None
261  *
262  * Supported Feature: Action OUIs
263  *
264  * Usage: External
265  *
266  * </ini>
267  */
268 #define CFG_ACTION_OUI_CCKM_1X1 CFG_INI_STRING( \
269 	"gActionOUICCKM1X1", \
270 	0, \
271 	ACTION_OUI_MAX_STR_LEN, \
272 	"", \
273 	"Used to specify action OUIs to control station's TX rates")
274 
275 /*
276  * <ini>
277  * gActionOUIITOAlternate - Used to specify action OUIs to have alternate ITO in
278  * weak RSSI state
279  *
280  * This ini is used to specify AP OUIs for which the stations will have
281  * alternate ITOs for the case when the RSSI is weak.
282  *
283  * Related: None
284  *
285  * Supported Feature: Action OUIs
286  *
287  * Usage: External
288  *
289  * </ini>
290  */
291 #define CFG_ACTION_OUI_ITO_ALTERNATE CFG_INI_STRING( \
292 	"gActionOUIITOAlternate", \
293 	0, \
294 	ACTION_OUI_MAX_STR_LEN, \
295 	"001018 06 0202001c0000 FC 01", \
296 	"Used to specify action OUIs to have alternate ITO")
297 
298 /*
299  * <ini>
300  * gActionOUISwitchTo11nMode - Used to specify action OUIs for switching to 11n
301  *
302  * This ini is used to specify which AP for which the connection has to be
303  * made in 2x2 mode with HT capabilities only and not VHT.
304  *
305  * Default OUIs: (All values in Hex)
306  * OUI 1 : 00904C
307  *   OUI data Len : 03
308  *   OUI Data : 0418BF
309  *   OUI data Mask: E0 - 11100000
310  *   Info Mask : 21 - Check for Band
311  *   Capabilities: 40 - Band == 2G
312  *
313  * Related: None
314  *
315  * Supported Feature: Action OUIs
316  *
317  * Usage: External
318  *
319  * </ini>
320  */
321 #define CFG_ACTION_OUI_SWITCH_TO_11N_MODE CFG_INI_STRING( \
322 	"gActionOUISwitchTo11nMode", \
323 	0, \
324 	ACTION_OUI_MAX_STR_LEN, \
325 	"00904C 05 0418BF0CB2 F8 21 40", \
326 	"Used to specify action OUIs for switching to 11n")
327 
328 /*
329  * <ini>
330  * gActionOUIConnect1x1with1TxRxChain - Used to specify action OUIs for
331  *					 1x1 connection with one Tx/Rx Chain
332  * @Default:
333  * Note: User should strictly add new action OUIs at the end of this
334  * default value.
335  *
336  * Default OUIs: (All values in Hex)
337  * OUI 1 : 001018
338  *   OUI data Len : 06
339  *   OUI Data : 02FFF0040000
340  *   OUI data Mask: BC - 10111100
341  *   Info Mask : 21 - Check for Band
342  *   Capabilities: 40 - Band == 2G
343  *
344  * OUI 2 : 001018
345  *   OUI data Len : 06
346  *   OUI Data : 02FFF0050000
347  *   OUI data Mask: BC - 10111100
348  *   Info Mask : 21 - Check for Band
349  *   Capabilities: 40 - Band == 2G
350  *
351  * OUI 3 : 001018
352  *   OUI data Len : 06
353  *   OUI Data : 02FFF4050000
354  *   OUI data Mask: BC - 10111100
355  *   Info Mask : 21 - Check for Band
356  *   Capabilities: 40 - Band == 2G
357  *
358  * This ini is used to specify the AP OUIs with which only 1x1 connection
359  * with one Tx/Rx Chain is allowed.
360  *
361  * Related: gEnableActionOUI
362  *
363  * Supported Feature: Action OUIs
364  *
365  * Usage: External
366  *
367  * </ini>
368  */
369 #define CFG_ACTION_OUI_CONNECT_1X1_WITH_1_CHAIN CFG_INI_STRING( \
370 	 "gActionOUIConnect1x1with1TxRxChain", \
371 	 0, \
372 	 ACTION_OUI_MAX_STR_LEN, \
373 	 "001018 06 02FFF0040000 BC 21 40 001018 06 02FFF0050000 BC 21 40 001018 06 02FFF4050000 BC 21 40", \
374 	 "Used to specify action OUIs for 1x1 connection with one Tx/Rx Chain")
375 
376 /*
377  * <ini>
378  * gActionOUIDisableAggressiveTX - Used to specify action OUIs to disable
379  * Aggressive TX feature when operating in softap.
380  *
381  * @Default:
382  * Note: User should strictly add new action OUIs at the end of this
383  * default value.
384  *
385  * Default OUIs:
386  *
387  * OUI 1 : FFFFFF
388  *   OUI data Len : 00
389  *   OUI Data: No data
390  *   OUI data Mask: No data mask
391  *   Info Mask:  2A - Check for mac-addr, HT capability and Band
392  *   Mac-addr: F8:59:71:00:00:00 - first 3 bytes
393  *   Mac-mask: E0 - Match only first 3 bytes of peer mac-addr
394  *   Capabilities: 50 – HT should be enabled, and band should be 2.4GHz
395  *
396  * OUI 2 : FFFFFF
397  *   OUI data Len : 00
398  *   OUI Data: No data
399  *   OUI data Mask: No data mask
400  *   Info Mask:  2A - Check for mac-addr, HT capability and Band
401  *   Mac-addr: 14:AB:C5:00:00:00 - first 3 bytes
402  *   Mac-mask: E0 - Match only first 3 bytes of peer mac-addr
403  *   Capabilities: 50 – HT should be enabled, and band should be 2.4GHz
404  *
405  * When operating in Softap mode, this ini is used to specify
406  * STA (peer) OUIs/mac-addr for which aggressive tx is disabled after
407  * association is successful.
408  *
409  * Related: gEnableActionOUI
410  *
411  * Supported Feature: Action OUIs
412  *
413  * Usage: External
414  *
415  * </ini>
416  */
417 #define CFG_ACTION_OUI_DISABLE_AGGRESSIVE_TX CFG_INI_STRING( \
418 	"gActionOUIDisableAggressiveTX", \
419 	0, \
420 	ACTION_OUI_MAX_STR_LEN, \
421 	"FFFFFF 00 2A F85971000000 E0 50 FFFFFF 00 2A 14ABC5000000 E0 50", \
422 	"Used to specify action OUIs to disable aggressive TX")
423 
424 /*
425  * <ini>
426  * gActionOUIDisableAggressiveEDCA - Used to specify action OUIs to control
427  * EDCA configuration when join the candidate AP
428  *
429  * @Default: NULL
430  * Note: User should strictly add new action OUIs at the end of this
431  * default value.
432  *
433  * This ini is used to specify AP OUIs. The station's EDCA should follow the
434  * APs' when connecting to those AP, even if the gEnableEdcaParams is set.
435  * For example, it follows the AP's EDCA whose OUI is 0050F2 with the
436  * following setting:
437  *     gActionOUIDisableAggressiveEDCA=0050F2 00 01
438  *          Explain: 0050F2: OUI
439  *                   00: data length is 0
440  *                   01: info mask, only OUI present in Info mask
441  * Refer to gEnableActionOUI for more detail about the format.
442  *
443  * Related: gEnableEdcaParams, gEnableActionOUI
444  *
445  * Supported Feature: Action OUIs
446  *
447  * Usage: External
448  *
449  * </ini>
450  */
451 #define CFG_ACTION_OUI_DISABLE_AGGRESSIVE_EDCA CFG_INI_STRING( \
452 	"gActionOUIDisableAggressiveEDCA", \
453 	0, \
454 	ACTION_OUI_MAX_STR_LEN, \
455 	"", \
456 	"Used to specify action OUIs to control edca configuration")
457 
458 /*
459  * <ini>
460  * gActionOUIExtendWowITO - Used to extend ITO(Inactivity Time-Out) value under
461  * WoWLAN mode for specified APs.
462  *
463  * @Default: NULL
464  *
465  * Some APs sometimes don't honor Qos null frames under WoWLAN mode if
466  * station's ITO is too small. This ini is used to specify AP OUIs which
467  * exhibit this behavior. When connected to such an AP, the station's ITO
468  * value will be extended when in WoWLAN mode.
469  * For example, it extends the ITO value(under WoWLAN mode) when connected
470  * to AP whose OUI is 001018 and vendor specific data is 0201009C0000 with
471  * the following setting:
472  *     gActionOUIExtendWowITO=001018 06 0201009C0000 FC 01
473  *         OUI: 001018
474  *         OUI data Len : 06
475  *         OUI Data : 0201009C0000
476  *         OUI data Mask: FC - 11111100
477  *         Info Mask : 01 - only OUI present in Info mask
478  * Refer to gEnableActionOUI for more detail about the format.
479  *
480  * Related: gEnableActionOUI
481  *
482  * Supported Feature: Action OUIs
483  *
484  * Usage: External
485  *
486  * </ini>
487  */
488 #define CFG_ACTION_OUI_EXTEND_WOW_ITO CFG_INI_STRING( \
489 	"gActionOUIExtendWowITO", \
490 	0, \
491 	ACTION_OUI_MAX_STR_LEN, \
492 	"", \
493 	"Used to extend inactivity time out under WoWLAN mode for specified APs")
494 
495 /*
496  * <ini>
497  * gActionOUIReconnAssocTimeout - Used to specify action OUIs to
498  * reconnect to same BSSID when wait for association response timeout
499  *
500  * This ini is used to specify AP OUIs. Some of AP doesn't response our
501  * first association request, but it would response our second association
502  * request. Add such OUI configuration INI to apply reconnect logic when
503  * association timeout happends with such AP.
504  * For default:
505  *     gActionOUIReconnAssocTimeout=00E04C 00 01
506  *          Explain: 00E04C: OUI
507  *                   00: data length is 0
508  *                   01: info mask, only OUI present in Info mask
509  * Note: User should strictly add new action OUIs at the end of this
510  * default value.
511  * Refer to gEnableActionOUI for more detail about the format.
512  *
513  * Related: gEnableActionOUI
514  *
515  * Supported Feature: Action OUIs
516  *
517  * Usage: External
518  *
519  * </ini>
520  */
521 #define CFG_ACTION_OUI_RECONN_ASSOCTIMEOUT CFG_INI_STRING( \
522 	"gActionOUIReconnAssocTimeout", \
523 	0, \
524 	ACTION_OUI_MAX_STR_LEN, \
525 	"00E04C 00 01", \
526 	"Used to specify action OUIs to reconnect when assoc timeout")
527 
528 /*
529  * <ini>
530  * gActionOUIDisableTWT - Used to specify action OUIs to control TWT param
531  * while joining the candidate AP
532  *
533  * This ini is used to specify AP OUIs. Some APs advertise TWT but do not
534  * follow through when the STA reaches out to them. Thus, TWT will be
535  * disabled when we receive OUIs of those APs.
536  * Note: User should strictly add new action OUIs at the end of this
537  * default value.
538  *
539  * Default OUIs: (All values in Hex)
540  * OUI 1: 001018
541  *   OUI data Len: 00
542  *   Info Mask : 01 - only OUI present in Info mask
543  *
544  * OUI 2: 000986
545  *   OUI data Len: 00
546  *   Info Mask : 01 - only OUI present in Info mask
547  *
548  * OUI 3: 000ce7
549  *   OUI data Len: 00
550  *   Info Mask : 01 - only OUI present in Info mask
551  *
552  * OUI 4: 00e0fc
553  *   OUI data Len: 00
554  *   Info Mask : 01 - only OUI present in Info mask
555  *
556  * Refer to gEnableActionOUI for more detail about the format.
557  *
558  * Related: gEnableActionOUI
559  *
560  * Supported Feature: Action OUIs
561  *
562  * Usage: External
563  *
564  * </ini>
565  */
566 #define CFG_ACTION_OUI_DISABLE_TWT CFG_INI_STRING( \
567 	"gActionOUIDisableTWT", \
568 	0, \
569 	ACTION_OUI_MAX_STR_LEN, \
570 	"001018 00 01 000986 00 01 000ce7 00 01 00e0fc 00 01", \
571 	"Used to specify action OUIs to control TWT configuration")
572 
573 /*
574  * <ini>
575  * gActionOUITakeAllBandInfo - Used to specify action OUIs to check
576  * whether country ie need take all band channel information.
577  *
578  * This ini is used to specify STA association request OUIs. Some STA
579  * need AP country ie take all band channel information when do BSS
580  * transition across band. Thus, AP will take all band channel info
581  * when we receive association request with this OUIs.
582  * Note: User should strictly add new action OUIs at the end of this
583  * default value.
584  *
585  * Default OUIs: (All values in Hex)
586  * OUI 1: 0017f2
587  *   OUI data Len: 01
588  *   OUI Data : 0a
589  *   OUI data Mask: 80 - 10000000
590  *   Info Mask : 01 - only OUI present in Info mask
591  *
592  * Refer to gEnableActionOUI for more detail about the format.
593  *
594  * Related: gEnableActionOUI
595  *
596  * Supported Feature: Action OUIs
597  *
598  * Usage: External
599  *
600  * </ini>
601  */
602 #define CFG_ACTION_OUI_TAKE_ALL_BAND_INFO CFG_INI_STRING( \
603 	"gActionOUITakeAllBandInfo", \
604 	0, \
605 	ACTION_OUI_MAX_STR_LEN, \
606 	"0017f2 01 0a 80 01", \
607 	"Used to specify action OUIs to control country ie")
608 
609 /*
610  * <ini>
611  * g11be_oui_allow_list - Used to specify 802.11be allowed ap oui list
612  *
613  * This ini is used to specify AP OUIs for which station can connect
614  * in 802.11be mode with the 802.11be AP.
615  * If no OUI set, then allow STA to connect to All 802.11be AP in 802.11be
616  * mode.
617  * If INI is set to "ffffff 00 01", then STA is not allowed to connect to
618  * any AP in 802.11be mode.
619  *
620  * Related: None
621  *
622  * Supported Feature: Action OUIs
623  *
624  * Usage: External
625  *
626  * </ini>
627  */
628 #define CFG_ACTION_OUI_11BE_ALLOW_LIST CFG_INI_STRING( \
629 	"g11be_oui_allow_list", \
630 	0, \
631 	ACTION_OUI_MAX_STR_LEN, \
632 	"", \
633 	"Used to specify 11be allowed ap oui list")
634 
635 /*
636  * <ini>
637  * gActionOUIDisableDynamicQosNullTxRate - Used to turn off FW's dynamic qos
638  * null tx rate feature if specific vendor OUI received in beacon
639  *
640  * Some APs sometimes don't honor Qos null frames with some specific rate.
641  * This ini will disable dynamic qos null tx rate feature for specified APs.
642  *
643  * Default OUIs: (All values in Hex)
644  * OUI 1: 00e04c
645  *   OUI data Len: 03
646  *   OUI Data : 020160
647  *   OUI data Mask: E0 - 11100000
648  *   Info Mask : 01 - only OUI present in Info mask
649  *
650  * OUI 2: 001018
651  *   OUI data Len : 06
652  *   OUI Data : 02FF009C0000
653  *   OUI data Mask: BC - 10111100
654  *   Info Mask : 01 - only OUI present in Info mask
655  * Refer to gEnableActionOUI for more detail about the format.
656  *
657  * Related: gEnableActionOUI
658  *
659  * Supported Feature: Action OUIs
660  *
661  * Usage: External
662  *
663  * </ini>
664  */
665 #define CFG_ACTION_OUI_DISABLE_DYNAMIC_QOS_NULL_TX_RATE CFG_INI_STRING( \
666 	"gActionOUIDisableDynamicQosNullTxRate", \
667 	0, \
668 	ACTION_OUI_MAX_STR_LEN, \
669 	"00e04c 03 020160 E0 01 001018 06 02FF009c0000 BC 01", \
670 	"Used to turn off FW's dynamic qos null tx rate for specified APs")
671 
672 /*
673  * <ini>
674  * gActionOUIAuthAssoc6Mbps2GHz - Used to send auth/assoc req with 6 Mbps rate
675  * on 2.4 GHz for specified AP
676  *
677  * Some AP sometimes doesn't honor auth/assoc with CCK rate.
678  * This ini will provide 6 Mbps rate for auth/assoc in 2.4 GHz.
679  *
680  * Example OUIs: (All values in Hex)
681  * OUI 1: 000c43
682  *       OUI data Len: 04
683  *       OUI Data : 03000000
684  *       OUI data Mask: F0 - 11110000
685  *       Info Mask : 01 - only OUI present in Info mask
686  *
687  * Refer to gEnableActionOUI for more detail about the format.
688  *
689  * Related: gEnableActionOUI
690  *
691  * Supported Feature: Action OUIs
692  *
693  * Usage: External
694  *
695  * </ini>
696  */
697 #define CFG_ACTION_OUI_AUTH_ASSOC_6MBPS_2GHZ CFG_INI_STRING( \
698 	"gActionOUIAuthAssoc6Mbps2GHz", \
699 	0, \
700 	ACTION_OUI_MAX_STR_LEN, \
701 	"", \
702 	"send auth/assoc req with 6 Mbps rate on 2.4 GHz for specified APs")
703 
704 /*
705  * <ini>
706  * CFG_ACTION_OUI_DISABLE_BFORMEE - Used to disable SU/MU beamformee
707  * capability for specified AP with some conditions
708  *
709  * Example OUIs: (All values in Hex)
710  * OUI 1: 000c43
711  *       OUI data Len: 04
712  *       OUI Data : 03000000
713  *       OUI data Mask: F0 - 11110000
714  *       Info Mask : 01 - only OUI present in Info mask
715  *
716  * Refer to gEnableActionOUI for more detail about the format.
717  *
718  * Related: gEnableActionOUI
719  *
720  * Supported Feature: Action OUIs
721  *
722  * Usage: External
723  *
724  * </ini>
725  */
726 #define CFG_ACTION_OUI_DISABLE_BFORMEE CFG_INI_STRING( \
727 	"gActionOUIDisableBFORMEE", \
728 	0, \
729 	ACTION_OUI_MAX_STR_LEN, \
730 	"", \
731 	"disable SU/MU beamformee capability for specified AP")
732 
733 /*
734  * <ini>
735  * gActionOUIEnableCTS2SelfWithQoSNull - Used to enable CTS2SELF with QoS null
736  * frame for specified APs
737  *
738  * Sample OUIs: (All values in Hex)
739  * OUI 1: 000c43
740  *   OUI data Len: 04
741  *   OUI Data : 03000000
742  *   OUI data Mask: F0 - 11110000
743  *   Info Mask : 01 - only OUI present in Info mask
744  *
745  * gActionOUIEnableCTS2SelfWithQoSNull=000c43 04 03000000 F0 01
746  *
747  * Refer to gEnableActionOUI for more detail about the format.
748  *
749  * Related: gEnableActionOUI
750  *
751  * Supported Feature: Action OUIs
752  *
753  * Usage: External
754  *
755  * </ini>
756  */
757 #define CFG_ACTION_OUI_ENABLE_CTS2SELF_WITH_QOS_NULL CFG_INI_STRING( \
758 	"gActionOUIEnableCTS2SelfWithQoSNull", \
759 	0, \
760 	ACTION_OUI_MAX_STR_LEN, \
761 	"", \
762 	"Used to enable CTS2SELF with QoS null frame for specified APs")
763 
764 /*
765  * <ini>
766  * g_action_oui_enable_cts_2_self - Used to enable CTS2SELF for specified APs
767  *
768  * Default OUIs: (All values in Hex)
769  * OUI 1: 000C43
770  * OUI data Len: 04
771  * OUI Data : 07000000
772  * OUI data Mask: F0 - 11110000
773  * Info Mask : 21 - 0010 0001 Check for OUI and Band
774  * Capabilities: C0 - 1100 0000 Band == 2 GHz || Band == 5 GHz
775  *
776  * OUI 2 : 000C43
777  * OUI data Len : 04
778  * OUI Data : 03000000
779  * OUI data Mask: F0 - 11110000
780  * Info Mask : 21 - 0010 0001 Check for OUI and Band
781  * Capabilities: C0 - 1100 0000 Band == 2 GHz || Band == 5 GHz
782  *
783  * g_action_oui_enable_cts_2_self=000C43 04 07000000 F0 21 C0 000C43 04 03000000 F0 21 C0
784  *
785  * Refer to gEnableActionOUI for more detail about the format.
786  *
787  * Related: gEnableActionOUI
788  *
789  * Supported Feature: Action OUIs
790  *
791  * Usage: External
792  *
793  * </ini>
794  */
795 #define CFG_ACTION_OUI_ENABLE_CTS2SELF CFG_INI_STRING( \
796 	"g_action_oui_enable_cts_2_self", \
797 	0, \
798 	ACTION_OUI_MAX_STR_LEN, \
799 	"000C43 04 07000000 F0 21 C0 000C43 04 03000000 F0 21 C0", \
800 	"Used to enable CTS2SELF frame for specified APs")
801 
802 /*
803  * <ini>
804  * gActionOUISendSMPSFrameWithOMN - Used to send SMPS frame along with OMN
805  * for specified APs
806  *
807  * Sample OUIs: (All values in Hex)
808  * OUI 1: 000ce7
809  *   OUI data Len: 04
810  *   OUI Data : 88000000
811  *   OUI data Mask: F0 - 11110000
812  *   Info Mask : 01 - only OUI present in Info mask
813  *
814  * gActionOUISendSMPSFrameWithOMN=000ce7 04 88000000 F0 01
815  *
816  * Refer to gEnableActionOUI for more detail about the format.
817  *
818  * Related: gEnableActionOUI
819  *
820  * Supported Feature: Action OUIs
821  *
822  * Usage: External
823  *
824  * </ini>
825  */
826 #define CFG_ACTION_OUI_SEND_SMPS_FRAME_WITH_OMN CFG_INI_STRING( \
827 	"gActionOUISendSMPSFrameWithOMN", \
828 	0, \
829 	ACTION_OUI_MAX_STR_LEN, \
830 	"", \
831 	"Used to send SMPS frame along with OMN for specified APs")
832 
833 /*
834  * <ini>
835  * gActionOUIRestrictMaxMLOLinks - Used to downgrade 3 link to 2 link ML
836  * connection for specific AP build version.
837  *
838  * Sample OUIs: (All values in Hex)
839  * OUI 3 : 8CFDF0
840  *   OUI data Len : 13
841  *   OUI Data : 040000494c510302097201cb17000009110000
842  *   OUI data Mask: FFFFE0 - 1111 1111 1111 1111 1110 0000
843  *   Info Mask : 01 - only OUI present in Info mask
844  *
845  * gActionOUIRestrictMaxMLOLinks=8CFDF0 13 040000494c510c00203000cb17000009110000 FFFFE0 01
846  * Refer to gEnableActionOUI for more detail about the format.
847  *
848  * Related: gEnableActionOUI
849  *
850  * Supported Feature: Action OUIs
851  *
852  * Usage: External
853  *
854  * </ini>
855  */
856 #define CFG_ACTION_OUI_RESTRICT_MAX_MLO_LINKS CFG_INI_STRING( \
857 	"gActionOUIRestrictMaxMLOLinks", \
858 	0, \
859 	ACTION_OUI_MAX_STR_LEN, \
860 	"8CFDF0 13 040000494c510302097201cb17000009110000 FFFFE0 01", \
861 	"To restrict matching OUI APs to two link connection at max")
862 
863 /*
864  * <ini>
865  * CFG_ACTION_OUI_LIMIT_BW - Used to limit BW for specified AP
866  *
867  * Example OUIs: (All values in Hex)
868  * OUI 1: 00904c
869  *       OUI data Len: 04
870  *       OUI Data : 0201009C
871  *       OUI data Mask: F0 - 11110000
872  *       Info Mask : 01 - only OUI present in Info mask
873  *
874  * Refer to gEnableActionOUI for more detail about the format.
875  *
876  * Related: gEnableActionOUI
877  *
878  * Supported Feature: Action OUIs
879  *
880  * Usage: External
881  *
882  * </ini>
883  */
884 #define CFG_ACTION_OUI_LIMIT_BW CFG_INI_STRING( \
885 	"gActionOUILimitBW", \
886 	0, \
887 	ACTION_OUI_MAX_STR_LEN, \
888 	"", \
889 	"Limit BW for specified AP")
890 
891 #define CFG_ACTION_OUI \
892 	CFG(CFG_ACTION_OUI_CCKM_1X1) \
893 	CFG(CFG_ACTION_OUI_CONNECT_1X1) \
894 	CFG(CFG_ACTION_OUI_CONNECT_1X1_WITH_1_CHAIN) \
895 	CFG(CFG_ACTION_OUI_ITO_ALTERNATE) \
896 	CFG(CFG_ACTION_OUI_ITO_EXTENSION) \
897 	CFG(CFG_ACTION_OUI_DISABLE_AGGRESSIVE_TX) \
898 	CFG(CFG_ACTION_OUI_DISABLE_AGGRESSIVE_EDCA) \
899 	CFG(CFG_ACTION_OUI_EXTEND_WOW_ITO) \
900 	CFG(CFG_ACTION_OUI_SWITCH_TO_11N_MODE) \
901 	CFG(CFG_ACTION_OUI_RECONN_ASSOCTIMEOUT) \
902 	CFG(CFG_ACTION_OUI_DISABLE_TWT) \
903 	CFG(CFG_ACTION_OUI_TAKE_ALL_BAND_INFO) \
904 	CFG(CFG_ACTION_OUI_11BE_ALLOW_LIST) \
905 	CFG(CFG_ACTION_OUI_DISABLE_DYNAMIC_QOS_NULL_TX_RATE) \
906 	CFG(CFG_ACTION_OUI_ENABLE_CTS2SELF) \
907 	CFG(CFG_ACTION_OUI_ENABLE_CTS2SELF_WITH_QOS_NULL) \
908 	CFG(CFG_ACTION_OUI_RESTRICT_MAX_MLO_LINKS) \
909 	CFG(CFG_ACTION_OUI_SEND_SMPS_FRAME_WITH_OMN) \
910 	CFG(CFG_ACTION_OUI_AUTH_ASSOC_6MBPS_2GHZ) \
911 	CFG(CFG_ACTION_OUI_DISABLE_BFORMEE) \
912 	CFG(CFG_ACTION_OUI_LIMIT_BW) \
913 	CFG(CFG_ENABLE_ACTION_OUI)
914 #endif
915