diff --git a/components/action_oui/core/inc/wlan_action_oui_priv.h b/components/action_oui/core/inc/wlan_action_oui_priv.h index 02e58b501f..114cfd6f0f 100644 --- a/components/action_oui/core/inc/wlan_action_oui_priv.h +++ b/components/action_oui/core/inc/wlan_action_oui_priv.h @@ -88,12 +88,16 @@ struct action_oui_priv { /** * struct action_oui_psoc_priv - Private object to be stored in psoc * @psoc: pointer to psoc object + * @action_oui_enable: action oui enable + * @action_oui_str: oui configuration strings * @total_extensions: total count of extensions from all actions * @oui_priv: array of pointers used to refer each action info * @tx_ops: call-back functions to send OUIs to firmware */ struct action_oui_psoc_priv { struct wlan_objmgr_psoc *psoc; + bool action_oui_enable; + uint8_t action_oui_str[ACTION_OUI_MAXIMUM_ID][ACTION_OUI_MAX_STR_LEN]; uint32_t total_extensions; struct action_oui_priv *oui_priv[ACTION_OUI_MAXIMUM_ID]; struct action_oui_tx_ops tx_ops; @@ -115,6 +119,23 @@ QDF_STATUS action_oui_parse(struct action_oui_psoc_priv *psoc_priv, uint8_t *oui_string, enum action_oui_id action_id); +/** + * action_oui_parse_string() - Parse action oui string + * @psoc: psoc object + * @in_str: string to be parsed + * @action_id: type of the action to be parsed + * + * This function will validate the input string and call action_oui_parse + * to parse it. + * + * Return: QDF_STATUS + * + */ +QDF_STATUS +action_oui_parse_string(struct wlan_objmgr_psoc *psoc, + const uint8_t *in_str, + enum action_oui_id action_id); + /** * action_oui_send() - Send action oui extensions to target_if. * @psoc_priv: pointer to action_oui psoc priv obj diff --git a/components/action_oui/core/src/wlan_action_oui_main.c b/components/action_oui/core/src/wlan_action_oui_main.c index 87b1b08402..bad3573f19 100644 --- a/components/action_oui/core/src/wlan_action_oui_main.c +++ b/components/action_oui/core/src/wlan_action_oui_main.c @@ -21,7 +21,8 @@ * DOC: Implement various notification handlers which are accessed * internally in action_oui component only. */ - +#include "cfg_ucfg_api.h" +#include "wlan_action_oui_cfg.h" #include "wlan_action_oui_main.h" #include "wlan_action_oui_public_struct.h" #include "wlan_action_oui_tgt_api.h" @@ -124,6 +125,127 @@ action_oui_destroy(struct action_oui_psoc_priv *psoc_priv) } } +static void action_oui_load_config(struct action_oui_psoc_priv *psoc_priv) +{ + struct wlan_objmgr_psoc *psoc = psoc_priv->psoc; + + psoc_priv->action_oui_enable = + cfg_get(psoc, CFG_ENABLE_ACTION_OUI); + + qdf_str_lcopy(psoc_priv->action_oui_str[ACTION_OUI_CONNECT_1X1], + cfg_get(psoc, CFG_ACTION_OUI_CONNECT_1X1), + ACTION_OUI_MAX_STR_LEN); + qdf_str_lcopy(psoc_priv->action_oui_str[ACTION_OUI_ITO_EXTENSION], + cfg_get(psoc, CFG_ACTION_OUI_ITO_EXTENSION), + ACTION_OUI_MAX_STR_LEN); + qdf_str_lcopy(psoc_priv->action_oui_str[ACTION_OUI_CCKM_1X1], + cfg_get(psoc, CFG_ACTION_OUI_CCKM_1X1), + ACTION_OUI_MAX_STR_LEN); + qdf_str_lcopy(psoc_priv->action_oui_str[ACTION_OUI_ITO_ALTERNATE], + cfg_get(psoc, CFG_ACTION_OUI_ITO_ALTERNATE), + ACTION_OUI_MAX_STR_LEN); + qdf_str_lcopy(psoc_priv->action_oui_str[ACTION_OUI_SWITCH_TO_11N_MODE], + cfg_get(psoc, CFG_ACTION_OUI_SWITCH_TO_11N_MODE), + ACTION_OUI_MAX_STR_LEN); + qdf_str_lcopy(psoc_priv->action_oui_str[ACTION_OUI_CONNECT_1X1_WITH_1_CHAIN], + cfg_get(psoc, + CFG_ACTION_OUI_CONNECT_1X1_WITH_1_CHAIN), + ACTION_OUI_MAX_STR_LEN); + qdf_str_lcopy(psoc_priv->action_oui_str[ACTION_OUI_DISABLE_AGGRESSIVE_TX], + cfg_get(psoc, + CFG_ACTION_OUI_DISABLE_AGGRESSIVE_TX), + ACTION_OUI_MAX_STR_LEN); + qdf_str_lcopy(psoc_priv->action_oui_str[ACTION_OUI_FORCE_MAX_NSS], + cfg_get(psoc, CFG_ACTION_OUI_FORCE_MAX_NSS), + ACTION_OUI_MAX_STR_LEN); + qdf_str_lcopy(psoc_priv->action_oui_str + [ACTION_OUI_DISABLE_AGGRESSIVE_EDCA], + cfg_get(psoc, + CFG_ACTION_OUI_DISABLE_AGGRESSIVE_EDCA), + ACTION_OUI_MAX_STR_LEN); + qdf_str_lcopy(psoc_priv->action_oui_str[ACTION_OUI_EXTEND_WOW_ITO], + cfg_get(psoc, CFG_ACTION_OUI_EXTEND_WOW_ITO), + ACTION_OUI_MAX_STR_LEN); + qdf_str_lcopy(psoc_priv->action_oui_str[ACTION_OUI_DISABLE_TWT], + cfg_get(psoc, CFG_ACTION_OUI_DISABLE_TWT), + ACTION_OUI_MAX_STR_LEN); + qdf_str_lcopy(psoc_priv->action_oui_str[ACTION_OUI_HOST_RECONN], + cfg_get(psoc, CFG_ACTION_OUI_RECONN_ASSOCTIMEOUT), + ACTION_OUI_MAX_STR_LEN); + qdf_str_lcopy(psoc_priv->action_oui_str[ACTION_OUI_TAKE_ALL_BAND_INFO], + cfg_get(psoc, CFG_ACTION_OUI_TAKE_ALL_BAND_INFO), + ACTION_OUI_MAX_STR_LEN); + qdf_str_lcopy(psoc_priv->action_oui_str[ACTION_OUI_11BE_OUI_ALLOW], + cfg_get(psoc, CFG_ACTION_OUI_11BE_ALLOW_LIST), + ACTION_OUI_MAX_STR_LEN); +} + +static void action_oui_parse_config(struct wlan_objmgr_psoc *psoc) +{ + QDF_STATUS status; + uint32_t id; + uint8_t *str; + struct action_oui_psoc_priv *psoc_priv; + + if (!psoc) { + action_oui_err("Invalid psoc"); + return; + } + + psoc_priv = action_oui_psoc_get_priv(psoc); + if (!psoc_priv) { + action_oui_err("psoc priv is NULL"); + return; + } + if (!psoc_priv->action_oui_enable) { + action_oui_debug("action_oui is not enable"); + return; + } + for (id = 0; id < ACTION_OUI_MAXIMUM_ID; id++) { + str = psoc_priv->action_oui_str[id]; + if (!qdf_str_len(str)) + continue; + + status = action_oui_parse_string(psoc, str, id); + if (!QDF_IS_STATUS_SUCCESS(status)) + action_oui_err("Failed to parse action_oui str: %u", + id); + } +} + +static QDF_STATUS action_oui_send_config(struct wlan_objmgr_psoc *psoc) +{ + struct action_oui_psoc_priv *psoc_priv; + QDF_STATUS status = QDF_STATUS_E_INVAL; + uint32_t id; + + if (!psoc) { + action_oui_err("psoc is NULL"); + goto exit; + } + + psoc_priv = action_oui_psoc_get_priv(psoc); + if (!psoc_priv) { + action_oui_err("psoc priv is NULL"); + goto exit; + } + if (!psoc_priv->action_oui_enable) { + action_oui_debug("action_oui is not enable"); + return QDF_STATUS_SUCCESS; + } + + for (id = 0; id < ACTION_OUI_MAXIMUM_ID; id++) { + if (id >= ACTION_OUI_HOST_ONLY) + continue; + status = action_oui_send(psoc_priv, id); + if (!QDF_IS_STATUS_SUCCESS(status)) + action_oui_err("Failed to send: %u", id); + } + +exit: + return status; +} + QDF_STATUS action_oui_psoc_create_notification(struct wlan_objmgr_psoc *psoc, void *arg) { @@ -148,7 +270,7 @@ action_oui_psoc_create_notification(struct wlan_objmgr_psoc *psoc, void *arg) target_if_action_oui_register_tx_ops(&psoc_priv->tx_ops); psoc_priv->psoc = psoc; - + action_oui_load_config(psoc_priv); action_oui_debug("psoc priv attached"); goto exit; free_psoc_priv: @@ -204,6 +326,8 @@ void action_oui_psoc_enable(struct wlan_objmgr_psoc *psoc) action_oui_err("Failed to alloc action_oui"); goto exit; } + action_oui_parse_config(psoc); + action_oui_send_config(psoc); exit: ACTION_OUI_EXIT(); } diff --git a/components/action_oui/core/src/wlan_action_oui_parse.c b/components/action_oui/core/src/wlan_action_oui_parse.c index c23fce7d6c..5ca340bd99 100644 --- a/components/action_oui/core/src/wlan_action_oui_parse.c +++ b/components/action_oui/core/src/wlan_action_oui_parse.c @@ -535,6 +535,11 @@ action_oui_parse(struct action_oui_psoc_priv *psoc_priv, return QDF_STATUS_E_INVAL; } + if (!psoc_priv->action_oui_enable) { + action_oui_debug("action_oui is not enable"); + return QDF_STATUS_SUCCESS; + } + str1 = qdf_str_trim((char *)oui_string); while (str1) { @@ -669,6 +674,60 @@ action_oui_parse(struct action_oui_psoc_priv *psoc_priv, return QDF_STATUS_SUCCESS; } +QDF_STATUS +action_oui_parse_string(struct wlan_objmgr_psoc *psoc, + const uint8_t *in_str, + enum action_oui_id action_id) +{ + struct action_oui_psoc_priv *psoc_priv; + QDF_STATUS status = QDF_STATUS_E_INVAL; + uint8_t *oui_str; + int len; + + ACTION_OUI_ENTER(); + + if (!psoc) { + action_oui_err("psoc is NULL"); + goto exit; + } + + if (action_id >= ACTION_OUI_MAXIMUM_ID) { + action_oui_err("Invalid action_oui id: %u", action_id); + goto exit; + } + + psoc_priv = action_oui_psoc_get_priv(psoc); + if (!psoc_priv) { + action_oui_err("psoc priv is NULL"); + goto exit; + } + + len = qdf_str_len(in_str); + if (len <= 0 || len > ACTION_OUI_MAX_STR_LEN - 1) { + action_oui_err("Invalid string length: %u", action_id); + goto exit; + } + + oui_str = qdf_mem_malloc(len + 1); + if (!oui_str) { + status = QDF_STATUS_E_NOMEM; + goto exit; + } + + qdf_mem_copy(oui_str, in_str, len); + oui_str[len] = '\0'; + + status = action_oui_parse(psoc_priv, oui_str, action_id); + if (!QDF_IS_STATUS_SUCCESS(status)) + action_oui_err("Failed to parse: %u", action_id); + + qdf_mem_free(oui_str); + +exit: + ACTION_OUI_EXIT(); + return status; +} + QDF_STATUS action_oui_send(struct action_oui_psoc_priv *psoc_priv, enum action_oui_id action_id) { @@ -687,6 +746,11 @@ QDF_STATUS action_oui_send(struct action_oui_psoc_priv *psoc_priv, if (!oui_priv) return QDF_STATUS_SUCCESS; + if (!psoc_priv->action_oui_enable) { + action_oui_debug("action_oui is not enable"); + return QDF_STATUS_SUCCESS; + } + extension_list = &oui_priv->extension_list; qdf_mutex_acquire(&oui_priv->extension_lock); diff --git a/components/action_oui/dispatcher/inc/wlan_action_oui_cfg.h b/components/action_oui/dispatcher/inc/wlan_action_oui_cfg.h new file mode 100644 index 0000000000..8826b82c69 --- /dev/null +++ b/components/action_oui/dispatcher/inc/wlan_action_oui_cfg.h @@ -0,0 +1,693 @@ +/* + * Copyright (c) 2012-2021 The Linux Foundation. All rights reserved. + * Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved. + * + * Permission to use, copy, modify, and/or distribute this software for + * any purpose with or without fee is hereby granted, provided that the + * above copyright notice and this permission notice appear in all + * copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL + * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE + * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR + * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +/** + * DOC: This file contains centralized definitions of action oui configuration. + */ +#ifndef __WLAN_ACTION_OUI_CFG_H__ +#define __WLAN_ACTION_OUI_CFG_H__ +/* + * Start of action oui inis + * + * To enable action oui feature, set gEnableActionOUI + * + * Each action oui is expected in the following format: + * ..... (maximum 10) + * + * whereas, each Extension is separated by space and have the following format: + * + * where each Token is a string of hexa-decimal digits and + * following are the details about each token + * + * Token1 = OUI + * Token2 = Data_Length + * Token3 = Data + * Token4 = Data_Mask + * Token5 = Info_Presence_Bit + * Token6 = MAC_Address + * Token7 = Mac_Address Mask + * Token8 = Capability + * + * is mandatory and it can be either 3 or 5 bytes means 6 or 10 + * hexa-decimal characters + * If the OUI and Data checks needs to be ignored, the oui FFFFFF + * needs to be provided as OUI and bit 0 of Info_Presence_Bit should + * be set to 0. + * + * is mandatory field and should give length of + * the if present else zero + * + * Presence of is controlled by , if is 0, + * then is not expected else Data of the size Data Length bytes are + * expected which means the length of Data string is 2 * Data Length, + * since every byte constitutes two hexa-decimal characters. + * + * is mandatory if is present and length of the + * Data mask string depends on the + * If is 06, then length of Data Mask string is + * 2 characters (represents 1 byte) + * data_mask_length = ((Data_Length - (Data_Length % 8)) / 8) + + * ((Data_Length % 8) ? 1 : 0) + * and has to be constructed from left to right. + * + * Presence of and is + * controlled by which is mandatory + * will give the information for + * OUI – bit 0 Should be set to 1 + * Setting to 0 will ignore OUI and data check + * Mac Address present – bit 1 + * NSS – bit 2 + * HT check – bit 3 + * VHT check – bit 4 + * Band info – bit 5 + * reserved – bit 6 (should always be zero) + * reserved – bit 7 (should always be zero) + * and should be constructed from right to left (b7b6b5b4b3b2b1b0) + * + * for should be constructed from left to right + * + * is 1 byte long and it contains the below info + * NSS – 4 bits starting from LSB (b0 – b3) + * HT enabled – bit 4 + * VHT enabled – bit 5 + * 2G band – bit 6 + * 5G band – bit 7 + * and should be constructed from right to left (b7b6b5b4b3b2b1b0) + * is present if at least one of the bit is set + * from b2 - b6 in + * + * Example 1: + * + * OUI is 00-10-18, data length is 05 (hex form), data is 02-11-04-5C-DE and + * need to consider first 3 bytes and last byte of data for comparison + * mac-addr EE-1A-59-FE-FD-AF is present and first 3 bytes and last byte of + * mac address should be considered for comparison + * capability is not present + * then action OUI for gActionOUIITOExtension is as follows: + * + * gActionOUIITOExtension=001018 05 0211045CDE E8 03 EE1A59FEFDAF E4 + * + * data mask calculation in above example: + * Data[0] = 02 ---- d0 = 1 + * Data[1] = 11 ---- d1 = 1 + * Data[2] = 04 ---- d2 = 1 + * Data[3] = 5C ---- d3 = 0 + * Data[4] = DE ---- d4 = 1 + * data_mask = d0d1d2d3d4 + append with zeros to complete 8-bit = 11101000 = E8 + * + * mac mask calculation in above example: + * mac_addr[0] = EE ---- m0 = 1 + * mac_addr[1] = 1A ---- m1 = 1 + * mac_addr[2] = 59 ---- m2 = 1 + * mac_addr[3] = FE ---- m3 = 0 + * mac_addr[4] = FD ---- m4 = 0 + * mac_addr[5] = AF ---- m5 = 1 + * mac_mask = m0m1m2m3m4m5 + append with zeros to complete 8-bit = 11100100 = E4 + * + * Example 2: + * + * OUI is 00-10-18, data length is 00 and no Mac Address and capability + * + * gActionOUIITOExtension=001018 00 01 + * + */ + +/* + * + * gEnableActionOUI - Enable/Disable action oui feature + * @Min: 0 (disable) + * @Max: 1 (enable) + * @Default: 1 (enable) + * + * This ini is used to enable the action oui feature to control + * mode of connection, connected AP's in-activity time, Tx rate etc., + * + * Related: If gEnableActionOUI is set, then at least one of the following inis + * must be set with the proper action oui extensions: + * gActionOUIConnect1x1, gActionOUIITOExtension, gActionOUICCKM1X1 + * + * Supported Feature: action ouis + * + * Usage: External + * + * + */ +#define CFG_ENABLE_ACTION_OUI CFG_INI_BOOL( \ + "gEnableActionOUI", \ + 1, \ + "Enable/Disable action oui feature") + +/* + * + * gActionOUIConnect1x1 - Used to specify action OUIs for 1x1 connection + * @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 + * Note: User should strictly add new action OUIs at the end of this + * default value. + * + * Default OUIs: (All values in Hex) + * OUI 1 : 000C43 + * OUI data Len : 00 + * Info Mask : 25 - Check for NSS and Band + * Capabilities: C2 - NSS == 2 && Band == 2G || Band == 5G + * OUI 2 : 001018 + * OUI data Len : 06 + * OUI Data : 02FFF02C0000 + * OUI data Mask: BC - 10111100 + * Info Mask : 25 - Check for NSS and Band + * Capabilities: 42 - NSS == 2 && Band == 2G + * OUI 3 : 001018 + * OUI data Len : 06 + * OUI Data : 02FF040C0000 + * OUI data Mask: BC - 10111100 + * Info Mask : 25 - Check for NSS and Band + * Capabilities: 42 - NSS == 2 && Band == 2G + * OUI 4 : 00037F + * OUI data Len : 00 + * Info Mask : 35 - Check for NSS, VHT Caps and Band + * Capabilities: 6C - (NSS == 3 or 4) && VHT Caps Preset && Band == 2G + * OUI 5 : 001018 + * OUI data Len : 06 + * OUI Data : 02FF009C0000 + * OUI data Mask: BC - 10111100 + * Info Mask : 25 - Check for NSS and Band + * Capabilities: 48 - NSS == 4 && Band == 2G + * + * This ini is used to specify the AP OUIs with which only 1x1 connection + * is allowed. + * + * Related: None + * + * Supported Feature: Action OUIs + * + * Usage: External + * + * + */ +#define CFG_ACTION_OUI_CONNECT_1X1 CFG_INI_STRING( \ + "gActionOUIConnect1x1", \ + 0, \ + ACTION_OUI_MAX_STR_LEN, \ + "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", \ + "Used to specify action OUIs for 1x1 connection") + +/* + * + * gActionOUIITOExtension - Used to extend in-activity time for specified APs + * @Default: 00037F 06 01010000FF7F FC 01 000AEB 02 0100 C0 01 000B86 03 010408 E0 01 + * Note: User should strictly add new action OUIs at the end of this + * default value. + * + * Default OUIs: (All values in Hex) + * OUI 1: 00037F + * OUI data Len: 06 + * OUI Data: 01010000FF7F + * OUI data Mask: FC - 11111100 + * Info Mask : 01 - only OUI present in Info mask + * + * OUI 2: 000AEB + * OUI data Len: 02 + * OUI Data: 0100 + * OUI data Mask: C0 - 11000000 + * Info Mask : 01 - only OUI present in Info mask + * + * OUI 3: 000B86 + * OUI data Len: 03 + * OUI Data: 010408 + * OUI data Mask: E0 - 11100000 + * Info Mask : 01 - only OUI present in Info mask + * + * This ini is used to specify AP OUIs using which station's in-activity time + * can be extended with the respective APs + * + * Related: None + * + * Supported Feature: Action OUIs + * + * Usage: External + * + * + */ +#define CFG_ACTION_OUI_ITO_EXTENSION CFG_INI_STRING( \ + "gActionOUIITOExtension", \ + 0, \ + ACTION_OUI_MAX_STR_LEN, \ + "00037F 06 01010000FF7F FC 01 000AEB 02 0100 C0 01 000B86 03 010408 E0 01", \ + "Used to extend in-activity time for specified APs") + +/* + * + * gActionOUICCKM1X1 - Used to specify action OUIs to control station's TX rates + * + * This ini is used to specify AP OUIs for which station's CCKM TX rates + * should be 1x1 only. + * + * Related: None + * + * Supported Feature: Action OUIs + * + * Usage: External + * + * + */ +#define CFG_ACTION_OUI_CCKM_1X1 CFG_INI_STRING( \ + "gActionOUICCKM1X1", \ + 0, \ + ACTION_OUI_MAX_STR_LEN, \ + "", \ + "Used to specify action OUIs to control station's TX rates") + +/* + * + * gActionOUIITOAlternate - Used to specify action OUIs to have alternate ITO in + * weak RSSI state + * + * This ini is used to specify AP OUIs for which the stations will have + * alternate ITOs for the case when the RSSI is weak. + * + * Related: None + * + * Supported Feature: Action OUIs + * + * Usage: External + * + * + */ +#define CFG_ACTION_OUI_ITO_ALTERNATE CFG_INI_STRING( \ + "gActionOUIITOAlternate", \ + 0, \ + ACTION_OUI_MAX_STR_LEN, \ + "001018 06 0202001c0000 FC 01", \ + "Used to specify action OUIs to have alternate ITO") + +/* + * + * gActionOUISwitchTo11nMode - Used to specify action OUIs for switching to 11n + * + * This ini is used to specify which AP for which the connection has to be + * made in 2x2 mode with HT capabilities only and not VHT. + * + * Default OUIs: (All values in Hex) + * OUI 1 : 00904C + * OUI data Len : 03 + * OUI Data : 0418BF + * OUI data Mask: E0 - 11100000 + * Info Mask : 21 - Check for Band + * Capabilities: 40 - Band == 2G + * + * Related: None + * + * Supported Feature: Action OUIs + * + * Usage: External + * + * + */ +#define CFG_ACTION_OUI_SWITCH_TO_11N_MODE CFG_INI_STRING( \ + "gActionOUISwitchTo11nMode", \ + 0, \ + ACTION_OUI_MAX_STR_LEN, \ + "00904C 05 0418BF0CB2 F8 21 40", \ + "Used to specify action OUIs for switching to 11n") + +/* + * + * gActionOUIConnect1x1with1TxRxChain - Used to specify action OUIs for + * 1x1 connection with one Tx/Rx Chain + * @Default: + * Note: User should strictly add new action OUIs at the end of this + * default value. + * + * Default OUIs: (All values in Hex) + * OUI 1 : 001018 + * OUI data Len : 06 + * OUI Data : 02FFF0040000 + * OUI data Mask: BC - 10111100 + * Info Mask : 21 - Check for Band + * Capabilities: 40 - Band == 2G + * + * OUI 2 : 001018 + * OUI data Len : 06 + * OUI Data : 02FFF0050000 + * OUI data Mask: BC - 10111100 + * Info Mask : 21 - Check for Band + * Capabilities: 40 - Band == 2G + * + * OUI 3 : 001018 + * OUI data Len : 06 + * OUI Data : 02FFF4050000 + * OUI data Mask: BC - 10111100 + * Info Mask : 21 - Check for Band + * Capabilities: 40 - Band == 2G + * + * This ini is used to specify the AP OUIs with which only 1x1 connection + * with one Tx/Rx Chain is allowed. + * + * Related: gEnableActionOUI + * + * Supported Feature: Action OUIs + * + * Usage: External + * + * + */ +#define CFG_ACTION_OUI_CONNECT_1X1_WITH_1_CHAIN CFG_INI_STRING( \ + "gActionOUIConnect1x1with1TxRxChain", \ + 0, \ + ACTION_OUI_MAX_STR_LEN, \ + "001018 06 02FFF0040000 BC 21 40 001018 06 02FFF0050000 BC 21 40 001018 06 02FFF4050000 BC 21 40", \ + "Used to specify action OUIs for 1x1 connection with one Tx/Rx Chain") + +/* + * + * gActionOUIDisableAggressiveTX - Used to specify action OUIs to disable + * Aggressive TX feature when operating in softap. + * + * @Default: + * Note: User should strictly add new action OUIs at the end of this + * default value. + * + * Default OUIs: + * + * OUI 1 : FFFFFF + * OUI data Len : 00 + * OUI Data: No data + * OUI data Mask: No data mask + * Info Mask: 2A - Check for mac-addr, HT capability and Band + * Mac-addr: F8:59:71:00:00:00 - first 3 bytes + * Mac-mask: E0 - Match only first 3 bytes of peer mac-addr + * Capabilities: 50 – HT should be enabled, and band should be 2.4GHz + * + * OUI 2 : FFFFFF + * OUI data Len : 00 + * OUI Data: No data + * OUI data Mask: No data mask + * Info Mask: 2A - Check for mac-addr, HT capability and Band + * Mac-addr: 14:AB:C5:00:00:00 - first 3 bytes + * Mac-mask: E0 - Match only first 3 bytes of peer mac-addr + * Capabilities: 50 – HT should be enabled, and band should be 2.4GHz + * + * When operating in Softap mode, this ini is used to specify + * STA (peer) OUIs/mac-addr for which aggressive tx is disabled after + * association is successful. + * + * Related: gEnableActionOUI + * + * Supported Feature: Action OUIs + * + * Usage: External + * + * + */ +#define CFG_ACTION_OUI_DISABLE_AGGRESSIVE_TX CFG_INI_STRING( \ + "gActionOUIDisableAggressiveTX", \ + 0, \ + ACTION_OUI_MAX_STR_LEN, \ + "FFFFFF 00 2A F85971000000 E0 50 FFFFFF 00 2A 14ABC5000000 E0 50", \ + "Used to specify action OUIs to disable aggressive TX") + +/* + * + * gActionOUIForceMaxNss - Used to specify action OUIs for Max NSS connection + * @Default: + * Note: User should strictly add new action OUIs at the end of this + * default value. + * + * Default OUIs: (All values in Hex) + * OUI 1 :001018 + * OUI data Len : 06 + * OUI Data : 0201009c0000 + * OUI data Mask: FC + * Info Mask : 01 - only OUI present in Info mask + * OUI 2 :001018 + * OUI data Len : 06 + * OUI Data : 0201001c0000 + * OUI data Mask: FC + * Info Mask : 01 - only OUI present in Info mask + * OUI 3 :001018 + * OUI data Len : 06 + * OUI Data : 0200009c0000 + * OUI data Mask: FC + * Info Mask : 01 - only OUI present in Info mask + * + * This ini is used to specify the AP OUIs with which max capability is + * sent in association request even though AP advertises 1x1 capability. + * + * Related: None + * + * Supported Feature: Action OUIs + * + * Usage: External + * + * + */ +#define CFG_ACTION_OUI_FORCE_MAX_NSS CFG_INI_STRING( \ + "gActionOUIForceMaxNss", \ + 0, \ + ACTION_OUI_MAX_STR_LEN, \ + "001018 06 0201009c0000 FC 01 001018 06 0201001c0000 FC 01 001018 06 0200009c0000 FC 01", \ + "Used to specify action OUIs for forcing max NSS connection") + +/* + * + * gActionOUIDisableAggressiveEDCA - Used to specify action OUIs to control + * EDCA configuration when join the candidate AP + * + * @Default: NULL + * Note: User should strictly add new action OUIs at the end of this + * default value. + * + * This ini is used to specify AP OUIs. The station's EDCA should follow the + * APs' when connecting to those AP, even if the gEnableEdcaParams is set. + * For example, it follows the AP's EDCA whose OUI is 0050F2 with the + * following setting: + * gActionOUIDisableAggressiveEDCA=0050F2 00 01 + * Explain: 0050F2: OUI + * 00: data length is 0 + * 01: info mask, only OUI present in Info mask + * Refer to gEnableActionOUI for more detail about the format. + * + * Related: gEnableEdcaParams, gEnableActionOUI + * + * Supported Feature: Action OUIs + * + * Usage: External + * + * + */ +#define CFG_ACTION_OUI_DISABLE_AGGRESSIVE_EDCA CFG_INI_STRING( \ + "gActionOUIDisableAggressiveEDCA", \ + 0, \ + ACTION_OUI_MAX_STR_LEN, \ + "", \ + "Used to specify action OUIs to control edca configuration") + +/* + * + * gActionOUIExtendWowITO - Used to extend ITO(Inactivity Time-Out) value under + * WoWLAN mode for specified APs. + * + * @Default: NULL + * + * Some APs sometimes don't honor Qos null frames under WoWLAN mode if + * station's ITO is too small. This ini is used to specify AP OUIs which + * exhibit this behavior. When connected to such an AP, the station's ITO + * value will be extended when in WoWLAN mode. + * For example, it extends the ITO value(under WoWLAN mode) when connected + * to AP whose OUI is 001018 and vendor specific data is 0201009C0000 with + * the following setting: + * gActionOUIExtendWowITO=001018 06 0201009C0000 FC 01 + * OUI: 001018 + * OUI data Len : 06 + * OUI Data : 0201009C0000 + * OUI data Mask: FC - 11111100 + * Info Mask : 01 - only OUI present in Info mask + * Refer to gEnableActionOUI for more detail about the format. + * + * Related: gEnableActionOUI + * + * Supported Feature: Action OUIs + * + * Usage: External + * + * + */ +#define CFG_ACTION_OUI_EXTEND_WOW_ITO CFG_INI_STRING( \ + "gActionOUIExtendWowITO", \ + 0, \ + ACTION_OUI_MAX_STR_LEN, \ + "", \ + "Used to extend inactivity time out under WoWLAN mode for specified APs") + +/* + * + * gActionOUIReconnAssocTimeout - Used to specify action OUIs to + * reconnect to same BSSID when wait for association response timeout + * + * This ini is used to specify AP OUIs. Some of AP doesn't response our + * first association request, but it would response our second association + * request. Add such OUI configuration INI to apply reconnect logic when + * association timeout happends with such AP. + * For default: + * gActionOUIReconnAssocTimeout=00E04C 00 01 + * Explain: 00E04C: OUI + * 00: data length is 0 + * 01: info mask, only OUI present in Info mask + * Note: User should strictly add new action OUIs at the end of this + * default value. + * Refer to gEnableActionOUI for more detail about the format. + * + * Related: gEnableActionOUI + * + * Supported Feature: Action OUIs + * + * Usage: External + * + * + */ +#define CFG_ACTION_OUI_RECONN_ASSOCTIMEOUT CFG_INI_STRING( \ + "gActionOUIReconnAssocTimeout", \ + 0, \ + ACTION_OUI_MAX_STR_LEN, \ + "00E04C 00 01", \ + "Used to specify action OUIs to reconnect when assoc timeout") + +/* + * + * gActionOUIDisableTWT - Used to specify action OUIs to control TWT param + * while joining the candidate AP + * + * This ini is used to specify AP OUIs. Some APs advertise TWT but do not + * follow through when the STA reaches out to them. Thus, TWT will be + * disabled when we receive OUIs of those APs. + * Note: User should strictly add new action OUIs at the end of this + * default value. + * + * Default OUIs: (All values in Hex) + * OUI 1: 001018 + * OUI data Len: 00 + * Info Mask : 01 - only OUI present in Info mask + * + * OUI 2: 000986 + * OUI data Len: 00 + * Info Mask : 01 - only OUI present in Info mask + * + * OUI 3: 000ce7 + * OUI data Len: 00 + * Info Mask : 01 - only OUI present in Info mask + * + * OUI 4: 00e0fc + * OUI data Len: 00 + * Info Mask : 01 - only OUI present in Info mask + * + * Refer to gEnableActionOUI for more detail about the format. + * + * Related: gEnableActionOUI + * + * Supported Feature: Action OUIs + * + * Usage: External + * + * + */ +#define CFG_ACTION_OUI_DISABLE_TWT CFG_INI_STRING( \ + "gActionOUIDisableTWT", \ + 0, \ + ACTION_OUI_MAX_STR_LEN, \ + "001018 00 01 000986 00 01 000ce7 00 01 00e0fc 00 01", \ + "Used to specify action OUIs to control TWT configuration") + +/* + * + * gActionOUITakeAllBandInfo - Used to specify action OUIs to check + * whether country ie need take all band channel information. + * + * This ini is used to specify STA association request OUIs. Some STA + * need AP country ie take all band channel information when do BSS + * transition across band. Thus, AP will take all band channel info + * when we receive association request with this OUIs. + * Note: User should strictly add new action OUIs at the end of this + * default value. + * + * Default OUIs: (All values in Hex) + * OUI 1: 0017f2 + * OUI data Len: 01 + * OUI Data : 0a + * OUI data Mask: 80 - 10000000 + * Info Mask : 01 - only OUI present in Info mask + * + * Refer to gEnableActionOUI for more detail about the format. + * + * Related: gEnableActionOUI + * + * Supported Feature: Action OUIs + * + * Usage: External + * + * + */ +#define CFG_ACTION_OUI_TAKE_ALL_BAND_INFO CFG_INI_STRING( \ + "gActionOUITakeAllBandInfo", \ + 0, \ + ACTION_OUI_MAX_STR_LEN, \ + "0017f2 01 0a 80 01", \ + "Used to specify action OUIs to control country ie") + +/* + * + * g11be_oui_allow_list - Used to specify 802.11be allowed ap oui list + * + * This ini is used to specify AP OUIs for which station can connect + * in 802.11be mode with the 802.11be AP. + * If no OUI set, then allow STA to connect to All 802.11be AP in 802.11be + * mode. + * If INI is set to "ffffff 00 01", then STA is not allowed to connect to + * any AP in 802.11be mode. + * + * Related: None + * + * Supported Feature: Action OUIs + * + * Usage: External + * + * + */ +#define CFG_ACTION_OUI_11BE_ALLOW_LIST CFG_INI_STRING( \ + "g11be_oui_allow_list", \ + 0, \ + ACTION_OUI_MAX_STR_LEN, \ + "", \ + "Used to specify 11be allowed ap oui list") + +#define CFG_ACTION_OUI \ + CFG(CFG_ACTION_OUI_CCKM_1X1) \ + CFG(CFG_ACTION_OUI_CONNECT_1X1) \ + CFG(CFG_ACTION_OUI_CONNECT_1X1_WITH_1_CHAIN) \ + CFG(CFG_ACTION_OUI_ITO_ALTERNATE) \ + CFG(CFG_ACTION_OUI_ITO_EXTENSION) \ + CFG(CFG_ACTION_OUI_DISABLE_AGGRESSIVE_TX) \ + CFG(CFG_ACTION_OUI_FORCE_MAX_NSS) \ + CFG(CFG_ACTION_OUI_DISABLE_AGGRESSIVE_EDCA) \ + CFG(CFG_ACTION_OUI_EXTEND_WOW_ITO) \ + CFG(CFG_ACTION_OUI_SWITCH_TO_11N_MODE) \ + CFG(CFG_ACTION_OUI_RECONN_ASSOCTIMEOUT) \ + CFG(CFG_ACTION_OUI_DISABLE_TWT) \ + CFG(CFG_ACTION_OUI_TAKE_ALL_BAND_INFO) \ + CFG(CFG_ACTION_OUI_11BE_ALLOW_LIST) \ + CFG(CFG_ENABLE_ACTION_OUI) +#endif diff --git a/components/action_oui/dispatcher/inc/wlan_action_oui_ucfg_api.h b/components/action_oui/dispatcher/inc/wlan_action_oui_ucfg_api.h index 71c97a642d..2097f8beab 100644 --- a/components/action_oui/dispatcher/inc/wlan_action_oui_ucfg_api.h +++ b/components/action_oui/dispatcher/inc/wlan_action_oui_ucfg_api.h @@ -100,14 +100,11 @@ QDF_STATUS ucfg_action_oui_send(struct wlan_objmgr_psoc *psoc); /** * ucfg_action_oui_enabled() - State of action_oui component + * @psoc: psoc object * - * Return: When action_oui component is present return true - * else return false. + * Return: True if action oui is enabled */ -static inline bool ucfg_action_oui_enabled(void) -{ - return true; -} +bool ucfg_action_oui_enabled(struct wlan_objmgr_psoc *psoc); /** * ucfg_action_oui_search() - Check for OUIs and related info in IE data. @@ -149,9 +146,19 @@ ucfg_action_oui_cleanup(struct wlan_objmgr_psoc *psoc, * * Return: QDF_STATUS_SUCCESS If sending is successful. */ - QDF_STATUS ucfg_action_oui_send_by_id(struct wlan_objmgr_psoc *psoc, enum action_oui_id id); + +/** + * ucfg_action_oui_get_config() - Get current action INI config + * @psoc: objmgr psoc object + * @action_id: type of action to get + * + * Return: config string. + */ +uint8_t * +ucfg_action_oui_get_config(struct wlan_objmgr_psoc *psoc, + enum action_oui_id action_id); #else /** @@ -305,6 +312,20 @@ QDF_STATUS ucfg_action_oui_send_by_id(struct wlan_objmgr_psoc *psoc, { return QDF_STATUS_SUCCESS; } + +/** + * ucfg_action_oui_get_config() - Get current action INI config + * @psoc: objmgr psoc object + * @action_id: type of action to get + * + * Return: config string. + */ +static inline uint8_t * +ucfg_action_oui_get_config(struct wlan_objmgr_psoc *psoc, + enum action_oui_id action_id) +{ + return ""; +} #endif /* WLAN_FEATURE_ACTION_OUI */ #endif /* _WLAN_ACTION_OUI_UCFG_API_H_ */ diff --git a/components/action_oui/dispatcher/src/wlan_action_oui_ucfg_api.c b/components/action_oui/dispatcher/src/wlan_action_oui_ucfg_api.c index 40ecce88bd..a5eb1c55f7 100644 --- a/components/action_oui/dispatcher/src/wlan_action_oui_ucfg_api.c +++ b/components/action_oui/dispatcher/src/wlan_action_oui_ucfg_api.c @@ -90,58 +90,45 @@ void ucfg_action_oui_psoc_disable(struct wlan_objmgr_psoc *psoc) action_oui_psoc_disable(psoc); } +bool ucfg_action_oui_enabled(struct wlan_objmgr_psoc *psoc) +{ + struct action_oui_psoc_priv *psoc_priv; + + psoc_priv = action_oui_psoc_get_priv(psoc); + if (!psoc_priv) { + action_oui_err("psoc priv is NULL"); + return false; + } + + return psoc_priv->action_oui_enable; +} + +uint8_t * +ucfg_action_oui_get_config(struct wlan_objmgr_psoc *psoc, + enum action_oui_id action_id) +{ + struct action_oui_psoc_priv *psoc_priv; + + psoc_priv = action_oui_psoc_get_priv(psoc); + if (!psoc_priv) { + action_oui_err("psoc priv is NULL"); + return ""; + } + if (action_id >= ACTION_OUI_MAXIMUM_ID) { + action_oui_err("Invalid action_oui id: %u", action_id); + return ""; + } + + return psoc_priv->action_oui_str[action_id]; +} + + QDF_STATUS ucfg_action_oui_parse(struct wlan_objmgr_psoc *psoc, const uint8_t *in_str, enum action_oui_id action_id) { - struct action_oui_psoc_priv *psoc_priv; - QDF_STATUS status = QDF_STATUS_E_INVAL; - uint8_t *oui_str; - int len; - - ACTION_OUI_ENTER(); - - if (!psoc) { - action_oui_err("psoc is NULL"); - goto exit; - } - - if (action_id >= ACTION_OUI_MAXIMUM_ID) { - action_oui_err("Invalid action_oui id: %u", action_id); - goto exit; - } - - psoc_priv = action_oui_psoc_get_priv(psoc); - if (!psoc_priv) { - action_oui_err("psoc priv is NULL"); - goto exit; - } - - len = qdf_str_len(in_str); - if (len <= 0 || len > ACTION_OUI_MAX_STR_LEN - 1) { - action_oui_err("Invalid string length: %u", action_id); - goto exit; - } - - oui_str = qdf_mem_malloc(len + 1); - if (!oui_str) { - status = QDF_STATUS_E_NOMEM; - goto exit; - } - - qdf_mem_copy(oui_str, in_str, len); - oui_str[len] = '\0'; - - status = action_oui_parse(psoc_priv, oui_str, action_id); - if (!QDF_IS_STATUS_SUCCESS(status)) - action_oui_err("Failed to parse: %u", action_id); - - qdf_mem_free(oui_str); - -exit: - ACTION_OUI_EXIT(); - return status; + return action_oui_parse_string(psoc, in_str, action_id); } QDF_STATUS diff --git a/components/cfg/cfg_all.h b/components/cfg/cfg_all.h index 7f997e1530..fae179c2e5 100644 --- a/components/cfg/cfg_all.h +++ b/components/cfg/cfg_all.h @@ -51,6 +51,7 @@ #include "cfg_legacy_dp.h" #include "cfg_dlm.h" #include "cfg_pkt_capture.h" +#include "wlan_action_oui_cfg.h" /* Maintain Alphabetic order here while adding components */ #define CFG_ALL \ @@ -68,4 +69,6 @@ CFG_PMO_ALL \ CFG_TDLS_ALL \ CFG_PKT_CAPTURE_MODE_ALL \ - CFG_TIME_SYNC_FTM_ALL + CFG_TIME_SYNC_FTM_ALL \ + CFG_ACTION_OUI + diff --git a/components/mlme/core/src/wlan_mlme_main.c b/components/mlme/core/src/wlan_mlme_main.c index 5f36e25e01..1a5a574bc1 100644 --- a/components/mlme/core/src/wlan_mlme_main.c +++ b/components/mlme/core/src/wlan_mlme_main.c @@ -1795,6 +1795,7 @@ static void mlme_init_sta_cfg(struct wlan_objmgr_psoc *psoc, cfg_get(psoc, CFG_MAX_LI_MODULATED_DTIM_MS); mlme_init_sta_mlo_cfg(psoc, sta); + wlan_mlme_set_usr_disable_sta_eht(psoc, false); } static void mlme_init_stats_cfg(struct wlan_objmgr_psoc *psoc, diff --git a/components/mlme/dispatcher/inc/wlan_mlme_api.h b/components/mlme/dispatcher/inc/wlan_mlme_api.h index d1cd97e2dd..04e5526e65 100644 --- a/components/mlme/dispatcher/inc/wlan_mlme_api.h +++ b/components/mlme/dispatcher/inc/wlan_mlme_api.h @@ -1101,6 +1101,18 @@ bool wlan_mlme_get_usr_disable_sta_eht(struct wlan_objmgr_psoc *psoc); */ void wlan_mlme_set_usr_disable_sta_eht(struct wlan_objmgr_psoc *psoc, bool disable); +#else +static inline +bool wlan_mlme_get_usr_disable_sta_eht(struct wlan_objmgr_psoc *psoc) +{ + return true; +} + +static inline +void wlan_mlme_set_usr_disable_sta_eht(struct wlan_objmgr_psoc *psoc, + bool disable) +{ +} #endif /** diff --git a/core/hdd/inc/hdd_config.h b/core/hdd/inc/hdd_config.h index e131eff870..997ff0467c 100644 --- a/core/hdd/inc/hdd_config.h +++ b/core/hdd/inc/hdd_config.h @@ -931,618 +931,6 @@ struct dhcp_server { CFG_VALUE_OR_DEFAULT, \ "It is bit mask value of Interfaces") -/* - * Start of action oui inis - * - * To enable action oui feature, set gEnableActionOUI - * - * Each action oui is expected in the following format: - * ..... (maximum 10) - * - * whereas, each Extension is separated by space and have the following format: - * - * where each Token is a string of hexa-decimal digits and - * following are the details about each token - * - * Token1 = OUI - * Token2 = Data_Length - * Token3 = Data - * Token4 = Data_Mask - * Token5 = Info_Presence_Bit - * Token6 = MAC_Address - * Token7 = Mac_Address Mask - * Token8 = Capability - * - * is mandatory and it can be either 3 or 5 bytes means 6 or 10 - * hexa-decimal characters - * If the OUI and Data checks needs to be ignored, the oui FFFFFF - * needs to be provided as OUI and bit 0 of Info_Presence_Bit should - * be set to 0. - * - * is mandatory field and should give length of - * the if present else zero - * - * Presence of is controlled by , if is 0, - * then is not expected else Data of the size Data Length bytes are - * expected which means the length of Data string is 2 * Data Length, - * since every byte constitutes two hexa-decimal characters. - * - * is mandatory if is present and length of the - * Data mask string depends on the - * If is 06, then length of Data Mask string is - * 2 characters (represents 1 byte) - * data_mask_length = ((Data_Length - (Data_Length % 8)) / 8) + - * ((Data_Length % 8) ? 1 : 0) - * and has to be constructed from left to right. - * - * Presence of and is - * controlled by which is mandatory - * will give the information for - * OUI – bit 0 Should be set to 1 - * Setting to 0 will ignore OUI and data check - * Mac Address present – bit 1 - * NSS – bit 2 - * HT check – bit 3 - * VHT check – bit 4 - * Band info – bit 5 - * reserved – bit 6 (should always be zero) - * reserved – bit 7 (should always be zero) - * and should be constructed from right to left (b7b6b5b4b3b2b1b0) - * - * for should be constructed from left to right - * - * is 1 byte long and it contains the below info - * NSS – 4 bits starting from LSB (b0 – b3) - * HT enabled – bit 4 - * VHT enabled – bit 5 - * 2G band – bit 6 - * 5G band – bit 7 - * and should be constructed from right to left (b7b6b5b4b3b2b1b0) - * is present if atleast one of the bit is set - * from b2 - b6 in - * - * Example 1: - * - * OUI is 00-10-18, data length is 05 (hex form), data is 02-11-04-5C-DE and - * need to consider first 3 bytes and last byte of data for comparison - * mac-addr EE-1A-59-FE-FD-AF is present and first 3 bytes and last byte of - * mac address should be considered for comparison - * capability is not present - * then action OUI for gActionOUIITOExtension is as follows: - * - * gActionOUIITOExtension=001018 05 0211045CDE E8 03 EE1A59FEFDAF E4 - * - * data mask calculation in above example: - * Data[0] = 02 ---- d0 = 1 - * Data[1] = 11 ---- d1 = 1 - * Data[2] = 04 ---- d2 = 1 - * Data[3] = 5C ---- d3 = 0 - * Data[4] = DE ---- d4 = 1 - * data_mask = d0d1d2d3d4 + append with zeros to complete 8-bit = 11101000 = E8 - * - * mac mask calculation in above example: - * mac_addr[0] = EE ---- m0 = 1 - * mac_addr[1] = 1A ---- m1 = 1 - * mac_addr[2] = 59 ---- m2 = 1 - * mac_addr[3] = FE ---- m3 = 0 - * mac_addr[4] = FD ---- m4 = 0 - * mac_addr[5] = AF ---- m5 = 1 - * mac_mask = m0m1m2m3m4m5 + append with zeros to complete 8-bit = 11100100 = E4 - * - * Example 2: - * - * OUI is 00-10-18, data length is 00 and no Mac Address and capability - * - * gActionOUIITOExtension=001018 00 01 - * - */ - -/* - * - * gEnableActionOUI - Enable/Disable action oui feature - * @Min: 0 (disable) - * @Max: 1 (enable) - * @Default: 1 (enable) - * - * This ini is used to enable the action oui feature to control - * mode of connection, connected AP's in-activity time, Tx rate etc., - * - * Related: If gEnableActionOUI is set, then at least one of the following inis - * must be set with the proper action oui extensions: - * gActionOUIConnect1x1, gActionOUIITOExtension, gActionOUICCKM1X1 - * - * Supported Feature: action ouis - * - * Usage: External - * - * - */ -#define CFG_ENABLE_ACTION_OUI CFG_INI_BOOL( \ - "gEnableActionOUI", \ - 1, \ - "Enable/Disable action oui feature") - -/* - * - * gActionOUIConnect1x1 - Used to specify action OUIs for 1x1 connection - * @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 - * Note: User should strictly add new action OUIs at the end of this - * default value. - * - * Default OUIs: (All values in Hex) - * OUI 1 : 000C43 - * OUI data Len : 00 - * Info Mask : 25 - Check for NSS and Band - * Capabilities: C2 - NSS == 2 && Band == 2G || Band == 5G - * OUI 2 : 001018 - * OUI data Len : 06 - * OUI Data : 02FFF02C0000 - * OUI data Mask: BC - 10111100 - * Info Mask : 25 - Check for NSS and Band - * Capabilities: 42 - NSS == 2 && Band == 2G - * OUI 3 : 001018 - * OUI data Len : 06 - * OUI Data : 02FF040C0000 - * OUI data Mask: BC - 10111100 - * Info Mask : 25 - Check for NSS and Band - * Capabilities: 42 - NSS == 2 && Band == 2G - * OUI 4 : 00037F - * OUI data Len : 00 - * Info Mask : 35 - Check for NSS, VHT Caps and Band - * Capabilities: 6C - (NSS == 3 or 4) && VHT Caps Preset && Band == 2G - * OUI 5 : 001018 - * OUI data Len : 06 - * OUI Data : 02FF009C0000 - * OUI data Mask: BC - 10111100 - * Info Mask : 25 - Check for NSS and Band - * Capabilities: 48 - NSS == 4 && Band == 2G - * - * This ini is used to specify the AP OUIs with which only 1x1 connection - * is allowed. - * - * Related: None - * - * Supported Feature: Action OUIs - * - * Usage: External - * - * - */ -#define CFG_ACTION_OUI_CONNECT_1X1 CFG_INI_STRING( \ - "gActionOUIConnect1x1", \ - 0, \ - ACTION_OUI_MAX_STR_LEN, \ - "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", \ - "Used to specify action OUIs for 1x1 connection") - -/* - * - * gActionOUIITOExtension - Used to extend in-activity time for specified APs - * @Default: 00037F 06 01010000FF7F FC 01 000AEB 02 0100 C0 01 000B86 03 010408 E0 01 - * Note: User should strictly add new action OUIs at the end of this - * default value. - * - * Default OUIs: (All values in Hex) - * OUI 1: 00037F - * OUI data Len: 06 - * OUI Data: 01010000FF7F - * OUI data Mask: FC - 11111100 - * Info Mask : 01 - only OUI present in Info mask - * - * OUI 2: 000AEB - * OUI data Len: 02 - * OUI Data: 0100 - * OUI data Mask: C0 - 11000000 - * Info Mask : 01 - only OUI present in Info mask - * - * OUI 3: 000B86 - * OUI data Len: 03 - * OUI Data: 010408 - * OUI data Mask: E0 - 11100000 - * Info Mask : 01 - only OUI present in Info mask - * - * This ini is used to specify AP OUIs using which station's in-activity time - * can be extended with the respective APs - * - * Related: None - * - * Supported Feature: Action OUIs - * - * Usage: External - * - * - */ -#define CFG_ACTION_OUI_ITO_EXTENSION CFG_INI_STRING( \ - "gActionOUIITOExtension", \ - 0, \ - ACTION_OUI_MAX_STR_LEN, \ - "00037F 06 01010000FF7F FC 01 000AEB 02 0100 C0 01 000B86 03 010408 E0 01", \ - "Used to extend in-activity time for specified APs") - -/* - * - * gActionOUICCKM1X1 - Used to specify action OUIs to control station's TX rates - * - * This ini is used to specify AP OUIs for which station's CCKM TX rates - * should be 1x1 only. - * - * Related: None - * - * Supported Feature: Action OUIs - * - * Usage: External - * - * - */ -#define CFG_ACTION_OUI_CCKM_1X1 CFG_INI_STRING( \ - "gActionOUICCKM1X1", \ - 0, \ - ACTION_OUI_MAX_STR_LEN, \ - "", \ - "Used to specify action OUIs to control station's TX rates") - -/* - * - * gActionOUIITOAlternate - Used to specify action OUIs to have alternate ITO in - * weak RSSI state - * - * This ini is used to specify AP OUIs for which the stations will have - * alternate ITOs for the case when the RSSI is weak. - * - * Related: None - * - * Supported Feature: Action OUIs - * - * Usage: External - * - * - */ -#define CFG_ACTION_OUI_ITO_ALTERNATE CFG_INI_STRING( \ - "gActionOUIITOAlternate", \ - 0, \ - ACTION_OUI_MAX_STR_LEN, \ - "001018 06 0202001c0000 FC 01", \ - "Used to specify action OUIs to have alternate ITO") - -/* - * - * gActionOUISwitchTo11nMode - Used to specify action OUIs for switching to 11n - * - * This ini is used to specify which AP for which the connection has to be - * made in 2x2 mode with HT capabilities only and not VHT. - * - * Default OUIs: (All values in Hex) - * OUI 1 : 00904C - * OUI data Len : 03 - * OUI Data : 0418BF - * OUI data Mask: E0 - 11100000 - * Info Mask : 21 - Check for Band - * Capabilities: 40 - Band == 2G - * - * Related: None - * - * Supported Feature: Action OUIs - * - * Usage: External - * - * - */ -#define CFG_ACTION_OUI_SWITCH_TO_11N_MODE CFG_INI_STRING( \ - "gActionOUISwitchTo11nMode", \ - 0, \ - ACTION_OUI_MAX_STR_LEN, \ - "00904C 05 0418BF0CB2 F8 21 40", \ - "Used to specify action OUIs for switching to 11n") - -/* - * - * gActionOUIConnect1x1with1TxRxChain - Used to specify action OUIs for - * 1x1 connection with one Tx/Rx Chain - * @Default: - * Note: User should strictly add new action OUIs at the end of this - * default value. - * - * Default OUIs: (All values in Hex) - * OUI 1 : 001018 - * OUI data Len : 06 - * OUI Data : 02FFF0040000 - * OUI data Mask: BC - 10111100 - * Info Mask : 21 - Check for Band - * Capabilities: 40 - Band == 2G - * - * OUI 2 : 001018 - * OUI data Len : 06 - * OUI Data : 02FFF0050000 - * OUI data Mask: BC - 10111100 - * Info Mask : 21 - Check for Band - * Capabilities: 40 - Band == 2G - * - * OUI 3 : 001018 - * OUI data Len : 06 - * OUI Data : 02FFF4050000 - * OUI data Mask: BC - 10111100 - * Info Mask : 21 - Check for Band - * Capabilities: 40 - Band == 2G - * - * This ini is used to specify the AP OUIs with which only 1x1 connection - * with one Tx/Rx Chain is allowed. - * - * Related: gEnableActionOUI - * - * Supported Feature: Action OUIs - * - * Usage: External - * - * - */ -#define CFG_ACTION_OUI_CONNECT_1X1_WITH_1_CHAIN CFG_INI_STRING( \ - "gActionOUIConnect1x1with1TxRxChain", \ - 0, \ - ACTION_OUI_MAX_STR_LEN, \ - "001018 06 02FFF0040000 BC 21 40 001018 06 02FFF0050000 BC 21 40 001018 06 02FFF4050000 BC 21 40", \ - "Used to specify action OUIs for 1x1 connection with one Tx/Rx Chain") - -/* - * - * gActionOUIDisableAggressiveTX - Used to specify action OUIs to disable - * Aggressive TX feature when operating in softap. - * - * @Default: - * Note: User should strictly add new action OUIs at the end of this - * default value. - * - * Default OUIs: - * - * OUI 1 : FFFFFF - * OUI data Len : 00 - * OUI Data: No data - * OUI data Mask: No data mask - * Info Mask: 2A - Check for mac-addr, HT capability and Band - * Mac-addr: F8:59:71:00:00:00 - first 3 bytes - * Mac-mask: E0 - Match only first 3 bytes of peer mac-addr - * Capabilities: 50 – HT should be enabled, and band should be 2.4GHz - * - * OUI 2 : FFFFFF - * OUI data Len : 00 - * OUI Data: No data - * OUI data Mask: No data mask - * Info Mask: 2A - Check for mac-addr, HT capability and Band - * Mac-addr: 14:AB:C5:00:00:00 - first 3 bytes - * Mac-mask: E0 - Match only first 3 bytes of peer mac-addr - * Capabilities: 50 – HT should be enabled, and band should be 2.4GHz - * - * When operating in Softap mode, this ini is used to specify - * STA (peer) OUIs/mac-addr for which aggressive tx is disabled after - * association is successful. - * - * Related: gEnableActionOUI - * - * Supported Feature: Action OUIs - * - * Usage: External - * - * - */ -#define CFG_ACTION_OUI_DISABLE_AGGRESSIVE_TX CFG_INI_STRING( \ - "gActionOUIDisableAggressiveTX", \ - 0, \ - ACTION_OUI_MAX_STR_LEN, \ - "FFFFFF 00 2A F85971000000 E0 50 FFFFFF 00 2A 14ABC5000000 E0 50", \ - "Used to specify action OUIs to disable aggressive TX") - -/* - * - * gActionOUIDisableAggressiveEDCA - Used to specify action OUIs to control - * EDCA configuration when join the candidate AP - * - * @Default: NULL - * Note: User should strictly add new action OUIs at the end of this - * default value. - * - * This ini is used to specify AP OUIs. The station's EDCA should follow the - * APs' when connecting to those AP, even if the gEnableEdcaParams is set. - * For example, it follows the AP's EDCA whose OUI is 0050F2 with the - * following setting: - * gActionOUIDisableAggressiveEDCA=0050F2 00 01 - * Explain: 0050F2: OUI - * 00: data length is 0 - * 01: info mask, only OUI present in Info mask - * Refer to gEnableActionOUI for more detail about the format. - * - * Related: gEnableEdcaParams, gEnableActionOUI - * - * Supported Feature: Action OUIs - * - * Usage: External - * - * - */ -#define CFG_ACTION_OUI_DISABLE_AGGRESSIVE_EDCA CFG_INI_STRING( \ - "gActionOUIDisableAggressiveEDCA", \ - 0, \ - ACTION_OUI_MAX_STR_LEN, \ - "", \ - "Used to specify action OUIs to control edca configuration") - -/* - * - * gActionOUIExtendWowITO - Used to extend ITO(Inactivity Time-Out) value under - * WoWLAN mode for specified APs. - * - * @Default: NULL - * - * Some APs sometimes don't honor Qos null frames under WoWLAN mode if - * station's ITO is too small. This ini is used to specify AP OUIs which - * exhibit this behavior. When connected to such an AP, the station's ITO - * value will be extended when in WoWLAN mode. - * For example, it extends the ITO value(under WoWLAN mode) when connected - * to AP whose OUI is 001018 and vendor specific data is 0201009C0000 with - * the following setting: - * gActionOUIExtendWowITO=001018 06 0201009C0000 FC 01 - * OUI: 001018 - * OUI data Len : 06 - * OUI Data : 0201009C0000 - * OUI data Mask: FC - 11111100 - * Info Mask : 01 - only OUI present in Info mask - * Refer to gEnableActionOUI for more detail about the format. - * - * Related: gEnableActionOUI - * - * Supported Feature: Action OUIs - * - * Usage: External - * - * - */ -#define CFG_ACTION_OUI_EXTEND_WOW_ITO CFG_INI_STRING( \ - "gActionOUIExtendWowITO", \ - 0, \ - ACTION_OUI_MAX_STR_LEN, \ - "", \ - "Used to extend inactivity time out under WoWLAN mode for specified APs") - -/* - * - * gActionOUIReconnAssocTimeout - Used to specify action OUIs to - * reconnect to same BSSID when wait for association response timeout - * - * This ini is used to specify AP OUIs. Some of AP doesn't response our - * first association request, but it would response our second association - * request. Add such OUI configuration INI to apply reconnect logic when - * association timeout happends with such AP. - * For default: - * gActionOUIReconnAssocTimeout=00E04C 00 01 - * Explain: 00E04C: OUI - * 00: data length is 0 - * 01: info mask, only OUI present in Info mask - * Note: User should strictly add new action OUIs at the end of this - * default value. - * Refer to gEnableActionOUI for more detail about the format. - * - * Related: gEnableActionOUI - * - * Supported Feature: Action OUIs - * - * Usage: External - * - * - */ -#define CFG_ACTION_OUI_RECONN_ASSOCTIMEOUT CFG_INI_STRING( \ - "gActionOUIReconnAssocTimeout", \ - 0, \ - ACTION_OUI_MAX_STR_LEN, \ - "00E04C 00 01", \ - "Used to specify action OUIs to reconnect when assoc timeout") - -/* - * - * gActionOUIDisableTWT - Used to specify action OUIs to control TWT param - * while joining the candidate AP - * - * This ini is used to specify AP OUIs. Some APs advertise TWT but do not - * follow through when the STA reaches out to them. Thus, TWT will be - * disabled when we receive OUIs of those APs. - * Note: User should strictly add new action OUIs at the end of this - * default value. - * - * Default OUIs: (All values in Hex) - * OUI 1: 001018 - * OUI data Len: 00 - * Info Mask : 01 - only OUI present in Info mask - * - * OUI 2: 000986 - * OUI data Len: 00 - * Info Mask : 01 - only OUI present in Info mask - * - * OUI 3: 000ce7 - * OUI data Len: 00 - * Info Mask : 01 - only OUI present in Info mask - * - * OUI 4: 00e0fc - * OUI data Len: 00 - * Info Mask : 01 - only OUI present in Info mask - * - * Refer to gEnableActionOUI for more detail about the format. - * - * Related: gEnableActionOUI - * - * Supported Feature: Action OUIs - * - * Usage: External - * - * - */ -#define CFG_ACTION_OUI_DISABLE_TWT CFG_INI_STRING( \ - "gActionOUIDisableTWT", \ - 0, \ - ACTION_OUI_MAX_STR_LEN, \ - "001018 00 01 000986 00 01 000ce7 00 01 00e0fc 00 01", \ - "Used to specify action OUIs to control TWT configuration") - -/* - * - * gActionOUITakeAllBandInfo - Used to specify action OUIs to check - * whether country ie need take all band channel information. - * - * This ini is used to specify STA association request OUIs. Some STA - * need AP country ie take all band channel information when do BSS - * transition across band. Thus, AP will take all band channel info - * when we receive association request with this OUIs. - * Note: User should strictly add new action OUIs at the end of this - * default value. - * - * Default OUIs: (All values in Hex) - * OUI 1: 0017f2 - * OUI data Len: 01 - * OUI Data : 0a - * OUI data Mask: 80 - 10000000 - * Info Mask : 01 - only OUI present in Info mask - * - * Refer to gEnableActionOUI for more detail about the format. - * - * Related: gEnableActionOUI - * - * Supported Feature: Action OUIs - * - * Usage: External - * - * - */ -#define CFG_ACTION_OUI_TAKE_ALL_BAND_INFO CFG_INI_STRING( \ - "gActionOUITakeAllBandInfo", \ - 0, \ - ACTION_OUI_MAX_STR_LEN, \ - "0017f2 01 0a 80 01", \ - "Used to specify action OUIs to control country ie") - -/* - * - * g11be_oui_allow_list - Used to specify 802.11be allowed ap oui list - * - * This ini is used to specify AP OUIs for which station can connect - * in 802.11be mode with the 802.11be AP. - * If no OUI set, then allow STA to connect to All 802.11be AP in 802.11be - * mode. - * If INI is set to "ffffff 00 01", then STA is not allowed to connect to - * any AP in 802.11be mode. - * - * Related: None - * - * Supported Feature: Action OUIs - * - * Usage: External - * - * - */ -#define CFG_ACTION_11BE_OUI_ALLOW_LIST CFG_INI_STRING( \ - "g11be_oui_allow_list", \ - 0, \ - ACTION_OUI_MAX_STR_LEN, \ - "", \ - "Used to specify 11be allowed ap oui list") - -/* End of action oui inis */ - #ifdef ENABLE_MTRACE_LOG /* * @@ -1870,48 +1258,6 @@ enum host_log_level { "", \ "Set modulized host debug log level") -/* - * - * gActionOUIForceMaxNss - Used to specify action OUIs for Max NSS connection - * @Default: - * Note: User should strictly add new action OUIs at the end of this - * default value. - * - * Default OUIs: (All values in Hex) - * OUI 1 :001018 - * OUI data Len : 06 - * OUI Data : 0201009c0000 - * OUI data Mask: FC - * Info Mask : 01 - only OUI present in Info mask - * OUI 2 :001018 - * OUI data Len : 06 - * OUI Data : 0201001c0000 - * OUI data Mask: FC - * Info Mask : 01 - only OUI present in Info mask - * OUI 3 :001018 - * OUI data Len : 06 - * OUI Data : 0200009c0000 - * OUI data Mask: FC - * Info Mask : 01 - only OUI present in Info mask - * - * This ini is used to specify the AP OUIs with which max capability is - * sent in association request even though AP advertises 1x1 capability. - * - * Related: None - * - * Supported Feature: Action OUIs - * - * Usage: External - * - * - */ -#define CFG_ACTION_OUI_FORCE_MAX_NSS CFG_INI_STRING( \ - "gActionOUIForceMaxNss", \ - 0, \ - ACTION_OUI_MAX_STR_LEN, \ - "001018 06 0201009c0000 FC 01 001018 06 0201001c0000 FC 01 001018 06 0200009c0000 FC 01", \ - "Used to specify action OUIs for forcing max NSS connection") - #ifdef WLAN_FEATURE_DYNAMIC_MAC_ADDR_UPDATE /* * @@ -1951,26 +1297,11 @@ enum host_log_level { CFG_WLAN_CLUB_GET_STA_IN_LL_STA_REQ \ CFG_WLAN_LOGGING_SUPPORT_ALL \ CFG_WLAN_STA_PERIODIC_STATS \ - CFG(CFG_ACTION_OUI_CCKM_1X1) \ - CFG(CFG_ACTION_OUI_CONNECT_1X1) \ - CFG(CFG_ACTION_OUI_CONNECT_1X1_WITH_1_CHAIN) \ - CFG(CFG_ACTION_OUI_ITO_ALTERNATE) \ - CFG(CFG_ACTION_OUI_ITO_EXTENSION) \ - CFG(CFG_ACTION_OUI_DISABLE_AGGRESSIVE_TX) \ - CFG(CFG_ACTION_OUI_FORCE_MAX_NSS) \ - CFG(CFG_ACTION_OUI_DISABLE_AGGRESSIVE_EDCA) \ - CFG(CFG_ACTION_OUI_EXTEND_WOW_ITO) \ - CFG(CFG_ACTION_OUI_SWITCH_TO_11N_MODE) \ - CFG(CFG_ACTION_OUI_RECONN_ASSOCTIMEOUT) \ - CFG(CFG_ACTION_OUI_DISABLE_TWT) \ - CFG(CFG_ACTION_OUI_TAKE_ALL_BAND_INFO) \ - CFG(CFG_ACTION_11BE_OUI_ALLOW_LIST) \ CFG(CFG_ADVERTISE_CONCURRENT_OPERATION) \ CFG(CFG_BUG_ON_REINIT_FAILURE) \ CFG(CFG_DBS_SCAN_SELECTION) \ CFG(CFG_DERIVED_INTERFACE_POOL) \ CFG(CFG_ENABLE_CONCURRENT_STA) \ - CFG(CFG_ENABLE_ACTION_OUI) \ CFG(CFG_ENABLE_FW_LOG) \ CFG(CFG_ENABLE_FW_UART_PRINT) \ CFG(CFG_ENABLE_MAC_PROVISION) \ diff --git a/core/hdd/inc/wlan_hdd_cfg.h b/core/hdd/inc/wlan_hdd_cfg.h index 448afe2c56..2d4c8d105a 100644 --- a/core/hdd/inc/wlan_hdd_cfg.h +++ b/core/hdd/inc/wlan_hdd_cfg.h @@ -119,8 +119,6 @@ struct hdd_config { uint16_t sap_tx_leakage_threshold; bool sap_internal_restart; bool is_11k_offload_supported; - bool action_oui_enable; - uint8_t action_oui_str[ACTION_OUI_MAXIMUM_ID][ACTION_OUI_MAX_STR_LEN]; bool is_unit_test_framework_enabled; bool disable_channel; diff --git a/core/hdd/src/wlan_hdd_cm_connect.c b/core/hdd/src/wlan_hdd_cm_connect.c index 0161e1467e..3681451d12 100644 --- a/core/hdd/src/wlan_hdd_cm_connect.c +++ b/core/hdd/src/wlan_hdd_cm_connect.c @@ -370,7 +370,7 @@ hdd_update_action_oui_for_connect(struct hdd_context *hdd_ctx, uint8_t *str; bool usr_disable_eht; - if (!hdd_ctx->config->action_oui_enable) + if (!ucfg_action_oui_enabled(hdd_ctx->psoc)) return; usr_disable_eht = ucfg_mlme_get_usr_disable_sta_eht(hdd_ctx->psoc); @@ -406,8 +406,8 @@ hdd_update_action_oui_for_connect(struct hdd_context *hdd_ctx, ACTION_OUI_11BE_OUI_ALLOW); return; } - str = - hdd_ctx->config->action_oui_str[ACTION_OUI_11BE_OUI_ALLOW]; + str = ucfg_action_oui_get_config(hdd_ctx->psoc, + ACTION_OUI_11BE_OUI_ALLOW); if (!qdf_str_len(str)) goto send_oui; diff --git a/core/hdd/src/wlan_hdd_main.c b/core/hdd/src/wlan_hdd_main.c index 53a37dfdbc..9c30bcfc3a 100644 --- a/core/hdd/src/wlan_hdd_main.c +++ b/core/hdd/src/wlan_hdd_main.c @@ -12156,11 +12156,6 @@ static void hdd_override_ini_config(struct hdd_context *hdd_ctx) if (!QDF_IS_STATUS_SUCCESS(status)) hdd_err("Failed to set 11d_enable flag"); } - - if (hdd_ctx->config->action_oui_enable && !ucfg_action_oui_enabled()) { - hdd_ctx->config->action_oui_enable = 0; - hdd_err("Ignore action oui ini, since no action_oui component"); - } } #ifdef ENABLE_MTRACE_LOG @@ -12786,57 +12781,9 @@ static void hdd_cfg_params_init(struct hdd_context *hdd_ctx) config->provisioned_intf_pool = cfg_get(psoc, CFG_PROVISION_INTERFACE_POOL); config->derived_intf_pool = cfg_get(psoc, CFG_DERIVED_INTERFACE_POOL); - config->action_oui_enable = cfg_get(psoc, CFG_ENABLE_ACTION_OUI); config->advertise_concurrent_operation = cfg_get(psoc, CFG_ADVERTISE_CONCURRENT_OPERATION); - qdf_str_lcopy(config->action_oui_str[ACTION_OUI_CONNECT_1X1], - cfg_get(psoc, CFG_ACTION_OUI_CONNECT_1X1), - ACTION_OUI_MAX_STR_LEN); - qdf_str_lcopy(config->action_oui_str[ACTION_OUI_ITO_EXTENSION], - cfg_get(psoc, CFG_ACTION_OUI_ITO_EXTENSION), - ACTION_OUI_MAX_STR_LEN); - qdf_str_lcopy(config->action_oui_str[ACTION_OUI_CCKM_1X1], - cfg_get(psoc, CFG_ACTION_OUI_CCKM_1X1), - ACTION_OUI_MAX_STR_LEN); - qdf_str_lcopy(config->action_oui_str[ACTION_OUI_ITO_ALTERNATE], - cfg_get(psoc, CFG_ACTION_OUI_ITO_ALTERNATE), - ACTION_OUI_MAX_STR_LEN); - qdf_str_lcopy(config->action_oui_str[ACTION_OUI_SWITCH_TO_11N_MODE], - cfg_get(psoc, CFG_ACTION_OUI_SWITCH_TO_11N_MODE), - ACTION_OUI_MAX_STR_LEN); - qdf_str_lcopy(config->action_oui_str[ACTION_OUI_CONNECT_1X1_WITH_1_CHAIN], - cfg_get(psoc, - CFG_ACTION_OUI_CONNECT_1X1_WITH_1_CHAIN), - ACTION_OUI_MAX_STR_LEN); - qdf_str_lcopy(config->action_oui_str[ACTION_OUI_DISABLE_AGGRESSIVE_TX], - cfg_get(psoc, - CFG_ACTION_OUI_DISABLE_AGGRESSIVE_TX), - ACTION_OUI_MAX_STR_LEN); - qdf_str_lcopy(config->action_oui_str[ACTION_OUI_FORCE_MAX_NSS], - cfg_get(psoc, CFG_ACTION_OUI_FORCE_MAX_NSS), - ACTION_OUI_MAX_STR_LEN); - qdf_str_lcopy(config->action_oui_str - [ACTION_OUI_DISABLE_AGGRESSIVE_EDCA], - cfg_get(psoc, - CFG_ACTION_OUI_DISABLE_AGGRESSIVE_EDCA), - ACTION_OUI_MAX_STR_LEN); - qdf_str_lcopy(config->action_oui_str[ACTION_OUI_EXTEND_WOW_ITO], - cfg_get(psoc, CFG_ACTION_OUI_EXTEND_WOW_ITO), - ACTION_OUI_MAX_STR_LEN); - qdf_str_lcopy(config->action_oui_str[ACTION_OUI_DISABLE_TWT], - cfg_get(psoc, CFG_ACTION_OUI_DISABLE_TWT), - ACTION_OUI_MAX_STR_LEN); - qdf_str_lcopy(config->action_oui_str[ACTION_OUI_HOST_RECONN], - cfg_get(psoc, CFG_ACTION_OUI_RECONN_ASSOCTIMEOUT), - ACTION_OUI_MAX_STR_LEN); - qdf_str_lcopy(config->action_oui_str[ACTION_OUI_TAKE_ALL_BAND_INFO], - cfg_get(psoc, CFG_ACTION_OUI_TAKE_ALL_BAND_INFO), - ACTION_OUI_MAX_STR_LEN); - qdf_str_lcopy(config->action_oui_str[ACTION_OUI_11BE_OUI_ALLOW], - cfg_get(psoc, CFG_ACTION_11BE_OUI_ALLOW_LIST), - ACTION_OUI_MAX_STR_LEN); - config->is_unit_test_framework_enabled = cfg_get(psoc, CFG_ENABLE_UNIT_TEST_FRAMEWORK); config->disable_channel = cfg_get(psoc, CFG_ENABLE_DISABLE_CHANNEL); @@ -14685,57 +14632,6 @@ static void hdd_v2_flow_pool_unmap(int vdev_id) OL_TXRX_PDEV_ID, vdev_id); } -/** - * hdd_action_oui_config() - Configure action_oui strings - * @hdd_ctx: pointer to hdd context - * - * This is a HDD wrapper function which invokes ucfg api - * of action_oui component to parse action oui strings. - * - * Return: None - */ -static void hdd_action_oui_config(struct hdd_context *hdd_ctx) -{ - QDF_STATUS status; - uint32_t id; - uint8_t *str; - - if (!hdd_ctx->config->action_oui_enable) - return; - - for (id = 0; id < ACTION_OUI_MAXIMUM_ID; id++) { - str = hdd_ctx->config->action_oui_str[id]; - if (!qdf_str_len(str)) - continue; - - status = ucfg_action_oui_parse(hdd_ctx->psoc, str, id); - if (!QDF_IS_STATUS_SUCCESS(status)) - hdd_err("Failed to parse action_oui str: %u", id); - } -} - -/** - * hdd_action_oui_send() - Send action_oui extensions to firmware - * @hdd_ctx: pointer to hdd context - * - * This is a HDD wrapper function which invokes ucfg api - * of action_oui component to send action oui extensions to firmware. - * - * Return: None - */ -static void hdd_action_oui_send(struct hdd_context *hdd_ctx) -{ - QDF_STATUS status; - - if (!hdd_ctx->config->action_oui_enable) - return; - - status = ucfg_action_oui_send(hdd_ctx->psoc); - if (!QDF_IS_STATUS_SUCCESS(status)) - hdd_err("Failed to send one or all action_ouis"); - ucfg_mlme_set_usr_disable_sta_eht(hdd_ctx->psoc, false); -} - static void hdd_hastings_bt_war_initialize(struct hdd_context *hdd_ctx) { if (hdd_ctx->config->iface_change_wait_time) @@ -14923,8 +14819,6 @@ int hdd_configure_cds(struct hdd_context *hdd_ctx) hdd_debug("Failed to register mode change cb with Policy Manager"); goto cds_disable; } - hdd_action_oui_config(hdd_ctx); - hdd_action_oui_send(hdd_ctx); if (hdd_green_ap_enable_egap(hdd_ctx)) hdd_debug("enhance green ap is not enabled");