summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAmar Singhal <asinghal@qca.qualcomm.com>2015-08-03 14:01:59 -0700
committerAnjaneedevi Kapparapu <akappa@codeaurora.org>2015-08-06 14:12:03 +0530
commitd88eca8887ae94b3897086436c194496fdb0de6f (patch)
tree56143af90264571476b455dbf6498e6b9403f80e
parent447589c6f288f139789fb5a94c1e1955643d5346 (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.h6
-rw-r--r--CORE/HDD/src/wlan_hdd_cfg.c7
-rw-r--r--CORE/MAC/inc/aniGlobal.h2
-rw-r--r--CORE/SERVICES/WMA/regdomain.c10
-rw-r--r--CORE/SERVICES/WMA/regdomain.h5
-rw-r--r--CORE/SERVICES/WMA/wma.c14
-rw-r--r--CORE/SERVICES/WMA/wma.h7
-rw-r--r--CORE/VOSS/src/vos_api.c3
-rw-r--r--CORE/VOSS/src/vos_nvitem.c6
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;
}