diff options
| author | Akash Patel <akashp@codeaurora.org> | 2014-08-14 22:16:06 -0700 |
|---|---|---|
| committer | Akash Patel <akashp@codeaurora.org> | 2014-08-14 22:17:23 -0700 |
| commit | 261b7cd834cb7da72c217b15521940ad641f1e23 (patch) | |
| tree | 165a794d3d3aa625f3244d234c6c4a5281700d19 | |
| parent | b8a11e307747751e0acae4044ba5dc3a6b6f95c5 (diff) | |
| parent | 64ca8e6bb2f92af7070c01d29869d0a63f2cecf2 (diff) | |
Release 1.0.0.170 QCACLD WLAN Driver
Merge remote-tracking branch 'origin/caf/caf-wlan/master'
* origin/caf/caf-wlan/master:
Cafstaging Release 1.0.0.170
QCACLD-NEW: Fix USB compilation
qcacld: Enable Multi-user MIMO in cfg.ini by default
qcacld: fix build error in function 'ol_check_fw_hash'
qca_cld: Trigger PCI link down recovery when fail to wake up target
qcacld: WMA: Add a field for significant change
qcacld: hdd: to support chainmask configuration in SAP mode
wlan: wma: Fix bang radar logic
Unit test command to test the feature under development
Change-Id: Iffa5fec77325aa783880d83c12198c30073c9be9
| -rw-r--r-- | CORE/HDD/inc/qc_sap_ioctl.h | 5 | ||||
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_hostapd.c | 119 | ||||
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_wext.c | 48 | ||||
| -rw-r--r-- | CORE/MAC/inc/qwlan_version.h | 4 | ||||
| -rw-r--r-- | CORE/MAC/src/include/sirParams.h | 4 | ||||
| -rw-r--r-- | CORE/SERVICES/BMI/ol_fw.c | 6 | ||||
| -rw-r--r-- | CORE/SERVICES/BMI/ol_fw.h | 1 | ||||
| -rw-r--r-- | CORE/SERVICES/HIF/PCIe/hif_pci.c | 4 | ||||
| -rw-r--r-- | CORE/SERVICES/HIF/PCIe/if_pci.c | 10 | ||||
| -rw-r--r-- | CORE/SERVICES/WMA/wma.c | 66 | ||||
| -rw-r--r-- | CORE/SERVICES/WMA/wma.h | 8 | ||||
| -rwxr-xr-x | firmware_bin/WCNSS_qcom_cfg.ini | 4 |
12 files changed, 248 insertions, 31 deletions
diff --git a/CORE/HDD/inc/qc_sap_ioctl.h b/CORE/HDD/inc/qc_sap_ioctl.h index b6584721d3e7..17a27aa01d4b 100644 --- a/CORE/HDD/inc/qc_sap_ioctl.h +++ b/CORE/HDD/inc/qc_sap_ioctl.h @@ -234,7 +234,10 @@ enum { QCSAP_PARAM_SET_CHANNEL_CHANGE, QCASAP_SET_DFS_TARGET_CHNL, QCASAP_SET_RADAR_CMD, - QCSAP_GET_ACL + QCSAP_GET_ACL, + QCASAP_TX_CHAINMASK_CMD, + QCASAP_RX_CHAINMASK_CMD, + QCASAP_NSS_CMD }; int iw_softap_get_channel_list(struct net_device *dev, diff --git a/CORE/HDD/src/wlan_hdd_hostapd.c b/CORE/HDD/src/wlan_hdd_hostapd.c index f607465a697c..3460f3deb294 100644 --- a/CORE/HDD/src/wlan_hdd_hostapd.c +++ b/CORE/HDD/src/wlan_hdd_hostapd.c @@ -2468,6 +2468,32 @@ static iw_softap_setparam(struct net_device *dev, } break; } + case QCASAP_TX_CHAINMASK_CMD: + { + hddLog(LOG1, "QCASAP_TX_CHAINMASK_CMD val %d", set_value); + ret = process_wma_set_command((int)pHostapdAdapter->sessionId, + (int)WMI_PDEV_PARAM_TX_CHAIN_MASK, + set_value, PDEV_CMD); + break; + } + + case QCASAP_RX_CHAINMASK_CMD: + { + hddLog(LOG1, "QCASAP_RX_CHAINMASK_CMD val %d", set_value); + ret = process_wma_set_command((int)pHostapdAdapter->sessionId, + (int)WMI_PDEV_PARAM_RX_CHAIN_MASK, + set_value, PDEV_CMD); + break; + } + + case QCASAP_NSS_CMD: + { + hddLog(LOG1, "QCASAP_NSS_CMD val %d", set_value); + ret = process_wma_set_command((int)pHostapdAdapter->sessionId, + (int)WMI_VDEV_PARAM_NSS, + set_value, VDEV_CMD); + break; + } default: hddLog(LOGE, FL("Invalid setparam command %d value %d"), sub_cmd, set_value); @@ -2490,6 +2516,15 @@ static iw_softap_getparam(struct net_device *dev, int sub_cmd = value[0]; eHalStatus status; int ret = 0; /* success */ + hdd_context_t *pHddCtx = NULL; + + pHddCtx = WLAN_HDD_GET_CTX(pHostapdAdapter); + status = wlan_hdd_validate_context(pHddCtx); + + if (0 != status) { + hddLog(VOS_TRACE_LEVEL_ERROR, FL("HDD context is not valid")); + return status; + } switch (sub_cmd) { @@ -2523,9 +2558,7 @@ static iw_softap_getparam(struct net_device *dev, case QCSAP_PARAM_RTSCTS: { - hdd_context_t *wmahddCtxt = WLAN_HDD_GET_CTX(pHostapdAdapter); - void *wmapvosContext = wmahddCtxt->pvosContext; - *value = wma_cli_get_command(wmapvosContext, + *value = wma_cli_get_command(pHddCtx->pvosContext, (int)pHostapdAdapter->sessionId, (int)WMI_VDEV_PARAM_ENABLE_RTSCTS, VDEV_CMD); @@ -2542,9 +2575,8 @@ static iw_softap_getparam(struct net_device *dev, case QCSAP_GTX_HT_MCS: { - hdd_context_t *wmahddCtxt = WLAN_HDD_GET_CTX(pHostapdAdapter); hddLog(LOG1, "GET WMI_VDEV_PARAM_GTX_HT_MCS"); - *value = wma_cli_get_command(wmahddCtxt->pvosContext, + *value = wma_cli_get_command(pHddCtx->pvosContext, (int)pHostapdAdapter->sessionId, (int)WMI_VDEV_PARAM_GTX_HT_MCS, GTX_CMD); @@ -2553,9 +2585,8 @@ static iw_softap_getparam(struct net_device *dev, case QCSAP_GTX_VHT_MCS: { - hdd_context_t *wmahddCtxt = WLAN_HDD_GET_CTX(pHostapdAdapter); hddLog(LOG1, "GET WMI_VDEV_PARAM_GTX_VHT_MCS"); - *value = wma_cli_get_command(wmahddCtxt->pvosContext, + *value = wma_cli_get_command(pHddCtx->pvosContext, (int)pHostapdAdapter->sessionId, (int)WMI_VDEV_PARAM_GTX_VHT_MCS, GTX_CMD); @@ -2564,9 +2595,8 @@ static iw_softap_getparam(struct net_device *dev, case QCSAP_GTX_USRCFG: { - hdd_context_t *wmahddCtxt = WLAN_HDD_GET_CTX(pHostapdAdapter); hddLog(LOG1, "GET WMI_VDEV_PARAM_GTX_USR_CFG"); - *value = wma_cli_get_command(wmahddCtxt->pvosContext, + *value = wma_cli_get_command(pHddCtx->pvosContext, (int)pHostapdAdapter->sessionId, (int)WMI_VDEV_PARAM_GTX_USR_CFG, GTX_CMD); @@ -2575,9 +2605,8 @@ static iw_softap_getparam(struct net_device *dev, case QCSAP_GTX_THRE: { - hdd_context_t *wmahddCtxt = WLAN_HDD_GET_CTX(pHostapdAdapter); hddLog(LOG1, "GET WMI_VDEV_PARAM_GTX_THRE"); - *value = wma_cli_get_command(wmahddCtxt->pvosContext, + *value = wma_cli_get_command(pHddCtx->pvosContext, (int)pHostapdAdapter->sessionId, (int)WMI_VDEV_PARAM_GTX_THRE, GTX_CMD); @@ -2586,9 +2615,8 @@ static iw_softap_getparam(struct net_device *dev, case QCSAP_GTX_MARGIN: { - hdd_context_t *wmahddCtxt = WLAN_HDD_GET_CTX(pHostapdAdapter); hddLog(LOG1, "GET WMI_VDEV_PARAM_GTX_MARGIN"); - *value = wma_cli_get_command(wmahddCtxt->pvosContext, + *value = wma_cli_get_command(pHddCtx->pvosContext, (int)pHostapdAdapter->sessionId, (int)WMI_VDEV_PARAM_GTX_MARGIN, GTX_CMD); @@ -2597,9 +2625,8 @@ static iw_softap_getparam(struct net_device *dev, case QCSAP_GTX_STEP: { - hdd_context_t *wmahddCtxt = WLAN_HDD_GET_CTX(pHostapdAdapter); hddLog(LOG1, "GET WMI_VDEV_PARAM_GTX_STEP"); - *value = wma_cli_get_command(wmahddCtxt->pvosContext, + *value = wma_cli_get_command(pHddCtx->pvosContext, (int)pHostapdAdapter->sessionId, (int)WMI_VDEV_PARAM_GTX_STEP, GTX_CMD); @@ -2608,9 +2635,8 @@ static iw_softap_getparam(struct net_device *dev, case QCSAP_GTX_MINTPC: { - hdd_context_t *wmahddCtxt = WLAN_HDD_GET_CTX(pHostapdAdapter); hddLog(LOG1, "GET WMI_VDEV_PARAM_GTX_MINTPC"); - *value = wma_cli_get_command(wmahddCtxt->pvosContext, + *value = wma_cli_get_command(pHddCtx->pvosContext, (int)pHostapdAdapter->sessionId, (int)WMI_VDEV_PARAM_GTX_MINTPC, GTX_CMD); @@ -2619,9 +2645,8 @@ static iw_softap_getparam(struct net_device *dev, case QCSAP_GTX_BWMASK: { - hdd_context_t *wmahddCtxt = WLAN_HDD_GET_CTX(pHostapdAdapter); hddLog(LOG1, "GET WMI_VDEV_PARAM_GTX_BW_MASK"); - *value = wma_cli_get_command(wmahddCtxt->pvosContext, + *value = wma_cli_get_command(pHddCtx->pvosContext, (int)pHostapdAdapter->sessionId, (int)WMI_VDEV_PARAM_GTX_BW_MASK, GTX_CMD); @@ -2630,14 +2655,11 @@ static iw_softap_getparam(struct net_device *dev, case QCASAP_GET_DFS_NOL: { -#ifndef WLAN_FEATURE_MBSSID - hdd_context_t *wmahddCtxt = WLAN_HDD_GET_CTX(pHostapdAdapter); -#endif WLANSAP_Get_DfsNol( #ifdef WLAN_FEATURE_MBSSID WLAN_HDD_GET_SAP_CTX_PTR(pHostapdAdapter) #else - wmahddCtxt->pvosContext + pHddCtx->pvosContext #endif ); } @@ -2653,6 +2675,36 @@ static iw_softap_getparam(struct net_device *dev, break; } + case QCASAP_TX_CHAINMASK_CMD: + { + hddLog(LOG1, "QCASAP_TX_CHAINMASK_CMD"); + *value = wma_cli_get_command(pHddCtx->pvosContext, + (int)pHostapdAdapter->sessionId, + (int)WMI_PDEV_PARAM_TX_CHAIN_MASK, + PDEV_CMD); + break; + } + + case QCASAP_RX_CHAINMASK_CMD: + { + hddLog(LOG1, "QCASAP_RX_CHAINMASK_CMD"); + *value = wma_cli_get_command(pHddCtx->pvosContext, + (int)pHostapdAdapter->sessionId, + (int)WMI_PDEV_PARAM_RX_CHAIN_MASK, + PDEV_CMD); + break; + } + + case QCASAP_NSS_CMD: + { + hddLog(LOG1, "QCASAP_NSS_CMD"); + *value = wma_cli_get_command(pHddCtx->pvosContext, + (int)pHostapdAdapter->sessionId, + (int)WMI_VDEV_PARAM_NSS, + VDEV_CMD); + break; + } + default: hddLog(LOGE, FL("Invalid getparam command %d"), sub_cmd); ret = -EINVAL; @@ -4488,6 +4540,20 @@ static const struct iw_priv_args hostapd_private_args[] = { 0, "setRadar" }, + { QCASAP_TX_CHAINMASK_CMD, + IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, + 0, + "set_txchainmask" }, + + { QCASAP_RX_CHAINMASK_CMD, + IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, + 0, + "set_rxchainmask" }, + + { QCASAP_NSS_CMD, + IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, + 0, + "set_nss" }, { QCSAP_IOCTL_GETPARAM, 0, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, "getparam" }, @@ -4523,6 +4589,13 @@ static const struct iw_priv_args hostapd_private_args[] = { IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, "getdfsnol" }, { QCSAP_GET_ACL, 0, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, "get_acl_list" }, + { QCASAP_TX_CHAINMASK_CMD, 0, + IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, "get_txchainmask" }, + { QCASAP_RX_CHAINMASK_CMD, 0, + IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, "get_rxchainmask" }, + { QCASAP_NSS_CMD, 0, + IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, "get_nss" }, + { QCSAP_IOCTL_GET_STAWPAIE, IW_PRIV_TYPE_BYTE | IW_PRIV_SIZE_FIXED | 1, 0, "get_staWPAIE" }, { QCSAP_IOCTL_SETWPAIE, diff --git a/CORE/HDD/src/wlan_hdd_wext.c b/CORE/HDD/src/wlan_hdd_wext.c index ce33c26947f6..bce292283101 100644 --- a/CORE/HDD/src/wlan_hdd_wext.c +++ b/CORE/HDD/src/wlan_hdd_wext.c @@ -379,6 +379,8 @@ static const hdd_freq_chan_map_t freq_chan_map[] = { {2412, 1}, {2417, 2}, #define WE_TDLS_CONFIG_PARAMS 5 #endif +#define WE_UNIT_TEST_CMD 7 + #define WE_MTRACE_DUMP_CMD 8 #define WE_MTRACE_SELECTIVE_MODULE_LOG_ENABLE_CMD 9 @@ -7543,10 +7545,47 @@ static int __iw_set_var_ints_getnone(struct net_device *dev, } break; #endif + case WE_UNIT_TEST_CMD : + { + t_wma_unit_test_cmd *unitTestArgs; + vos_msg_t msg = {0}; + int i, j; + if ((apps_args[0] < WLAN_MODULE_ID_MIN) || + (apps_args[0] >= WLAN_MODULE_ID_MAX)) { + hddLog(LOGE, FL("Invalid MODULE ID %d"), apps_args[0]); + return -EINVAL; + } + if (apps_args[1] > (WMA_MAX_NUM_ARGS)) { + hddLog(LOGE, FL("Too Many args %d"), apps_args[1]); + return -EINVAL; + } + unitTestArgs = vos_mem_malloc(sizeof(*unitTestArgs)); + if (NULL == unitTestArgs) { + hddLog(LOGE, + FL("vos_mem_alloc failed for unitTestArgs")); + return -ENOMEM; + } + unitTestArgs->vdev_id = (int)pAdapter->sessionId; + unitTestArgs->module_id = apps_args[0]; + unitTestArgs->num_args = apps_args[1]; + for (i = 0, j = 2; i < unitTestArgs->num_args; i++, j++) { + unitTestArgs->args[i] = apps_args[j]; + } + msg.type = SIR_HAL_UNIT_TEST_CMD; + msg.reserved = 0; + msg.bodyptr = unitTestArgs; + if (VOS_STATUS_SUCCESS != vos_mq_post_message(VOS_MODULE_ID_WDA, + &msg)) { + vos_mem_free(unitTestArgs); + VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_ERROR, + FL("Not able to post UNIT_TEST_CMD message to WDA")); + return -EINVAL; + } + } + break; default: { - hddLog(LOGE, "%s: Invalid IOCTL command %d", - __func__, sub_cmd ); + hddLog(LOGE, FL("Invalid IOCTL command %d"), sub_cmd ); } break; } @@ -10534,6 +10573,11 @@ static const struct iw_priv_args we_private_args[] = { 0, "setTdlsConfig" }, #endif + { + WE_UNIT_TEST_CMD, + IW_PRIV_TYPE_INT | MAX_VAR_ARGS, + 0, + "setUnitTestCmd" }, /* handlers for main ioctl */ { WLAN_PRIV_ADD_TSPEC, diff --git a/CORE/MAC/inc/qwlan_version.h b/CORE/MAC/inc/qwlan_version.h index bce57cd6267b..040b610574d5 100644 --- a/CORE/MAC/inc/qwlan_version.h +++ b/CORE/MAC/inc/qwlan_version.h @@ -42,9 +42,9 @@ BRIEF DESCRIPTION: #define QWLAN_VERSION_MINOR 0 #define QWLAN_VERSION_PATCH 0 #define QWLAN_VERSION_EXTRA "" -#define QWLAN_VERSION_BUILD 169 +#define QWLAN_VERSION_BUILD 170 -#define QWLAN_VERSIONSTR "1.0.0.169" +#define QWLAN_VERSIONSTR "1.0.0.170" #ifdef QCA_WIFI_2_0 diff --git a/CORE/MAC/src/include/sirParams.h b/CORE/MAC/src/include/sirParams.h index 19f69267e10c..49cb89cf0533 100644 --- a/CORE/MAC/src/include/sirParams.h +++ b/CORE/MAC/src/include/sirParams.h @@ -637,10 +637,14 @@ typedef struct sSirMbMsgP2p #ifdef FEATURE_WLAN_AUTO_SHUTDOWN #define SIR_HAL_SET_AUTO_SHUTDOWN_TIMER_REQ (SIR_HAL_ITC_MSG_TYPES_BEGIN + 281) #endif + #ifdef WLAN_FEATURE_ROAM_OFFLOAD #define SIR_HAL_HO_FAIL_IND (SIR_HAL_ITC_MSG_TYPES_BEGIN + 282) #endif #define SIR_HAL_SET_BASE_MACADDR_IND (SIR_HAL_ITC_MSG_TYPES_BEGIN + 283) + +#define SIR_HAL_UNIT_TEST_CMD (SIR_HAL_ITC_MSG_TYPES_BEGIN + 284) + #define SIR_HAL_MSG_TYPES_END (SIR_HAL_MSG_TYPES_BEGIN + 0x1FF) // CFG message types diff --git a/CORE/SERVICES/BMI/ol_fw.c b/CORE/SERVICES/BMI/ol_fw.c index 4de688be9410..34752b7ce235 100644 --- a/CORE/SERVICES/BMI/ol_fw.c +++ b/CORE/SERVICES/BMI/ol_fw.c @@ -361,7 +361,9 @@ exit: static int ol_check_fw_hash(const u8* data, u32 data_size, ATH_BIN_FILE file) { u8 *hash = NULL; +#ifdef CONFIG_CNSS u8 digest[SHA256_DIGEST_SIZE]; +#endif u8 temp[SHA256_DIGEST_SIZE] = {}; int ret = 0; @@ -465,7 +467,11 @@ static int __ol_transfer_bin_file(struct ol_softc *scn, ATH_BIN_FILE file, break; case ATH_FIRMWARE_FILE: if (WLAN_IS_EPPING_ENABLED(vos_get_conparam())) { +#if defined(CONFIG_CNSS) || defined(HIF_SDIO) filename = scn->fw_files.epping_file; +#else + filename = QCA_FIRMWARE_EPPING_FILE; +#endif printk(KERN_INFO "%s: Loading epping firmware file %s\n", __func__, filename); break; diff --git a/CORE/SERVICES/BMI/ol_fw.h b/CORE/SERVICES/BMI/ol_fw.h index ffbc3f546be6..918034518af5 100644 --- a/CORE/SERVICES/BMI/ol_fw.h +++ b/CORE/SERVICES/BMI/ol_fw.h @@ -52,6 +52,7 @@ #define QCA_OTP_FILE "otp.bin" #define QCA_SETUP_FILE "athsetup.bin" #define AR61X4_SINGLE_FILE "qca61x4.bin" +#define QCA_FIRMWARE_EPPING_FILE "epping.bin" /* Configuration for statistics pushed by firmware */ #define PDEV_DEFAULT_STATS_UPDATE_PERIOD 500 diff --git a/CORE/SERVICES/HIF/PCIe/hif_pci.c b/CORE/SERVICES/HIF/PCIe/hif_pci.c index 85bd7e303803..811f8bbdb7e6 100644 --- a/CORE/SERVICES/HIF/PCIe/hif_pci.c +++ b/CORE/SERVICES/HIF/PCIe/hif_pci.c @@ -2609,7 +2609,9 @@ HIFTargetSleepStateAdjust(A_target_id_t targid, printk("%s:error, can't wakeup target\n", __func__); sc->recovery = true; vos_set_logp_in_progress(VOS_MODULE_ID_VOSS, TRUE); - schedule_work(&recovery_work); +#ifdef CONFIG_CNSS + cnss_wlan_pci_link_down(); +#endif return -EACCES; } diff --git a/CORE/SERVICES/HIF/PCIe/if_pci.c b/CORE/SERVICES/HIF/PCIe/if_pci.c index 60449a49a59f..aa5a25499061 100644 --- a/CORE/SERVICES/HIF/PCIe/if_pci.c +++ b/CORE/SERVICES/HIF/PCIe/if_pci.c @@ -1893,6 +1893,11 @@ __hif_pci_suspend(struct pci_dev *pdev, pm_message_t state) adf_os_spin_unlock_irqrestore( &hif_state->suspend_lock); +#ifdef CONFIG_CNSS + /* Keep PCIe bus driver's shadow memory intact */ + cnss_pcie_shadow_control(pdev, FALSE); +#endif + pci_read_config_dword(pdev, OL_ATH_PCI_PM_CONTROL, &val); if ((val & 0x000000ff) != 0x3) { pci_save_state(pdev); @@ -1979,6 +1984,11 @@ __hif_pci_resume(struct pci_dev *pdev) printk("\n%s: Rome PS: %d", __func__, val); +#ifdef CONFIG_CNSS + /* Keep PCIe bus driver's shadow memory intact */ + cnss_pcie_shadow_control(pdev, TRUE); +#endif + #ifdef DISABLE_L1SS_STATES pci_read_config_dword(pdev, 0x188, &val); pci_write_config_dword(pdev, 0x188, (val & ~0x0000000f)); diff --git a/CORE/SERVICES/WMA/wma.c b/CORE/SERVICES/WMA/wma.c index 425cdca98a79..1c7909abf48b 100644 --- a/CORE/SERVICES/WMA/wma.c +++ b/CORE/SERVICES/WMA/wma.c @@ -10517,6 +10517,7 @@ static int32_t wma_set_priv_cfg(tp_wma_handle wma_handle, case WMA_VDEV_DFS_CONTROL_CMDID: { struct ieee80211com *dfs_ic = wma_handle->dfs_ic; + struct ath_dfs *dfs; if (!dfs_ic) { ret = -ENOENT; @@ -10529,8 +10530,11 @@ static int32_t wma_set_priv_cfg(tp_wma_handle wma_handle, if (dfs_ic->ic_curchan->ic_flagext & IEEE80211_CHAN_DFS) { - ret = wma_dfs_indicate_radar(dfs_ic, - dfs_ic->ic_curchan); + dfs = (struct ath_dfs *)dfs_ic->ic_dfs; + dfs->dfs_bangradar = 1; + dfs->ath_radar_tasksched = 1; + OS_SET_TIMER(&dfs->ath_dfs_task_timer, + 0); } else { ret = -ENOENT; } @@ -20805,6 +20809,7 @@ VOS_STATUS wma_get_buf_extscan_change_monitor_cmd(tp_wma_handle wma_handle, cmd->num_entries_in_page = numap; cmd->lost_ap_scan_count = psigchange->lostApSampleSize; cmd->max_rssi_samples = psigchange->rssiSampleSize; + cmd->rssi_averaging_samples = psigchange->rssiSampleSize; cmd->max_out_of_range_count = psigchange->minBreaching; buf_ptr += sizeof(*cmd); @@ -21084,6 +21089,58 @@ static VOS_STATUS wma_nan_req(void *wda_handle, tpNanRequest nan_req) } #endif +#ifdef WLAN_FEATURE_ROAM_OFFLOAD +static void wma_process_unit_test_cmd(WMA_HANDLE handle, + t_wma_unit_test_cmd *wma_utest) +{ + tp_wma_handle wma_handle = (tp_wma_handle) handle; + wmi_unit_test_cmd_fixed_param* cmd; + wmi_buf_t wmi_buf; + u_int8_t *buf_ptr; + int i; + u_int16_t len, args_tlv_len; + A_UINT32 *unit_test_cmd_args; + + args_tlv_len = WMI_TLV_HDR_SIZE + wma_utest->num_args * sizeof(A_UINT32); + len = sizeof(wmi_unit_test_cmd_fixed_param) + args_tlv_len; + if (!wma_handle || !wma_handle->wmi_handle) { + WMA_LOGE("%s: WMA is closed, can not issue fw unit test cmd", + __func__); + return; + } + wmi_buf = wmi_buf_alloc(wma_handle->wmi_handle, len); + if (!wmi_buf) { + WMA_LOGE("%s: wmai_buf_alloc failed", __func__); + return; + } + + cmd = (wmi_unit_test_cmd_fixed_param *)wmi_buf_data(wmi_buf); + buf_ptr = (u_int8_t *) cmd; + WMITLV_SET_HDR(&cmd->tlv_header, + WMITLV_TAG_STRUC_wmi_unit_test_cmd_fixed_param, + WMITLV_GET_STRUCT_TLVLEN(wmi_unit_test_cmd_fixed_param)); + cmd->vdev_id = wma_utest->vdev_id; + cmd->module_id = wma_utest->module_id; + cmd->num_args = wma_utest->num_args; + buf_ptr += sizeof(wmi_unit_test_cmd_fixed_param); + WMITLV_SET_HDR(buf_ptr, WMITLV_TAG_ARRAY_UINT32, + (wma_utest->num_args * sizeof(u_int32_t))); + unit_test_cmd_args = (A_UINT32 *)(buf_ptr + WMI_TLV_HDR_SIZE); + WMA_LOGI("%s: %d num of args = ", __func__, wma_utest->num_args); + for (i = 0; (i < wma_utest->num_args && i < WMA_MAX_NUM_ARGS); i++) { + unit_test_cmd_args[i] = wma_utest->args[i]; + WMA_LOGI("%d,", wma_utest->args[i]); + } + if (wmi_unified_cmd_send(wma_handle->wmi_handle, wmi_buf, len, + WMI_UNIT_TEST_CMDID)) { + WMA_LOGP("%s: failed to send unit test command", __func__); + adf_nbuf_free(wmi_buf); + return; + } + return; +} +#endif + /* * function : wma_mc_process_msg * Description : @@ -21602,6 +21659,11 @@ VOS_STATUS wma_mc_process_msg(v_VOID_t *vos_context, vos_msg_t *msg) (tSirSmeRoamOffloadSynchCnf *)msg->bodyptr); vos_mem_free(msg->bodyptr); break; + case SIR_HAL_UNIT_TEST_CMD: + wma_process_unit_test_cmd(wma_handle, + (t_wma_unit_test_cmd *)msg->bodyptr); + vos_mem_free(msg->bodyptr); + break; #endif #ifdef WLAN_FEATURE_NAN case WDA_NAN_REQUEST: diff --git a/CORE/SERVICES/WMA/wma.h b/CORE/SERVICES/WMA/wma.h index 9e6212d1c463..56e31f18944f 100644 --- a/CORE/SERVICES/WMA/wma.h +++ b/CORE/SERVICES/WMA/wma.h @@ -1668,4 +1668,12 @@ A_UINT32 eCsrEncryptionType_to_rsn_cipherset (eCsrEncryptionType encr); #define WMA_TX_Q_RECHECK_TIMER_WAIT 2 // 2 ms #define WMA_TX_Q_RECHECK_TIMER_MAX_WAIT 20 // 20 ms +#define WMA_MAX_NUM_ARGS 8 +typedef struct wma_unit_test_cmd +{ + v_UINT_t vdev_id; + WLAN_MODULE_ID module_id; + v_U32_t num_args; + v_U32_t args[WMA_MAX_NUM_ARGS]; +}t_wma_unit_test_cmd; #endif diff --git a/firmware_bin/WCNSS_qcom_cfg.ini b/firmware_bin/WCNSS_qcom_cfg.ini index ad365bd5f921..d33bb65c66e0 100755 --- a/firmware_bin/WCNSS_qcom_cfg.ini +++ b/firmware_bin/WCNSS_qcom_cfg.ini @@ -588,6 +588,10 @@ gCountryCodePriority=1 # Enable(1)/Disable(0) SIFS burst gEnableSifsBurst=1 +# Enable or Disable Multi-user MIMO +# 1=Enable (default), 0=Disable +gEnableMuBformee=1 + END # Note: Configuration parser would not read anything past the END marker |
