diff options
| author | Amar Singhal <asinghal@qca.qualcomm.com> | 2015-07-29 17:40:17 -0700 |
|---|---|---|
| committer | Anjaneedevi Kapparapu <akappa@codeaurora.org> | 2015-07-30 15:33:10 +0530 |
| commit | b0396ba9eae4e8aedb8787be8a98ba54820e917f (patch) | |
| tree | b86eb43d3dde03ef107b7190d03a7300bf9014e9 | |
| parent | f5d87f136909ea3576eb5212c89a18fd272d3fb0 (diff) | |
qcacld-2.0: Send CCK chain mask before wiphy registration
Send CCK chain mask before wiphy registration to WMA. During
wiphy registration, there is regulatory callback and the regdomain/CTL
info is sent during that time to firmware. Therefore send CCK chain mask
to WMA before that.
Change-Id: I6fc9c5951ce1b0b37aab42f9a80cf711006f828a
CRs-Fixed: 881894
| -rw-r--r-- | CORE/HDD/inc/wlan_hdd_cfg.h | 2 | ||||
| -rwxr-xr-x | CORE/HDD/src/wlan_hdd_main.c | 9 | ||||
| -rw-r--r-- | CORE/SERVICES/COMMON/wma_api.h | 1 | ||||
| -rw-r--r-- | CORE/SERVICES/WMA/regdomain.c | 10 | ||||
| -rw-r--r-- | CORE/SERVICES/WMA/regdomain.h | 5 | ||||
| -rw-r--r-- | CORE/SERVICES/WMA/wma.c | 12 | ||||
| -rw-r--r-- | CORE/SERVICES/WMA/wma.h | 8 | ||||
| -rw-r--r-- | CORE/VOSS/src/vos_nvitem.c | 6 |
8 files changed, 25 insertions, 28 deletions
diff --git a/CORE/HDD/inc/wlan_hdd_cfg.h b/CORE/HDD/inc/wlan_hdd_cfg.h index 985132215b10..f63749633374 100644 --- a/CORE/HDD/inc/wlan_hdd_cfg.h +++ b/CORE/HDD/inc/wlan_hdd_cfg.h @@ -3002,7 +3002,7 @@ enum dot11p_mode { #define CFG_TX_CHAIN_MASK_1SS "gTxChainMask1ss" #define CFG_TX_CHAIN_MASK_1SS_MIN (0) #define CFG_TX_CHAIN_MASK_1SS_MAX (3) -#define CFG_TX_CHAIN_MASK_1SS_DEFAULT (0) +#define CFG_TX_CHAIN_MASK_1SS_DEFAULT (1) /* * fine timing measurement capability information diff --git a/CORE/HDD/src/wlan_hdd_main.c b/CORE/HDD/src/wlan_hdd_main.c index 9ef368a272c2..8712097f7ead 100755 --- a/CORE/HDD/src/wlan_hdd_main.c +++ b/CORE/HDD/src/wlan_hdd_main.c @@ -11799,15 +11799,6 @@ int hdd_wlan_startup(struct device *dev, v_VOID_t *hif_sc) goto err_wiphy_unregister; } - ret = process_wma_set_command(0, GEN_PARAM_TX_CHAIN_MASK_CCK, - pHddCtx->cfg_ini->tx_chain_mask_cck, - GEN_CMD); - if (0 != ret) { - hddLog(VOS_TRACE_LEVEL_ERROR, - "%s: set GEN_PARAM_TX_CHAIN_MASK_CCK failed %d", - __func__, ret); - } - ret = process_wma_set_command(0, WMI_PDEV_PARAM_TX_CHAIN_MASK_1SS, pHddCtx->cfg_ini->tx_chain_mask_1ss, PDEV_CMD); diff --git a/CORE/SERVICES/COMMON/wma_api.h b/CORE/SERVICES/COMMON/wma_api.h index c95f6c4c1b0f..48cd36b58170 100644 --- a/CORE/SERVICES/COMMON/wma_api.h +++ b/CORE/SERVICES/COMMON/wma_api.h @@ -79,7 +79,6 @@ typedef enum { GEN_PARAM_MODULATED_DTIM, GEN_PARAM_CAPTURE_TSF, GEN_PARAM_RESET_TSF_GPIO, - GEN_PARAM_TX_CHAIN_MASK_CCK } GEN_PARAM; #define VDEV_CMD 1 diff --git a/CORE/SERVICES/WMA/regdomain.c b/CORE/SERVICES/WMA/regdomain.c index 0e2318860a71..255c657e855b 100644 --- a/CORE/SERVICES/WMA/regdomain.c +++ b/CORE/SERVICES/WMA/regdomain.c @@ -462,7 +462,7 @@ u_int32_t regdmn_getwmodesnreg(u_int32_t modesAvail, } void regdmn_get_ctl_info(struct regulatory *reg, u_int32_t modesAvail, - u_int32_t modeSelect) + u_int32_t modeSelect, bool cck_chain_mask) { const REG_DOMAIN *regdomain2G = NULL; const REG_DOMAIN *regdomain5G = NULL; @@ -558,7 +558,8 @@ void regdmn_get_ctl_info(struct regulatory *reg, u_int32_t modesAvail, reg->ctl_2g = ctl_2g; wma_send_regdomain_info(reg->reg_domain, regpair->regDmn2GHz, - regpair->regDmn5GHz, ctl_2g, ctl_5g); + regpair->regDmn5GHz, ctl_2g, ctl_5g, + cck_chain_mask); } /* regdmn_set_dfs_region() - to set the dfs region to wma @@ -581,7 +582,7 @@ void regdmn_set_dfs_region(struct regulatory *reg) wma_set_dfs_regdomain(wma, reg->dfs_region); } -void regdmn_set_regval(struct regulatory *reg) +void regdmn_set_regval(struct regulatory *reg, bool cck_chain_mask) { void *vos_context = vos_get_global_context(VOS_MODULE_ID_WDA, NULL); tp_wma_handle wma = vos_get_context(VOS_MODULE_ID_WDA, vos_context); @@ -594,7 +595,8 @@ void regdmn_set_regval(struct regulatory *reg) wma_get_modeselect(wma, &modeSelect); - regdmn_get_ctl_info(reg, wma->reg_cap.wireless_modes, modeSelect); + regdmn_get_ctl_info(reg, wma->reg_cap.wireless_modes, modeSelect, + cck_chain_mask); return; } diff --git a/CORE/SERVICES/WMA/regdomain.h b/CORE/SERVICES/WMA/regdomain.h index 072d5564157a..472da7d666f3 100644 --- a/CORE/SERVICES/WMA/regdomain.h +++ b/CORE/SERVICES/WMA/regdomain.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2014 The Linux Foundation. All rights reserved. + * Copyright (c) 2011, 2014-2015 The Linux Foundation. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -1094,7 +1094,8 @@ enum CountryCode { CTRY_BELGIUM2 = 5002 /* Belgium/Cisco implementation */ }; int32_t regdmn_get_country_alpha2(struct regulatory *reg); -void regdmn_set_regval(struct regulatory *reg); +void regdmn_set_regval(struct regulatory *reg, + bool cck_chain_mask); int32_t regdmn_find_ctry_by_name(u_int8_t *alpha2); void regdmn_set_dfs_region(struct regulatory *reg); diff --git a/CORE/SERVICES/WMA/wma.c b/CORE/SERVICES/WMA/wma.c index 87c5863b17f3..ac0a8400fc67 100644 --- a/CORE/SERVICES/WMA/wma.c +++ b/CORE/SERVICES/WMA/wma.c @@ -12704,9 +12704,6 @@ static void wma_process_cli_set_cmd(tp_wma_handle wma, case GEN_PARAM_MODULATED_DTIM: wma_set_modulated_dtim(wma, privcmd); break; - case GEN_PARAM_TX_CHAIN_MASK_CCK: - wma->tx_chain_mask_cck = privcmd->param_value; - break; default: WMA_LOGE("Invalid param id 0x%x", privcmd->param_id); break; @@ -29741,7 +29738,8 @@ tANI_U8 wma_getFwWlanFeatCaps(tANI_U8 featEnumValue) } void wma_send_regdomain_info(u_int32_t reg_dmn, u_int16_t regdmn2G, - u_int16_t regdmn5G, int8_t ctl2G, int8_t ctl5G) + u_int16_t regdmn5G, int8_t ctl2G, int8_t ctl5G, + bool cck_chain_mask) { wmi_buf_t buf; wmi_pdev_set_regdomain_cmd_fixed_param *cmd; @@ -29761,6 +29759,7 @@ void wma_send_regdomain_info(u_int32_t reg_dmn, u_int16_t regdmn2G, WMA_LOGP("%s: wmi_buf_alloc failed", __func__); return; } + cmd = (wmi_pdev_set_regdomain_cmd_fixed_param *) wmi_buf_data(buf); WMITLV_SET_HDR(&cmd->tlv_header, WMITLV_TAG_STRUC_wmi_pdev_set_regdomain_cmd_fixed_param, @@ -29779,8 +29778,9 @@ void wma_send_regdomain_info(u_int32_t reg_dmn, u_int16_t regdmn2G, adf_nbuf_free(buf); } - if ((ctl2G == MKK) && (ctl5G == MKK) && - (true == wma->tx_chain_mask_cck)) + if ((((reg_dmn & ~COUNTRY_ERD_FLAG) == CTRY_JAPAN) || + ((reg_dmn & ~COUNTRY_ERD_FLAG) == CTRY_KOREA_ROC)) && + (true == cck_chain_mask)) cck_mask_val = true; ret = wmi_unified_pdev_set_param(wma->wmi_handle, diff --git a/CORE/SERVICES/WMA/wma.h b/CORE/SERVICES/WMA/wma.h index 0b84c7034934..9a5a6b4a5487 100644 --- a/CORE/SERVICES/WMA/wma.h +++ b/CORE/SERVICES/WMA/wma.h @@ -781,7 +781,6 @@ typedef struct wma_handle { vos_timer_t log_completion_timer; uint32_t txrx_chainmask; uint8_t per_band_chainmask_supp; - bool tx_chain_mask_cck; }t_wma_handle, *tp_wma_handle; struct wma_target_cap { @@ -1127,7 +1126,10 @@ extern v_BOOL_t sys_validateStaConfig(void *pImage, unsigned long cbFile, void **ppStaConfig, v_SIZE_t *pcbStaConfig); extern void vos_WDAComplete_cback(v_PVOID_t pVosContext); extern void wma_send_regdomain_info(u_int32_t reg_dmn, u_int16_t regdmn2G, - u_int16_t regdmn5G, int8_t ctl2G, int8_t ctl5G); + u_int16_t regdmn5G, int8_t ctl2G, + int8_t ctl5G, + bool cck_chain_mask); + void wma_get_modeselect(tp_wma_handle wma, u_int32_t *modeSelect); void wma_set_dfs_regdomain(tp_wma_handle wma, uint8_t dfs_region); @@ -1149,7 +1151,7 @@ VOS_STATUS wma_update_vdev_tbl(tp_wma_handle wma_handle, u_int8_t vdev_id, int32_t regdmn_get_regdmn_for_country(u_int8_t *alpha2); void regdmn_get_ctl_info(struct regulatory *reg, u_int32_t modesAvail, - u_int32_t modeSelect); + u_int32_t modeSelect, bool cck_chain_mask); /*get the ctl from regdomain*/ u_int8_t regdmn_get_ctl_for_regdmn(u_int32_t reg_dmn); diff --git a/CORE/VOSS/src/vos_nvitem.c b/CORE/VOSS/src/vos_nvitem.c index f2b4f59afb77..64466896af6d 100644 --- a/CORE/VOSS/src/vos_nvitem.c +++ b/CORE/VOSS/src/vos_nvitem.c @@ -1653,7 +1653,8 @@ int __wlan_hdd_linux_reg_notifier(struct wiphy *wiphy, } /* send CTL info to firmware */ - regdmn_set_regval(&pHddCtx->reg); + regdmn_set_regval(&pHddCtx->reg, + pHddCtx->cfg_ini->tx_chain_mask_cck); /* set dfs_region info */ vos_nv_set_dfs_region(request->dfs_region); @@ -1735,7 +1736,8 @@ VOS_STATUS vos_init_wiphy_from_eeprom(void) init_completion(&pHddCtx->reg_init); /* send CTL info to firmware */ - regdmn_set_regval(&pHddCtx->reg); + regdmn_set_regval(&pHddCtx->reg, + pHddCtx->cfg_ini->tx_chain_mask_cck); return VOS_STATUS_SUCCESS; } |
