mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-15 01:01:56 -04:00
qcacld-3.0: Add support for 1x1 connect with 1 Tx/Rx Chain action OUI
Add support for new 1x1 connect with 1 Tx/Rx Chain action OUI to be parsed and sent to the FW. From host during connection, the behaviour is same as existing connect 1x1 action OUI where nss is sent to 1 to the FW, but the FW takes the decision to use only one Tx/Rx chain based on the OUIs defined in the new action ID. Change-Id: Ia464209043dc73bcc71577c43b28fbe13e780c23 CRs-Fixed: 2264326
This commit is contained in:
parent
1e0e6db964
commit
f9a704c92a
4 changed files with 114 additions and 6 deletions
|
|
@ -92,6 +92,7 @@ enum action_oui_id {
|
|||
ACTION_OUI_CCKM_1X1 = 2,
|
||||
ACTION_OUI_ITO_ALTERNATE = 3,
|
||||
ACTION_OUI_SWITCH_TO_11N_MODE = 4,
|
||||
ACTION_OUI_CONNECT_1X1_WITH_1_CHAIN = 5,
|
||||
ACTION_OUI_MAXIMUM_ID
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -13795,6 +13795,50 @@ enum hdd_external_acs_policy {
|
|||
#define CFG_ACTION_OUI_SWITCH_TO_11N_MODE_NAME "gActionOUISwitchTo11nMode"
|
||||
#define CFG_ACTION_OUI_SWITCH_TO_11N_MODE_DEFAULT "00904C 03 0418BF E0 21 40"
|
||||
|
||||
/*
|
||||
* <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_NAME "gActionOUIConnect1x1with1TxRxChain"
|
||||
#define CFG_ACTION_OUI_CONNECT_1X1_WITH_1_CHAIN_DEFAULT "001018 06 02FFF0040000 BC 21 40 001018 06 02FFF0050000 BC 21 40 001018 06 02FFF4050000 BC 21 40"
|
||||
|
||||
/* End of action oui inis */
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -4632,6 +4632,13 @@ struct reg_table_entry g_registry_table[] = {
|
|||
VAR_FLAGS_OPTIONAL,
|
||||
(void *)CFG_ACTION_OUI_SWITCH_TO_11N_MODE_DEFAULT),
|
||||
|
||||
REG_VARIABLE_STRING(CFG_ACTION_OUI_CONNECT_1X1_WITH_1_CHAIN_NAME,
|
||||
WLAN_PARAM_String,
|
||||
struct hdd_config, action_oui_str[5],
|
||||
VAR_FLAGS_OPTIONAL,
|
||||
(void *)
|
||||
CFG_ACTION_OUI_CONNECT_1X1_WITH_1_CHAIN_DEFAULT),
|
||||
|
||||
REG_VARIABLE(CFG_DTIM_1CHRX_ENABLE_NAME, WLAN_PARAM_Integer,
|
||||
struct hdd_config, enable_dtim_1chrx,
|
||||
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
|
||||
|
|
@ -6258,6 +6265,45 @@ void hdd_cfg_print_11k_offload_params(struct hdd_context *hdd_ctx)
|
|||
hdd_ctx->config->neighbor_report_offload_max_req_cap);
|
||||
}
|
||||
|
||||
/**
|
||||
* hdd_cfg_print_action_oui() - print the action OUI configurations
|
||||
* @hdd_ctx: pointer to the HDD context
|
||||
*
|
||||
* Return: None
|
||||
*/
|
||||
static void hdd_cfg_print_action_oui(struct hdd_context *hdd_ctx)
|
||||
{
|
||||
struct hdd_config *config = hdd_ctx->config;
|
||||
|
||||
hdd_debug("Name = [%s] value = [%u]",
|
||||
CFG_ENABLE_ACTION_OUI,
|
||||
config->action_oui_enable);
|
||||
|
||||
hdd_debug("Name = [%s] value = [%s]",
|
||||
CFG_ACTION_OUI_CONNECT_1X1_NAME,
|
||||
config->action_oui_str[ACTION_OUI_CONNECT_1X1]);
|
||||
|
||||
hdd_debug("Name = [%s] value = [%s]",
|
||||
CFG_ACTION_OUI_ITO_EXTENSION_NAME,
|
||||
config->action_oui_str[ACTION_OUI_ITO_EXTENSION]);
|
||||
|
||||
hdd_debug("Name = [%s] value = [%s]",
|
||||
CFG_ACTION_OUI_CCKM_1X1_NAME,
|
||||
config->action_oui_str[ACTION_OUI_CCKM_1X1]);
|
||||
|
||||
hdd_debug("Name = [%s] value = [%s]",
|
||||
CFG_ACTION_OUI_ITO_ALTERNATE_NAME,
|
||||
config->action_oui_str[ACTION_OUI_ITO_ALTERNATE]);
|
||||
|
||||
hdd_debug("Name = [%s] value = [%s]",
|
||||
CFG_ACTION_OUI_SWITCH_TO_11N_MODE_NAME,
|
||||
config->action_oui_str[ACTION_OUI_SWITCH_TO_11N_MODE]);
|
||||
|
||||
hdd_debug("Name = [%s] value = [%s]",
|
||||
CFG_ACTION_OUI_CONNECT_1X1_WITH_1_CHAIN_NAME,
|
||||
config->action_oui_str[ACTION_OUI_CONNECT_1X1_WITH_1_CHAIN]);
|
||||
}
|
||||
|
||||
/**
|
||||
* hdd_cfg_print() - print the hdd configuration
|
||||
* @iniTable: pointer to hdd context
|
||||
|
|
@ -7181,6 +7227,8 @@ void hdd_cfg_print(struct hdd_context *hdd_ctx)
|
|||
CFG_ROAM_FORCE_RSSI_TRIGGER_NAME,
|
||||
hdd_ctx->config->roam_force_rssi_trigger);
|
||||
|
||||
hdd_cfg_print_action_oui(hdd_ctx);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -15442,17 +15442,16 @@ void csr_dump_vendor_ies(uint8_t *ie, uint16_t ie_len)
|
|||
elem_len = ptr[1];
|
||||
left -= 2;
|
||||
if (elem_len > left) {
|
||||
pe_err("Invalid IEs eid: %d elem_len: %d left: %d",
|
||||
elem_id, elem_len, left);
|
||||
sme_err("Invalid IEs eid: %d elem_len: %d left: %d",
|
||||
elem_id, elem_len, left);
|
||||
return;
|
||||
}
|
||||
if (elem_id == SIR_MAC_EID_VENDOR) {
|
||||
pe_debug("Dumping Vendor IE of len %d", elem_len);
|
||||
sme_debug("Dumping Vendor IE of len %d", elem_len);
|
||||
QDF_TRACE_HEX_DUMP(QDF_MODULE_ID_PE,
|
||||
QDF_TRACE_LEVEL_DEBUG,
|
||||
&ptr[2], elem_len);
|
||||
}
|
||||
|
||||
left -= elem_len;
|
||||
ptr += (elem_len + 2);
|
||||
}
|
||||
|
|
@ -15481,7 +15480,7 @@ csr_check_vendor_ap_3_present(tpAniSirGlobal mac_ctx, uint8_t *ie,
|
|||
SIR_MAC_VENDOR_AP_3_OUI_LEN, ie, ie_len)) &&
|
||||
(wlan_get_vendor_ie_ptr_from_oui(SIR_MAC_VENDOR_AP_4_OUI,
|
||||
SIR_MAC_VENDOR_AP_4_OUI_LEN, ie, ie_len))) {
|
||||
pe_debug("Vendor OUI 3 and Vendor OUI 4 found");
|
||||
sme_debug("Vendor OUI 3 and Vendor OUI 4 found");
|
||||
ret = false;
|
||||
}
|
||||
|
||||
|
|
@ -15700,6 +15699,22 @@ QDF_STATUS csr_send_join_req_msg(tpAniSirGlobal pMac, uint32_t sessionId,
|
|||
pMac, (uint8_t *)pIes, ieLen);
|
||||
}
|
||||
|
||||
/*
|
||||
* For WMI_ACTION_OUI_CONNECT_1x1_WITH_1_CHAIN, the host
|
||||
* sends the NSS as 1 to the FW and the FW then decides
|
||||
* after receiving the first beacon after connection to
|
||||
* switch to 1 Tx/Rx Chain.
|
||||
*/
|
||||
|
||||
if (!is_vendor_ap_present) {
|
||||
is_vendor_ap_present =
|
||||
ucfg_action_oui_search(pMac->psoc,
|
||||
&vendor_ap_search_attr,
|
||||
ACTION_OUI_CONNECT_1X1_WITH_1_CHAIN);
|
||||
if (is_vendor_ap_present)
|
||||
sme_debug("1x1 with 1 Chain AP");
|
||||
}
|
||||
|
||||
if (pMac->roam.configParam.is_force_1x1 &&
|
||||
pMac->lteCoexAntShare &&
|
||||
is_vendor_ap_present) {
|
||||
|
|
@ -15719,7 +15734,7 @@ QDF_STATUS csr_send_join_req_msg(tpAniSirGlobal pMac, uint32_t sessionId,
|
|||
&vendor_ap_search_attr,
|
||||
ACTION_OUI_CCKM_1X1);
|
||||
if (is_vendor_ap_present) {
|
||||
pe_debug("vdev: %d WMI_VDEV_PARAM_ABG_MODE_TX_CHAIN_NUM 1",
|
||||
sme_debug("vdev: %d WMI_VDEV_PARAM_ABG_MODE_TX_CHAIN_NUM 1",
|
||||
pSession->sessionId);
|
||||
wma_cli_set_command(
|
||||
pSession->sessionId,
|
||||
|
|
|
|||
Loading…
Reference in a new issue