summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2015-02-03 15:24:18 -0800
committerGerrit - the friendly Code Review server <code-review@localhost>2015-02-03 15:24:18 -0800
commitdb6e3dc9356fc0fc205079b42e2043cc305d784b (patch)
treeb6712e9d5962e20458bb4bc38ddbfaa2f316ab2e
parent75eee8a91342569e0b26daa85929f6bb5750108f (diff)
parent03e559ab7d6ea4bd73e2952b2270336ed359c645 (diff)
Merge "Release 4.0.10.26 QCACLD WLAN Driver"
-rw-r--r--CORE/EPPING/src/epping_txrx.c5
-rw-r--r--CORE/HDD/src/wlan_hdd_assoc.c10
-rw-r--r--CORE/HDD/src/wlan_hdd_cfg80211.c8
-rw-r--r--CORE/HDD/src/wlan_hdd_dev_pwr.c3
-rw-r--r--CORE/HDD/src/wlan_hdd_early_suspend.c6
-rw-r--r--CORE/HDD/src/wlan_hdd_hostapd.c2
-rw-r--r--CORE/HDD/src/wlan_hdd_ipa.c6
-rwxr-xr-xCORE/HDD/src/wlan_hdd_main.c11
-rw-r--r--CORE/HDD/src/wlan_hdd_p2p.c1
-rw-r--r--CORE/HDD/src/wlan_hdd_softap_tx_rx.c8
-rw-r--r--CORE/HDD/src/wlan_hdd_tx_rx.c7
-rw-r--r--CORE/HDD/src/wlan_hdd_wext.c3
-rw-r--r--CORE/MAC/inc/qwlan_version.h4
-rw-r--r--CORE/MAC/src/cfg/cfgUtil/dot11f.frms2
-rw-r--r--CORE/MAC/src/include/dot11f.h9
-rw-r--r--CORE/MAC/src/include/parserApi.h8
-rw-r--r--CORE/MAC/src/pe/sch/schBeaconGen.c2
-rw-r--r--CORE/SAP/inc/sapApi.h6
-rw-r--r--CORE/SAP/src/sapApiLinkCntl.c28
-rw-r--r--CORE/SAP/src/sapChSelect.c23
-rw-r--r--CORE/SAP/src/sapFsm.c13
-rw-r--r--CORE/SAP/src/sapInternal.h10
-rw-r--r--CORE/SAP/src/sapModule.c8
-rw-r--r--CORE/SERVICES/WMA/wma.c9
-rw-r--r--CORE/SME/src/csr/csrApiRoam.c5
-rw-r--r--CORE/SME/src/sme_common/sme_Api.c7
-rw-r--r--CORE/SYS/legacy/src/utils/src/dot11f.c45
-rw-r--r--CORE/SYS/legacy/src/utils/src/parserApi.c67
-rw-r--r--CORE/VOSS/src/vos_sched.c9
29 files changed, 181 insertions, 144 deletions
diff --git a/CORE/EPPING/src/epping_txrx.c b/CORE/EPPING/src/epping_txrx.c
index 678d58e0cfae..cf8a31b5463a 100644
--- a/CORE/EPPING/src/epping_txrx.c
+++ b/CORE/EPPING/src/epping_txrx.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2014 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2014-2015 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@@ -244,6 +244,7 @@ static int epping_set_mac_address(struct net_device *dev, void *addr)
static void epping_stop_adapter(epping_adapter_t *pAdapter)
{
if (pAdapter && pAdapter->started) {
+ EPPING_LOG(LOG1, FL("Disabling queues"));
netif_tx_disable(pAdapter->dev);
netif_carrier_off(pAdapter->dev);
pAdapter->started = false;
@@ -265,6 +266,7 @@ static int epping_start_adapter(epping_adapter_t *pAdapter)
cnss_request_bus_bandwidth(CNSS_BUS_WIDTH_HIGH);
#endif
netif_carrier_on(pAdapter->dev);
+ EPPING_LOG(LOG1, FL("Enabling queues"));
netif_tx_start_all_queues(pAdapter->dev);
pAdapter->started = true;
} else {
@@ -380,6 +382,7 @@ epping_adapter_t *epping_add_adapter(epping_context_t *pEpping_ctx,
dev->watchdog_timeo = 5 * HZ; /* XXX */
dev->tx_queue_len = ATH_TXBUF-1; /* 1 for mgmt frame */
if (epping_register_adapter(pAdapter) == 0) {
+ EPPING_LOG(LOG1, FL("Disabling queues"));
netif_tx_disable(dev);
netif_carrier_off(dev);
return pAdapter;
diff --git a/CORE/HDD/src/wlan_hdd_assoc.c b/CORE/HDD/src/wlan_hdd_assoc.c
index 5eab6e044185..fd54e47dbeff 100644
--- a/CORE/HDD/src/wlan_hdd_assoc.c
+++ b/CORE/HDD/src/wlan_hdd_assoc.c
@@ -877,6 +877,7 @@ static eHalStatus hdd_DisConnectHandler( hdd_adapter_t *pAdapter, tCsrRoamInfo *
}
// notify apps that we can't pass traffic anymore
+ hddLog(LOG1, FL("Disabling queues"));
netif_tx_disable(dev);
netif_carrier_off(dev);
pAdapter->hdd_stats.hddTxRxStats.netq_disable_cnt++;
@@ -1730,6 +1731,7 @@ static eHalStatus hdd_AssociationCompletionHandler( hdd_adapter_t *pAdapter, tCs
/* Start the Queue - Start tx queues before hdd_roamRegisterSTA,
since hdd_roamRegisterSTA will flush any cached data frames
immediately */
+ hddLog(LOG1, FL("Enabling queues"));
netif_tx_wake_all_queues(dev);
pAdapter->hdd_stats.hddTxRxStats.netq_enable_cnt++;
pAdapter->hdd_stats.hddTxRxStats.netq_state_off = FALSE;
@@ -1795,6 +1797,7 @@ static eHalStatus hdd_AssociationCompletionHandler( hdd_adapter_t *pAdapter, tCs
hddLog(VOS_TRACE_LEVEL_DEBUG, "LFR3:netif_tx_wake_all_queues");
}
#endif
+ hddLog(LOG1, FL("Enabling queues"));
netif_tx_wake_all_queues(dev);
pAdapter->hdd_stats.hddTxRxStats.netq_enable_cnt++;
pAdapter->hdd_stats.hddTxRxStats.netq_state_off = FALSE;
@@ -1949,6 +1952,7 @@ static eHalStatus hdd_AssociationCompletionHandler( hdd_adapter_t *pAdapter, tCs
hdd_clearRoamProfileIe( pAdapter );
hdd_wmm_init( pAdapter );
+ hddLog(LOG1, FL("Disabling queues"));
netif_tx_disable(dev);
netif_carrier_off(dev);
pAdapter->hdd_stats.hddTxRxStats.netq_disable_cnt++;
@@ -2101,7 +2105,6 @@ static void hdd_RoamIbssIndicationHandler( hdd_adapter_t *pAdapter,
__func__, pAdapter->dev->name);
return;
}
-
cfg80211_ibss_joined(pAdapter->dev, bss->bssid, GFP_KERNEL);
cfg80211_put_bss(
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,9,0)) || defined(WITH_BACKPORTS)
@@ -2524,6 +2527,7 @@ static eHalStatus roamRoamConnectStatusUpdateHandler( hdd_adapter_t *pAdapter, t
}
}
netif_carrier_on(pAdapter->dev);
+ hddLog(LOG1, FL("Enabling queues"));
netif_tx_start_all_queues(pAdapter->dev);
break;
}
@@ -2565,6 +2569,7 @@ static eHalStatus roamRoamConnectStatusUpdateHandler( hdd_adapter_t *pAdapter, t
VOS_TRACE( VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_MED,
"Received eCSR_ROAM_RESULT_IBSS_INACTIVE from SME");
// Stop only when we are inactive
+ hddLog(LOG1, FL("Disabling queues"));
netif_tx_disable(pAdapter->dev);
netif_carrier_off(pAdapter->dev);
pAdapter->hdd_stats.hddTxRxStats.netq_disable_cnt++;
@@ -3529,6 +3534,7 @@ hdd_smeRoamCallback(void *pContext, tCsrRoamInfo *pRoamInfo, tANI_U32 roamId,
// after reassoc.
{
struct net_device *dev = pAdapter->dev;
+ hddLog(LOG1, FL("Disabling queues"));
netif_tx_disable(dev);
pAdapter->hdd_stats.hddTxRxStats.netq_disable_cnt++;
pAdapter->hdd_stats.hddTxRxStats.netq_state_off = TRUE;
@@ -3567,6 +3573,7 @@ hdd_smeRoamCallback(void *pContext, tCsrRoamInfo *pRoamInfo, tANI_U32 roamId,
struct net_device *dev = pAdapter->dev;
hdd_station_ctx_t *pHddStaCtx = WLAN_HDD_GET_STATION_CTX_PTR(pAdapter);
// notify apps that we can't pass traffic anymore
+ hddLog(LOG1, FL("Disabling queues"));
netif_tx_disable(dev);
pAdapter->hdd_stats.hddTxRxStats.netq_disable_cnt++;
pAdapter->hdd_stats.hddTxRxStats.netq_state_off = TRUE;
@@ -3596,6 +3603,7 @@ hdd_smeRoamCallback(void *pContext, tCsrRoamInfo *pRoamInfo, tANI_U32 roamId,
if(roamResult == eCSR_ROAM_RESULT_LOSTLINK) {
VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
"Roaming started due to connection lost");
+ hddLog(LOG1, FL("Disabling queues"));
netif_tx_disable(pAdapter->dev);
netif_carrier_off(pAdapter->dev);
pAdapter->hdd_stats.hddTxRxStats.netq_disable_cnt++;
diff --git a/CORE/HDD/src/wlan_hdd_cfg80211.c b/CORE/HDD/src/wlan_hdd_cfg80211.c
index f1d1d2186de9..7889a413834e 100644
--- a/CORE/HDD/src/wlan_hdd_cfg80211.c
+++ b/CORE/HDD/src/wlan_hdd_cfg80211.c
@@ -6592,6 +6592,8 @@ static int wlan_hdd_cfg80211_set_channel( struct wiphy *wiphy, struct net_device
smeConfig.csrConfig.channelBondingMode24GHz = 0;
else
smeConfig.csrConfig.channelBondingMode5GHz = 0;
+
+ (WLAN_HDD_GET_AP_CTX_PTR(pAdapter))->secondaryChannel = 0;
break;
case NL80211_CHAN_HT40MINUS:
@@ -6604,6 +6606,9 @@ static int wlan_hdd_cfg80211_set_channel( struct wiphy *wiphy, struct net_device
else
smeConfig.csrConfig.channelBondingMode5GHz =
eCSR_INI_DOUBLE_CHANNEL_HIGH_PRIMARY;
+
+ (WLAN_HDD_GET_AP_CTX_PTR(pAdapter))->secondaryChannel =
+ channel - 4;
break;
case NL80211_CHAN_HT40PLUS:
sme_SetPhyCBMode24G(pHddCtx->hHal,
@@ -6616,6 +6621,8 @@ static int wlan_hdd_cfg80211_set_channel( struct wiphy *wiphy, struct net_device
smeConfig.csrConfig.channelBondingMode5GHz =
eCSR_INI_DOUBLE_CHANNEL_LOW_PRIMARY;
+ (WLAN_HDD_GET_AP_CTX_PTR(pAdapter))->secondaryChannel =
+ channel + 4;
break;
default:
hddLog(VOS_TRACE_LEVEL_ERROR,
@@ -11890,6 +11897,7 @@ int wlan_hdd_disconnect( hdd_adapter_t *pAdapter, u16 reason )
}
/*stop tx queues*/
+ hddLog(LOG1, FL("Disabling queues"));
netif_tx_disable(pAdapter->dev);
netif_carrier_off(pAdapter->dev);
pHddCtx->isAmpAllowed = VOS_TRUE;
diff --git a/CORE/HDD/src/wlan_hdd_dev_pwr.c b/CORE/HDD/src/wlan_hdd_dev_pwr.c
index 8d9c7ef376b8..cfd4d1c91947 100644
--- a/CORE/HDD/src/wlan_hdd_dev_pwr.c
+++ b/CORE/HDD/src/wlan_hdd_dev_pwr.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012-2014 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012-2015 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@@ -133,6 +133,7 @@ void hddDevTmTxBlockTimeoutHandler(void *usrData)
/* Resume TX flow */
+ hddLog(LOG1, FL("Enabling queues"));
netif_tx_wake_all_queues(staAdapater->dev);
pHddCtx->tmInfo.qBlocked = VOS_FALSE;
mutex_unlock(&pHddCtx->tmInfo.tmOperationLock);
diff --git a/CORE/HDD/src/wlan_hdd_early_suspend.c b/CORE/HDD/src/wlan_hdd_early_suspend.c
index c0702974d3db..8be74e047da8 100644
--- a/CORE/HDD/src/wlan_hdd_early_suspend.c
+++ b/CORE/HDD/src/wlan_hdd_early_suspend.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012-2014 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012-2015 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@@ -314,6 +314,7 @@ VOS_STATUS hdd_enter_deep_sleep(hdd_context_t *pHddCtx, hdd_adapter_t *pAdapter)
unsigned long rc;
//Stop the Interface TX queue.
+ hddLog(LOG1, FL("Disabling queues"));
netif_tx_disable(pAdapter->dev);
netif_carrier_off(pAdapter->dev);
@@ -1407,6 +1408,7 @@ void hdd_suspend_wlan(void (*callback)(void *callbackContext, boolean suspended)
if (pHddCtx->cfg_ini->nEnableSuspend == WLAN_MAP_SUSPEND_TO_STANDBY)
{
//stop the interface before putting the chip to standby
+ hddLog(LOG1, FL("Disabling queues"));
netif_tx_disable(pAdapter->dev);
netif_carrier_off(pAdapter->dev);
}
@@ -1420,6 +1422,7 @@ void hdd_suspend_wlan(void (*callback)(void *callbackContext, boolean suspended)
send_suspend_ind:
//stop all TX queues before suspend
+ hddLog(LOG1, FL("Disabling queues"));
netif_tx_disable(pAdapter->dev);
/* Keep this suspend indication at the end (before processing next adaptor)
@@ -1665,6 +1668,7 @@ void hdd_resume_wlan(void)
send_resume_ind:
//wake the tx queues
+ hddLog(LOG1, FL("Enabling queues"));
netif_tx_wake_all_queues(pAdapter->dev);
hdd_conf_resume_ind(pAdapter);
diff --git a/CORE/HDD/src/wlan_hdd_hostapd.c b/CORE/HDD/src/wlan_hdd_hostapd.c
index 0aa087f0c3dc..08af58d97564 100644
--- a/CORE/HDD/src/wlan_hdd_hostapd.c
+++ b/CORE/HDD/src/wlan_hdd_hostapd.c
@@ -267,6 +267,7 @@ static int hdd_hostapd_open (struct net_device *dev)
//Turn ON carrier state
netif_carrier_on(dev);
//Enable all Tx queues
+ hddLog(LOG1, FL("Enabling queues"));
netif_tx_start_all_queues(dev);
done:
EXIT();
@@ -288,6 +289,7 @@ int hdd_hostapd_stop (struct net_device *dev)
ENTER();
//Stop all tx queues
+ hddLog(LOG1, FL("Disabling queues"));
netif_tx_disable(dev);
//Turn OFF carrier state
diff --git a/CORE/HDD/src/wlan_hdd_ipa.c b/CORE/HDD/src/wlan_hdd_ipa.c
index f40d9c1877af..897c12b36bbc 100644
--- a/CORE/HDD/src/wlan_hdd_ipa.c
+++ b/CORE/HDD/src/wlan_hdd_ipa.c
@@ -3121,6 +3121,11 @@ int hdd_ipa_wlan_evt(hdd_adapter_t *adapter, uint8_t sta_id,
if (WARN_ON(is_zero_ether_addr(mac_addr)))
return -EINVAL;
+ if (!hdd_ipa || !hdd_ipa_is_enabled(hdd_ipa->hdd_ctx)) {
+ HDD_IPA_LOG(VOS_TRACE_LEVEL_ERROR, "IPA OFFLOAD NOT ENABLED");
+ return -EINVAL;
+ }
+
#ifdef IPA_UC_OFFLOAD
if (hdd_ipa_uc_is_enabled(hdd_ipa) &&
#ifdef IPA_UC_STA_OFFLOAD
@@ -3129,6 +3134,7 @@ int hdd_ipa_wlan_evt(hdd_adapter_t *adapter, uint8_t sta_id,
(WLAN_HDD_SOFTAP != adapter->device_mode)) {
return 0;
}
+
/* During IPA UC resource loading/unloading
* new event issued.
* Store event seperatly and handle later */
diff --git a/CORE/HDD/src/wlan_hdd_main.c b/CORE/HDD/src/wlan_hdd_main.c
index 4968254d8c36..6d8e610c2b02 100755
--- a/CORE/HDD/src/wlan_hdd_main.c
+++ b/CORE/HDD/src/wlan_hdd_main.c
@@ -8408,6 +8408,7 @@ int hdd_stop (struct net_device *dev)
/* Disable TX on the interface, after this hard_start_xmit() will not
* be called on that interface
*/
+ hddLog(LOG1, FL("Disabling queues"));
netif_tx_disable(pAdapter->dev);
/* Mark the interface status as "down" for outside world */
@@ -9369,6 +9370,11 @@ VOS_STATUS hdd_enable_bmps_imps(hdd_context_t *pHddCtx)
{
VOS_STATUS status = VOS_STATUS_SUCCESS;
+ if (0 != wlan_hdd_validate_context(pHddCtx)) {
+ hddLog(LOGE, FL("HDD context is not valid"));
+ return VOS_STATUS_E_PERM;
+ }
+
if(pHddCtx->cfg_ini->fIsBmpsEnabled)
{
sme_EnablePowerSave(pHddCtx->hHal, ePMC_BEACON_MODE_POWER_SAVE);
@@ -9643,6 +9649,7 @@ hdd_adapter_t* hdd_open_adapter( hdd_context_t *pHddCtx, tANI_U8 session_type,
#endif
#endif
//Stop the Interface TX queue.
+ hddLog(LOG1, FL("Disabling queues"));
netif_tx_disable(pAdapter->dev);
//netif_tx_disable(pWlanDev);
netif_carrier_off(pAdapter->dev);
@@ -9706,6 +9713,7 @@ hdd_adapter_t* hdd_open_adapter( hdd_context_t *pHddCtx, tANI_U8 session_type,
goto err_free_netdev;
}
+ hddLog(LOG1, FL("Disabling queues"));
netif_tx_disable(pAdapter->dev);
netif_carrier_off(pAdapter->dev);
@@ -9783,6 +9791,7 @@ hdd_adapter_t* hdd_open_adapter( hdd_context_t *pHddCtx, tANI_U8 session_type,
hdd_init_tx_rx( pAdapter );
//Stop the Interface TX queue.
+ hddLog(LOG1, FL("Disabling queues"));
netif_tx_disable(pAdapter->dev);
netif_carrier_off(pAdapter->dev);
}
@@ -10156,6 +10165,7 @@ VOS_STATUS hdd_stop_adapter( hdd_context_t *pHddCtx, hdd_adapter_t *pAdapter,
ENTER();
+ hddLog(LOG1, FL("Disabling queues"));
netif_tx_disable(pAdapter->dev);
netif_carrier_off(pAdapter->dev);
switch(pAdapter->device_mode)
@@ -10450,6 +10460,7 @@ VOS_STATUS hdd_reset_all_adapters( hdd_context_t *pHddCtx )
while ( NULL != pAdapterNode && VOS_STATUS_SUCCESS == status )
{
pAdapter = pAdapterNode->pAdapter;
+ hddLog(LOG1, FL("Disabling queues"));
netif_tx_disable(pAdapter->dev);
netif_carrier_off(pAdapter->dev);
diff --git a/CORE/HDD/src/wlan_hdd_p2p.c b/CORE/HDD/src/wlan_hdd_p2p.c
index 726843acfbab..e59e4612599e 100644
--- a/CORE/HDD/src/wlan_hdd_p2p.c
+++ b/CORE/HDD/src/wlan_hdd_p2p.c
@@ -1777,6 +1777,7 @@ static void hdd_wlan_tx_complete( hdd_adapter_t* pAdapter,
netif_rx_ni( skb );
/* Enable Queues which we have disabled earlier */
+ hddLog(LOG1, FL("Enabling queues"));
netif_tx_start_all_queues( pAdapter->dev );
}
diff --git a/CORE/HDD/src/wlan_hdd_softap_tx_rx.c b/CORE/HDD/src/wlan_hdd_softap_tx_rx.c
index f43f4e9b1973..0aa268446a50 100644
--- a/CORE/HDD/src/wlan_hdd_softap_tx_rx.c
+++ b/CORE/HDD/src/wlan_hdd_softap_tx_rx.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012-2014 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012-2015 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@@ -161,6 +161,7 @@ void hdd_softap_tx_resume_timer_expired_handler(void *adapter_context)
return;
}
+ hddLog(LOG1, FL("Enabling queues"));
netif_tx_wake_all_queues(pAdapter->dev);
return;
}
@@ -196,6 +197,7 @@ void hdd_softap_tx_resume_cb(void *adapter_context,
vos_timer_stop(&pAdapter->tx_flow_control_timer);
}
+ hddLog(LOG1, FL("Enabling queues"));
netif_tx_wake_all_queues(pAdapter->dev);
pAdapter->hdd_stats.hddTxRxStats.txflow_unpause_cnt++;
pAdapter->hdd_stats.hddTxRxStats.is_txflow_paused = FALSE;
@@ -204,6 +206,7 @@ void hdd_softap_tx_resume_cb(void *adapter_context,
#if defined(CONFIG_PER_VDEV_TX_DESC_POOL)
else if (VOS_FALSE == tx_resume) /* Pause TX */
{
+ hddLog(LOG1, FL("Disabling queues"));
netif_tx_stop_all_queues(pAdapter->dev);
if (VOS_TIMER_STATE_STOPPED ==
vos_timer_getCurrentState(&pAdapter->tx_flow_control_timer))
@@ -330,6 +333,7 @@ int hdd_softap_hard_start_xmit(struct sk_buff *skb, struct net_device *dev)
if ((pAdapter->tx_flow_timer_initialized == TRUE) &&
(VOS_TIMER_STATE_STOPPED ==
vos_timer_getCurrentState(&pAdapter->tx_flow_control_timer))) {
+ hddLog(LOG1, FL("Disabling queues"));
netif_tx_stop_all_queues(dev);
vos_timer_start(&pAdapter->tx_flow_control_timer,
WLAN_SAP_HDD_TX_FLOW_CONTROL_OS_Q_BLOCK_TIME);
@@ -1370,10 +1374,12 @@ VOS_STATUS hdd_softap_RegisterSTA( hdd_adapter_t *pAdapter,
"Turn on Monitor the carrier");
netif_carrier_on(pmonAdapter->dev);
//Enable Tx queue
+ hddLog(LOG1, FL("Enabling queues"));
netif_tx_start_all_queues(pmonAdapter->dev);
}
netif_carrier_on(pAdapter->dev);
//Enable Tx queue
+ hddLog(LOG1, FL("Enabling queues"));
netif_tx_start_all_queues(pAdapter->dev);
return( vosStatus );
diff --git a/CORE/HDD/src/wlan_hdd_tx_rx.c b/CORE/HDD/src/wlan_hdd_tx_rx.c
index fd142dc0e710..66559e6854e4 100644
--- a/CORE/HDD/src/wlan_hdd_tx_rx.c
+++ b/CORE/HDD/src/wlan_hdd_tx_rx.c
@@ -283,6 +283,7 @@ void hdd_flush_ibss_tx_queues( hdd_adapter_t *pAdapter, v_U8_t STAId)
size <= HDD_TX_QUEUE_LOW_WATER_MARK &&
netif_tx_queue_stopped(txq) )
{
+ hddLog(LOG1, FL("Enabling queue for queue %d"), i);
netif_tx_start_queue(txq);
pAdapter->isTxSuspended[i] = VOS_FALSE;
}
@@ -578,6 +579,7 @@ int hdd_mon_hard_start_xmit(struct sk_buff *skb, struct net_device *dev)
{
/* We want to process one packet at a time, so lets disable all TX queues
* and re-enable the queues once we get TX feedback for this packet */
+ hddLog(LOG1, FL("Disabling queues"));
netif_tx_stop_all_queues(pAdapter->dev);
pAdapter->isTxSuspended[ac] = VOS_TRUE;
spin_unlock(&pAdapter->wmm_tx_queue[ac].lock);
@@ -648,6 +650,7 @@ void hdd_tx_resume_timer_expired_handler(void *adapter_context)
return;
}
+ hddLog(LOG1, FL("Enabling queues"));
netif_tx_wake_all_queues(pAdapter->dev);
pAdapter->hdd_stats.hddTxRxStats.txflow_unpause_cnt++;
pAdapter->hdd_stats.hddTxRxStats.is_txflow_paused = FALSE;
@@ -691,6 +694,7 @@ void hdd_tx_resume_cb(void *adapter_context,
FL("flow control, tx queues un-pause avoided as we are in REASSOCIATING state"));
return;
}
+ hddLog(LOG1, FL("Enabling queues"));
netif_tx_wake_all_queues(pAdapter->dev);
pAdapter->hdd_stats.hddTxRxStats.txflow_unpause_cnt++;
pAdapter->hdd_stats.hddTxRxStats.is_txflow_paused = FALSE;
@@ -699,6 +703,7 @@ void hdd_tx_resume_cb(void *adapter_context,
#if defined(CONFIG_PER_VDEV_TX_DESC_POOL)
else if (VOS_FALSE == tx_resume) /* Pause TX */
{
+ hddLog(LOG1, FL("Disabling queues"));
netif_tx_stop_all_queues(pAdapter->dev);
if (VOS_TIMER_STATE_STOPPED ==
vos_timer_getCurrentState(&pAdapter->tx_flow_control_timer))
@@ -833,6 +838,7 @@ int hdd_hard_start_xmit(struct sk_buff *skb, struct net_device *dev)
pAdapter->sessionId,
pAdapter->tx_flow_low_watermark,
pAdapter->tx_flow_high_watermark_offset)) {
+ hddLog(LOG1, FL("Disabling queues"));
netif_tx_stop_all_queues(dev);
if ((pAdapter->tx_flow_timer_initialized == TRUE) &&
(VOS_TIMER_STATE_STOPPED ==
@@ -1597,6 +1603,7 @@ VOS_STATUS hdd_tx_fetch_packet_cbk( v_VOID_t *vosContext,
{
/* During TX open duration, TX frame count is larger than threshold
* Block TX during Sleep time */
+ hddLog(LOG1, FL("Disabling queues"));
netif_tx_stop_all_queues(pAdapter->dev);
pHddCtx->tmInfo.qBlocked = VOS_TRUE;
pHddCtx->tmInfo.lastblockTs = timestamp;
diff --git a/CORE/HDD/src/wlan_hdd_wext.c b/CORE/HDD/src/wlan_hdd_wext.c
index c3fade4bc340..7ae1967f0a27 100644
--- a/CORE/HDD/src/wlan_hdd_wext.c
+++ b/CORE/HDD/src/wlan_hdd_wext.c
@@ -3146,6 +3146,7 @@ static void hdd_ocb_set_sched_callback(sir_ocb_set_sched_response_t *resp)
resp->status = -1;
} else {
netif_carrier_on(adapter->dev);
+ hddLog(LOG1, FL("Enabling queues"));
netif_tx_start_all_queues(adapter->dev);
}
@@ -3237,6 +3238,7 @@ static int iw_set_dot11p_channel_sched(struct net_device *dev,
sched_req->resp = sched_resp;
sched_req->callback = hdd_ocb_set_sched_callback;
+ hddLog(LOG1, FL("Disabling queues"));
netif_tx_disable(adapter->dev);
netif_carrier_off(adapter->dev);
@@ -4560,6 +4562,7 @@ static int iw_set_mlme(struct net_device *dev,
/* Resetting authKeyMgmt */
(WLAN_HDD_GET_WEXT_STATE_PTR(pAdapter))->authKeyMgmt = 0;
+ hddLog(LOG1, FL("Disabling queues"));
netif_tx_disable(dev);
netif_carrier_off(dev);
pAdapter->hdd_stats.hddTxRxStats.netq_disable_cnt++;
diff --git a/CORE/MAC/inc/qwlan_version.h b/CORE/MAC/inc/qwlan_version.h
index 5005d2bfc326..1b6ab464e534 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 10
#define QWLAN_VERSION_EXTRA ""
-#define QWLAN_VERSION_BUILD 25
+#define QWLAN_VERSION_BUILD 26
-#define QWLAN_VERSIONSTR "4.0.10.25"
+#define QWLAN_VERSIONSTR "4.0.10.26"
#define AR6320_REV1_VERSION 0x5000000
diff --git a/CORE/MAC/src/cfg/cfgUtil/dot11f.frms b/CORE/MAC/src/cfg/cfgUtil/dot11f.frms
index 662886166296..8beb656c7fa5 100644
--- a/CORE/MAC/src/cfg/cfgUtil/dot11f.frms
+++ b/CORE/MAC/src/cfg/cfgUtil/dot11f.frms
@@ -2036,7 +2036,7 @@ IE Vendor3IE (EID_VENDOR_SPECIFIC) OUI (0x00, 0x16, 0x32)
IE QComVendorIE (EID_VENDOR_SPECIFIC) OUI (0x00, 0xA0, 0xC6)
{
type, 1;
- data[0..255];
+ channel, 1;
}
IE ESETrafStrmMet (EID_VENDOR_SPECIFIC) OUI (0x00, 0x40, 0x96, 0x07)
diff --git a/CORE/MAC/src/include/dot11f.h b/CORE/MAC/src/include/dot11f.h
index 56035917449c..39f40d85fa72 100644
--- a/CORE/MAC/src/include/dot11f.h
+++ b/CORE/MAC/src/include/dot11f.h
@@ -37,7 +37,7 @@
*
*
* This file was automatically generated by 'framesc'
- * Wed Jan 28 19:41:34 2015 from the following file(s):
+ * Fri Jan 30 12:18:28 2015 from the following file(s):
*
* dot11f.frms
*
@@ -4468,16 +4468,15 @@ tANI_U32 dot11fGetPackedIEQBSSLoad(tpAniSirGlobal, tDot11fIEQBSSLoad*, tANI_U32*
typedef struct sDot11fIEQComVendorIE {
tANI_U8 present;
tANI_U8 type;
- tANI_U8 num_data;
- tANI_U8 data[255];
+ tANI_U8 channel;
} tDot11fIEQComVendorIE;
#define DOT11F_EID_QCOMVENDORIE ( 221 )
// N.B. These #defines do *not* include the EID & length
-#define DOT11F_IE_QCOMVENDORIE_MIN_LEN ( 4 )
+#define DOT11F_IE_QCOMVENDORIE_MIN_LEN ( 5 )
-#define DOT11F_IE_QCOMVENDORIE_MAX_LEN ( 259 )
+#define DOT11F_IE_QCOMVENDORIE_MAX_LEN ( 5 )
#ifdef __cplusplus
extern "C" {
diff --git a/CORE/MAC/src/include/parserApi.h b/CORE/MAC/src/include/parserApi.h
index 09e799d9b93a..9f79fa5f5f46 100644
--- a/CORE/MAC/src/include/parserApi.h
+++ b/CORE/MAC/src/include/parserApi.h
@@ -67,7 +67,7 @@ struct sAvoidChannelIE {
uint8_t oui[3];
/* following must be 0x01 */
uint8_t type;
- uint8_t channels[1];
+ uint8_t channel;
};
#endif /* FEATURE_AP_MCC_CH_AVOIDANCE */
@@ -599,9 +599,9 @@ PopulateDot11fChanSwitchWrapper(tpAniSirGlobal pMac,
#ifdef FEATURE_AP_MCC_CH_AVOIDANCE
/* Populate a tDot11fIEQComVendorIE */
void
-populate_dot11f_avoid_channels_ie(tpAniSirGlobal mac_ctx,
- tDot11fIEQComVendorIE *dot11f,
- tpPESession session_entry);
+populate_dot11f_avoid_channel_ie(tpAniSirGlobal mac_ctx,
+ tDot11fIEQComVendorIE *dot11f,
+ tpPESession session_entry);
#endif /* FEATURE_AP_MCC_CH_AVOIDANCE */
/// Populate a tDot11fIECountry
diff --git a/CORE/MAC/src/pe/sch/schBeaconGen.c b/CORE/MAC/src/pe/sch/schBeaconGen.c
index 5bea07ed1270..3638112e1ac9 100644
--- a/CORE/MAC/src/pe/sch/schBeaconGen.c
+++ b/CORE/MAC/src/pe/sch/schBeaconGen.c
@@ -354,7 +354,7 @@ tSirRetStatus schSetFixedBeaconFields(tpAniSirGlobal pMac,tpPESession psessionEn
#ifdef FEATURE_AP_MCC_CH_AVOIDANCE
/* populate proprietary IE for MDM device operating in AP-MCC */
- populate_dot11f_avoid_channels_ie(pMac, &pBcn2->QComVendorIE, psessionEntry);
+ populate_dot11f_avoid_channel_ie(pMac, &pBcn2->QComVendorIE, psessionEntry);
#endif /* FEATURE_AP_MCC_CH_AVOIDANCE */
if (psessionEntry->dot11mode != WNI_CFG_DOT11_MODE_11B)
diff --git a/CORE/SAP/inc/sapApi.h b/CORE/SAP/inc/sapApi.h
index 4b43fd4c96bd..17b79241d80f 100644
--- a/CORE/SAP/inc/sapApi.h
+++ b/CORE/SAP/inc/sapApi.h
@@ -617,6 +617,12 @@ typedef struct sSapDfsInfo
* operating DFS channel.
*/
v_U8_t sap_operating_chan_preferred_location;
+
+ /*
+ * Flag to indicate if DFS test mode is enabled and
+ * channel switch is disabled.
+ */
+ v_U8_t disable_dfs_ch_switch;
} tSapDfsInfo;
typedef struct tagSapCtxList
diff --git a/CORE/SAP/src/sapApiLinkCntl.c b/CORE/SAP/src/sapApiLinkCntl.c
index 1750b7064d0e..e1a6df6a00e4 100644
--- a/CORE/SAP/src/sapApiLinkCntl.c
+++ b/CORE/SAP/src/sapApiLinkCntl.c
@@ -552,6 +552,7 @@ WLANSAP_RoamCallback
eHalStatus halStatus = eHAL_STATUS_SUCCESS;
tHalHandle hHal = VOS_GET_HAL_CB(sapContext->pvosGCtx);
tpAniSirGlobal pMac = NULL;
+ tANI_U8 dfs_beacon_start_req = 0;
if (NULL == hHal)
{
@@ -986,14 +987,13 @@ WLANSAP_RoamCallback
break;
case eCSR_ROAM_RESULT_DFS_RADAR_FOUND_IND:
- if (sapContext->csrRoamProfile.disableDFSChSwitch)
- {
- VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_ERROR,
- "sapdfs: DFS channel switch disabled");
- break;
- }
if (eSAP_DFS_CAC_WAIT == sapContext->sapsMachine)
{
+ if (sapContext->csrRoamProfile.disableDFSChSwitch) {
+ VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_ERROR,
+ "sapdfs: DFS channel switch disabled");
+ break;
+ }
if (VOS_TRUE == pMac->sap.SapDfsInfo.sap_radar_found_status)
{
VOS_TRACE(VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO_MED,
@@ -1051,6 +1051,22 @@ WLANSAP_RoamCallback
{
eCsrPhyMode phyMode = sapContext->csrRoamProfile.phyMode;
+ if (sapContext->csrRoamProfile.disableDFSChSwitch) {
+ VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_ERROR,
+ "sapdfs: DFS channel switch disabled");
+ /*
+ * Send a beacon start request to PE. CSA IE required
+ * flag from beacon template will be cleared by now.
+ * A new beacon template with no CSA IE will be sent
+ * to firmware.
+ */
+ dfs_beacon_start_req = VOS_TRUE;
+ halStatus = sme_RoamStartBeaconReq( hHal,
+ sapContext->bssid,
+ dfs_beacon_start_req);
+ break;
+ }
+
/* Both success and failure cases are handled intentionally handled
* together. Irrespective of whether the channel switch IE was
* sent out successfully or not, SAP should still vacate the
diff --git a/CORE/SAP/src/sapChSelect.c b/CORE/SAP/src/sapChSelect.c
index c9626c26ce8c..dfd798b91adf 100644
--- a/CORE/SAP/src/sapChSelect.c
+++ b/CORE/SAP/src/sapChSelect.c
@@ -262,8 +262,7 @@ sap_check_n_add_channel(ptSapContext sap_ctx,
* Detection of Q2Q IE indicates presence of another MDM device with its AP
* operating in MCC mode. This function parses the scan results and processes
* the Q2Q IE if found. It then extracts the channels and populates them in
- * sap_ctx sturct. It also increases the weights of those channels so that
- * ACS logic will avoid those channels in its selection algorigthm.
+ * sap_ctx struct.
*
* Return: void
*/
@@ -273,10 +272,8 @@ sap_process_avoid_ie(tHalHandle hal,
ptSapContext sap_ctx,
tScanResultHandle scan_result)
{
- uint8_t i;
uint32_t total_ie_len = 0;
uint8_t *temp_ptr = NULL;
- uint8_t num_channels;
struct sAvoidChannelIE *avoid_ch_ie;
tCsrScanResultInfo *node = NULL;
tpAniSirGlobal mac_ctx = NULL;
@@ -296,21 +293,17 @@ sap_process_avoid_ie(tHalHandle hal,
if (temp_ptr) {
avoid_ch_ie = (struct sAvoidChannelIE*)temp_ptr;
- num_channels = avoid_ch_ie->length -
- SIR_MAC_QCOM_VENDOR_SIZE - 1;
if (avoid_ch_ie->type != QCOM_VENDOR_IE_MCC_AVOID_CH) {
continue;
}
sap_ctx->sap_detected_avoid_ch_ie.present = 1;
- for (i = 0; i < num_channels; i++) {
- VOS_TRACE( VOS_MODULE_ID_SAP,
- VOS_TRACE_LEVEL_DEBUG,
- "Q2Q IE - avoid ch %d",
- avoid_ch_ie->channels[i]);
- /* add this channel to to_avoid channel list */
- sap_check_n_add_channel(sap_ctx,
- avoid_ch_ie->channels[i]);
- }
+ VOS_TRACE(VOS_MODULE_ID_SAP,
+ VOS_TRACE_LEVEL_DEBUG,
+ "Q2Q IE - avoid ch %d",
+ avoid_ch_ie->channel);
+ /* add this channel to to_avoid channel list */
+ sap_check_n_add_channel(sap_ctx,
+ avoid_ch_ie->channel);
} /* if (temp_ptr) */
node = sme_ScanResultGetNext(hal, scan_result);
}
diff --git a/CORE/SAP/src/sapFsm.c b/CORE/SAP/src/sapFsm.c
index 6aff358d637b..dfcb8d22712b 100644
--- a/CORE/SAP/src/sapFsm.c
+++ b/CORE/SAP/src/sapFsm.c
@@ -4469,6 +4469,13 @@ v_U8_t sapIndicateRadar(ptSapContext sapContext, tSirSmeDfsEventInd *dfs_event)
return 0;
}
+ /*
+ * SAP needs to generate Channel Switch IE
+ * if the radar is found in the STARTED state
+ */
+ if (eSAP_STARTED == sapContext->sapsMachine)
+ pMac->sap.SapDfsInfo.csaIERequired = VOS_TRUE;
+
if (sapContext->csrRoamProfile.disableDFSChSwitch)
{
return sapContext->channel;
@@ -4477,12 +4484,6 @@ v_U8_t sapIndicateRadar(ptSapContext sapContext, tSirSmeDfsEventInd *dfs_event)
/* set the Radar Found flag in SapDfsInfo */
pMac->sap.SapDfsInfo.sap_radar_found_status = VOS_TRUE;
- /* We need to generate Channel Switch IE if the radar is found in the
- * operating state
- */
- if (eSAP_STARTED == sapContext->sapsMachine)
- pMac->sap.SapDfsInfo.csaIERequired = VOS_TRUE;
-
sapGet5GHzChannelList(sapContext);
if (dfs_event->chan_list.nchannels > SIR_DFS_MAX_20M_SUB_CH) {
diff --git a/CORE/SAP/src/sapInternal.h b/CORE/SAP/src/sapInternal.h
index dfaa2208593c..3725d43ac9e8 100644
--- a/CORE/SAP/src/sapInternal.h
+++ b/CORE/SAP/src/sapInternal.h
@@ -160,12 +160,6 @@ typedef struct sSapAcsChannelInfo {
}tSapAcsChannelInfo;
#ifdef FEATURE_AP_MCC_CH_AVOIDANCE
-/* max MDM devices in vicinity supported for this feature */
-#define SAP_MCC_CH_AVOIDANCE_MAX_DEV 1
-/* max SAP per MDM devices */
-#define SAP_MCC_CH_AVOIDANCE_MAX_SAP_PER_DEV 2
-/* max channels a SAP will take, 4 right now for 80 MHz */
-#define SAP_MCC_CH_AVOIDANCE_MAX_CH_PER_AP 4
/*
* In a setup having two MDM both operating in AP+AP MCC scenario
* if both the AP decides to use same or close channel set, CTS to
@@ -179,9 +173,7 @@ typedef struct sSapAcsChannelInfo {
*/
struct sap_avoid_channels_info {
bool present;
- uint8_t channels[SAP_MCC_CH_AVOIDANCE_MAX_DEV *
- SAP_MCC_CH_AVOIDANCE_MAX_SAP_PER_DEV *
- SAP_MCC_CH_AVOIDANCE_MAX_CH_PER_AP];
+ uint8_t channels[WNI_CFG_VALID_CHANNEL_LIST_LEN];
};
#endif /* FEATURE_AP_MCC_CH_AVOIDANCE */
diff --git a/CORE/SAP/src/sapModule.c b/CORE/SAP/src/sapModule.c
index 5872dddac10c..a05c93610dce 100644
--- a/CORE/SAP/src/sapModule.c
+++ b/CORE/SAP/src/sapModule.c
@@ -812,6 +812,7 @@ WLANSAP_StartBss
ptSapContext pSapCtx = NULL;
tANI_BOOLEAN restartNeeded;
tHalHandle hHal;
+ tpAniSirGlobal pmac = NULL;
int ret;
/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
@@ -906,6 +907,13 @@ WLANSAP_StartBss
}
}
+ pmac = PMAC_STRUCT( hHal );
+ /*
+ * Copy the DFS Test Mode setting to pmac for
+ * access in lower layers
+ */
+ pmac->sap.SapDfsInfo.disable_dfs_ch_switch =
+ pConfig->disableDFSChSwitch;
// Copy MAC filtering settings to sap context
pSapCtx->eSapMacAddrAclMode = pConfig->SapMacaddr_acl;
vos_mem_copy(pSapCtx->acceptMacList, pConfig->accept_mac, sizeof(pConfig->accept_mac));
diff --git a/CORE/SERVICES/WMA/wma.c b/CORE/SERVICES/WMA/wma.c
index 19b3b82ffd02..18efc5ba21b5 100644
--- a/CORE/SERVICES/WMA/wma.c
+++ b/CORE/SERVICES/WMA/wma.c
@@ -28474,6 +28474,7 @@ int wma_dfs_indicate_radar(struct ieee80211com *ic,
struct wma_dfs_radar_indication *radar_event;
struct hdd_dfs_radar_ind hdd_radar_event;
void *vos_context = vos_get_global_context(VOS_MODULE_ID_WDA, NULL);
+ tpAniSirGlobal pmac = NULL;
wma = (tp_wma_handle) vos_get_context(VOS_MODULE_ID_WDA, vos_context);
@@ -28484,6 +28485,9 @@ int wma_dfs_indicate_radar(struct ieee80211com *ic,
}
hdd_ctx = vos_get_context(VOS_MODULE_ID_HDD,wma->vos_context);
+ pmac = (tpAniSirGlobal)
+ vos_get_context(VOS_MODULE_ID_PE, wma->vos_context);
+
if (wma->dfs_ic != ic)
{
WMA_LOGE("%s:DFS- Invalid WMA handle",__func__);
@@ -28499,8 +28503,11 @@ int wma_dfs_indicate_radar(struct ieee80211com *ic,
/*
* Do not post multiple Radar events on the same channel.
+ * But, when DFS test mode is enabled, allow multiple dfs
+ * radar events to be posted on the same channel.
*/
- if ( ichan->ic_ieee != (wma->dfs_ic->last_radar_found_chan) )
+ if ((ichan->ic_ieee != (wma->dfs_ic->last_radar_found_chan)) ||
+ ( pmac->sap.SapDfsInfo.disable_dfs_ch_switch == VOS_TRUE) )
{
wma->dfs_ic->last_radar_found_chan = ichan->ic_ieee;
/* Indicate the radar event to HDD to stop the netif Tx queues*/
diff --git a/CORE/SME/src/csr/csrApiRoam.c b/CORE/SME/src/csr/csrApiRoam.c
index 2a9b656dd1a2..611f93707e7e 100644
--- a/CORE/SME/src/csr/csrApiRoam.c
+++ b/CORE/SME/src/csr/csrApiRoam.c
@@ -17663,6 +17663,11 @@ eHalStatus csrQueueSmeCommand( tpAniSirGlobal pMac, tSmeCmd *pCommand, tANI_BOOL
{
eHalStatus status;
+ if (!SME_IS_START(pMac)) {
+ smsLog(pMac, LOGE, FL("Sme in stop state"));
+ return eHAL_STATUS_FAILURE;
+ }
+
if( (eSmeCommandScan == pCommand->command) && pMac->scan.fDropScanCmd )
{
smsLog(pMac, LOGW, FL(" drop scan (scan reason %d) command"),
diff --git a/CORE/SME/src/sme_common/sme_Api.c b/CORE/SME/src/sme_common/sme_Api.c
index 4c977dcfe151..92b996fc6d96 100644
--- a/CORE/SME/src/sme_common/sme_Api.c
+++ b/CORE/SME/src/sme_common/sme_Api.c
@@ -465,6 +465,11 @@ tSmeCmd *smeGetCommandBuffer( tpAniSirGlobal pMac )
void smePushCommand( tpAniSirGlobal pMac, tSmeCmd *pCmd, tANI_BOOLEAN fHighPriority )
{
+ if (!SME_IS_START(pMac)) {
+ smsLog(pMac, LOGE, FL("Sme in stop state"));
+ return;
+ }
+
if ( fHighPriority )
{
csrLLInsertHead( &pMac->sme.smeCmdPendingList, &pCmd->Link, LL_ACCESS_LOCK );
@@ -13223,6 +13228,8 @@ eHalStatus sme_ProcessChannelChangeResp(tpAniSirGlobal pMac,
smsLog(pMac, LOGE, "Invalid Channel Change Resp Message: %d\n",
status);
}
+ vos_mem_free(pRoamInfo.channelChangeRespEvent);
+
return status;
}
diff --git a/CORE/SYS/legacy/src/utils/src/dot11f.c b/CORE/SYS/legacy/src/utils/src/dot11f.c
index b3fdc359023c..01f2bd567fe4 100644
--- a/CORE/SYS/legacy/src/utils/src/dot11f.c
+++ b/CORE/SYS/legacy/src/utils/src/dot11f.c
@@ -35,7 +35,7 @@
*
*
* This file was automatically generated by 'framesc'
- * Wed Jan 28 19:41:34 2015 from the following file(s):
+ * Fri Jan 30 12:18:28 2015 from the following file(s):
*
* dot11f.frms
*
@@ -4077,8 +4077,7 @@ tANI_U32 dot11fUnpackIeQComVendorIE(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8
pDst->type = *pBuf;
pBuf += 1;
ielen -= (tANI_U8)1;
- pDst->num_data = (tANI_U8)( ielen );
- DOT11F_MEMCPY(pCtx, pDst->data, pBuf, ( ielen ) );
+ pDst->channel = *pBuf;
(void)pCtx;
return status;
} /* End dot11fUnpackIeQComVendorIE. */
@@ -7738,7 +7737,7 @@ tANI_U32 dot11fUnpackAuthentication(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32
{offsetof(tDot11fBeacon, Vendor2IE), offsetof(tDot11fIEVendor2IE, present), 0, "Vendor2IE" , 0, 5, 5, SigIeVendor2IE, {0, 144, 76, 0, 0}, 3, DOT11F_EID_VENDOR2IE, 0, },
{offsetof(tDot11fBeacon, Vendor3IE), offsetof(tDot11fIEVendor3IE, present), 0, "Vendor3IE" , 0, 5, 5, SigIeVendor3IE, {0, 22, 50, 0, 0}, 3, DOT11F_EID_VENDOR3IE, 0, },
{offsetof(tDot11fBeacon, ChannelSwitchWrapper), offsetof(tDot11fIEChannelSwitchWrapper, present), 0, "ChannelSwitchWrapper" , 0, 2, 7, SigIeChannelSwitchWrapper, {0, 0, 0, 0, 0}, 0, DOT11F_EID_CHANNELSWITCHWRAPPER, 0, },
- {offsetof(tDot11fBeacon, QComVendorIE), offsetof(tDot11fIEQComVendorIE, present), 0, "QComVendorIE" , 0, 6, 261, SigIeQComVendorIE, {0, 160, 198, 0, 0}, 3, DOT11F_EID_QCOMVENDORIE, 0, },
+ {offsetof(tDot11fBeacon, QComVendorIE), offsetof(tDot11fIEQComVendorIE, present), 0, "QComVendorIE" , 0, 7, 7, SigIeQComVendorIE, {0, 160, 198, 0, 0}, 3, DOT11F_EID_QCOMVENDORIE, 0, },
{offsetof(tDot11fBeacon, ESEVersion), offsetof(tDot11fIEESEVersion, present), 0, "ESEVersion" , 0, 7, 7, SigIeESEVersion, {0, 64, 150, 3, 0}, 4, DOT11F_EID_ESEVERSION, 0, },
{0, 0, 0, NULL, 0, 0, 0, 0, {0, 0, 0, 0, 0}, 0, 0xff, 0, }, };
@@ -8630,8 +8629,7 @@ tANI_U32 dot11fUnpackBeacon(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, t
else
{
FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON), ( tANI_U8* )&pFrm->QComVendorIE.type, 1);
- FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON), FRFL("num_data: %d.\n"), pFrm->QComVendorIE.num_data);
- FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON), ( tANI_U8* ) pFrm->QComVendorIE.data, pFrm->QComVendorIE.num_data);
+ FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON), ( tANI_U8* )&pFrm->QComVendorIE.channel, 1);
}
FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON), FRFL("ESEVersion:\n"));
if (!pFrm->ESEVersion.present)
@@ -8781,7 +8779,7 @@ tANI_U32 dot11fUnpackBeacon1(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf,
{offsetof(tDot11fBeacon2, Vendor2IE), offsetof(tDot11fIEVendor2IE, present), 0, "Vendor2IE" , 0, 5, 5, SigIeVendor2IE, {0, 144, 76, 0, 0}, 3, DOT11F_EID_VENDOR2IE, 0, },
{offsetof(tDot11fBeacon2, Vendor3IE), offsetof(tDot11fIEVendor3IE, present), 0, "Vendor3IE" , 0, 5, 5, SigIeVendor3IE, {0, 22, 50, 0, 0}, 3, DOT11F_EID_VENDOR3IE, 0, },
{offsetof(tDot11fBeacon2, ChannelSwitchWrapper), offsetof(tDot11fIEChannelSwitchWrapper, present), 0, "ChannelSwitchWrapper" , 0, 2, 7, SigIeChannelSwitchWrapper, {0, 0, 0, 0, 0}, 0, DOT11F_EID_CHANNELSWITCHWRAPPER, 0, },
- {offsetof(tDot11fBeacon2, QComVendorIE), offsetof(tDot11fIEQComVendorIE, present), 0, "QComVendorIE" , 0, 6, 261, SigIeQComVendorIE, {0, 160, 198, 0, 0}, 3, DOT11F_EID_QCOMVENDORIE, 0, },
+ {offsetof(tDot11fBeacon2, QComVendorIE), offsetof(tDot11fIEQComVendorIE, present), 0, "QComVendorIE" , 0, 7, 7, SigIeQComVendorIE, {0, 160, 198, 0, 0}, 3, DOT11F_EID_QCOMVENDORIE, 0, },
{offsetof(tDot11fBeacon2, ESEVersion), offsetof(tDot11fIEESEVersion, present), 0, "ESEVersion" , 0, 7, 7, SigIeESEVersion, {0, 64, 150, 3, 0}, 4, DOT11F_EID_ESEVERSION, 0, },
{0, 0, 0, NULL, 0, 0, 0, 0, {0, 0, 0, 0, 0}, 0, 0xff, 0, }, };
@@ -9521,8 +9519,7 @@ tANI_U32 dot11fUnpackBeacon2(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf,
else
{
FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON2), ( tANI_U8* )&pFrm->QComVendorIE.type, 1);
- FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON2), FRFL("num_data: %d.\n"), pFrm->QComVendorIE.num_data);
- FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON2), ( tANI_U8* ) pFrm->QComVendorIE.data, pFrm->QComVendorIE.num_data);
+ FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON2), ( tANI_U8* )&pFrm->QComVendorIE.channel, 1);
}
FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON2), FRFL("ESEVersion:\n"));
if (!pFrm->ESEVersion.present)
@@ -9592,7 +9589,7 @@ tANI_U32 dot11fUnpackBeacon2(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf,
{offsetof(tDot11fBeaconIEs, Vendor2IE), offsetof(tDot11fIEVendor2IE, present), 0, "Vendor2IE" , 0, 5, 5, SigIeVendor2IE, {0, 144, 76, 0, 0}, 3, DOT11F_EID_VENDOR2IE, 0, },
{offsetof(tDot11fBeaconIEs, Vendor3IE), offsetof(tDot11fIEVendor3IE, present), 0, "Vendor3IE" , 0, 5, 5, SigIeVendor3IE, {0, 22, 50, 0, 0}, 3, DOT11F_EID_VENDOR3IE, 0, },
{offsetof(tDot11fBeaconIEs, ChannelSwitchWrapper), offsetof(tDot11fIEChannelSwitchWrapper, present), 0, "ChannelSwitchWrapper" , 0, 2, 7, SigIeChannelSwitchWrapper, {0, 0, 0, 0, 0}, 0, DOT11F_EID_CHANNELSWITCHWRAPPER, 0, },
- {offsetof(tDot11fBeaconIEs, QComVendorIE), offsetof(tDot11fIEQComVendorIE, present), 0, "QComVendorIE" , 0, 6, 261, SigIeQComVendorIE, {0, 160, 198, 0, 0}, 3, DOT11F_EID_QCOMVENDORIE, 0, },
+ {offsetof(tDot11fBeaconIEs, QComVendorIE), offsetof(tDot11fIEQComVendorIE, present), 0, "QComVendorIE" , 0, 7, 7, SigIeQComVendorIE, {0, 160, 198, 0, 0}, 3, DOT11F_EID_QCOMVENDORIE, 0, },
{0, 0, 0, NULL, 0, 0, 0, 0, {0, 0, 0, 0, 0}, 0, 0xff, 0, }, };
tANI_U32 dot11fUnpackBeaconIEs(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fBeaconIEs *pFrm)
@@ -10591,8 +10588,7 @@ tANI_U32 dot11fUnpackBeaconIEs(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf
else
{
FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACONIES), ( tANI_U8* )&pFrm->QComVendorIE.type, 1);
- FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACONIES), FRFL("num_data: %d.\n"), pFrm->QComVendorIE.num_data);
- FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACONIES), ( tANI_U8* ) pFrm->QComVendorIE.data, pFrm->QComVendorIE.num_data);
+ FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACONIES), ( tANI_U8* )&pFrm->QComVendorIE.channel, 1);
}
}
# endif // DOT11F_DUMP_FRAMES
@@ -12930,7 +12926,7 @@ tANI_U32 dot11fUnpackProbeRequest(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 n
{offsetof(tDot11fProbeResponse, Vendor2IE), offsetof(tDot11fIEVendor2IE, present), 0, "Vendor2IE" , 0, 5, 5, SigIeVendor2IE, {0, 144, 76, 0, 0}, 3, DOT11F_EID_VENDOR2IE, 0, },
{offsetof(tDot11fProbeResponse, Vendor3IE), offsetof(tDot11fIEVendor3IE, present), 0, "Vendor3IE" , 0, 5, 5, SigIeVendor3IE, {0, 22, 50, 0, 0}, 3, DOT11F_EID_VENDOR3IE, 0, },
{offsetof(tDot11fProbeResponse, ChannelSwitchWrapper), offsetof(tDot11fIEChannelSwitchWrapper, present), 0, "ChannelSwitchWrapper" , 0, 2, 7, SigIeChannelSwitchWrapper, {0, 0, 0, 0, 0}, 0, DOT11F_EID_CHANNELSWITCHWRAPPER, 0, },
- {offsetof(tDot11fProbeResponse, QComVendorIE), offsetof(tDot11fIEQComVendorIE, present), 0, "QComVendorIE" , 0, 6, 261, SigIeQComVendorIE, {0, 160, 198, 0, 0}, 3, DOT11F_EID_QCOMVENDORIE, 0, },
+ {offsetof(tDot11fProbeResponse, QComVendorIE), offsetof(tDot11fIEQComVendorIE, present), 0, "QComVendorIE" , 0, 7, 7, SigIeQComVendorIE, {0, 160, 198, 0, 0}, 3, DOT11F_EID_QCOMVENDORIE, 0, },
{offsetof(tDot11fProbeResponse, ESEVersion), offsetof(tDot11fIEESEVersion, present), 0, "ESEVersion" , 0, 7, 7, SigIeESEVersion, {0, 64, 150, 3, 0}, 4, DOT11F_EID_ESEVERSION, 0, },
{0, 0, 0, NULL, 0, 0, 0, 0, {0, 0, 0, 0, 0}, 0, 0xff, 0, }, };
@@ -13876,8 +13872,7 @@ tANI_U32 dot11fUnpackProbeResponse(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32
else
{
FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_PROBERESPONSE), ( tANI_U8* )&pFrm->QComVendorIE.type, 1);
- FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_PROBERESPONSE), FRFL("num_data: %d.\n"), pFrm->QComVendorIE.num_data);
- FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_PROBERESPONSE), ( tANI_U8* ) pFrm->QComVendorIE.data, pFrm->QComVendorIE.num_data);
+ FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_PROBERESPONSE), ( tANI_U8* )&pFrm->QComVendorIE.channel, 1);
}
FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_PROBERESPONSE), FRFL("ESEVersion:\n"));
if (!pFrm->ESEVersion.present)
@@ -20898,7 +20893,7 @@ static tANI_U32 GetPackedSizeCore(tpAniSirGlobal pCtx,
break;
case SigIeQComVendorIE:
offset = sizeof(tDot11fIEQComVendorIE);
- byteCount = ((tDot11fIEQComVendorIE* )(pFrm + pIe->offset + sizeof(tDot11fIEQComVendorIE) * i ))->num_data + 1;
+ byteCount = 2;
pIePresent = ( (tDot11fIEQComVendorIE* )(pFrm + pIe->offset + offset * i ))->present;
break;
case SigIeQOSCapsAp:
@@ -27185,7 +27180,7 @@ tANI_U32 dot11fPackIeQComVendorIE(tpAniSirGlobal pCtx,
tANI_U8* pIeLen = 0;
tANI_U32 nConsumedOnEntry = *pnConsumed;
tANI_U32 nNeeded = 0U;
- nNeeded += (pSrc->num_data + 1);
+ nNeeded += 2;
while ( pSrc->present )
{
if ( nNeeded > nBuf ) return DOT11F_BUFFER_OVERFLOW;
@@ -27202,8 +27197,8 @@ tANI_U32 dot11fPackIeQComVendorIE(tpAniSirGlobal pCtx,
*pBuf = pSrc->type;
*pnConsumed += 1;
pBuf += 1;
- DOT11F_MEMCPY(pCtx, pBuf, &( pSrc->data ), pSrc->num_data);
- *pnConsumed += pSrc->num_data;
+ *pBuf = pSrc->channel;
+ *pnConsumed += 1;
// fieldsEndFlag = 1
break;
}
@@ -32125,8 +32120,7 @@ tANI_U32 dot11fPackBeacon(tpAniSirGlobal pCtx, tDot11fBeacon *pFrm, tANI_U8 *pBu
else
{
FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON), ( tANI_U8* )&pFrm->QComVendorIE.type, 1);
- FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON), FRFL("num_data: %d.\n"), pFrm->QComVendorIE.num_data);
- FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON), ( tANI_U8* ) pFrm->QComVendorIE.data, pFrm->QComVendorIE.num_data);
+ FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON), ( tANI_U8* )&pFrm->QComVendorIE.channel, 1);
}
FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON), FRFL("ESEVersion:\n"));
if (!pFrm->ESEVersion.present)
@@ -32959,8 +32953,7 @@ tANI_U32 dot11fPackBeacon2(tpAniSirGlobal pCtx, tDot11fBeacon2 *pFrm, tANI_U8 *p
else
{
FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON2), ( tANI_U8* )&pFrm->QComVendorIE.type, 1);
- FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON2), FRFL("num_data: %d.\n"), pFrm->QComVendorIE.num_data);
- FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON2), ( tANI_U8* ) pFrm->QComVendorIE.data, pFrm->QComVendorIE.num_data);
+ FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON2), ( tANI_U8* )&pFrm->QComVendorIE.channel, 1);
}
FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON2), FRFL("ESEVersion:\n"));
if (!pFrm->ESEVersion.present)
@@ -33974,8 +33967,7 @@ tANI_U32 dot11fPackBeaconIEs(tpAniSirGlobal pCtx, tDot11fBeaconIEs *pFrm, tANI_U
else
{
FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACONIES), ( tANI_U8* )&pFrm->QComVendorIE.type, 1);
- FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACONIES), FRFL("num_data: %d.\n"), pFrm->QComVendorIE.num_data);
- FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACONIES), ( tANI_U8* ) pFrm->QComVendorIE.data, pFrm->QComVendorIE.num_data);
+ FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACONIES), ( tANI_U8* )&pFrm->QComVendorIE.channel, 1);
}
FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACONIES), FRFL("to:\n"));
FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACONIES), pBuf, nBuf);
@@ -36926,8 +36918,7 @@ tANI_U32 dot11fPackProbeResponse(tpAniSirGlobal pCtx, tDot11fProbeResponse *pFrm
else
{
FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_PROBERESPONSE), ( tANI_U8* )&pFrm->QComVendorIE.type, 1);
- FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_PROBERESPONSE), FRFL("num_data: %d.\n"), pFrm->QComVendorIE.num_data);
- FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_PROBERESPONSE), ( tANI_U8* ) pFrm->QComVendorIE.data, pFrm->QComVendorIE.num_data);
+ FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_PROBERESPONSE), ( tANI_U8* )&pFrm->QComVendorIE.channel, 1);
}
FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_PROBERESPONSE), FRFL("ESEVersion:\n"));
if (!pFrm->ESEVersion.present)
diff --git a/CORE/SYS/legacy/src/utils/src/parserApi.c b/CORE/SYS/legacy/src/utils/src/parserApi.c
index 43157d205e45..20416dc2a0a4 100644
--- a/CORE/SYS/legacy/src/utils/src/parserApi.c
+++ b/CORE/SYS/legacy/src/utils/src/parserApi.c
@@ -274,68 +274,16 @@ PopulateDot11fChanSwitchAnn(tpAniSirGlobal pMac,
#ifdef FEATURE_AP_MCC_CH_AVOIDANCE
void
-populate_dot11f_avoid_channels_ie(tpAniSirGlobal mac_ctx,
+populate_dot11f_avoid_channel_ie(tpAniSirGlobal mac_ctx,
tDot11fIEQComVendorIE *dot11f,
tpPESession pe_session)
{
- dot11f->present = pe_session->sap_advertise_avoid_ch_ie;
-
- if (!dot11f->present)
+ if (!pe_session->sap_advertise_avoid_ch_ie)
return;
+ dot11f->present = true;
dot11f->type = QCOM_VENDOR_IE_MCC_AVOID_CH;
-
- if(pe_session->htSecondaryChannelOffset ==
- PHY_DOUBLE_CHANNEL_LOW_PRIMARY &&
- pe_session->htSupportedChannelWidthSet == 1) {
- dot11f->num_data = 2;
- dot11f->data[0] = pe_session->currentOperChannel;
- dot11f->data[1] = dot11f->data[0] + 4;
- }
-
- if(pe_session->htSecondaryChannelOffset ==
- PHY_DOUBLE_CHANNEL_HIGH_PRIMARY &&
- pe_session->htSupportedChannelWidthSet == 1) {
- dot11f->num_data = 2;
- dot11f->data[0] = pe_session->currentOperChannel;
- dot11f->data[1] = dot11f->data[0] - 4;
- }
-
- if(pe_session->htSecondaryChannelOffset ==
- PHY_SINGLE_CHANNEL_CENTERED ||
- pe_session->htSupportedChannelWidthSet == 0) {
- dot11f->num_data = 1;
- dot11f->data[0] = pe_session->currentOperChannel;
- }
-
- if (pe_session->vhtCapability) {
- if (pe_session->vhtTxChannelWidthSet ==
- WNI_CFG_VHT_CHANNEL_WIDTH_80MHZ) {
- dot11f->num_data = 4;
- if(pe_session->currentOperChannel >= 36 &&
- pe_session->currentOperChannel <= 48) {
- dot11f->data[0] = 36;
- } else if(pe_session->currentOperChannel >= 52
- && pe_session->currentOperChannel <= 64) {
- dot11f->data[0] = 52;
- } else if(pe_session->currentOperChannel >= 100 &&
- pe_session->currentOperChannel <= 112) {
- dot11f->data[0] = 100;
- } else if(pe_session->currentOperChannel >= 116 &&
- pe_session->currentOperChannel <= 128) {
- dot11f->data[0] = 116;
- } else if(pe_session->currentOperChannel >= 132 &&
- pe_session->currentOperChannel <= 144) {
- dot11f->data[0] = 132;
- } else if(pe_session->currentOperChannel >= 149 &&
- pe_session->currentOperChannel <= 161) {
- dot11f->data[0] = 149;
- }
- dot11f->data[1] = dot11f->data[0] + 4;
- dot11f->data[2] = dot11f->data[0] + 8;
- dot11f->data[3] = dot11f->data[0] + 12;
- }
- }
+ dot11f->channel = pe_session->currentOperChannel;
}
#endif /* FEATURE_AP_MCC_CH_AVOIDANCE */
@@ -3828,13 +3776,10 @@ sirConvertBeaconFrame2Struct(tpAniSirGlobal pMac,
if(pBeacon->QComVendorIE.present) {
pBeaconStruct->AvoidChannelIE.present =
pBeacon->QComVendorIE.present;
- pBeaconStruct->AvoidChannelIE.num_data =
- pBeacon->QComVendorIE.num_data;
pBeaconStruct->AvoidChannelIE.type =
pBeacon->QComVendorIE.type;
- vos_mem_copy(pBeaconStruct->AvoidChannelIE.data,
- pBeacon->QComVendorIE.data,
- sizeof(pBeacon->QComVendorIE.data));
+ pBeaconStruct->AvoidChannelIE.channel =
+ pBeacon->QComVendorIE.channel;
}
#endif /* FEATURE_AP_MCC_CH_AVOIDANCE */
diff --git a/CORE/VOSS/src/vos_sched.c b/CORE/VOSS/src/vos_sched.c
index 017ea3f34a98..5ac1a5024cbf 100644
--- a/CORE/VOSS/src/vos_sched.c
+++ b/CORE/VOSS/src/vos_sched.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012-2014 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012-2015 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@@ -414,6 +414,13 @@ TX_THREAD_START_FAILURE:
MC_THREAD_START_FAILURE:
//De-initialize all the message queues
vos_sched_deinit_mqs(pSchedContext);
+
+
+#ifdef QCA_CONFIG_SMP
+ unregister_hotcpu_notifier(&vos_cpu_hotplug_notifier);
+ vos_free_tlshim_pkt_freeq(gpVosSchedContext);
+#endif
+
return VOS_STATUS_E_RESOURCES;
} /* vos_sched_open() */