qcacld-3.0: Move Action OUI INI config to component
Move Action OUI INI config to component. Add ucfg API to load/parse the configuration. Change-Id: Ibaab5428bc575394b9a5b464639d24f80f042e93 CRs-Fixed: 3310697
This commit is contained in:

committed by
Madan Koyyalamudi

parent
8f69751b82
commit
0047371885
@@ -88,12 +88,16 @@ struct action_oui_priv {
|
|||||||
/**
|
/**
|
||||||
* struct action_oui_psoc_priv - Private object to be stored in psoc
|
* struct action_oui_psoc_priv - Private object to be stored in psoc
|
||||||
* @psoc: pointer to psoc object
|
* @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
|
* @total_extensions: total count of extensions from all actions
|
||||||
* @oui_priv: array of pointers used to refer each action info
|
* @oui_priv: array of pointers used to refer each action info
|
||||||
* @tx_ops: call-back functions to send OUIs to firmware
|
* @tx_ops: call-back functions to send OUIs to firmware
|
||||||
*/
|
*/
|
||||||
struct action_oui_psoc_priv {
|
struct action_oui_psoc_priv {
|
||||||
struct wlan_objmgr_psoc *psoc;
|
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;
|
uint32_t total_extensions;
|
||||||
struct action_oui_priv *oui_priv[ACTION_OUI_MAXIMUM_ID];
|
struct action_oui_priv *oui_priv[ACTION_OUI_MAXIMUM_ID];
|
||||||
struct action_oui_tx_ops tx_ops;
|
struct action_oui_tx_ops tx_ops;
|
||||||
@@ -115,6 +119,23 @@ QDF_STATUS
|
|||||||
action_oui_parse(struct action_oui_psoc_priv *psoc_priv,
|
action_oui_parse(struct action_oui_psoc_priv *psoc_priv,
|
||||||
uint8_t *oui_string, enum action_oui_id action_id);
|
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.
|
* action_oui_send() - Send action oui extensions to target_if.
|
||||||
* @psoc_priv: pointer to action_oui psoc priv obj
|
* @psoc_priv: pointer to action_oui psoc priv obj
|
||||||
|
@@ -21,7 +21,8 @@
|
|||||||
* DOC: Implement various notification handlers which are accessed
|
* DOC: Implement various notification handlers which are accessed
|
||||||
* internally in action_oui component only.
|
* 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_main.h"
|
||||||
#include "wlan_action_oui_public_struct.h"
|
#include "wlan_action_oui_public_struct.h"
|
||||||
#include "wlan_action_oui_tgt_api.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
|
QDF_STATUS
|
||||||
action_oui_psoc_create_notification(struct wlan_objmgr_psoc *psoc, void *arg)
|
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);
|
target_if_action_oui_register_tx_ops(&psoc_priv->tx_ops);
|
||||||
psoc_priv->psoc = psoc;
|
psoc_priv->psoc = psoc;
|
||||||
|
action_oui_load_config(psoc_priv);
|
||||||
action_oui_debug("psoc priv attached");
|
action_oui_debug("psoc priv attached");
|
||||||
goto exit;
|
goto exit;
|
||||||
free_psoc_priv:
|
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");
|
action_oui_err("Failed to alloc action_oui");
|
||||||
goto exit;
|
goto exit;
|
||||||
}
|
}
|
||||||
|
action_oui_parse_config(psoc);
|
||||||
|
action_oui_send_config(psoc);
|
||||||
exit:
|
exit:
|
||||||
ACTION_OUI_EXIT();
|
ACTION_OUI_EXIT();
|
||||||
}
|
}
|
||||||
|
@@ -535,6 +535,11 @@ action_oui_parse(struct action_oui_psoc_priv *psoc_priv,
|
|||||||
return QDF_STATUS_E_INVAL;
|
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);
|
str1 = qdf_str_trim((char *)oui_string);
|
||||||
|
|
||||||
while (str1) {
|
while (str1) {
|
||||||
@@ -669,6 +674,60 @@ action_oui_parse(struct action_oui_psoc_priv *psoc_priv,
|
|||||||
return QDF_STATUS_SUCCESS;
|
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,
|
QDF_STATUS action_oui_send(struct action_oui_psoc_priv *psoc_priv,
|
||||||
enum action_oui_id action_id)
|
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)
|
if (!oui_priv)
|
||||||
return QDF_STATUS_SUCCESS;
|
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;
|
extension_list = &oui_priv->extension_list;
|
||||||
qdf_mutex_acquire(&oui_priv->extension_lock);
|
qdf_mutex_acquire(&oui_priv->extension_lock);
|
||||||
|
|
||||||
|
693
components/action_oui/dispatcher/inc/wlan_action_oui_cfg.h
Normal file
693
components/action_oui/dispatcher/inc/wlan_action_oui_cfg.h
Normal file
@@ -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:
|
||||||
|
* <Extension 1> <Extension 2> ..... <Extension 10> (maximum 10)
|
||||||
|
*
|
||||||
|
* whereas, each Extension is separated by space and have the following format:
|
||||||
|
* <Token1> <Token2> <Token3> <Token4> <Token5> <Token6> <Token7> <Token8>
|
||||||
|
* 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
|
||||||
|
*
|
||||||
|
* <OUI> 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.
|
||||||
|
*
|
||||||
|
* <Data_Length> is mandatory field and should give length of
|
||||||
|
* the <Data> if present else zero
|
||||||
|
*
|
||||||
|
* Presence of <Data> is controlled by <Data_Length>, if <Data_Length> is 0,
|
||||||
|
* then <Data> 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.
|
||||||
|
*
|
||||||
|
* <Data_Mask> is mandatory if <Data> is present and length of the
|
||||||
|
* Data mask string depends on the <Data Length>
|
||||||
|
* If <Data Length> 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 <Data_Mask> has to be constructed from left to right.
|
||||||
|
*
|
||||||
|
* Presence of <Mac_Address> and <Capability> is
|
||||||
|
* controlled by <Info_Presence_Bit> which is mandatory
|
||||||
|
* <Info_Presence_Bit> 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)
|
||||||
|
*
|
||||||
|
* <Mac_Address_Mask> for <Mac_Address> should be constructed from left to right
|
||||||
|
*
|
||||||
|
* <Capability> 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)
|
||||||
|
* <Capability> is present if at least one of the bit is set
|
||||||
|
* from b2 - b6 in <Info_Presence_Bit>
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* <ini>
|
||||||
|
* 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
|
||||||
|
*
|
||||||
|
* </ini>
|
||||||
|
*/
|
||||||
|
#define CFG_ENABLE_ACTION_OUI CFG_INI_BOOL( \
|
||||||
|
"gEnableActionOUI", \
|
||||||
|
1, \
|
||||||
|
"Enable/Disable action oui feature")
|
||||||
|
|
||||||
|
/*
|
||||||
|
* <ini>
|
||||||
|
* 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
|
||||||
|
*
|
||||||
|
* </ini>
|
||||||
|
*/
|
||||||
|
#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")
|
||||||
|
|
||||||
|
/*
|
||||||
|
* <ini>
|
||||||
|
* 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
|
||||||
|
*
|
||||||
|
* </ini>
|
||||||
|
*/
|
||||||
|
#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")
|
||||||
|
|
||||||
|
/*
|
||||||
|
* <ini>
|
||||||
|
* 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
|
||||||
|
*
|
||||||
|
* </ini>
|
||||||
|
*/
|
||||||
|
#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")
|
||||||
|
|
||||||
|
/*
|
||||||
|
* <ini>
|
||||||
|
* 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
|
||||||
|
*
|
||||||
|
* </ini>
|
||||||
|
*/
|
||||||
|
#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")
|
||||||
|
|
||||||
|
/*
|
||||||
|
* <ini>
|
||||||
|
* 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
|
||||||
|
*
|
||||||
|
* </ini>
|
||||||
|
*/
|
||||||
|
#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")
|
||||||
|
|
||||||
|
/*
|
||||||
|
* <ini>
|
||||||
|
* 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
|
||||||
|
*
|
||||||
|
* </ini>
|
||||||
|
*/
|
||||||
|
#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")
|
||||||
|
|
||||||
|
/*
|
||||||
|
* <ini>
|
||||||
|
* 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
|
||||||
|
*
|
||||||
|
* </ini>
|
||||||
|
*/
|
||||||
|
#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")
|
||||||
|
|
||||||
|
/*
|
||||||
|
* <ini>
|
||||||
|
* 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
|
||||||
|
*
|
||||||
|
* </ini>
|
||||||
|
*/
|
||||||
|
#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")
|
||||||
|
|
||||||
|
/*
|
||||||
|
* <ini>
|
||||||
|
* 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
|
||||||
|
*
|
||||||
|
* </ini>
|
||||||
|
*/
|
||||||
|
#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")
|
||||||
|
|
||||||
|
/*
|
||||||
|
* <ini>
|
||||||
|
* 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
|
||||||
|
*
|
||||||
|
* </ini>
|
||||||
|
*/
|
||||||
|
#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")
|
||||||
|
|
||||||
|
/*
|
||||||
|
* <ini>
|
||||||
|
* 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
|
||||||
|
*
|
||||||
|
* </ini>
|
||||||
|
*/
|
||||||
|
#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")
|
||||||
|
|
||||||
|
/*
|
||||||
|
* <ini>
|
||||||
|
* 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
|
||||||
|
*
|
||||||
|
* </ini>
|
||||||
|
*/
|
||||||
|
#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")
|
||||||
|
|
||||||
|
/*
|
||||||
|
* <ini>
|
||||||
|
* 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
|
||||||
|
*
|
||||||
|
* </ini>
|
||||||
|
*/
|
||||||
|
#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")
|
||||||
|
|
||||||
|
/*
|
||||||
|
* <ini>
|
||||||
|
* 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
|
||||||
|
*
|
||||||
|
* </ini>
|
||||||
|
*/
|
||||||
|
#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
|
@@ -100,14 +100,11 @@ QDF_STATUS ucfg_action_oui_send(struct wlan_objmgr_psoc *psoc);
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* ucfg_action_oui_enabled() - State of action_oui component
|
* ucfg_action_oui_enabled() - State of action_oui component
|
||||||
|
* @psoc: psoc object
|
||||||
*
|
*
|
||||||
* Return: When action_oui component is present return true
|
* Return: True if action oui is enabled
|
||||||
* else return false.
|
|
||||||
*/
|
*/
|
||||||
static inline bool ucfg_action_oui_enabled(void)
|
bool ucfg_action_oui_enabled(struct wlan_objmgr_psoc *psoc);
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ucfg_action_oui_search() - Check for OUIs and related info in IE data.
|
* 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.
|
* Return: QDF_STATUS_SUCCESS If sending is successful.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
QDF_STATUS ucfg_action_oui_send_by_id(struct wlan_objmgr_psoc *psoc,
|
QDF_STATUS ucfg_action_oui_send_by_id(struct wlan_objmgr_psoc *psoc,
|
||||||
enum action_oui_id id);
|
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
|
#else
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -305,6 +312,20 @@ QDF_STATUS ucfg_action_oui_send_by_id(struct wlan_objmgr_psoc *psoc,
|
|||||||
{
|
{
|
||||||
return QDF_STATUS_SUCCESS;
|
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_FEATURE_ACTION_OUI */
|
||||||
|
|
||||||
#endif /* _WLAN_ACTION_OUI_UCFG_API_H_ */
|
#endif /* _WLAN_ACTION_OUI_UCFG_API_H_ */
|
||||||
|
@@ -90,58 +90,45 @@ void ucfg_action_oui_psoc_disable(struct wlan_objmgr_psoc *psoc)
|
|||||||
action_oui_psoc_disable(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
|
QDF_STATUS
|
||||||
ucfg_action_oui_parse(struct wlan_objmgr_psoc *psoc,
|
ucfg_action_oui_parse(struct wlan_objmgr_psoc *psoc,
|
||||||
const uint8_t *in_str,
|
const uint8_t *in_str,
|
||||||
enum action_oui_id action_id)
|
enum action_oui_id action_id)
|
||||||
{
|
{
|
||||||
struct action_oui_psoc_priv *psoc_priv;
|
return action_oui_parse_string(psoc, in_str, action_id);
|
||||||
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
|
QDF_STATUS
|
||||||
|
@@ -51,6 +51,7 @@
|
|||||||
#include "cfg_legacy_dp.h"
|
#include "cfg_legacy_dp.h"
|
||||||
#include "cfg_dlm.h"
|
#include "cfg_dlm.h"
|
||||||
#include "cfg_pkt_capture.h"
|
#include "cfg_pkt_capture.h"
|
||||||
|
#include "wlan_action_oui_cfg.h"
|
||||||
|
|
||||||
/* Maintain Alphabetic order here while adding components */
|
/* Maintain Alphabetic order here while adding components */
|
||||||
#define CFG_ALL \
|
#define CFG_ALL \
|
||||||
@@ -68,4 +69,6 @@
|
|||||||
CFG_PMO_ALL \
|
CFG_PMO_ALL \
|
||||||
CFG_TDLS_ALL \
|
CFG_TDLS_ALL \
|
||||||
CFG_PKT_CAPTURE_MODE_ALL \
|
CFG_PKT_CAPTURE_MODE_ALL \
|
||||||
CFG_TIME_SYNC_FTM_ALL
|
CFG_TIME_SYNC_FTM_ALL \
|
||||||
|
CFG_ACTION_OUI
|
||||||
|
|
||||||
|
@@ -1795,6 +1795,7 @@ static void mlme_init_sta_cfg(struct wlan_objmgr_psoc *psoc,
|
|||||||
cfg_get(psoc, CFG_MAX_LI_MODULATED_DTIM_MS);
|
cfg_get(psoc, CFG_MAX_LI_MODULATED_DTIM_MS);
|
||||||
|
|
||||||
mlme_init_sta_mlo_cfg(psoc, sta);
|
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,
|
static void mlme_init_stats_cfg(struct wlan_objmgr_psoc *psoc,
|
||||||
|
@@ -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,
|
void wlan_mlme_set_usr_disable_sta_eht(struct wlan_objmgr_psoc *psoc,
|
||||||
bool disable);
|
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
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -931,618 +931,6 @@ struct dhcp_server {
|
|||||||
CFG_VALUE_OR_DEFAULT, \
|
CFG_VALUE_OR_DEFAULT, \
|
||||||
"It is bit mask value of Interfaces")
|
"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:
|
|
||||||
* <Extension 1> <Extension 2> ..... <Extension 10> (maximum 10)
|
|
||||||
*
|
|
||||||
* whereas, each Extension is separated by space and have the following format:
|
|
||||||
* <Token1> <Token2> <Token3> <Token4> <Token5> <Token6> <Token7> <Token8>
|
|
||||||
* 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
|
|
||||||
*
|
|
||||||
* <OUI> 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.
|
|
||||||
*
|
|
||||||
* <Data_Length> is mandatory field and should give length of
|
|
||||||
* the <Data> if present else zero
|
|
||||||
*
|
|
||||||
* Presence of <Data> is controlled by <Data_Length>, if <Data_Length> is 0,
|
|
||||||
* then <Data> 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.
|
|
||||||
*
|
|
||||||
* <Data_Mask> is mandatory if <Data> is present and length of the
|
|
||||||
* Data mask string depends on the <Data Length>
|
|
||||||
* If <Data Length> 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 <Data_Mask> has to be constructed from left to right.
|
|
||||||
*
|
|
||||||
* Presence of <Mac_Address> and <Capability> is
|
|
||||||
* controlled by <Info_Presence_Bit> which is mandatory
|
|
||||||
* <Info_Presence_Bit> 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)
|
|
||||||
*
|
|
||||||
* <Mac_Address_Mask> for <Mac_Address> should be constructed from left to right
|
|
||||||
*
|
|
||||||
* <Capability> 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)
|
|
||||||
* <Capability> is present if atleast one of the bit is set
|
|
||||||
* from b2 - b6 in <Info_Presence_Bit>
|
|
||||||
*
|
|
||||||
* 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
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* <ini>
|
|
||||||
* 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
|
|
||||||
*
|
|
||||||
* </ini>
|
|
||||||
*/
|
|
||||||
#define CFG_ENABLE_ACTION_OUI CFG_INI_BOOL( \
|
|
||||||
"gEnableActionOUI", \
|
|
||||||
1, \
|
|
||||||
"Enable/Disable action oui feature")
|
|
||||||
|
|
||||||
/*
|
|
||||||
* <ini>
|
|
||||||
* 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
|
|
||||||
*
|
|
||||||
* </ini>
|
|
||||||
*/
|
|
||||||
#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")
|
|
||||||
|
|
||||||
/*
|
|
||||||
* <ini>
|
|
||||||
* 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
|
|
||||||
*
|
|
||||||
* </ini>
|
|
||||||
*/
|
|
||||||
#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")
|
|
||||||
|
|
||||||
/*
|
|
||||||
* <ini>
|
|
||||||
* 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
|
|
||||||
*
|
|
||||||
* </ini>
|
|
||||||
*/
|
|
||||||
#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")
|
|
||||||
|
|
||||||
/*
|
|
||||||
* <ini>
|
|
||||||
* 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
|
|
||||||
*
|
|
||||||
* </ini>
|
|
||||||
*/
|
|
||||||
#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")
|
|
||||||
|
|
||||||
/*
|
|
||||||
* <ini>
|
|
||||||
* 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
|
|
||||||
*
|
|
||||||
* </ini>
|
|
||||||
*/
|
|
||||||
#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")
|
|
||||||
|
|
||||||
/*
|
|
||||||
* <ini>
|
|
||||||
* 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
|
|
||||||
*
|
|
||||||
* </ini>
|
|
||||||
*/
|
|
||||||
#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")
|
|
||||||
|
|
||||||
/*
|
|
||||||
* <ini>
|
|
||||||
* 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
|
|
||||||
*
|
|
||||||
* </ini>
|
|
||||||
*/
|
|
||||||
#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")
|
|
||||||
|
|
||||||
/*
|
|
||||||
* <ini>
|
|
||||||
* 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
|
|
||||||
*
|
|
||||||
* </ini>
|
|
||||||
*/
|
|
||||||
#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")
|
|
||||||
|
|
||||||
/*
|
|
||||||
* <ini>
|
|
||||||
* 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
|
|
||||||
*
|
|
||||||
* </ini>
|
|
||||||
*/
|
|
||||||
#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")
|
|
||||||
|
|
||||||
/*
|
|
||||||
* <ini>
|
|
||||||
* 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
|
|
||||||
*
|
|
||||||
* </ini>
|
|
||||||
*/
|
|
||||||
#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")
|
|
||||||
|
|
||||||
/*
|
|
||||||
* <ini>
|
|
||||||
* 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
|
|
||||||
*
|
|
||||||
* </ini>
|
|
||||||
*/
|
|
||||||
#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")
|
|
||||||
|
|
||||||
/*
|
|
||||||
* <ini>
|
|
||||||
* 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
|
|
||||||
*
|
|
||||||
* </ini>
|
|
||||||
*/
|
|
||||||
#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")
|
|
||||||
|
|
||||||
/*
|
|
||||||
* <ini>
|
|
||||||
* 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
|
|
||||||
*
|
|
||||||
* </ini>
|
|
||||||
*/
|
|
||||||
#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
|
#ifdef ENABLE_MTRACE_LOG
|
||||||
/*
|
/*
|
||||||
* <ini>
|
* <ini>
|
||||||
@@ -1870,48 +1258,6 @@ enum host_log_level {
|
|||||||
"", \
|
"", \
|
||||||
"Set modulized host debug log level")
|
"Set modulized host debug log level")
|
||||||
|
|
||||||
/*
|
|
||||||
* <ini>
|
|
||||||
* 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
|
|
||||||
*
|
|
||||||
* </ini>
|
|
||||||
*/
|
|
||||||
#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
|
#ifdef WLAN_FEATURE_DYNAMIC_MAC_ADDR_UPDATE
|
||||||
/*
|
/*
|
||||||
* <ini>
|
* <ini>
|
||||||
@@ -1951,26 +1297,11 @@ enum host_log_level {
|
|||||||
CFG_WLAN_CLUB_GET_STA_IN_LL_STA_REQ \
|
CFG_WLAN_CLUB_GET_STA_IN_LL_STA_REQ \
|
||||||
CFG_WLAN_LOGGING_SUPPORT_ALL \
|
CFG_WLAN_LOGGING_SUPPORT_ALL \
|
||||||
CFG_WLAN_STA_PERIODIC_STATS \
|
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_ADVERTISE_CONCURRENT_OPERATION) \
|
||||||
CFG(CFG_BUG_ON_REINIT_FAILURE) \
|
CFG(CFG_BUG_ON_REINIT_FAILURE) \
|
||||||
CFG(CFG_DBS_SCAN_SELECTION) \
|
CFG(CFG_DBS_SCAN_SELECTION) \
|
||||||
CFG(CFG_DERIVED_INTERFACE_POOL) \
|
CFG(CFG_DERIVED_INTERFACE_POOL) \
|
||||||
CFG(CFG_ENABLE_CONCURRENT_STA) \
|
CFG(CFG_ENABLE_CONCURRENT_STA) \
|
||||||
CFG(CFG_ENABLE_ACTION_OUI) \
|
|
||||||
CFG(CFG_ENABLE_FW_LOG) \
|
CFG(CFG_ENABLE_FW_LOG) \
|
||||||
CFG(CFG_ENABLE_FW_UART_PRINT) \
|
CFG(CFG_ENABLE_FW_UART_PRINT) \
|
||||||
CFG(CFG_ENABLE_MAC_PROVISION) \
|
CFG(CFG_ENABLE_MAC_PROVISION) \
|
||||||
|
@@ -119,8 +119,6 @@ struct hdd_config {
|
|||||||
uint16_t sap_tx_leakage_threshold;
|
uint16_t sap_tx_leakage_threshold;
|
||||||
bool sap_internal_restart;
|
bool sap_internal_restart;
|
||||||
bool is_11k_offload_supported;
|
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 is_unit_test_framework_enabled;
|
||||||
bool disable_channel;
|
bool disable_channel;
|
||||||
|
|
||||||
|
@@ -370,7 +370,7 @@ hdd_update_action_oui_for_connect(struct hdd_context *hdd_ctx,
|
|||||||
uint8_t *str;
|
uint8_t *str;
|
||||||
bool usr_disable_eht;
|
bool usr_disable_eht;
|
||||||
|
|
||||||
if (!hdd_ctx->config->action_oui_enable)
|
if (!ucfg_action_oui_enabled(hdd_ctx->psoc))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
usr_disable_eht = ucfg_mlme_get_usr_disable_sta_eht(hdd_ctx->psoc);
|
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);
|
ACTION_OUI_11BE_OUI_ALLOW);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
str =
|
str = ucfg_action_oui_get_config(hdd_ctx->psoc,
|
||||||
hdd_ctx->config->action_oui_str[ACTION_OUI_11BE_OUI_ALLOW];
|
ACTION_OUI_11BE_OUI_ALLOW);
|
||||||
if (!qdf_str_len(str))
|
if (!qdf_str_len(str))
|
||||||
goto send_oui;
|
goto send_oui;
|
||||||
|
|
||||||
|
@@ -12156,11 +12156,6 @@ static void hdd_override_ini_config(struct hdd_context *hdd_ctx)
|
|||||||
if (!QDF_IS_STATUS_SUCCESS(status))
|
if (!QDF_IS_STATUS_SUCCESS(status))
|
||||||
hdd_err("Failed to set 11d_enable flag");
|
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
|
#ifdef ENABLE_MTRACE_LOG
|
||||||
@@ -12786,57 +12781,9 @@ static void hdd_cfg_params_init(struct hdd_context *hdd_ctx)
|
|||||||
config->provisioned_intf_pool =
|
config->provisioned_intf_pool =
|
||||||
cfg_get(psoc, CFG_PROVISION_INTERFACE_POOL);
|
cfg_get(psoc, CFG_PROVISION_INTERFACE_POOL);
|
||||||
config->derived_intf_pool = cfg_get(psoc, CFG_DERIVED_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 =
|
config->advertise_concurrent_operation =
|
||||||
cfg_get(psoc,
|
cfg_get(psoc,
|
||||||
CFG_ADVERTISE_CONCURRENT_OPERATION);
|
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 =
|
config->is_unit_test_framework_enabled =
|
||||||
cfg_get(psoc, CFG_ENABLE_UNIT_TEST_FRAMEWORK);
|
cfg_get(psoc, CFG_ENABLE_UNIT_TEST_FRAMEWORK);
|
||||||
config->disable_channel = cfg_get(psoc, CFG_ENABLE_DISABLE_CHANNEL);
|
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);
|
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)
|
static void hdd_hastings_bt_war_initialize(struct hdd_context *hdd_ctx)
|
||||||
{
|
{
|
||||||
if (hdd_ctx->config->iface_change_wait_time)
|
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");
|
hdd_debug("Failed to register mode change cb with Policy Manager");
|
||||||
goto cds_disable;
|
goto cds_disable;
|
||||||
}
|
}
|
||||||
hdd_action_oui_config(hdd_ctx);
|
|
||||||
hdd_action_oui_send(hdd_ctx);
|
|
||||||
|
|
||||||
if (hdd_green_ap_enable_egap(hdd_ctx))
|
if (hdd_green_ap_enable_egap(hdd_ctx))
|
||||||
hdd_debug("enhance green ap is not enabled");
|
hdd_debug("enhance green ap is not enabled");
|
||||||
|
Reference in New Issue
Block a user