diff options
| author | Amar Singhal <asinghal@qca.qualcomm.com> | 2015-08-03 14:01:59 -0700 |
|---|---|---|
| committer | Anjaneedevi Kapparapu <akappa@codeaurora.org> | 2015-08-06 14:12:03 +0530 |
| commit | d88eca8887ae94b3897086436c194496fdb0de6f (patch) | |
| tree | 56143af90264571476b455dbf6498e6b9403f80e | |
| parent | 447589c6f288f139789fb5a94c1e1955643d5346 (diff) | |
qcacld-2.0: Send TPC with parameter WMI_PDEV_PARAM_TX_CHAIN_MASK_CCK
The TPC when CCK chain mask is applied is a configurable power
from INI. Use the same PDEV parameter WMI_PDEV_PARAM_TX_CHAIN_MASK_CCK
to denote TPC as well to firmware.
Change-Id: I8e8d6740fe0033beb967372a36b914d7db5f0efc
CRs-Fixed: 884822
| -rw-r--r-- | CORE/HDD/inc/wlan_hdd_cfg.h | 6 | ||||
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_cfg.c | 7 | ||||
| -rw-r--r-- | CORE/MAC/inc/aniGlobal.h | 2 | ||||
| -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 | 14 | ||||
| -rw-r--r-- | CORE/SERVICES/WMA/wma.h | 7 | ||||
| -rw-r--r-- | CORE/VOSS/src/vos_api.c | 3 | ||||
| -rw-r--r-- | CORE/VOSS/src/vos_nvitem.c | 6 |
9 files changed, 40 insertions, 20 deletions
diff --git a/CORE/HDD/inc/wlan_hdd_cfg.h b/CORE/HDD/inc/wlan_hdd_cfg.h index 188cbb320651..ff298d01073a 100644 --- a/CORE/HDD/inc/wlan_hdd_cfg.h +++ b/CORE/HDD/inc/wlan_hdd_cfg.h @@ -3009,6 +3009,11 @@ enum dot11p_mode { #define CFG_TX_CHAIN_MASK_1SS_MAX (3) #define CFG_TX_CHAIN_MASK_1SS_DEFAULT (1) +#define CFG_SELF_GEN_FRM_PWR "gSelfGenFrmPwr" +#define CFG_SELF_GEN_FRM_PWR_MIN (0) +#define CFG_SELF_GEN_FRM_PWR_MAX (0xffff) +#define CFG_SELF_GEN_FRM_PWR_DEFAULT (0) + /* * fine timing measurement capability information * @@ -3707,6 +3712,7 @@ typedef struct uint16_t pkt_err_disconn_th; bool tx_chain_mask_cck; uint8_t tx_chain_mask_1ss; + uint16_t self_gen_frm_pwr; #ifdef FEATURE_WLAN_EXTSCAN uint32_t extscan_passive_max_chn_time; diff --git a/CORE/HDD/src/wlan_hdd_cfg.c b/CORE/HDD/src/wlan_hdd_cfg.c index 7392cd214b0c..b1b3208897a5 100644 --- a/CORE/HDD/src/wlan_hdd_cfg.c +++ b/CORE/HDD/src/wlan_hdd_cfg.c @@ -3962,6 +3962,13 @@ REG_TABLE_ENTRY g_registry_table[] = CFG_TX_CHAIN_MASK_1SS_MIN, CFG_TX_CHAIN_MASK_1SS_MAX), + REG_VARIABLE(CFG_SELF_GEN_FRM_PWR, WLAN_PARAM_Integer, + hdd_config_t, self_gen_frm_pwr, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_SELF_GEN_FRM_PWR_DEFAULT, + CFG_SELF_GEN_FRM_PWR_MIN, + CFG_SELF_GEN_FRM_PWR_MAX), + #ifdef FEATURE_WLAN_EXTSCAN REG_VARIABLE(CFG_EXTSCAN_PASSIVE_MAX_CHANNEL_TIME_NAME, WLAN_PARAM_Integer, hdd_config_t, extscan_passive_max_chn_time, diff --git a/CORE/MAC/inc/aniGlobal.h b/CORE/MAC/inc/aniGlobal.h index 6a2465fc263a..edc3409b404f 100644 --- a/CORE/MAC/inc/aniGlobal.h +++ b/CORE/MAC/inc/aniGlobal.h @@ -1103,6 +1103,8 @@ typedef struct sMacOpenParameters tANI_U32 ucTxPartitionBase; #endif /* IPA_UC_OFFLOAD */ + bool tx_chain_mask_cck; + uint16_t self_gen_frm_pwr; } tMacOpenParameters; typedef struct sHalMacStartParameters diff --git a/CORE/SERVICES/WMA/regdomain.c b/CORE/SERVICES/WMA/regdomain.c index 255c657e855b..870e86a66854 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, bool cck_chain_mask) + u_int32_t modeSelect) { const REG_DOMAIN *regdomain2G = NULL; const REG_DOMAIN *regdomain5G = NULL; @@ -558,8 +558,7 @@ 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, - cck_chain_mask); + regpair->regDmn5GHz, ctl_2g, ctl_5g); } /* regdmn_set_dfs_region() - to set the dfs region to wma @@ -582,7 +581,7 @@ void regdmn_set_dfs_region(struct regulatory *reg) wma_set_dfs_regdomain(wma, reg->dfs_region); } -void regdmn_set_regval(struct regulatory *reg, bool cck_chain_mask) +void regdmn_set_regval(struct regulatory *reg) { 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); @@ -595,8 +594,7 @@ void regdmn_set_regval(struct regulatory *reg, bool cck_chain_mask) wma_get_modeselect(wma, &modeSelect); - regdmn_get_ctl_info(reg, wma->reg_cap.wireless_modes, modeSelect, - cck_chain_mask); + regdmn_get_ctl_info(reg, wma->reg_cap.wireless_modes, modeSelect); return; } diff --git a/CORE/SERVICES/WMA/regdomain.h b/CORE/SERVICES/WMA/regdomain.h index 472da7d666f3..516a3afe2b46 100644 --- a/CORE/SERVICES/WMA/regdomain.h +++ b/CORE/SERVICES/WMA/regdomain.h @@ -1093,9 +1093,10 @@ enum CountryCode { CTRY_CANADA2 = 5001, /* Canada for AP only */ CTRY_BELGIUM2 = 5002 /* Belgium/Cisco implementation */ }; + int32_t regdmn_get_country_alpha2(struct regulatory *reg); -void regdmn_set_regval(struct regulatory *reg, - bool cck_chain_mask); +void regdmn_set_regval(struct regulatory *reg); + 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 b54e67f75165..c4ce8e4e64cf 100644 --- a/CORE/SERVICES/WMA/wma.c +++ b/CORE/SERVICES/WMA/wma.c @@ -5981,6 +5981,10 @@ VOS_STATUS WDA_open(v_VOID_t *vos_context, v_VOID_t *os_ctx, olCfg.uc_rx_indication_ring_count = mac_params->ucRxIndRingCount; olCfg.uc_tx_partition_base = mac_params->ucTxPartitionBase; #endif /* IPA_UC_OFFLOAD*/ + + wma_handle->tx_chain_mask_cck = mac_params->tx_chain_mask_cck; + wma_handle->self_gen_frm_pwr = mac_params->self_gen_frm_pwr; + /* Allocate cfg handle */ /* RX Full reorder should enable for PCIe, ROME3.X project only now @@ -29760,15 +29764,14 @@ 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, - bool cck_chain_mask) + u_int16_t regdmn5G, int8_t ctl2G, int8_t ctl5G) { wmi_buf_t buf; wmi_pdev_set_regdomain_cmd_fixed_param *cmd; int32_t len = sizeof(*cmd); 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); - bool cck_mask_val = false; + int32_t cck_mask_val = 0; int ret = 0; if (NULL == wma) { @@ -29802,9 +29805,10 @@ void wma_send_regdomain_info(u_int32_t reg_dmn, u_int16_t regdmn2G, if ((((reg_dmn & ~COUNTRY_ERD_FLAG) == CTRY_JAPAN) || ((reg_dmn & ~COUNTRY_ERD_FLAG) == CTRY_KOREA_ROC)) && - (true == cck_chain_mask)) - cck_mask_val = true; + (true == wma->tx_chain_mask_cck)) + cck_mask_val = 1; + cck_mask_val |= (wma->self_gen_frm_pwr << 16); ret = wmi_unified_pdev_set_param(wma->wmi_handle, WMI_PDEV_PARAM_TX_CHAIN_MASK_CCK, cck_mask_val); diff --git a/CORE/SERVICES/WMA/wma.h b/CORE/SERVICES/WMA/wma.h index 9a5a6b4a5487..874d56e16adc 100644 --- a/CORE/SERVICES/WMA/wma.h +++ b/CORE/SERVICES/WMA/wma.h @@ -781,6 +781,8 @@ typedef struct wma_handle { vos_timer_t log_completion_timer; uint32_t txrx_chainmask; uint8_t per_band_chainmask_supp; + uint16_t self_gen_frm_pwr; + bool tx_chain_mask_cck; }t_wma_handle, *tp_wma_handle; struct wma_target_cap { @@ -1127,8 +1129,7 @@ extern v_BOOL_t sys_validateStaConfig(void *pImage, unsigned long cbFile, 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, - bool cck_chain_mask); + int8_t ctl5G); void wma_get_modeselect(tp_wma_handle wma, u_int32_t *modeSelect); @@ -1151,7 +1152,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, bool cck_chain_mask); + u_int32_t modeSelect); /*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_api.c b/CORE/VOSS/src/vos_api.c index 54518cebcc77..97d2e4acebb0 100644 --- a/CORE/VOSS/src/vos_api.c +++ b/CORE/VOSS/src/vos_api.c @@ -477,6 +477,9 @@ VOS_STATUS vos_open( v_CONTEXT_t *pVosContext, v_SIZE_t hddContextSize ) macOpenParms.ucTxPartitionBase = pHddCtx->cfg_ini->IpaUcTxPartitionBase; #endif /* IPA_UC_OFFLOAD */ + macOpenParms.tx_chain_mask_cck = pHddCtx->cfg_ini->tx_chain_mask_cck; + macOpenParms.self_gen_frm_pwr = pHddCtx->cfg_ini->self_gen_frm_pwr; + vStatus = WDA_open( gpVosContext, gpVosContext->pHDDContext, hdd_update_tgt_cfg, hdd_dfs_indicate_radar, diff --git a/CORE/VOSS/src/vos_nvitem.c b/CORE/VOSS/src/vos_nvitem.c index 64466896af6d..f2b4f59afb77 100644 --- a/CORE/VOSS/src/vos_nvitem.c +++ b/CORE/VOSS/src/vos_nvitem.c @@ -1653,8 +1653,7 @@ int __wlan_hdd_linux_reg_notifier(struct wiphy *wiphy, } /* send CTL info to firmware */ - regdmn_set_regval(&pHddCtx->reg, - pHddCtx->cfg_ini->tx_chain_mask_cck); + regdmn_set_regval(&pHddCtx->reg); /* set dfs_region info */ vos_nv_set_dfs_region(request->dfs_region); @@ -1736,8 +1735,7 @@ VOS_STATUS vos_init_wiphy_from_eeprom(void) init_completion(&pHddCtx->reg_init); /* send CTL info to firmware */ - regdmn_set_regval(&pHddCtx->reg, - pHddCtx->cfg_ini->tx_chain_mask_cck); + regdmn_set_regval(&pHddCtx->reg); return VOS_STATUS_SUCCESS; } |
