summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2016-04-21 21:18:11 -0700
committerLinux Build Service Account <lnxbuild@localhost>2016-04-21 21:18:11 -0700
commit3976d1cf93f327ecfa1f1df9102befe5d4646fa9 (patch)
tree30b45bc0459ccc5999810d8f042c402d943ef942
parent59616f7a5062c204734785f294889763289e4958 (diff)
parent36cd27ee15883dca8886f1b5d2fe318be973ed45 (diff)
Promotion of wlan-cld2.driver.lnx.1.0-00006.
CRs Change ID Subject -------------------------------------------------------------------------------------------------------------- 1003390 I01b29a2314ab4192e6bc9076978d54762a85c9e8 qcacld-2.0: Reset the global reg params during wiphy unr 688141 I13d2202186f4ea2658786ffeae22af72fdaea0d7 Release 4.0.11.62 1004079 I3602887d2bfdb407e5805aedd7a97a57440a4567 qcacld-2.0: Fix mismatch in mem alloc and mem free API 1000945 Ie9132f84bf5f35146e518b2a8a71998ddb2de901 qcacld-2.0: Update radar timestamp in NOL list when rece 1002615 If234286e04f2222ec9a8682414f6710c16cb34a9 qcacld-2.0: Clean up the ptt_pid parameter from nl_srv_e 1002207 If3285739f2387928a1d7578f9d14089a486a6d9e qcacld-2.0: Fix acs_cfg.ch_list memory leak 949293 I63ca0bea23da1430ca0e6f323555c3ac6b2d07cd qcacld-2.0: Flush Scan results in DRIVER command SET_FCC 1004582 I5fd939b0642d25b3a75d74ed3c7878f68d8d14d6 qcacld-2.0: Allow power save to be controlled by iw comm 1004755 I7a789abbbbf659f04822b89c9c11cf220839d008 qcacld-2.0: Update tx/rx aggregation size parameters in 1001582 I2d348ed02a16390a13f0e0b0b6ff25062a3288bb qcacld-2.0: Add support for dynamic chainmask for STA 1005252 I65a4cc6b353736bdaf6a97d776748d3bae5fc32a qcacld-2.0: Don't enable memory dump in epping mode 992365 I66aea57e124551dcbd94a62309cdeec5207ad6f5 qcacld-2.0: Add NULL check in radio_tx_power_stats 944663 I69d6e1b0c8298cab1776264f3e61445c95538729 qcacld-2.0: Remove wlan_hdd_band_p2p_2_4_GHZ 1001658 I135f997bb4c8ad7a536596b4e89eb037f41e0c73 qcacld-2.0: Remove the 4.9 GHZ channels 1003326 I4ae24a1813ac5d4738022b2f15a93736c2f05978 qcacld-2.0: Fix to remove 11P channels from channel list 1003313 Iba32c715694e64ce7d941f198990b25b9c87240d qcacld-2.0: Set htc tx tag when call set vdev suspend dt 688141 Ibe7a555e190eae3d546d94656616e260ab2923e7 Release 4.0.11.63 930870 I4632c1b4770e6b2f301d67f37005585aef401ab6 qcacld-2.0: Implement cfg80211 abort scan API 1004774 I91250675fd9bba78473649f666b9f37f074c3bd7 qcacld-2.0: Increase THROTTLE_TX_THRESHOLD value Change-Id: I3abca39ca0807ba82858471e4d43f2079457a558 CRs-Fixed: 1002615, 1002207, 930870, 944663, 1001582, 1001658, 992365, 1004079, 1003390, 688141, 1004774, 1005252, 1004755, 1003313, 1004582, 1000945, 1003326, 949293
-rw-r--r--CORE/CLD_TXRX/TXRX/ol_txrx_types.h2
-rw-r--r--CORE/EPPING/src/epping_main.c3
-rw-r--r--CORE/HDD/inc/wlan_hdd_cfg.h6
-rw-r--r--CORE/HDD/inc/wlan_hdd_main.h4
-rw-r--r--CORE/HDD/src/wlan_hdd_assoc.c16
-rw-r--r--CORE/HDD/src/wlan_hdd_cfg.c10
-rw-r--r--CORE/HDD/src/wlan_hdd_cfg80211.c162
-rw-r--r--CORE/HDD/src/wlan_hdd_early_suspend.c4
-rw-r--r--CORE/HDD/src/wlan_hdd_main.c93
-rw-r--r--CORE/HDD/src/wlan_hdd_wext.c8
-rw-r--r--CORE/MAC/inc/qwlan_version.h4
-rw-r--r--CORE/MAC/src/pe/lim/limProcessMlmReqMessages.c4
-rw-r--r--CORE/SAP/src/sapChSelect.c7
-rw-r--r--CORE/SAP/src/sapFsm.c12
-rw-r--r--CORE/SERVICES/WMA/wlan_nv.c152
-rw-r--r--CORE/SERVICES/WMA/wma.c158
-rw-r--r--CORE/SERVICES/WMA/wma.h2
-rw-r--r--CORE/SERVICES/WMI/wmi_unified.c89
-rw-r--r--CORE/SME/src/csr/csrApiRoam.c4
-rw-r--r--CORE/SME/src/csr/csrApiScan.c5
-rw-r--r--CORE/SVC/inc/wlan_nlink_srv.h13
-rw-r--r--CORE/SVC/src/nlink/wlan_nlink_srv.c4
-rw-r--r--CORE/VOSS/inc/vos_nvitem.h1
-rw-r--r--CORE/VOSS/src/vos_nvitem.c32
-rw-r--r--CORE/WDA/inc/legacy/halMsgApi.h2
-rw-r--r--wcnss/inc/wlan_nv.h18
26 files changed, 435 insertions, 380 deletions
diff --git a/CORE/CLD_TXRX/TXRX/ol_txrx_types.h b/CORE/CLD_TXRX/TXRX/ol_txrx_types.h
index beee134bedd7..32ebe320f7eb 100644
--- a/CORE/CLD_TXRX/TXRX/ol_txrx_types.h
+++ b/CORE/CLD_TXRX/TXRX/ol_txrx_types.h
@@ -405,7 +405,7 @@ typedef enum _throttle_phase {
THROTTLE_PHASE_MAX,
} throttle_phase ;
-#define THROTTLE_TX_THRESHOLD (100)
+#define THROTTLE_TX_THRESHOLD (400)
#ifdef IPA_UC_OFFLOAD
typedef void (*ipa_uc_op_cb_type)(u_int8_t *op_msg, void *osif_ctxt);
diff --git a/CORE/EPPING/src/epping_main.c b/CORE/EPPING/src/epping_main.c
index 7fb1901044d5..b56077bbdb7f 100644
--- a/CORE/EPPING/src/epping_main.c
+++ b/CORE/EPPING/src/epping_main.c
@@ -69,7 +69,6 @@
#include "if_ath_sdio.h"
#endif
#include "epping_main.h"
-#include "wlan_hdd_memdump.h"
#include "epping_internal.h"
#ifdef TIMER_MANAGER
@@ -215,7 +214,6 @@ void epping_exit(v_CONTEXT_t pVosContext)
__func__);
return;
}
- memdump_deinit();
if (pEpping_ctx->epping_adapter) {
epping_destroy_adapter(pEpping_ctx->epping_adapter);
pEpping_ctx->epping_adapter = NULL;
@@ -418,7 +416,6 @@ int epping_wlan_startup(struct device *parent_dev, v_VOID_t *hif_sc)
}
}
#endif /* HIF_PCI */
- memdump_init();
EPPING_LOG(VOS_TRACE_LEVEL_INFO_HIGH, "%s: Exit", __func__);
complete(&pEpping_ctx->wlan_start_comp);
return ret;
diff --git a/CORE/HDD/inc/wlan_hdd_cfg.h b/CORE/HDD/inc/wlan_hdd_cfg.h
index da15da20540c..ea1c672ad040 100644
--- a/CORE/HDD/inc/wlan_hdd_cfg.h
+++ b/CORE/HDD/inc/wlan_hdd_cfg.h
@@ -1351,6 +1351,11 @@ typedef enum
#define CFG_VHT_ENABLE_2x2_CAP_FEATURE_MAX ( 1 )
#define CFG_VHT_ENABLE_2x2_CAP_FEATURE_DEFAULT ( 0 )
+#define CFG_ENABLE_VHT_DYNAMIC_STA_CHAINMASK "gEnableDynamicSTAChainMask"
+#define CFG_ENABLE_VHT_DYNAMIC_STA_CHAINMASK_MIN (0)
+#define CFG_ENABLE_VHT_DYNAMIC_STA_CHAINMASK_MAX (1)
+#define CFG_ENABLE_VHT_DYNAMIC_STA_CHAINMASK_DEFAULT (0)
+
/*
* Valid chain mask values.
* 01 - enables chain0
@@ -4573,6 +4578,7 @@ struct hdd_config {
uint32_t edca_vi_aifs;
uint32_t edca_bk_aifs;
uint32_t edca_be_aifs;
+ bool enable_dynamic_sta_chainmask;
};
typedef struct hdd_config hdd_config_t;
diff --git a/CORE/HDD/inc/wlan_hdd_main.h b/CORE/HDD/inc/wlan_hdd_main.h
index 19b666531c86..587da017ae14 100644
--- a/CORE/HDD/inc/wlan_hdd_main.h
+++ b/CORE/HDD/inc/wlan_hdd_main.h
@@ -2085,4 +2085,8 @@ eHalStatus hdd_smeCloseSessionCallback(void *pContext);
int hdd_enable_disable_ca_event(hdd_context_t *hddctx,
tANI_U8 set_value);
+
+void wlan_hdd_undo_acs(hdd_adapter_t *adapter);
+void hdd_decide_dynamic_chain_mask(hdd_context_t *hdd_ctx,
+ enum antenna_mode forced);
#endif // end #if !defined( WLAN_HDD_MAIN_H )
diff --git a/CORE/HDD/src/wlan_hdd_assoc.c b/CORE/HDD/src/wlan_hdd_assoc.c
index 9655828140e7..483e8fdf418c 100644
--- a/CORE/HDD/src/wlan_hdd_assoc.c
+++ b/CORE/HDD/src/wlan_hdd_assoc.c
@@ -1188,6 +1188,10 @@ static eHalStatus hdd_DisConnectHandler( hdd_adapter_t *pAdapter, tCsrRoamInfo *
wlan_hdd_clear_link_layer_stats(pAdapter);
+ /* Decide ANTENNA_MODE on STA/CLI disconnect */
+ if (pHddCtx->cfg_ini->enable_dynamic_sta_chainmask)
+ hdd_decide_dynamic_chain_mask(pHddCtx,
+ HDD_ANTENNA_MODE_INVALID);
//Unblock anyone waiting for disconnect to complete
complete(&pAdapter->disconnect_comp_var);
return( status );
@@ -2229,6 +2233,18 @@ static eHalStatus hdd_AssociationCompletionHandler( hdd_adapter_t *pAdapter, tCs
}
+ /*
+ * Call hdd_decide_dynamic_chain_mask only when CSR has
+ * completed connect with failure or success i.e. with
+ * ASSOCIATION_FAILURE status or with eCSR_ROAM_RESULT_ASSOCIATED
+ * result.
+ */
+ if (pHddCtx->cfg_ini->enable_dynamic_sta_chainmask &&
+ ((eCSR_ROAM_ASSOCIATION_FAILURE == roamStatus) ||
+ (eCSR_ROAM_RESULT_ASSOCIATED == roamResult)))
+ hdd_decide_dynamic_chain_mask(pHddCtx,
+ HDD_ANTENNA_MODE_INVALID);
+
#ifdef FEATURE_WLAN_FORCE_SAP_SCC
if (eCSR_ROAM_RESULT_ASSOCIATED == roamResult &&
pHddCtx->cfg_ini->SapSccChanAvoidance) {
diff --git a/CORE/HDD/src/wlan_hdd_cfg.c b/CORE/HDD/src/wlan_hdd_cfg.c
index 37cb84326fb6..45fda58a406a 100644
--- a/CORE/HDD/src/wlan_hdd_cfg.c
+++ b/CORE/HDD/src/wlan_hdd_cfg.c
@@ -2272,6 +2272,13 @@ REG_TABLE_ENTRY g_registry_table[] =
CFG_VHT_ENABLE_2x2_CAP_FEATURE_MIN,
CFG_VHT_ENABLE_2x2_CAP_FEATURE_MAX ),
+ REG_VARIABLE(CFG_ENABLE_VHT_DYNAMIC_STA_CHAINMASK, WLAN_PARAM_Integer,
+ hdd_config_t, enable_dynamic_sta_chainmask,
+ VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+ CFG_ENABLE_VHT_DYNAMIC_STA_CHAINMASK_DEFAULT,
+ CFG_ENABLE_VHT_DYNAMIC_STA_CHAINMASK_MIN,
+ CFG_ENABLE_VHT_DYNAMIC_STA_CHAINMASK_MAX),
+
REG_VARIABLE( CFG_CHAIN_MASK_2G, WLAN_PARAM_Integer,
hdd_config_t, chain_mask_2g,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
@@ -5366,6 +5373,9 @@ void print_hdd_cfg(hdd_context_t *pHddCtx)
hddLog(LOG2, "Name = [%s] Value = [%u]",
CFG_EDCA_BE_AIFS_VALUE_NAME,
pHddCtx->cfg_ini->edca_be_aifs);
+ hddLog(LOG2, "Name = [%s] Value = [%u]",
+ CFG_ENABLE_VHT_DYNAMIC_STA_CHAINMASK,
+ pHddCtx->cfg_ini->enable_dynamic_sta_chainmask);
hdd_ndp_print_ini_config(pHddCtx);
}
diff --git a/CORE/HDD/src/wlan_hdd_cfg80211.c b/CORE/HDD/src/wlan_hdd_cfg80211.c
index ac2e2850ad9c..1623ed4315a7 100644
--- a/CORE/HDD/src/wlan_hdd_cfg80211.c
+++ b/CORE/HDD/src/wlan_hdd_cfg80211.c
@@ -261,22 +261,8 @@ const static struct ieee80211_channel hdd_channels_2_4_GHZ[] =
HDD2GHZCHAN(2484, 14, 0) ,
};
-static struct ieee80211_channel hdd_social_channels_2_4_GHZ[] =
-{
- HDD2GHZCHAN(2412, 1, 0) ,
- HDD2GHZCHAN(2437, 6, 0) ,
- HDD2GHZCHAN(2462, 11, 0) ,
-};
-
const static struct ieee80211_channel hdd_channels_5_GHZ[] =
{
- HDD5GHZCHAN(4920, 184, 0) ,
- HDD5GHZCHAN(4940, 188, 0) ,
- HDD5GHZCHAN(4960, 192, 0) ,
- HDD5GHZCHAN(4980, 196, 0) ,
- HDD5GHZCHAN(5040, 8, 0) ,
- HDD5GHZCHAN(5060, 12, 0) ,
- HDD5GHZCHAN(5080, 16, 0) ,
HDD5GHZCHAN(5180, 36, 0) ,
HDD5GHZCHAN(5200, 40, 0) ,
HDD5GHZCHAN(5220, 44, 0) ,
@@ -381,25 +367,6 @@ static struct ieee80211_supported_band wlan_hdd_band_2_4_GHZ =
| IEEE80211_VHT_CAP_RXLDPC,
};
-static struct ieee80211_supported_band wlan_hdd_band_p2p_2_4_GHZ =
-{
- .channels = hdd_social_channels_2_4_GHZ,
- .n_channels = ARRAY_SIZE(hdd_social_channels_2_4_GHZ),
- .band = IEEE80211_BAND_2GHZ,
- .bitrates = g_mode_rates,
- .n_bitrates = g_mode_rates_size,
- .ht_cap.ht_supported = 1,
- .ht_cap.cap = IEEE80211_HT_CAP_SGI_20
- | IEEE80211_HT_CAP_GRN_FLD
- | IEEE80211_HT_CAP_DSSSCCK40
- | IEEE80211_HT_CAP_LSIG_TXOP_PROT,
- .ht_cap.ampdu_factor = IEEE80211_HT_MAX_AMPDU_64K,
- .ht_cap.ampdu_density = IEEE80211_HT_MPDU_DENSITY_16,
- .ht_cap.mcs.rx_mask = { 0xff, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
- .ht_cap.mcs.rx_highest = cpu_to_le16( 72 ),
- .ht_cap.mcs.tx_params = IEEE80211_HT_MCS_TX_DEFINED,
-};
-
static struct ieee80211_supported_band wlan_hdd_band_5_GHZ =
{
.channels = NULL,
@@ -8106,7 +8073,7 @@ out:
if (temp_skbuff != NULL)
return cfg80211_vendor_cmd_reply(temp_skbuff);
}
-
+ wlan_hdd_undo_acs(adapter);
clear_bit(ACS_IN_PROGRESS, &hdd_ctx->g_event_flags);
return status;
@@ -8139,6 +8106,26 @@ static int wlan_hdd_cfg80211_do_acs(struct wiphy *wiphy,
}
/**
+ * wlan_hdd_undo_acs : Do cleanup of DO_ACS
+ * @adapter: Pointer to adapter struct
+ *
+ * This function handle cleanup of what was done in DO_ACS, including free
+ * memory.
+ *
+ * Return: void
+ */
+
+void wlan_hdd_undo_acs(hdd_adapter_t *adapter)
+{
+ if (adapter == NULL)
+ return;
+ if (adapter->sessionCtx.ap.sapConfig.acs_cfg.ch_list) {
+ vos_mem_free(adapter->sessionCtx.ap.sapConfig.acs_cfg.ch_list);
+ adapter->sessionCtx.ap.sapConfig.acs_cfg.ch_list = NULL;
+ }
+}
+
+/**
* wlan_hdd_cfg80211_start_pending_acs : Start pending ACS procedure for SAP
* @work: Linux workqueue struct pointer for ACS work
*
@@ -11132,7 +11119,6 @@ int wlan_hdd_cfg80211_init(struct device *dev,
{
wlan_hdd_band_2_4_GHZ.ht_cap.cap &= ~IEEE80211_HT_CAP_SGI_20;
wlan_hdd_band_5_GHZ.ht_cap.cap &= ~IEEE80211_HT_CAP_SGI_20;
- wlan_hdd_band_p2p_2_4_GHZ.ht_cap.cap &= ~IEEE80211_HT_CAP_SGI_20;
}
if( !pCfg->ShortGI40MhzEnable )
@@ -11262,6 +11248,7 @@ void wlan_hdd_cfg80211_deinit(struct wiphy *wiphy)
wiphy->bands[i]->channels = NULL;
}
}
+ vos_reset_global_reg_params();
}
/*
@@ -13184,6 +13171,10 @@ static int wlan_hdd_cfg80211_start_bss(hdd_adapter_t *pHostapdAdapter,
(WLAN_HDD_GET_AP_CTX_PTR(pHostapdAdapter))->dfs_cac_block_tx = VOS_TRUE;
+ /* Set ANTENNA_MODE_2X2 before starting SAP/GO */
+ if (pHddCtx->cfg_ini->enable_dynamic_sta_chainmask)
+ hdd_decide_dynamic_chain_mask(pHddCtx, HDD_ANTENNA_MODE_2X2);
+
vos_event_reset(&pHostapdState->vosEvent);
status = WLANSAP_StartBss(
#ifdef WLAN_FEATURE_MBSSID
@@ -13265,6 +13256,9 @@ error:
vos_mem_free(pHostapdAdapter->sessionCtx.ap.sapConfig.acs_cfg.ch_list);
pHostapdAdapter->sessionCtx.ap.sapConfig.acs_cfg.ch_list = NULL;
}
+ /* Decide antenna_mode on SAP start failure */
+ if (pHddCtx->cfg_ini->enable_dynamic_sta_chainmask)
+ hdd_decide_dynamic_chain_mask(pHddCtx, HDD_ANTENNA_MODE_INVALID);
return ret;
}
@@ -13453,7 +13447,7 @@ static int __wlan_hdd_cfg80211_stop_ap (struct wiphy *wiphy,
VOS_STATUS status = VOS_STATUS_E_FAILURE;
tSirUpdateIE updateIE;
beacon_data_t *old;
- int ret;
+ int ret = 0;
unsigned long rc;
hdd_adapter_list_node_t *pAdapterNode = NULL;
hdd_adapter_list_node_t *pNext = NULL;
@@ -13480,18 +13474,6 @@ static int __wlan_hdd_cfg80211_stop_ap (struct wiphy *wiphy,
pAdapter->device_mode);
pHddCtx = WLAN_HDD_GET_CTX(pAdapter);
- ret = wlan_hdd_validate_context(pHddCtx);
- if (0 != ret) {
- if (pHddCtx->isUnloadInProgress) {
- /*
- * Unloading the driver so free the memory for ch_list,
- * otherwise it will result in memory leak
- */
- if (pAdapter->sessionCtx.ap.sapConfig.acs_cfg.ch_list)
- vos_mem_free(pAdapter->sessionCtx.ap.sapConfig.acs_cfg.ch_list);
- }
- return ret;
- }
status = hdd_get_front_adapter (pHddCtx, &pAdapterNode);
while (NULL != pAdapterNode && VOS_STATUS_SUCCESS == status) {
@@ -13536,8 +13518,8 @@ static int __wlan_hdd_cfg80211_stop_ap (struct wiphy *wiphy,
}
pAdapter->sessionCtx.ap.sapConfig.acs_cfg.acs_mode = false;
- if (pAdapter->sessionCtx.ap.sapConfig.acs_cfg.ch_list)
- vos_mem_free(pAdapter->sessionCtx.ap.sapConfig.acs_cfg.ch_list);
+ wlan_hdd_undo_acs(pAdapter);
+
vos_mem_zero(&pAdapter->sessionCtx.ap.sapConfig.acs_cfg,
sizeof(struct sap_acs_cfg));
@@ -13582,6 +13564,9 @@ static int __wlan_hdd_cfg80211_stop_ap (struct wiphy *wiphy,
}
mutex_unlock(&pHddCtx->sap_lock);
+ if (pHddCtx->cfg_ini->enable_dynamic_sta_chainmask)
+ hdd_decide_dynamic_chain_mask(pHddCtx, HDD_ANTENNA_MODE_INVALID);
+
if (status != VOS_STATUS_SUCCESS) {
hddLog(VOS_TRACE_LEVEL_FATAL, FL("Stopping the BSS"));
return -EINVAL;
@@ -16412,6 +16397,7 @@ int __wlan_hdd_cfg80211_scan( struct wiphy *wiphy,
hdd_adapter_t *con_sap_adapter;
uint16_t con_dfs_ch;
bool is_p2p_scan = false;
+ uint8_t num_chan = 0;
ENTER();
@@ -16613,14 +16599,25 @@ int __wlan_hdd_cfg80211_scan( struct wiphy *wiphy,
}
for (i = 0, len = 0; i < request->n_channels ; i++ )
{
- channelList[i] = request->channels[i]->hw_value;
- len += snprintf(chList+len, 5, "%d ", channelList[i]);
+ if (!vos_is_dsrc_channel(vos_chan_to_freq(
+ request->channels[i]->hw_value))) {
+ channelList[num_chan] = request->channels[i]->hw_value;
+ len += snprintf(chList+len, 5, "%d ", channelList[i]);
+ num_chan++;
+ }
}
hddLog(VOS_TRACE_LEVEL_INFO, "Channel-List: %s", chList);
}
- scanRequest.ChannelInfo.numOfChannels = request->n_channels;
+
+ if (!num_chan) {
+ hddLog(LOGE, FL("Received zero non-dsrc channels"));
+ status = -EINVAL;
+ goto free_mem;
+ }
+
+ scanRequest.ChannelInfo.numOfChannels = num_chan;
scanRequest.ChannelInfo.ChannelList = channelList;
/* set requestType to full scan */
@@ -18124,7 +18121,8 @@ static int __wlan_hdd_cfg80211_connect( struct wiphy *wiphy,
channel = req->channel->hw_value;
else
channel = 0;
-
+ if (pHddCtx->cfg_ini->enable_dynamic_sta_chainmask)
+ hdd_decide_dynamic_chain_mask(pHddCtx, HDD_ANTENNA_MODE_2X2);
status = wlan_hdd_cfg80211_connect_start(pAdapter, req->ssid,
req->ssid_len, req->bssid,
bssid_hint, channel);
@@ -18143,6 +18141,9 @@ static int __wlan_hdd_cfg80211_connect( struct wiphy *wiphy,
}
hddLog(VOS_TRACE_LEVEL_ERROR, FL("connect failed"));
+ /* Decide the antenna mode if connect fails */
+ if (pHddCtx->cfg_ini->enable_dynamic_sta_chainmask)
+ hdd_decide_dynamic_chain_mask(pHddCtx, HDD_ANTENNA_MODE_INVALID);
return status;
}
pHddCtx->isAmpAllowed = VOS_FALSE;
@@ -20325,7 +20326,6 @@ wlan_hdd_cfg80211_update_ft_ies(struct wiphy *wiphy,
}
#endif
-#ifdef FEATURE_WLAN_SCAN_PNO
int wlan_hdd_scan_abort(hdd_adapter_t *pAdapter)
{
hdd_context_t *pHddCtx = WLAN_HDD_GET_CTX(pAdapter);
@@ -20352,6 +20352,8 @@ int wlan_hdd_scan_abort(hdd_adapter_t *pAdapter)
}
return 0;
}
+
+#ifdef FEATURE_WLAN_SCAN_PNO
void hdd_cfg80211_sched_scan_done_callback(void *callbackContext,
tSirPrefNetworkFoundInd *pPrefNetworkFoundInd)
{
@@ -24425,6 +24427,54 @@ void wlan_hdd_cfg80211_extscan_callback(void *ctx, const tANI_U16 evType,
#endif /* FEATURE_WLAN_EXTSCAN */
+/**
+ * __wlan_hdd_cfg80211_abort_scan() - cfg80211 abort scan api
+ * @wiphy: Pointer to wiphy
+ * @wdev: Pointer to wireless device structure
+ *
+ * This function is used to abort an ongoing scan
+ *
+ * Return: None
+ */
+static void __wlan_hdd_cfg80211_abort_scan(struct wiphy *wiphy,
+ struct wireless_dev *wdev)
+{
+ struct net_device *dev = wdev->netdev;
+ hdd_adapter_t *adapter = WLAN_HDD_GET_PRIV_PTR(dev);
+ hdd_context_t *hdd_ctx = wiphy_priv(wiphy);
+ int ret;
+
+ ENTER();
+
+ ret = wlan_hdd_validate_context(hdd_ctx);
+ if (0 != ret)
+ return;
+
+ if (VOS_FTM_MODE == hdd_get_conparam()) {
+ hddLog(LOGE, FL("Command not allowed in FTM mode"));
+ return;
+ }
+
+ wlan_hdd_scan_abort(adapter);
+}
+
+/**
+ * wlan_hdd_cfg80211_abort_scan - cfg80211 abort scan api
+ * @wiphy: Pointer to wiphy
+ * @wdev: Pointer to wireless device structure
+ *
+ * Wrapper to __wlan_hdd_cfg80211_abort_scan() -
+ * function is used to abort an ongoing scan
+ *
+ * Return: None
+ */
+static void wlan_hdd_cfg80211_abort_scan(struct wiphy *wiphy,
+ struct wireless_dev *wdev)
+{
+ vos_ssr_protect(__func__);
+ __wlan_hdd_cfg80211_abort_scan(wiphy, wdev);
+ vos_ssr_unprotect(__func__);
+}
/* cfg80211_ops */
static struct cfg80211_ops wlan_hdd_cfg80211_ops =
@@ -24500,5 +24550,5 @@ static struct cfg80211_ops wlan_hdd_cfg80211_ops =
#ifdef CHANNEL_SWITCH_SUPPORTED
.channel_switch = wlan_hdd_cfg80211_channel_switch,
#endif
-
+ .abort_scan = wlan_hdd_cfg80211_abort_scan,
};
diff --git a/CORE/HDD/src/wlan_hdd_early_suspend.c b/CORE/HDD/src/wlan_hdd_early_suspend.c
index 66170074c6bc..d95b096c8b50 100644
--- a/CORE/HDD/src/wlan_hdd_early_suspend.c
+++ b/CORE/HDD/src/wlan_hdd_early_suspend.c
@@ -2349,11 +2349,7 @@ err_vosclose:
unregister_netdevice_notifier(&hdd_netdev_notifier);
/* Clean up HDD Nlink Service */
send_btc_nlink_msg(WLAN_MODULE_DOWN_IND, 0);
-#ifdef WLAN_KD_READY_NOTIFIER
- nl_srv_exit(pHddCtx->ptt_pid);
-#else
nl_srv_exit();
-#endif /* WLAN_KD_READY_NOTIFIER */
/* Free up dynamically allocated members inside HDD Adapter */
kfree(pHddCtx->cfg_ini);
pHddCtx->cfg_ini= NULL;
diff --git a/CORE/HDD/src/wlan_hdd_main.c b/CORE/HDD/src/wlan_hdd_main.c
index 2f0995ed41b9..550262f0bad2 100644
--- a/CORE/HDD/src/wlan_hdd_main.c
+++ b/CORE/HDD/src/wlan_hdd_main.c
@@ -4996,6 +4996,84 @@ exit:
}
/**
+ * hdd_decide_dynamic_chain_mask() - Dynamically decide and set chain mask
+ * for STA
+ * @hdd_ctx: Pointer to hdd context
+ * @forced_mode: set to valid mode to force the mode
+ *
+ * This function decides the chain mask to set considering number of
+ * active sessions, type of active sessions and concurrency.
+ * If forced_mode is valid, chan mask is set to the forced_mode.
+ *
+ * Return: void
+ */
+void hdd_decide_dynamic_chain_mask(hdd_context_t *hdd_ctx,
+ enum antenna_mode forced_mode)
+{
+ int ret;
+ hdd_adapter_t *sta_adapter;
+ hdd_station_ctx_t *hdd_sta_ctx;
+ enum antenna_mode mode;
+
+ if (wlan_hdd_validate_context(hdd_ctx))
+ return;
+
+ if (!hdd_ctx->cfg_ini->enable_dynamic_sta_chainmask ||
+ !hdd_is_supported_chain_mask_2x2(hdd_ctx)) {
+ hddLog(LOG1,
+ FL("dynamic antenna mode in INI is %d or 2x2 not supported"),
+ hdd_ctx->cfg_ini->enable_dynamic_sta_chainmask);
+ return;
+ }
+ sta_adapter = hdd_get_adapter(hdd_ctx, WLAN_HDD_INFRA_STATION);
+ if (!sta_adapter) {
+ hddLog(LOGE, FL("Sta adapter null!!"));
+ return;
+ }
+ hddLog(LOG1, FL("Current antenna mode: %d"),
+ hdd_ctx->current_antenna_mode);
+ hdd_sta_ctx = WLAN_HDD_GET_STATION_CTX_PTR(sta_adapter);
+
+ if (HDD_ANTENNA_MODE_INVALID != forced_mode) {
+ mode = forced_mode;
+ } else if (!wlan_hdd_get_active_session_count(hdd_ctx)) {
+ /* If no active connection set 1x1 */
+ mode = HDD_ANTENNA_MODE_1X1;
+ } else if (1 == wlan_hdd_get_active_session_count(hdd_ctx) &&
+ hdd_ctx->no_of_active_sessions[WLAN_HDD_INFRA_STATION]) {
+ if (!hdd_connIsConnected(hdd_sta_ctx)) {
+ hddLog(LOGE, FL("Sta not connected"));
+ return;
+ }
+ /*
+ * In case only sta is connected set value depending
+ * on AP capability.
+ */
+ mode = hdd_sta_ctx->conn_info.nss;
+ } else {
+ /* If non sta is active or concurrency set 2x2 */
+ mode = HDD_ANTENNA_MODE_2X2;
+ }
+
+ if (mode != hdd_ctx->current_antenna_mode) {
+
+ ret = wlan_hdd_update_txrx_chain_mask(hdd_ctx,
+ (HDD_ANTENNA_MODE_2X2 == mode) ? 0x3 : 0x1);
+
+ if (0 != ret) {
+ hddLog(LOGE,
+ FL("Failed to update chain mask: %d"),
+ mode);
+ return;
+ }
+ hdd_ctx->current_antenna_mode = mode;
+
+ hddLog(LOG1, FL("Antenna mode updated to: %d"),
+ hdd_ctx->current_antenna_mode);
+ }
+}
+
+/**
* drv_cmd_set_antenna_mode() - SET ANTENNA MODE driver command
* handler
* @hdd_ctx: Pointer to hdd context
@@ -10390,6 +10468,7 @@ void hdd_deinit_adapter(hdd_context_t *pHddCtx, hdd_adapter_t *pAdapter,
hdd_wmm_adapter_close( pAdapter );
clear_bit(WMM_INIT_DONE, &pAdapter->event_flags);
}
+ wlan_hdd_undo_acs(pAdapter);
hdd_cleanup_actionframe(pHddCtx, pAdapter);
@@ -12882,12 +12961,7 @@ void hdd_wlan_exit(hdd_context_t *pHddCtx)
wlan_hdd_send_status_pkg(NULL, NULL, 0, 0);
#endif
-#ifdef WLAN_KD_READY_NOTIFIER
- nl_srv_exit(pHddCtx->ptt_pid);
-#else
nl_srv_exit();
-#endif /* WLAN_KD_READY_NOTIFIER */
-
hdd_close_cesium_nl_sock();
hdd_runtime_suspend_deinit(pHddCtx);
@@ -15100,6 +15174,10 @@ int hdd_wlan_startup(struct device *dev, v_VOID_t *hif_sc)
pHddCtx->isLoadInProgress = FALSE;
vos_set_load_unload_in_progress(VOS_MODULE_ID_VOSS, FALSE);
vos_set_load_in_progress(VOS_MODULE_ID_VOSS, FALSE);
+
+ if (pHddCtx->cfg_ini->enable_dynamic_sta_chainmask)
+ hdd_decide_dynamic_chain_mask(pHddCtx,
+ HDD_ANTENNA_MODE_1X1);
memdump_init();
hdd_driver_memdump_init();
if (pHddCtx->cfg_ini->goptimize_chan_avoid_event) {
@@ -15112,12 +15190,7 @@ int hdd_wlan_startup(struct device *dev, v_VOID_t *hif_sc)
goto success;
err_nl_srv:
-#ifdef WLAN_KD_READY_NOTIFIER
- nl_srv_exit(pHddCtx->ptt_pid);
-#else
nl_srv_exit();
-#endif /* WLAN_KD_READY_NOTIFIER */
-
hdd_close_cesium_nl_sock();
err_reg_netdev:
diff --git a/CORE/HDD/src/wlan_hdd_wext.c b/CORE/HDD/src/wlan_hdd_wext.c
index a5ccce391615..f89ae2b972b6 100644
--- a/CORE/HDD/src/wlan_hdd_wext.c
+++ b/CORE/HDD/src/wlan_hdd_wext.c
@@ -122,8 +122,7 @@ module_param(ioctl_debug, int, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
static const hdd_freq_chan_map_t freq_chan_map[] = { {2412, 1}, {2417, 2},
{2422, 3}, {2427, 4}, {2432, 5}, {2437, 6}, {2442, 7}, {2447, 8},
{2452, 9}, {2457, 10}, {2462, 11}, {2467 ,12}, {2472, 13},
- {2484, 14}, {4920, 240}, {4940, 244}, {4960, 248}, {4980, 252},
- {5040, 208}, {5060, 212}, {5080, 216}, {5180, 36}, {5200, 40}, {5220, 44},
+ {2484, 14}, {5180, 36}, {5200, 40}, {5220, 44},
{5240, 48}, {5260, 52}, {5280, 56}, {5300, 60}, {5320, 64}, {5500, 100},
{5520, 104}, {5540, 108}, {5560, 112}, {5580, 116}, {5600, 120},
{5620, 124}, {5640, 128}, {5660, 132}, {5680, 136}, {5700, 140},
@@ -4176,11 +4175,16 @@ VOS_STATUS wlan_hdd_set_powersave(hdd_adapter_t *pAdapter, int mode)
*/
sme_PsOffloadDisablePowerSave(WLAN_HDD_GET_HAL_CTX(pAdapter),
pAdapter->sessionId);
+ if (pHddCtx->cfg_ini->fIsBmpsEnabled)
+ sme_ConfigDisablePowerSave(pHddCtx->hHal,
+ ePMC_BEACON_MODE_POWER_SAVE);
}
else if (DRIVER_POWER_MODE_AUTO == mode)
{
if (pHddCtx->cfg_ini->fIsBmpsEnabled)
{
+ sme_ConfigEnablePowerSave(pHddCtx->hHal,
+ ePMC_BEACON_MODE_POWER_SAVE);
hddLog(VOS_TRACE_LEVEL_INFO_HIGH, "%s:Wlan driver Entering Bmps ",
__func__);
diff --git a/CORE/MAC/inc/qwlan_version.h b/CORE/MAC/inc/qwlan_version.h
index d071a3c1dca3..d52473bf3e96 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 11
#define QWLAN_VERSION_EXTRA ""
-#define QWLAN_VERSION_BUILD 61
+#define QWLAN_VERSION_BUILD 63
-#define QWLAN_VERSIONSTR "4.0.11.61"
+#define QWLAN_VERSIONSTR "4.0.11.63"
#define AR6320_REV1_VERSION 0x5000000
diff --git a/CORE/MAC/src/pe/lim/limProcessMlmReqMessages.c b/CORE/MAC/src/pe/lim/limProcessMlmReqMessages.c
index 86879546308d..6bbf10d8963f 100644
--- a/CORE/MAC/src/pe/lim/limProcessMlmReqMessages.c
+++ b/CORE/MAC/src/pe/lim/limProcessMlmReqMessages.c
@@ -1732,6 +1732,10 @@ limMlmAddBss (
if (VOS_IBSS_MODE == pAddBssParams->halPersona) {
pAddBssParams->nss_2g = pMac->vdev_type_nss_2g.ibss;
pAddBssParams->nss_5g = pMac->vdev_type_nss_5g.ibss;
+ pAddBssParams->tx_aggregation_size =
+ pMac->roam.configParam.tx_aggregation_size;
+ pAddBssParams->rx_aggregation_size =
+ pMac->roam.configParam.rx_aggregation_size;
}
pAddBssParams->dot11_mode = psessionEntry->dot11mode;
limLog(pMac, LOG2, FL("dot11_mode:%d"), pAddBssParams->dot11_mode);
diff --git a/CORE/SAP/src/sapChSelect.c b/CORE/SAP/src/sapChSelect.c
index 16463d6e0d06..ac74e57c6100 100644
--- a/CORE/SAP/src/sapChSelect.c
+++ b/CORE/SAP/src/sapChSelect.c
@@ -114,13 +114,6 @@ sapSafeChannelType safeChannels[NUM_20MHZ_RF_CHANNELS] =
{12 , VOS_TRUE}, //RF_CHAN_12,
{13 , VOS_TRUE}, //RF_CHAN_13,
{14 , VOS_TRUE}, //RF_CHAN_14,
- {240, VOS_TRUE}, //RF_CHAN_240,
- {244, VOS_TRUE}, //RF_CHAN_244,
- {248, VOS_TRUE}, //RF_CHAN_248,
- {252, VOS_TRUE}, //RF_CHAN_252,
- {208, VOS_TRUE}, //RF_CHAN_208,
- {212, VOS_TRUE}, //RF_CHAN_212,
- {216, VOS_TRUE}, //RF_CHAN_216,
{36 , VOS_TRUE}, //RF_CHAN_36,
{40 , VOS_TRUE}, //RF_CHAN_40,
{44 , VOS_TRUE}, //RF_CHAN_44,
diff --git a/CORE/SAP/src/sapFsm.c b/CORE/SAP/src/sapFsm.c
index edaea4ba5abe..8d549448f615 100644
--- a/CORE/SAP/src/sapFsm.c
+++ b/CORE/SAP/src/sapFsm.c
@@ -1792,6 +1792,8 @@ void sapMarkDfsChannels(ptSapContext sapContext, v_U8_t* channels,
v_U8_t nRegDomainDfsChannels;
tHalHandle hHal;
tpAniSirGlobal pMac;
+ v_U64_t time_elapsed_since_last_radar;
+ v_U64_t time_when_radar_found;
hHal = VOS_GET_HAL_CB(sapContext->pvosGCtx);
@@ -1825,12 +1827,18 @@ void sapMarkDfsChannels(ptSapContext sapContext, v_U8_t* channels,
if (psapDfsChannelNolList[j].dfs_channel_number ==
channels[i])
{
+ time_when_radar_found =
+ psapDfsChannelNolList[j].radar_found_timestamp;
+ time_elapsed_since_last_radar = time -
+ time_when_radar_found;
/* If channel is already in NOL, don't update it again.
* This is useful when marking bonding channels which are
* already unavailable.
*/
- if( psapDfsChannelNolList[j].radar_status_flag ==
- eSAP_DFS_CHANNEL_UNAVAILABLE)
+ if ((psapDfsChannelNolList[j].radar_status_flag ==
+ eSAP_DFS_CHANNEL_UNAVAILABLE)&&
+ (time_elapsed_since_last_radar <
+ SAP_DFS_NON_OCCUPANCY_PERIOD))
{
VOS_TRACE(VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO_HIGH,
FL("Channel=%d already in NOL"),
diff --git a/CORE/SERVICES/WMA/wlan_nv.c b/CORE/SERVICES/WMA/wlan_nv.c
index 14342c18cafb..7ddde665c47f 100644
--- a/CORE/SERVICES/WMA/wlan_nv.c
+++ b/CORE/SERVICES/WMA/wlan_nv.c
@@ -857,15 +857,6 @@ const sHalNv nvDefaults =
{NV_CHANNEL_DISABLE, 30}, //RF_CHAN_13,
{NV_CHANNEL_DISABLE, 30}, //RF_CHAN_14,
- //4.9GHz Band, none CB
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_240,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_244,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_248,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_252,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_208,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_212,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_216,
-
//5GHz Low & Mid U-NII Band, none CB
{NV_CHANNEL_ENABLE, 17}, //RF_CHAN_36,
{NV_CHANNEL_ENABLE, 17}, //RF_CHAN_40,
@@ -924,13 +915,6 @@ const sHalNv nvDefaults =
{NV_CHANNEL_ENABLE, 0}, //RF_CHAN_BOND_10,
{NV_CHANNEL_ENABLE, 0}, //RF_CHAN_BOND_11,
- // 4.9GHz Band, channel bonded channels
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_242,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_246,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_250,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_210,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_214,
-
//5GHz Low & Mid U-NII Band, channel bonded channels
{NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_38,
{NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_42,
@@ -1023,15 +1007,6 @@ const sHalNv nvDefaults =
{NV_CHANNEL_ENABLE, 19}, //RF_CHAN_13,
{NV_CHANNEL_DISABLE, 0}, //RF_CHAN_14,
- //4.9GHz Band, none CB
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_240,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_244,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_248,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_252,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_208,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_212,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_216,
-
//5GHz Low & Mid U-NII Band, none CB
{NV_CHANNEL_ENABLE, 23}, //RF_CHAN_36,
{NV_CHANNEL_ENABLE, 23}, //RF_CHAN_40,
@@ -1090,13 +1065,6 @@ const sHalNv nvDefaults =
{NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_10,
{NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_11,
- // 4.9GHz Band, channel bonded channels
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_242,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_246,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_250,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_210,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_214,
-
//5GHz Low & Mid U-NII Band, channel bonded channels
{NV_CHANNEL_ENABLE, 23}, //RF_CHAN_BOND_38,
{NV_CHANNEL_ENABLE, 23}, //RF_CHAN_BOND_42,
@@ -1189,15 +1157,6 @@ const sHalNv nvDefaults =
{NV_CHANNEL_ENABLE, 20}, //RF_CHAN_13,
{NV_CHANNEL_ENABLE, 18}, //RF_CHAN_14,
- //4.9GHz Band, none CB
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_240,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_244,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_248,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_252,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_208,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_212,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_216,
-
//5GHz Low & Mid U-NII Band, none CB
{NV_CHANNEL_ENABLE, 17}, //RF_CHAN_36,
{NV_CHANNEL_ENABLE, 17}, //RF_CHAN_40,
@@ -1239,13 +1198,6 @@ const sHalNv nvDefaults =
{NV_CHANNEL_ENABLE, 0}, //RF_CHAN_BOND_10,
{NV_CHANNEL_ENABLE, 0}, //RF_CHAN_BOND_11,
- // 4.9GHz Band, channel bonded channels
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_242,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_246,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_250,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_210,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_214,
-
//5GHz Low & Mid U-NII Band, channel bonded channels
{NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_38,
{NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_42,
@@ -1338,15 +1290,6 @@ const sHalNv nvDefaults =
{NV_CHANNEL_ENABLE, 16}, //RF_CHAN_13,
{NV_CHANNEL_DISABLE, 0}, //RF_CHAN_14,
- //4.9GHz Band, none CB
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_240,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_244,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_248,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_252,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_208,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_212,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_216,
-
//5GHz Low & Mid U-NII Band, none CB
{NV_CHANNEL_ENABLE, 17}, //RF_CHAN_36,
{NV_CHANNEL_ENABLE, 17}, //RF_CHAN_40,
@@ -1388,13 +1331,6 @@ const sHalNv nvDefaults =
{NV_CHANNEL_ENABLE, 0}, //RF_CHAN_BOND_10,
{NV_CHANNEL_ENABLE, 0}, //RF_CHAN_BOND_11,
- // 4.9GHz Band, channel bonded channels
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_242,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_246,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_250,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_210,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_214,
-
//5GHz Low & Mid U-NII Band, channel bonded channels
{NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_38,
{NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_42,
@@ -1487,15 +1423,6 @@ const sHalNv nvDefaults =
{NV_CHANNEL_DISABLE, 30}, //RF_CHAN_13,
{NV_CHANNEL_DISABLE, 30}, //RF_CHAN_14,
- //4.9GHz Band, none CB
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_240,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_244,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_248,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_252,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_208,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_212,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_216,
-
//5GHz Low & Mid U-NII Band, none CB
{NV_CHANNEL_ENABLE, 17}, //RF_CHAN_36,
{NV_CHANNEL_ENABLE, 17}, //RF_CHAN_40,
@@ -1537,13 +1464,6 @@ const sHalNv nvDefaults =
{NV_CHANNEL_ENABLE, 0}, //RF_CHAN_BOND_10,
{NV_CHANNEL_ENABLE, 0}, //RF_CHAN_BOND_11,
- // 4.9GHz Band, channel bonded channels
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_242,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_246,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_250,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_210,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_214,
-
//5GHz Low & Mid U-NII Band, channel bonded channels
{NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_38,
{NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_42,
@@ -1636,15 +1556,6 @@ const sHalNv nvDefaults =
{NV_CHANNEL_ENABLE, 16}, //RF_CHAN_13,
{NV_CHANNEL_DISABLE, 0}, //RF_CHAN_14,
- //4.9GHz Band, none CB
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_240,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_244,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_248,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_252,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_208,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_212,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_216,
-
//5GHz Low & Mid U-NII Band, none CB
{NV_CHANNEL_ENABLE, 17}, //RF_CHAN_36,
{NV_CHANNEL_ENABLE, 17}, //RF_CHAN_40,
@@ -1686,13 +1597,6 @@ const sHalNv nvDefaults =
{NV_CHANNEL_ENABLE, 0}, //RF_CHAN_BOND_10,
{NV_CHANNEL_ENABLE, 0}, //RF_CHAN_BOND_11,
- // 4.9GHz Band, channel bonded channels
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_242,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_246,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_250,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_210,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_214,
-
//5GHz Low & Mid U-NII Band, channel bonded channels
{NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_38,
{NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_42,
@@ -1785,15 +1689,6 @@ const sHalNv nvDefaults =
{NV_CHANNEL_ENABLE, 15}, //RF_CHAN_13,
{NV_CHANNEL_DISABLE, 0}, //RF_CHAN_14,
- //4.9GHz Band, none CB
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_240,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_244,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_248,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_252,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_208,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_212,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_216,
-
//5GHz Low & Mid U-NII Band, none CB
{NV_CHANNEL_ENABLE, 17}, //RF_CHAN_36,
{NV_CHANNEL_ENABLE, 17}, //RF_CHAN_40,
@@ -1835,13 +1730,6 @@ const sHalNv nvDefaults =
{NV_CHANNEL_ENABLE, 0}, //RF_CHAN_BOND_10,
{NV_CHANNEL_ENABLE, 0}, //RF_CHAN_BOND_11,
- // 4.9GHz Band, channel bonded channels
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_242,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_246,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_250,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_210,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_214,
-
//5GHz Low & Mid U-NII Band, channel bonded channels
{NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_38,
{NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_42,
@@ -1934,15 +1822,6 @@ const sHalNv nvDefaults =
{NV_CHANNEL_ENABLE, 14}, //RF_CHAN_13,
{NV_CHANNEL_DISABLE, 0}, //RF_CHAN_14,
- //4.9GHz Band, none CB
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_240,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_244,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_248,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_252,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_208,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_212,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_216,
-
//5GHz Low & Mid U-NII Band, none CB
{NV_CHANNEL_ENABLE, 17}, //RF_CHAN_36,
{NV_CHANNEL_ENABLE, 17}, //RF_CHAN_40,
@@ -1984,13 +1863,6 @@ const sHalNv nvDefaults =
{NV_CHANNEL_ENABLE, 0}, //RF_CHAN_BOND_10,
{NV_CHANNEL_ENABLE, 0}, //RF_CHAN_BOND_11,
- // 4.9GHz Band, channel bonded channels
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_242,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_246,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_250,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_210,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_214,
-
//5GHz Low & Mid U-NII Band, channel bonded channels
{NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_38,
{NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_42,
@@ -4023,13 +3895,6 @@ const sHalNv nvDefaults =
95, // RF_CHAN_12
97, // RF_CHAN_13
104, // RF_CHAN_14
- 100, // RF_CHAN_240
- 100, // RF_CHAN_244
- 100, // RF_CHAN_248
- 100, // RF_CHAN_252
- 100, // RF_CHAN_208
- 100, // RF_CHAN_212
- 100, // RF_CHAN_216
100, // RF_CHAN_36
100, // RF_CHAN_40
100, // RF_CHAN_44
@@ -4064,11 +3929,6 @@ const sHalNv nvDefaults =
100, // RF_CHAN_BOND_9
100, // RF_CHAN_BOND_10
100, // RF_CHAN_BOND_11
- 100, // RF_CHAN_BOND_242
- 100, // RF_CHAN_BOND_246
- 100, // RF_CHAN_BOND_250
- 100, // RF_CHAN_BOND_210
- 100, // RF_CHAN_BOND_214
100, // RF_CHAN_BOND_38
100, // RF_CHAN_BOND_42
100, // RF_CHAN_BOND_46
@@ -5317,13 +5177,6 @@ const sHalNv nvDefaults =
310, // RF_CHAN_12
310, // RF_CHAN_13
310, // RF_CHAN_14
- 280, // RF_CHAN_240
- 280, // RF_CHAN_244
- 280, // RF_CHAN_248
- 280, // RF_CHAN_252
- 280, // RF_CHAN_208
- 280, // RF_CHAN_212
- 280, // RF_CHAN_216
280, // RF_CHAN_36
280, // RF_CHAN_40
280, // RF_CHAN_44
@@ -5358,11 +5211,6 @@ const sHalNv nvDefaults =
280, // RF_CHAN_BOND_9
280, // RF_CHAN_BOND_10
280, // RF_CHAN_BOND_11
- 280, // RF_CHAN_BOND_242
- 280, // RF_CHAN_BOND_246
- 280, // RF_CHAN_BOND_250
- 280, // RF_CHAN_BOND_210
- 280, // RF_CHAN_BOND_214
280, // RF_CHAN_BOND_38
280, // RF_CHAN_BOND_42
280, // RF_CHAN_BOND_46
diff --git a/CORE/SERVICES/WMA/wma.c b/CORE/SERVICES/WMA/wma.c
index c1424509b6ac..bd03bf5097c2 100644
--- a/CORE/SERVICES/WMA/wma.c
+++ b/CORE/SERVICES/WMA/wma.c
@@ -1606,7 +1606,7 @@ static int32_t wmi_unified_peer_delete_send(wmi_unified_t wmi,
if (wmi_unified_cmd_send(wmi, buf, len, WMI_PEER_DELETE_CMDID)) {
WMA_LOGP("%s: Failed to send peer delete command", __func__);
- adf_nbuf_free(buf);
+ wmi_buf_free(buf);
return -EIO;
}
WMA_LOGD("%s: peer_addr %pM vdev_id %d", __func__, peer_addr, vdev_id);
@@ -1639,7 +1639,7 @@ static int32_t wmi_unified_peer_flush_tids_send(wmi_unified_t wmi,
if (wmi_unified_cmd_send(wmi, buf, len, WMI_PEER_FLUSH_TIDS_CMDID)) {
WMA_LOGP("%s: Failed to send flush tid command", __func__);
- adf_nbuf_free(buf);
+ wmi_buf_free(buf);
return -EIO;
}
WMA_LOGD("%s: peer_addr %pM vdev_id %d", __func__, peer_addr, vdev_id);
@@ -1863,7 +1863,7 @@ static int wmi_unified_vdev_down_send(wmi_unified_t wmi, u_int8_t vdev_id)
cmd->vdev_id = vdev_id;
if (wmi_unified_cmd_send(wmi, buf, len, WMI_VDEV_DOWN_CMDID)) {
WMA_LOGP("%s: Failed to send vdev down", __func__);
- adf_nbuf_free(buf);
+ wmi_buf_free(buf);
return -EIO;
}
WMA_LOGD("%s: vdev_id %d", __func__, vdev_id);
@@ -1977,6 +1977,10 @@ static void wma_recreate_ibss_vdev_and_bss_peer(tp_wma_handle wma, u_int8_t vdev
add_sta_self_param.status = 0;
add_sta_self_param.nss_2g = wma->interfaces[vdev_id].nss_2g;
add_sta_self_param.nss_5g = wma->interfaces[vdev_id].nss_5g;
+ add_sta_self_param.tx_aggregation_size =
+ wma->interfaces[vdev_id].tx_aggregation_size;
+ add_sta_self_param.rx_aggregation_size =
+ wma->interfaces[vdev_id].rx_aggregation_size;
/* delete old ibss vdev */
del_sta_param.sessionId = vdev_id;
@@ -2142,7 +2146,7 @@ void wma_hidden_ssid_vdev_restart_on_vdev_stop(tp_wma_handle wma_handle, u_int8_
if (ret < 0) {
WMA_LOGE("%s: Failed to send vdev restart command", __func__);
adf_os_atomic_set(&intr[sessionId].vdev_restart_params.hidden_ssid_restart_in_progress,0);
- adf_nbuf_free(buf);
+ wmi_buf_free(buf);
}
}
@@ -4736,6 +4740,11 @@ static int wma_unified_radio_tx_power_level_stats_event_handler(void *handle,
}
link_stats_results = wma_handle->link_stats_results;
+ if (!link_stats_results) {
+ WMA_LOGA("%s: link_stats_results is NULL", __func__);
+ return -EINVAL;
+ }
+
rs_results = (tSirWifiRadioStat *) &link_stats_results->results[0];
tx_power_level_values = (uint8 *) param_tlvs->tx_time_per_power_level;
@@ -4785,8 +4794,8 @@ post_stats:
link_stats_results);
WMA_LOGD("%s: Radio Stats event posted to HDD", __func__);
vos_mem_free(rs_results->tx_time_per_power_level);
- vos_mem_free(wma_handle->link_stats_results);
rs_results->tx_time_per_power_level = NULL;
+ vos_mem_free(wma_handle->link_stats_results);
wma_handle->link_stats_results = NULL;
return 0;
@@ -5298,7 +5307,7 @@ static void wma_send_bcn_buf_ll(tp_wma_handle wma,
ret = adf_nbuf_map_single(pdev->osdev, bcn->buf,
ADF_OS_DMA_TO_DEVICE);
if (ret != A_STATUS_OK) {
- adf_nbuf_free(wmi_buf);
+ wmi_buf_free(wmi_buf);
WMA_LOGE("%s: failed map beacon buf to DMA region",
__func__);
adf_os_spin_unlock_bh(&bcn->lock);
@@ -7928,7 +7937,7 @@ static int wmi_unified_peer_create_send(wmi_unified_t wmi,
if (wmi_unified_cmd_send(wmi, buf, len, WMI_PEER_CREATE_CMDID)) {
WMA_LOGP("%s: failed to send WMI_PEER_CREATE_CMDID", __func__);
- adf_nbuf_free(buf);
+ wmi_buf_free(buf);
return -EIO;
}
return 0;
@@ -8041,7 +8050,7 @@ static void wma_set_sta_keep_alive(tp_wma_handle wma, u_int8_t vdev_id,
WMA_LOGE("%s: received null pointer, hostv4addr:%p "
"destv4addr:%p destmac:%p ", __func__,
hostv4addr, destv4addr, destmac);
- adf_nbuf_free(buf);
+ wmi_buf_free(buf);
return;
}
@@ -8058,7 +8067,7 @@ static void wma_set_sta_keep_alive(tp_wma_handle wma, u_int8_t vdev_id,
if (wmi_unified_cmd_send(wma->wmi_handle, buf, len,
WMI_STA_KEEPALIVE_CMDID)) {
WMA_LOGE("Failed to set KeepAlive");
- adf_nbuf_free(buf);
+ wmi_buf_free(buf);
}
WMA_LOGD("%s: Exit", __func__);
@@ -8171,7 +8180,7 @@ static VOS_STATUS wma_set_enable_disable_mcc_adaptive_scheduler(tANI_U32 mcc_ada
if (ret) {
WMA_LOGP("%s: Failed to send enable/disable MCC"
" adaptive scheduler command", __func__);
- adf_nbuf_free(buf);
+ wmi_buf_free(buf);
}
return VOS_STATUS_SUCCESS;
}
@@ -8277,7 +8286,7 @@ static VOS_STATUS wma_set_mcc_channel_time_latency
if (ret) {
WMA_LOGE("%s: Failed to send MCC Channel Time Latency command",
__func__);
- adf_nbuf_free(buf);
+ wmi_buf_free(buf);
VOS_ASSERT(0);
return VOS_STATUS_E_FAILURE;
}
@@ -8407,7 +8416,7 @@ static VOS_STATUS wma_set_mcc_channel_time_quota
WMI_RESMGR_SET_CHAN_TIME_QUOTA_CMDID);
if (ret) {
WMA_LOGE("Failed to send MCC Channel Time Quota command");
- adf_nbuf_free(buf);
+ wmi_buf_free(buf);
VOS_ASSERT(0);
return VOS_STATUS_E_FAILURE;
}
@@ -9471,7 +9480,7 @@ static VOS_STATUS wma_capture_tsf(tp_wma_handle wma_handle, uint32_t vdev_id)
error:
if (buf)
- adf_nbuf_free(buf);
+ wmi_buf_free(buf);
return vos_status;
}
@@ -9524,7 +9533,7 @@ static VOS_STATUS wma_reset_tsf_gpio(tp_wma_handle wma_handle, uint32_t vdev_id)
error:
if (buf)
- adf_nbuf_free(buf);
+ wmi_buf_free(buf);
return vos_status;
}
#else
@@ -9641,7 +9650,7 @@ VOS_STATUS wma_start_scan(tp_wma_handle wma_handle,
error:
wma_reset_scan_info(wma_handle, cmd->vdev_id);
if (buf)
- adf_nbuf_free(buf);
+ wmi_buf_free(buf);
error0:
/* Stop the timer for scan completion */
if (vos_timer_stop(&wma_handle->wma_scan_comp_timer)
@@ -9709,7 +9718,7 @@ static VOS_STATUS wma_stop_scan(tp_wma_handle wma_handle,
return VOS_STATUS_SUCCESS;
error:
if (buf)
- adf_nbuf_free(buf);
+ wmi_buf_free(buf);
error1:
return vos_status;
}
@@ -12112,7 +12121,7 @@ VOS_STATUS wma_switch_channel(tp_wma_handle wma, struct wma_vdev_start_req *req)
if (ret < 0) {
WMA_LOGP("%s: Failed to send vdev start command", __func__);
- adf_nbuf_free(buf);
+ wmi_buf_free(buf);
return VOS_STATUS_E_FAILURE;
}
@@ -12259,7 +12268,7 @@ VOS_STATUS wma_vdev_start(tp_wma_handle wma,
" Failed to send VDEV START command",
__func__, __LINE__);
- adf_nbuf_free(buf);
+ wmi_buf_free(buf);
return VOS_STATUS_E_FAILURE;
}
@@ -12375,7 +12384,7 @@ VOS_STATUS wma_vdev_start(tp_wma_handle wma,
if (ret < 0) {
WMA_LOGP("%s: Failed to send vdev start command", __func__);
- adf_nbuf_free(buf);
+ wmi_buf_free(buf);
return VOS_STATUS_E_FAILURE;
}
@@ -13344,7 +13353,7 @@ static int32_t wmi_unified_send_peer_assoc(tp_wma_handle wma,
FALSE);
if (ret) {
WMA_LOGE("Set WMI_VDEV_PARAM_DROP_UNENCRY Param status:%d\n", ret);
- adf_nbuf_free(buf);
+ wmi_buf_free(buf);
return ret;
}
}
@@ -13433,7 +13442,7 @@ static int32_t wmi_unified_send_peer_assoc(tp_wma_handle wma,
if (ret != EOK) {
WMA_LOGP("%s: Failed to send peer assoc command ret = %d",
__func__, ret);
- adf_nbuf_free(buf);
+ wmi_buf_free(buf);
}
return ret;
}
@@ -13513,7 +13522,7 @@ VOS_STATUS wma_get_link_speed(WMA_HANDLE handle,
if (wmi_unified_cmd_send(wma_handle->wmi_handle, wmi_buf, len,
WMI_PEER_GET_ESTIMATED_LINKSPEED_CMDID)) {
WMA_LOGE("%s: failed to send link speed command", __func__);
- adf_nbuf_free(wmi_buf);
+ wmi_buf_free(wmi_buf);
return VOS_STATUS_E_FAILURE;
}
return VOS_STATUS_SUCCESS;
@@ -13993,7 +14002,7 @@ static int32_t wmi_unified_set_sta_ps_param(wmi_unified_t wmi_handle,
WMI_STA_POWERSAVE_PARAM_CMDID)) {
WMA_LOGE("Set Sta Ps param Failed vdevId %d Param %d val %d",
vdev_id, param, value);
- adf_nbuf_free(buf);
+ wmi_buf_free(buf);
return -EIO;
}
/* Store the PS Status */
@@ -14029,7 +14038,7 @@ static int32_t wmi_unified_pdev_green_ap_ps_enable_cmd(wmi_unified_t wmi_handle,
WMI_PDEV_GREEN_AP_PS_ENABLE_CMDID)) {
WMA_LOGE("Set Green AP PS param Failed val %d", value);
- adf_nbuf_free(buf);
+ wmi_buf_free(buf);
return -EIO;
}
return 0;
@@ -14105,7 +14114,7 @@ VOS_STATUS wma_send_egap_conf_params(WMA_HANDLE handle,
sizeof(*cmd), WMI_AP_PS_EGAP_PARAM_CMDID);
if (err) {
WMA_LOGE("Failed to send ap_ps_egap cmd");
- adf_nbuf_free(buf);
+ wmi_buf_free(buf);
return -EIO;
}
return 0;
@@ -14218,7 +14227,7 @@ static void wma_send_echo_request(tp_wma_handle wma)
if (wmi_unified_cmd_send(wma->wmi_handle, buf, len,
WMI_ECHO_CMDID)) {
WMA_LOGE("Failed to send Echo cmd to firmware");
- adf_nbuf_free(buf);
+ wmi_buf_free(buf);
}
}
@@ -15589,6 +15598,11 @@ static void wma_add_bss_ibss_mode(tp_wma_handle wma, tpAddBssParams add_bss)
nss_5g = wma->interfaces[vdev_id].nss_5g;
wma_set_bss_rate_flags(&wma->interfaces[vdev_id], add_bss);
+ wma->interfaces[vdev_id].tx_aggregation_size =
+ add_bss->tx_aggregation_size;
+ wma->interfaces[vdev_id].rx_aggregation_size =
+ add_bss->rx_aggregation_size;
+
vdev = wma_find_vdev_by_id(wma, vdev_id);
if (!vdev) {
WMA_LOGE("%s: vdev not found for vdev id %d.",
@@ -15628,6 +15642,10 @@ static void wma_add_bss_ibss_mode(tp_wma_handle wma, tpAddBssParams add_bss)
add_sta_self_param.status = 0;
add_sta_self_param.nss_2g = add_bss->nss_2g;
add_sta_self_param.nss_5g = add_bss->nss_5g;
+ add_sta_self_param.tx_aggregation_size =
+ add_bss->tx_aggregation_size;
+ add_sta_self_param.rx_aggregation_size =
+ add_bss->rx_aggregation_size;
vdev = wma_vdev_attach(wma, &add_sta_self_param, 0);
if (!vdev) {
@@ -16088,7 +16106,7 @@ static int wmi_unified_vdev_up_send(wmi_unified_t wmi,
WMI_CHAR_ARRAY_TO_MAC_ADDR(bssid, &cmd->vdev_bssid);
if (wmi_unified_cmd_send(wmi, buf, len, WMI_VDEV_UP_CMDID)) {
WMA_LOGP("%s: Failed to send vdev up command", __func__);
- adf_nbuf_free(buf);
+ wmi_buf_free(buf);
return -EIO;
}
return 0;
@@ -16120,7 +16138,7 @@ static int32_t wmi_unified_set_ap_ps_param(void *wma_ctx, u_int32_t vdev_id,
sizeof(*cmd), WMI_AP_PS_PEER_PARAM_CMDID);
if (err) {
WMA_LOGE("Failed to send set_ap_ps_param cmd");
- adf_os_mem_free(buf);
+ wmi_buf_free(buf);
return -EIO;
}
return 0;
@@ -17117,7 +17135,7 @@ static wmi_buf_t wma_setup_install_key_cmd(tp_wma_handle wma_handle,
default:
/* TODO: MFP ? */
WMA_LOGE("%s:Invalid encryption type:%d", __func__, key_params->key_type);
- adf_nbuf_free(buf);
+ wmi_buf_free(buf);
return NULL;
}
@@ -17274,7 +17292,7 @@ static void wma_set_bsskey(tp_wma_handle wma_handle, tpSetBssKeyParams key_info)
status = wmi_unified_cmd_send(wma_handle->wmi_handle, buf, len,
WMI_VDEV_INSTALL_KEY_CMDID);
if (status) {
- adf_nbuf_free(buf);
+ wmi_buf_free(buf);
WMA_LOGE("%s:Failed to send install key command", __func__);
key_info->status = eHAL_STATUS_FAILURE;
goto out;
@@ -17354,7 +17372,7 @@ static void wma_set_ibsskey_helper(tp_wma_handle wma_handle, tpSetBssKeyParams k
status = wmi_unified_cmd_send(wma_handle->wmi_handle, buf, len,
WMI_VDEV_INSTALL_KEY_CMDID);
if (status) {
- adf_nbuf_free(buf);
+ wmi_buf_free(buf);
WMA_LOGE("%s:Failed to send install key command", __func__);
}
}
@@ -17460,7 +17478,7 @@ static void wma_set_stakey(tp_wma_handle wma_handle, tpSetStaKeyParams key_info)
status = wmi_unified_cmd_send(wma_handle->wmi_handle, buf, len,
WMI_VDEV_INSTALL_KEY_CMDID);
if (status) {
- adf_nbuf_free(buf);
+ wmi_buf_free(buf);
WMA_LOGE("%s:Failed to send install key command", __func__);
key_info->status = eHAL_STATUS_FAILURE;
goto out;
@@ -17681,7 +17699,7 @@ static int32_t wmi_unified_vdev_stop_send(wmi_unified_t wmi, u_int8_t vdev_id)
cmd->vdev_id = vdev_id;
if (wmi_unified_cmd_send(wmi, buf, len, WMI_VDEV_STOP_CMDID)) {
WMA_LOGP("%s: Failed to send vdev stop command", __func__);
- adf_nbuf_free(buf);
+ wmi_buf_free(buf);
return -EIO;
}
return 0;
@@ -18738,7 +18756,7 @@ static int32_t wmi_unified_set_sta_ps(wmi_unified_t wmi_handle,
{
WMA_LOGE("Set Sta Mode Ps Failed vdevId %d val %d",
vdev_id, val);
- adf_nbuf_free(buf);
+ wmi_buf_free(buf);
return -EIO;
}
return 0;
@@ -23104,7 +23122,7 @@ static void wma_start_oem_data_req(tp_wma_handle wma_handle,
if (ret != EOK) {
WMA_LOGE("%s:wmi cmd send failed", __func__);
- adf_nbuf_free(buf);
+ wmi_buf_free(buf);
}
out:
@@ -23310,7 +23328,7 @@ static void wma_set_ric_req(tp_wma_handle wma, void *msg, tANI_U8 is_add_ts)
WMA_LOGP("%s: Failed to send vdev Set RIC Req command", __func__);
if(is_add_ts)
((tAddTsParams *)msg)->status = eHAL_STATUS_FAILURE;
- adf_nbuf_free(buf);
+ wmi_buf_free(buf);
}
}
#endif
@@ -23338,7 +23356,7 @@ static void wma_del_ts_req(tp_wma_handle wma, tDelTsParams *msg)
if (wmi_unified_cmd_send(wma->wmi_handle, buf, len,
WMI_VDEV_WMM_DELTS_CMDID)) {
WMA_LOGP("%s: Failed to send vdev DELTS command", __func__);
- adf_nbuf_free(buf);
+ wmi_buf_free(buf);
}
#ifdef WLAN_FEATURE_ROAM_OFFLOAD
@@ -23397,7 +23415,7 @@ static void wma_aggr_qos_req(tp_wma_handle wma, tAggrAddTsParams *pAggrQosRspMsg
WMI_VDEV_WMM_ADDTS_CMDID)) {
WMA_LOGP("%s: Failed to send vdev ADDTS command", __func__);
pAggrQosRspMsg->status[i] = eHAL_STATUS_FAILURE;
- adf_nbuf_free(buf);
+ wmi_buf_free(buf);
}
}
}
@@ -23453,7 +23471,7 @@ static void wma_add_ts_req(tp_wma_handle wma, tAddTsParams *msg)
WMI_VDEV_WMM_ADDTS_CMDID)) {
WMA_LOGP("%s: Failed to send vdev ADDTS command", __func__);
msg->status = eHAL_STATUS_FAILURE;
- adf_nbuf_free(buf);
+ wmi_buf_free(buf);
}
#ifdef WLAN_FEATURE_ROAM_OFFLOAD
@@ -23604,7 +23622,7 @@ static int wma_set_base_macaddr_indicate(tp_wma_handle wma_handle,
sizeof(*cmd), WMI_PDEV_SET_BASE_MACADDR_CMDID);
if (err) {
WMA_LOGE("Failed to send set_base_macaddr cmd");
- adf_os_mem_free(buf);
+ wmi_buf_free(buf);
return -EIO;
}
WMA_LOGD("Base MAC Addr: "MAC_ADDRESS_STR,
@@ -23740,7 +23758,7 @@ static int wma_add_clear_mcbc_filter(tp_wma_handle wma_handle, uint8_t vdev_id,
sizeof(*cmd), WMI_SET_MCASTBCAST_FILTER_CMDID);
if (err) {
WMA_LOGE("Failed to send set_param cmd");
- adf_os_mem_free(buf);
+ wmi_buf_free(buf);
return -EIO;
}
WMA_LOGD("Action:%d; vdev_id:%d; clearList:%d\n",
@@ -25383,7 +25401,7 @@ VOS_STATUS wma_set_peer_rate_report_condition(WMA_HANDLE handle,
status = wmi_unified_cmd_send(wma_handle->wmi_handle, buf, len,
WMI_PEER_SET_RATE_REPORT_CONDITION_CMDID);
if (status) {
- adf_nbuf_free(buf);
+ wmi_buf_free(buf);
WMA_LOGE("%s:Failed to send peer_set_report_cond command",
__func__);
return eHAL_STATUS_FAILURE;
@@ -25493,7 +25511,7 @@ VOS_STATUS wma_ProcessAddPeriodicTxPtrnInd(WMA_HANDLE handle,
pAddPeriodicTxPtrnParams->macAddress, &vdev_id)) {
WMA_LOGE("%s: Failed to find vdev id for %pM",__func__,
pAddPeriodicTxPtrnParams->macAddress);
- adf_nbuf_free(wmi_buf);
+ wmi_buf_free(wmi_buf);
return VOS_STATUS_E_INVAL;
}
buf_ptr = (u_int8_t *) wmi_buf_data(wmi_buf);
@@ -25524,7 +25542,7 @@ VOS_STATUS wma_ProcessAddPeriodicTxPtrnInd(WMA_HANDLE handle,
if (wmi_unified_cmd_send(wma_handle->wmi_handle, wmi_buf, len,
WMI_ADD_PROACTIVE_ARP_RSP_PATTERN_CMDID)) {
WMA_LOGE("%s: failed to add pattern set state command", __func__);
- adf_nbuf_free(wmi_buf);
+ wmi_buf_free(wmi_buf);
return VOS_STATUS_E_FAILURE;
}
return VOS_STATUS_SUCCESS;
@@ -25558,7 +25576,7 @@ VOS_STATUS wma_ProcessDelPeriodicTxPtrnInd(WMA_HANDLE handle,
pDelPeriodicTxPtrnParams->macAddress, &vdev_id)) {
WMA_LOGE("%s: Failed to find vdev id for %pM",__func__,
pDelPeriodicTxPtrnParams->macAddress);
- adf_nbuf_free(wmi_buf);
+ wmi_buf_free(wmi_buf);
return VOS_STATUS_E_INVAL;
}
cmd = (WMI_DEL_PROACTIVE_ARP_RSP_PATTERN_CMD_fixed_param *)wmi_buf_data(wmi_buf);
@@ -25575,7 +25593,7 @@ VOS_STATUS wma_ProcessDelPeriodicTxPtrnInd(WMA_HANDLE handle,
if (wmi_unified_cmd_send(wma_handle->wmi_handle, wmi_buf, len,
WMI_DEL_PROACTIVE_ARP_RSP_PATTERN_CMDID)) {
WMA_LOGE("%s: failed to send del pattern command", __func__);
- adf_nbuf_free(wmi_buf);
+ wmi_buf_free(wmi_buf);
return VOS_STATUS_E_FAILURE;
}
return VOS_STATUS_SUCCESS;
@@ -26332,7 +26350,7 @@ VOS_STATUS wma_start_extscan(tp_wma_handle wma,
if (wmi_unified_cmd_send(wma->wmi_handle, buf,
len, WMI_EXTSCAN_START_CMDID)) {
WMA_LOGE("%s: failed to send command", __func__);
- adf_nbuf_free(buf);
+ wmi_buf_free(buf);
return VOS_STATUS_E_FAILURE;
}
@@ -26380,7 +26398,7 @@ VOS_STATUS wma_stop_extscan(tp_wma_handle wma,
if (wmi_unified_cmd_send(wma->wmi_handle, wmi_buf, len,
WMI_EXTSCAN_STOP_CMDID)) {
WMA_LOGE("%s: failed to command", __func__);
- adf_nbuf_free(wmi_buf);
+ wmi_buf_free(wmi_buf);
return VOS_STATUS_E_FAILURE;
}
@@ -26526,7 +26544,7 @@ VOS_STATUS wma_get_buf_extscan_hotlist_cmd(tp_wma_handle wma_handle,
if (wmi_unified_cmd_send(wma_handle->wmi_handle, buf,
len, WMI_EXTSCAN_CONFIGURE_HOTLIST_MONITOR_CMDID)) {
WMA_LOGE("%s: failed to send command", __func__);
- adf_nbuf_free(buf);
+ wmi_buf_free(buf);
return VOS_STATUS_E_FAILURE;
}
index = index + min_entries;
@@ -26619,7 +26637,7 @@ VOS_STATUS wma_extscan_stop_hotlist_monitor(tp_wma_handle wma,
if (wmi_unified_cmd_send(wma->wmi_handle, wmi_buf, len,
WMI_EXTSCAN_CONFIGURE_HOTLIST_MONITOR_CMDID)) {
WMA_LOGE("%s: failed to command", __func__);
- adf_nbuf_free(wmi_buf);
+ wmi_buf_free(wmi_buf);
return VOS_STATUS_E_FAILURE;
}
return VOS_STATUS_SUCCESS;
@@ -26724,7 +26742,7 @@ wma_set_ssid_hotlist(tp_wma_handle wma,
(wma->wmi_handle, wmi_buf, len,
WMI_EXTSCAN_CONFIGURE_HOTLIST_SSID_MONITOR_CMDID)) {
WMA_LOGE("%s: failed to send command", __func__);
- adf_nbuf_free(wmi_buf);
+ wmi_buf_free(wmi_buf);
return VOS_STATUS_E_FAILURE;
}
return VOS_STATUS_SUCCESS;
@@ -26831,7 +26849,7 @@ VOS_STATUS wma_extscan_start_change_monitor(tp_wma_handle wma,
if (wmi_unified_cmd_send(wma->wmi_handle, buf,
len, WMI_EXTSCAN_CONFIGURE_WLAN_CHANGE_MONITOR_CMDID)) {
WMA_LOGE("%s: failed to send command", __func__);
- adf_nbuf_free(buf);
+ wmi_buf_free(buf);
return VOS_STATUS_E_FAILURE;
}
return VOS_STATUS_SUCCESS;
@@ -26891,7 +26909,7 @@ VOS_STATUS wma_extscan_stop_change_monitor(tp_wma_handle wma,
if (wmi_unified_cmd_send(wma->wmi_handle, wmi_buf, len,
WMI_EXTSCAN_CONFIGURE_WLAN_CHANGE_MONITOR_CMDID)) {
WMA_LOGE("%s: failed to command", __func__);
- adf_nbuf_free(wmi_buf);
+ wmi_buf_free(wmi_buf);
return VOS_STATUS_E_FAILURE;
}
return VOS_STATUS_SUCCESS;
@@ -26937,7 +26955,7 @@ VOS_STATUS wma_extscan_get_cached_results(tp_wma_handle wma,
if (wmi_unified_cmd_send(wma->wmi_handle, wmi_buf, len,
WMI_EXTSCAN_GET_CACHED_RESULTS_CMDID)) {
WMA_LOGE("%s: failed to command", __func__);
- adf_nbuf_free(wmi_buf);
+ wmi_buf_free(wmi_buf);
return VOS_STATUS_E_FAILURE;
}
return VOS_STATUS_SUCCESS;
@@ -26981,7 +26999,7 @@ VOS_STATUS wma_extscan_get_capabilities(tp_wma_handle wma,
if (wmi_unified_cmd_send(wma->wmi_handle, wmi_buf, len,
WMI_EXTSCAN_GET_CAPABILITIES_CMDID)) {
WMA_LOGE("%s: failed to command", __func__);
- adf_nbuf_free(wmi_buf);
+ wmi_buf_free(wmi_buf);
return VOS_STATUS_E_FAILURE;
}
return VOS_STATUS_SUCCESS;
@@ -27485,7 +27503,7 @@ static void wma_process_unit_test_cmd(WMA_HANDLE handle,
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);
+ wmi_buf_free(wmi_buf);
return;
}
return;
@@ -27528,7 +27546,7 @@ VOS_STATUS wma_scan_probe_setoui(tp_wma_handle wma,
if (wmi_unified_cmd_send(wma->wmi_handle, wmi_buf, len,
WMI_SCAN_PROB_REQ_OUI_CMDID)) {
WMA_LOGE("%s: failed to send command", __func__);
- adf_nbuf_free(wmi_buf);
+ wmi_buf_free(wmi_buf);
return VOS_STATUS_E_FAILURE;
}
return VOS_STATUS_SUCCESS;
@@ -27673,7 +27691,7 @@ static void wma_process_roam_invoke(WMA_HANDLE handle,
if (wmi_unified_cmd_send(wma_handle->wmi_handle, wmi_buf, len,
WMI_ROAM_INVOKE_CMDID)) {
WMA_LOGP("%s: failed to send roam invoke command", __func__);
- adf_nbuf_free(wmi_buf);
+ wmi_buf_free(wmi_buf);
return;
}
return;
@@ -28895,7 +28913,7 @@ static VOS_STATUS wma_get_bpf_capabilities(tp_wma_handle wma)
if (wmi_unified_cmd_send(wma->wmi_handle, wmi_buf, len,
WMI_BPF_GET_CAPABILITY_CMDID)) {
WMA_LOGE(FL("Failed to send BPF capability command"));
- adf_nbuf_free(wmi_buf);
+ wmi_buf_free(wmi_buf);
return VOS_STATUS_E_FAILURE;
}
return vos_status;
@@ -29081,7 +29099,7 @@ static VOS_STATUS wma_set_bpf_instructions(tp_wma_handle wma,
if (wmi_unified_cmd_send(wma->wmi_handle, wmi_buf, len,
WMI_BPF_SET_VDEV_INSTRUCTIONS_CMDID)) {
WMA_LOGE(FL("Failed to send config bpf instructions command"));
- adf_nbuf_free(wmi_buf);
+ wmi_buf_free(wmi_buf);
return VOS_STATUS_E_FAILURE;
}
return VOS_STATUS_SUCCESS;
@@ -29167,7 +29185,7 @@ VOS_STATUS wma_enable_disable_caevent_ind(tp_wma_handle wma,
if (wmi_unified_cmd_send(wma->wmi_handle, wmi_buf, len,
WMI_CHAN_AVOID_RPT_ALLOW_CMDID)) {
WMA_LOGE(FL("Failed to send enable/disable CA event command"));
- adf_nbuf_free(wmi_buf);
+ wmi_buf_free(wmi_buf);
return VOS_STATUS_E_FAILURE;
}
@@ -30878,7 +30896,7 @@ static VOS_STATUS wma_set_thermal_mgmt(tp_wma_handle wma_handle,
status = wmi_unified_cmd_send(wma_handle->wmi_handle, buf, len,
WMI_THERMAL_MGMT_CMDID);
if (status) {
- adf_nbuf_free(buf);
+ wmi_buf_free(buf);
WMA_LOGE("%s:Failed to send thermal mgmt command", __func__);
return eHAL_STATUS_FAILURE;
}
@@ -32534,7 +32552,7 @@ static wmi_buf_t wma_setup_wmi_init_msg(tp_wma_handle wma_handle,
/* allocate memory requested by FW */
if (ev->num_mem_reqs > WMI_MAX_MEM_REQS) {
VOS_ASSERT(0);
- adf_nbuf_free(buf);
+ wmi_buf_free(buf);
return NULL;
}
@@ -32882,7 +32900,7 @@ int wma_set_peer_param(void *wma_ctx, u_int8_t *peer_addr, u_int32_t param_id,
WMI_PEER_SET_PARAM_CMDID);
if (err) {
WMA_LOGE("Failed to send set_param cmd");
- adf_os_mem_free(buf);
+ wmi_buf_free(buf);
return -EIO;
}
@@ -33545,7 +33563,7 @@ int wma_suspend_target(WMA_HANDLE handle, int disable_target_intr)
vos_event_reset(&wma_handle->target_suspend);
if (wmi_unified_cmd_send(wma_handle->wmi_handle, wmibuf, len,
WMI_PDEV_SUSPEND_CMDID)) {
- adf_nbuf_free(wmibuf);
+ wmi_buf_free(wmibuf);
return -1;
}
@@ -34224,7 +34242,7 @@ void wma_send_regdomain_info(u_int32_t reg_dmn, u_int16_t regdmn2G,
WMI_PDEV_SET_REGDOMAIN_CMDID)) {
WMA_LOGP("%s: Failed to send pdev set regdomain command",
__func__);
- adf_nbuf_free(buf);
+ wmi_buf_free(buf);
}
if ((((reg_dmn & ~COUNTRY_ERD_FLAG) == CTRY_JAPAN) ||
@@ -34454,7 +34472,7 @@ static int wma_set_tdls_offchan_mode(WMA_HANDLE handle,
if (wmi_unified_cmd_send(wma_handle->wmi_handle, wmi_buf, len,
WMI_TDLS_SET_OFFCHAN_MODE_CMDID)) {
WMA_LOGP("%s: failed to send tdls off chan command", __func__);
- adf_nbuf_free(wmi_buf);
+ wmi_buf_free(wmi_buf);
ret = -EIO;
}
@@ -34560,7 +34578,7 @@ static int wma_update_fw_tdls_state(WMA_HANDLE handle, void *pwmaTdlsparams)
if (wmi_unified_cmd_send(wma_handle->wmi_handle, wmi_buf, len,
WMI_TDLS_SET_STATE_CMDID)) {
WMA_LOGP("%s: failed to send tdls set state command", __func__);
- adf_nbuf_free(wmi_buf);
+ wmi_buf_free(wmi_buf);
ret = -EIO;
goto end_fw_tdls_state;
}
@@ -34751,7 +34769,7 @@ static int wma_update_tdls_peer_state(WMA_HANDLE handle,
WMI_TDLS_PEER_UPDATE_CMDID)) {
WMA_LOGE("%s: failed to send tdls peer update state command",
__func__);
- adf_nbuf_free(wmi_buf);
+ wmi_buf_free(wmi_buf);
ret = -EIO;
goto end_tdls_peer_state;
}
@@ -35561,7 +35579,7 @@ void wma_process_roam_synch_complete(WMA_HANDLE handle,
if (wmi_unified_cmd_send(wma_handle->wmi_handle, wmi_buf, len,
WMI_ROAM_SYNCH_COMPLETE)) {
WMA_LOGP("%s: failed to send roam synch confirmation", __func__);
- adf_nbuf_free(wmi_buf);
+ wmi_buf_free(wmi_buf);
return;
}
return;
diff --git a/CORE/SERVICES/WMA/wma.h b/CORE/SERVICES/WMA/wma.h
index 3c10af968e35..d1075e73feb0 100644
--- a/CORE/SERVICES/WMA/wma.h
+++ b/CORE/SERVICES/WMA/wma.h
@@ -575,6 +575,8 @@ struct wma_txrx_node {
uint8_t wps_state;
uint8_t nss_2g;
uint8_t nss_5g;
+ uint32_t tx_aggregation_size;
+ uint32_t rx_aggregation_size;
uint8_t wep_default_key_idx;
bool is_vdev_valid;
diff --git a/CORE/SERVICES/WMI/wmi_unified.c b/CORE/SERVICES/WMI/wmi_unified.c
index c561ee9ce617..fb93e7f04fd4 100644
--- a/CORE/SERVICES/WMI/wmi_unified.c
+++ b/CORE/SERVICES/WMI/wmi_unified.c
@@ -710,6 +710,73 @@ inline bool wmi_get_runtime_pm_inprogress(wmi_unified_t wmi_handle)
}
#endif
+/**
+ * wmi_set_htc_tx_tag() - set HTC TX tag for WMI commands
+ * @wmi_handle: WMI handle
+ * @buf: WMI buffer
+ * @cmd_id: WMI command Id
+ *
+ * Return htc_tx_tag
+ */
+static uint16_t wmi_set_htc_tx_tag(wmi_unified_t wmi_handle,
+ wmi_buf_t buf,
+ WMI_CMD_ID cmd_id)
+{
+ uint16_t htc_tx_tag = 0;
+ wmi_vdev_set_param_cmd_fixed_param *set_cmd;
+ wmi_sta_powersave_param_cmd_fixed_param *ps_cmd;
+
+ switch(cmd_id) {
+ case WMI_WOW_ENABLE_CMDID:
+ case WMI_PDEV_SUSPEND_CMDID:
+ case WMI_WOW_ENABLE_DISABLE_WAKE_EVENT_CMDID:
+ case WMI_WOW_ADD_WAKE_PATTERN_CMDID:
+ case WMI_WOW_HOSTWAKEUP_FROM_SLEEP_CMDID:
+ case WMI_PDEV_RESUME_CMDID:
+ case WMI_WOW_DEL_WAKE_PATTERN_CMDID:
+#ifdef FEATURE_WLAN_D0WOW
+ case WMI_D0_WOW_ENABLE_DISABLE_CMDID:
+#endif
+ htc_tx_tag = HTC_TX_PACKET_TAG_AUTO_PM;
+ case WMI_FORCE_FW_HANG_CMDID:
+ if (wmi_handle->tag_crash_inject) {
+ htc_tx_tag = HTC_TX_PACKET_TAG_AUTO_PM;
+ wmi_handle->tag_crash_inject = false;
+ }
+ default:
+ break;
+ }
+
+ if(cmd_id == WMI_VDEV_SET_PARAM_CMDID)
+ {
+ set_cmd = (wmi_vdev_set_param_cmd_fixed_param *)
+ wmi_buf_data(buf);
+
+ switch(set_cmd->param_id) {
+ case WMI_VDEV_PARAM_LISTEN_INTERVAL:
+ case WMI_VDEV_PARAM_DTIM_POLICY:
+ htc_tx_tag = HTC_TX_PACKET_TAG_AUTO_PM;
+ default:
+ break;
+ }
+ }
+
+ if(cmd_id == WMI_STA_POWERSAVE_PARAM_CMDID)
+ {
+ ps_cmd = (wmi_sta_powersave_param_cmd_fixed_param *)
+ wmi_buf_data(buf);
+
+ switch(ps_cmd->param) {
+ case WMI_STA_PS_ENABLE_QPOWER:
+ htc_tx_tag = HTC_TX_PACKET_TAG_AUTO_PM;
+ default:
+ break;
+ }
+ }
+
+ return htc_tx_tag;
+}
+
/* WMI command API */
int wmi_unified_cmd_send(wmi_unified_t wmi_handle, wmi_buf_t buf, int len,
WMI_CMD_ID cmd_id)
@@ -740,26 +807,8 @@ int wmi_unified_cmd_send(wmi_unified_t wmi_handle, wmi_buf_t buf, int len,
goto dont_tag;
skip_suspend_check:
- switch(cmd_id) {
- case WMI_WOW_ENABLE_CMDID:
- case WMI_PDEV_SUSPEND_CMDID:
- case WMI_WOW_ENABLE_DISABLE_WAKE_EVENT_CMDID:
- case WMI_WOW_ADD_WAKE_PATTERN_CMDID:
- case WMI_WOW_HOSTWAKEUP_FROM_SLEEP_CMDID:
- case WMI_PDEV_RESUME_CMDID:
- case WMI_WOW_DEL_WAKE_PATTERN_CMDID:
-#ifdef FEATURE_WLAN_D0WOW
- case WMI_D0_WOW_ENABLE_DISABLE_CMDID:
-#endif
- htc_tag = HTC_TX_PACKET_TAG_AUTO_PM;
- case WMI_FORCE_FW_HANG_CMDID:
- if (wmi_handle->tag_crash_inject) {
- htc_tag = HTC_TX_PACKET_TAG_AUTO_PM;
- wmi_handle->tag_crash_inject = false;
- }
- default:
- break;
- }
+ htc_tag = (A_UINT16) wmi_set_htc_tx_tag(wmi_handle,
+ buf, cmd_id);
dont_tag:
/* Do sanity check on the TLV parameter structure */
diff --git a/CORE/SME/src/csr/csrApiRoam.c b/CORE/SME/src/csr/csrApiRoam.c
index 3cfdd834d532..885342544fec 100644
--- a/CORE/SME/src/csr/csrApiRoam.c
+++ b/CORE/SME/src/csr/csrApiRoam.c
@@ -2255,6 +2255,10 @@ eHalStatus csrGetConfigParam(tpAniSirGlobal pMac, tCsrConfigParam *pParam)
pParam->edca_vi_aifs = pMac->roam.configParam.edca_vi_aifs;
pParam->edca_bk_aifs = pMac->roam.configParam.edca_bk_aifs;
pParam->edca_be_aifs = pMac->roam.configParam.edca_be_aifs;
+ pParam->tx_aggregation_size =
+ pMac->roam.configParam.tx_aggregation_size;
+ pParam->rx_aggregation_size =
+ pMac->roam.configParam.rx_aggregation_size;
status = eHAL_STATUS_SUCCESS;
}
return (status);
diff --git a/CORE/SME/src/csr/csrApiScan.c b/CORE/SME/src/csr/csrApiScan.c
index eb4d79af6db8..47a55a4c81ed 100644
--- a/CORE/SME/src/csr/csrApiScan.c
+++ b/CORE/SME/src/csr/csrApiScan.c
@@ -4710,6 +4710,11 @@ tANI_BOOLEAN csrScanComplete( tpAniSirGlobal pMac, tSirSmeScanRsp *pScanRsp )
}
csrSaveScanResults(pMac, pCommand->u.scanCmd.reason, sessionId);
+ /* filter scan result based on valid channel list number */
+ if (pMac->scan.fcc_constraint) {
+ smsLog(pMac, LOG1, FL("Clear BSS from invalid channels"));
+ csrScanFilterResults(pMac);
+ }
#ifdef FEATURE_WLAN_DIAG_SUPPORT_CSR
{
vos_log_scan_pkt_type *pScanLog = NULL;
diff --git a/CORE/SVC/inc/wlan_nlink_srv.h b/CORE/SVC/inc/wlan_nlink_srv.h
index b84eb6779404..df7214421be8 100644
--- a/CORE/SVC/inc/wlan_nlink_srv.h
+++ b/CORE/SVC/inc/wlan_nlink_srv.h
@@ -59,11 +59,7 @@ typedef int (* nl_srv_msg_callback)(struct sk_buff * skb);
#ifndef MULTI_IF_NAME
int nl_srv_init(void);
-#ifdef WLAN_KD_READY_NOTIFIER
-void nl_srv_exit(int dst_pid);
-#else
void nl_srv_exit(void);
-#endif /* WLAN_KD_READY_NOTIFIER */
int nl_srv_register(tWlanNlModTypes msg_type, nl_srv_msg_callback msg_handler);
int nl_srv_unregister(tWlanNlModTypes msg_type, nl_srv_msg_callback msg_handler);
int nl_srv_ucast(struct sk_buff * skb, int dst_pid, int flag);
@@ -72,14 +68,7 @@ int nl_srv_is_initialized(void);
#else
static inline int nl_srv_init(void) { return 0; }
-
-#ifdef WLAN_KD_READY_NOTIFIER
-static inline void nl_srv_exit(int dst_pid)
-#else
-void nl_srv_exit(void)
-#endif /* WLAN_KD_READY_NOTIFIER */
-{
-}
+static inline void nl_srv_exit(void) {}
static inline int nl_srv_register(tWlanNlModTypes msg_type,
nl_srv_msg_callback msg_handler)
diff --git a/CORE/SVC/src/nlink/wlan_nlink_srv.c b/CORE/SVC/src/nlink/wlan_nlink_srv.c
index 8512bf0f5305..275e70715d1b 100644
--- a/CORE/SVC/src/nlink/wlan_nlink_srv.c
+++ b/CORE/SVC/src/nlink/wlan_nlink_srv.c
@@ -101,11 +101,7 @@ int nl_srv_init(void)
* Deinit the netlink service.
* Netlink service is unusable after this.
*/
-#ifdef WLAN_KD_READY_NOTIFIER
-void nl_srv_exit(int dst_pid)
-#else
void nl_srv_exit(void)
-#endif /* WLAN_KD_READY_NOTIFIER */
{
netlink_kernel_release(nl_srv_sock);
nl_srv_sock = NULL;
diff --git a/CORE/VOSS/inc/vos_nvitem.h b/CORE/VOSS/inc/vos_nvitem.h
index 96ddcca934cc..4709482918cf 100644
--- a/CORE/VOSS/inc/vos_nvitem.h
+++ b/CORE/VOSS/inc/vos_nvitem.h
@@ -268,4 +268,5 @@ VOS_STATUS vos_init_wiphy_from_eeprom(void);
bool vos_is_dsrc_channel(uint16_t);
uint32_t vos_nv_get_channel_flags(uint32_t rf_channel);
int vos_update_band(uint8_t band);
+void vos_reset_global_reg_params(void);
#endif // __VOS_NVITEM_H
diff --git a/CORE/VOSS/src/vos_nvitem.c b/CORE/VOSS/src/vos_nvitem.c
index 7d09491c5600..493b1397eb1e 100644
--- a/CORE/VOSS/src/vos_nvitem.c
+++ b/CORE/VOSS/src/vos_nvitem.c
@@ -209,13 +209,6 @@ chan_to_ht_40_index_map chan_to_ht_40_index[NUM_20MHZ_RF_CHANNELS] =
{RF_CHAN_BOND_10, INVALID_RF_CHANNEL}, //RF_CHAN_12,
{RF_CHAN_BOND_11, INVALID_RF_CHANNEL}, //RF_CHAN_13,
{INVALID_RF_CHANNEL, INVALID_RF_CHANNEL},//RF_CHAN_14,
- {INVALID_RF_CHANNEL, RF_CHAN_BOND_242}, //RF_CHAN_240,
- {RF_CHAN_BOND_242, RF_CHAN_BOND_246}, //RF_CHAN_244,
- {RF_CHAN_BOND_246, RF_CHAN_BOND_250}, //RF_CHAN_248,
- {RF_CHAN_BOND_250, INVALID_RF_CHANNEL}, //RF_CHAN_252,
- {INVALID_RF_CHANNEL, RF_CHAN_BOND_210}, //RF_CHAN_208,
- {RF_CHAN_BOND_210, RF_CHAN_BOND_214}, //RF_CHAN_212,
- {RF_CHAN_BOND_214, INVALID_RF_CHANNEL}, //RF_CHAN_216,
{INVALID_RF_CHANNEL, RF_CHAN_BOND_38}, //RF_CHAN_36,
{RF_CHAN_BOND_38, RF_CHAN_BOND_42}, //RF_CHAN_40,
{RF_CHAN_BOND_42, RF_CHAN_BOND_46}, //RF_CHAN_44,
@@ -421,13 +414,6 @@ const tRfChannelProps rfChannels[NUM_RF_CHANNELS] =
{ 2467, 12 , RF_SUBBAND_2_4_GHZ}, //RF_CHAN_12,
{ 2472, 13 , RF_SUBBAND_2_4_GHZ}, //RF_CHAN_13,
{ 2484, 14 , RF_SUBBAND_2_4_GHZ}, //RF_CHAN_14,
- { 4920, 240, RF_SUBBAND_4_9_GHZ}, //RF_CHAN_240,
- { 4940, 244, RF_SUBBAND_4_9_GHZ}, //RF_CHAN_244,
- { 4960, 248, RF_SUBBAND_4_9_GHZ}, //RF_CHAN_248,
- { 4980, 252, RF_SUBBAND_4_9_GHZ}, //RF_CHAN_252,
- { 5040, 208, RF_SUBBAND_4_9_GHZ}, //RF_CHAN_208,
- { 5060, 212, RF_SUBBAND_4_9_GHZ}, //RF_CHAN_212,
- { 5080, 216, RF_SUBBAND_4_9_GHZ}, //RF_CHAN_216,
{ 5180, 36 , RF_SUBBAND_5_LOW_GHZ}, //RF_CHAN_36,
{ 5200, 40 , RF_SUBBAND_5_LOW_GHZ}, //RF_CHAN_40,
{ 5220, 44 , RF_SUBBAND_5_LOW_GHZ}, //RF_CHAN_44,
@@ -482,11 +468,6 @@ const tRfChannelProps rfChannels[NUM_RF_CHANNELS] =
{ 2452, 9 , NUM_RF_SUBBANDS}, //RF_CHAN_BOND_9,
{ 2457, 10 , NUM_RF_SUBBANDS}, //RF_CHAN_BOND_10,
{ 2462, 11 , NUM_RF_SUBBANDS}, //RF_CHAN_BOND_11,
- { 4930, 242, NUM_RF_SUBBANDS}, //RF_CHAN_BOND_242,
- { 4950, 246, NUM_RF_SUBBANDS}, //RF_CHAN_BOND_246,
- { 4970, 250, NUM_RF_SUBBANDS}, //RF_CHAN_BOND_250,
- { 5050, 210, NUM_RF_SUBBANDS}, //RF_CHAN_BOND_210,
- { 5070, 214, NUM_RF_SUBBANDS}, //RF_CHAN_BOND_214,
{ 5190, 38 , NUM_RF_SUBBANDS}, //RF_CHAN_BOND_38,
{ 5210, 42 , NUM_RF_SUBBANDS}, //RF_CHAN_BOND_42,
{ 5230, 46 , NUM_RF_SUBBANDS}, //RF_CHAN_BOND_46,
@@ -593,6 +574,19 @@ struct ieee80211_regdomain *vos_world_regdomain(struct regulatory *reg)
}
}
+/**
+ * vos_reset_global_reg_params - Reset global static reg params
+ *
+ * This function is helpful in static driver to reset
+ * the global params.
+ *
+ * Return: void
+ */
+void vos_reset_global_reg_params()
+{
+ init_by_driver = false;
+ init_by_reg_core = false;
+}
static int regd_init_wiphy(hdd_context_t *pHddCtx, struct regulatory *reg,
struct wiphy *wiphy)
diff --git a/CORE/WDA/inc/legacy/halMsgApi.h b/CORE/WDA/inc/legacy/halMsgApi.h
index b48b35a5bdaf..3ead091673b0 100644
--- a/CORE/WDA/inc/legacy/halMsgApi.h
+++ b/CORE/WDA/inc/legacy/halMsgApi.h
@@ -542,6 +542,8 @@ typedef struct
uint8_t wps_state;
uint8_t nss_2g;
uint8_t nss_5g;
+ uint32_t tx_aggregation_size;
+ uint32_t rx_aggregation_size;
} tAddBssParams, * tpAddBssParams;
typedef struct
diff --git a/wcnss/inc/wlan_nv.h b/wcnss/inc/wlan_nv.h
index 7c8e172c0ea8..01d0460920f0 100644
--- a/wcnss/inc/wlan_nv.h
+++ b/wcnss/inc/wlan_nv.h
@@ -244,15 +244,6 @@ typedef enum
RF_CHAN_13,
RF_CHAN_14,
- //4.9GHz Band
- RF_CHAN_240,
- RF_CHAN_244,
- RF_CHAN_248,
- RF_CHAN_252,
- RF_CHAN_208,
- RF_CHAN_212,
- RF_CHAN_216,
-
//5GHz Low & Mid U-NII Band
RF_CHAN_36,
RF_CHAN_40,
@@ -313,11 +304,6 @@ typedef enum
RF_CHAN_BOND_9,
RF_CHAN_BOND_10,
RF_CHAN_BOND_11,
- RF_CHAN_BOND_242, //4.9GHz Band
- RF_CHAN_BOND_246,
- RF_CHAN_BOND_250,
- RF_CHAN_BOND_210,
- RF_CHAN_BOND_214,
RF_CHAN_BOND_38, //5GHz Low & Mid U-NII Band
RF_CHAN_BOND_42,
RF_CHAN_BOND_46,
@@ -348,7 +334,7 @@ typedef enum
MIN_2_4GHZ_CHANNEL = RF_CHAN_1,
MAX_2_4GHZ_CHANNEL = RF_CHAN_14,
- MIN_5GHZ_CHANNEL = RF_CHAN_240,
+ MIN_5GHZ_CHANNEL = RF_CHAN_36,
MAX_5GHZ_CHANNEL = RF_CHAN_184,
NUM_5GHZ_CHANNELS = (MAX_5GHZ_CHANNEL - MIN_5GHZ_CHANNEL + 1),
@@ -363,7 +349,7 @@ typedef enum
MIN_CB_2_4GHZ_CHANNEL = RF_CHAN_BOND_3,
MAX_CB_2_4GHZ_CHANNEL = RF_CHAN_BOND_11,
- MIN_CB_5GHZ_CHANNEL = RF_CHAN_BOND_242,
+ MIN_CB_5GHZ_CHANNEL = RF_CHAN_BOND_38,
MAX_CB_5GHZ_CHANNEL = RF_CHAN_BOND_163,
NUM_TPC_2_4GHZ_CHANNELS = 14,