summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDasari Srinivas <dasaris@qti.qualcomm.com>2014-04-10 18:49:10 +0530
committerAkash Patel <c_akashp@qca.qualcomm.com>2014-04-17 16:45:57 -0700
commit56fee69191489a38f08dfd48e3987853fadf2d24 (patch)
treeeddaabb75676ef8b5567b8d5684136d63a18d6ca
parentf6ac0e102fe48fa3e8441f0db8a1f0c9c805f01b (diff)
wlan: Reason code for scan abort.
Add a reason code for scan abort. Currently, this is required to know if the abort is because of a band change. It can be enhanced further to cater the requirements. Change-Id: I1a7b51d7d19b10a1649e3dce95748951b424a944 CRs-Fixed: 649420
-rw-r--r--CORE/HDD/inc/wlan_hdd_main.h3
-rw-r--r--CORE/HDD/src/wlan_hdd_cfg80211.c14
-rw-r--r--CORE/HDD/src/wlan_hdd_hostapd.c3
-rw-r--r--CORE/HDD/src/wlan_hdd_main.c8
-rw-r--r--CORE/HDD/src/wlan_hdd_scan.c5
-rw-r--r--CORE/HDD/src/wlan_hdd_wext.c3
-rw-r--r--CORE/SME/inc/csrApi.h10
-rw-r--r--CORE/SME/inc/sme_Api.h4
-rw-r--r--CORE/SME/src/csr/csrApiRoam.c4
-rw-r--r--CORE/SME/src/csr/csrApiScan.c5
-rw-r--r--CORE/SME/src/csr/csrInsideApi.h3
-rw-r--r--CORE/SME/src/csr/csrNeighborRoam.c3
-rw-r--r--CORE/SME/src/p2p/p2p_Api.c4
-rw-r--r--CORE/SME/src/sme_common/sme_Api.c6
-rw-r--r--CORE/VOSS/src/vos_api.c2
15 files changed, 52 insertions, 25 deletions
diff --git a/CORE/HDD/inc/wlan_hdd_main.h b/CORE/HDD/inc/wlan_hdd_main.h
index b1984ca0dcc6..3b036e5304e8 100644
--- a/CORE/HDD/inc/wlan_hdd_main.h
+++ b/CORE/HDD/inc/wlan_hdd_main.h
@@ -1454,7 +1454,8 @@ tVOS_CON_MODE hdd_get_conparam( void );
void wlan_hdd_enable_deepsleep(v_VOID_t * pVosContext);
v_BOOL_t hdd_is_apps_power_collapse_allowed(hdd_context_t* pHddCtx);
v_BOOL_t hdd_is_suspend_notify_allowed(hdd_context_t* pHddCtx);
-void hdd_abort_mac_scan(hdd_context_t *pHddCtx, tANI_U8 sessionId);
+void hdd_abort_mac_scan(hdd_context_t* pHddCtx, tANI_U8 sessionId,
+ eCsrAbortReason reason);
void wlan_hdd_set_monitor_tx_adapter( hdd_context_t *pHddCtx, hdd_adapter_t *pAdapter );
void hdd_cleanup_actionframe( hdd_context_t *pHddCtx, hdd_adapter_t *pAdapter );
diff --git a/CORE/HDD/src/wlan_hdd_cfg80211.c b/CORE/HDD/src/wlan_hdd_cfg80211.c
index c49f61faa4b2..ae0d5b87b85a 100644
--- a/CORE/HDD/src/wlan_hdd_cfg80211.c
+++ b/CORE/HDD/src/wlan_hdd_cfg80211.c
@@ -2727,7 +2727,8 @@ static int wlan_hdd_cfg80211_stop_ap (struct wiphy *wiphy,
if ((pScanInfo != NULL) && pScanInfo->mScanPending && staAdapter)
{
INIT_COMPLETION(pScanInfo->abortscan_event_var);
- hdd_abort_mac_scan(staAdapter->pHddCtx, pAdapter->sessionId);
+ hdd_abort_mac_scan(staAdapter->pHddCtx, pAdapter->sessionId,
+ eCSR_SCAN_ABORT_DEFAULT);
status = wait_for_completion_interruptible_timeout(
&pScanInfo->abortscan_event_var,
msecs_to_jiffies(WLAN_WAIT_TIME_ABORTSCAN));
@@ -6990,9 +6991,10 @@ static int wlan_hdd_cfg80211_disconnect( struct wiphy *wiphy,
pScanInfo = &pAdapter->scan_info;
if (pScanInfo->mScanPending)
{
- hddLog(VOS_TRACE_LEVEL_INFO, "Disconnect is in progress, "
+ hddLog(VOS_TRACE_LEVEL_INFO, "Disconnect is in progress, "
"Aborting Scan");
- hdd_abort_mac_scan(pHddCtx, pAdapter->sessionId);
+ hdd_abort_mac_scan(pHddCtx, pAdapter->sessionId,
+ eCSR_SCAN_ABORT_DEFAULT);
}
#ifdef FEATURE_WLAN_TDLS
@@ -8649,7 +8651,8 @@ static int wlan_hdd_scan_abort(hdd_adapter_t *pAdapter)
if (pScanInfo->mScanPending && pAdapter->request)
{
INIT_COMPLETION(pScanInfo->abortscan_event_var);
- hdd_abort_mac_scan(pHddCtx, pAdapter->sessionId);
+ hdd_abort_mac_scan(pHddCtx, pAdapter->sessionId,
+ eCSR_SCAN_ABORT_DEFAULT);
status = wait_for_completion_interruptible_timeout(
&pScanInfo->abortscan_event_var,
@@ -10440,7 +10443,8 @@ int wlan_hdd_cfg80211_suspend_wlan(struct wiphy *wiphy,
if (pScanInfo->mScanPending && pAdapter->request)
{
INIT_COMPLETION(pScanInfo->abortscan_event_var);
- hdd_abort_mac_scan(pHddCtx, pAdapter->sessionId);
+ hdd_abort_mac_scan(pHddCtx, pAdapter->sessionId,
+ eCSR_SCAN_ABORT_DEFAULT);
status = wait_for_completion_timeout(
&pScanInfo->abortscan_event_var,
diff --git a/CORE/HDD/src/wlan_hdd_hostapd.c b/CORE/HDD/src/wlan_hdd_hostapd.c
index 99405a888e9e..023a5dfded5e 100644
--- a/CORE/HDD/src/wlan_hdd_hostapd.c
+++ b/CORE/HDD/src/wlan_hdd_hostapd.c
@@ -909,7 +909,8 @@ VOS_STATUS hdd_hostapd_SAPEventCB( tpSap_Event pSapEvent, v_PVOID_t usrDataForCa
// Lets do abort scan to ensure smooth authentication for client
if ((pScanInfo != NULL) && pScanInfo->mScanPending)
{
- hdd_abort_mac_scan(pHddCtx, pHostapdAdapter->sessionId);
+ hdd_abort_mac_scan(pHddCtx, pHostapdAdapter->sessionId,
+ eCSR_SCAN_ABORT_DEFAULT);
}
#ifdef QCA_WIFI_2_0
if (pHostapdAdapter->device_mode == WLAN_HDD_P2P_GO)
diff --git a/CORE/HDD/src/wlan_hdd_main.c b/CORE/HDD/src/wlan_hdd_main.c
index eb026af9a6c6..1dc41542c8fc 100644
--- a/CORE/HDD/src/wlan_hdd_main.c
+++ b/CORE/HDD/src/wlan_hdd_main.c
@@ -348,7 +348,8 @@ static int hdd_netdev_notifier_call(struct notifier_block * nb,
{
int result;
INIT_COMPLETION(pAdapter->scan_info.abortscan_event_var);
- hdd_abort_mac_scan(pAdapter->pHddCtx, pAdapter->sessionId);
+ hdd_abort_mac_scan(pAdapter->pHddCtx, pAdapter->sessionId,
+ eCSR_SCAN_ABORT_DEFAULT);
result = wait_for_completion_interruptible_timeout(
&pAdapter->scan_info.abortscan_event_var,
msecs_to_jiffies(WLAN_WAIT_TIME_ABORTSCAN));
@@ -8234,7 +8235,8 @@ VOS_STATUS hdd_stop_adapter( hdd_context_t *pHddCtx, hdd_adapter_t *pAdapter )
}
else
{
- hdd_abort_mac_scan(pHddCtx, pAdapter->sessionId);
+ hdd_abort_mac_scan(pHddCtx, pAdapter->sessionId,
+ eCSR_SCAN_ABORT_DEFAULT);
}
if (pAdapter->device_mode != WLAN_HDD_INFRA_STATION) {
while (pAdapter->is_roc_inprogress) {
@@ -9468,7 +9470,7 @@ void hdd_wlan_exit(hdd_context_t *pHddCtx)
// the expectation is that by the time Request Full Power has completed,
// all scans will be cancelled.
if (NULL != pAdapter)
- hdd_abort_mac_scan( pHddCtx, pAdapter->sessionId);
+ hdd_abort_mac_scan(pHddCtx, pAdapter->sessionId, eCSR_SCAN_ABORT_DEFAULT);
else
hddLog(VOS_TRACE_LEVEL_ERROR,
"%s: pAdapter is NULL, cannot Abort scan", __func__);
diff --git a/CORE/HDD/src/wlan_hdd_scan.c b/CORE/HDD/src/wlan_hdd_scan.c
index 7d2854cd4ab8..7c4b9f574d20 100644
--- a/CORE/HDD/src/wlan_hdd_scan.c
+++ b/CORE/HDD/src/wlan_hdd_scan.c
@@ -1148,7 +1148,8 @@ exit_point:
}
/* Abort any MAC scan if in progress */
-void hdd_abort_mac_scan(hdd_context_t* pHddCtx, tANI_U8 sessionId)
+void hdd_abort_mac_scan(hdd_context_t* pHddCtx, tANI_U8 sessionId,
+ eCsrAbortReason reason)
{
- sme_AbortMacScan(pHddCtx->hHal, sessionId);
+ sme_AbortMacScan(pHddCtx->hHal, sessionId, reason);
}
diff --git a/CORE/HDD/src/wlan_hdd_wext.c b/CORE/HDD/src/wlan_hdd_wext.c
index cb64b3f5f095..eb0ffcd0611c 100644
--- a/CORE/HDD/src/wlan_hdd_wext.c
+++ b/CORE/HDD/src/wlan_hdd_wext.c
@@ -9364,7 +9364,8 @@ int hdd_setBand(struct net_device *dev, u8 ui_band)
"%s: Current band value = %u, new setting %u ",
__func__, currBand, band);
- hdd_abort_mac_scan(pHddCtx, pAdapter->sessionId);
+ hdd_abort_mac_scan(pHddCtx, pAdapter->sessionId,
+ eCSR_SCAN_ABORT_DUE_TO_BAND_CHANGE);
if (hdd_connIsConnected(WLAN_HDD_GET_STATION_CTX_PTR(pAdapter)))
{
diff --git a/CORE/SME/inc/csrApi.h b/CORE/SME/inc/csrApi.h
index 4aa82ad03ee0..23beb757501e 100644
--- a/CORE/SME/inc/csrApi.h
+++ b/CORE/SME/inc/csrApi.h
@@ -188,6 +188,16 @@ typedef enum
eCSR_SCAN_FOUND_PEER,
}eCsrScanStatus;
+/* Reason to abort the scan
+ * The reason can used later to decide whether to update the scan results
+ * to upper layer or not
+ */
+typedef enum
+{
+ eCSR_SCAN_ABORT_DEFAULT,
+ eCSR_SCAN_ABORT_DUE_TO_BAND_CHANGE, //Scan aborted due to band change
+}eCsrAbortReason;
+
#define CSR_SCAN_TIME_DEFAULT 0
#define CSR_VALUE_IGNORED 0xFFFFFFFF
#define CSR_RSN_PMKID_SIZE 16
diff --git a/CORE/SME/inc/sme_Api.h b/CORE/SME/inc/sme_Api.h
index 4d8d119a4387..a1643120aec7 100644
--- a/CORE/SME/inc/sme_Api.h
+++ b/CORE/SME/inc/sme_Api.h
@@ -2167,11 +2167,13 @@ v_U16_t sme_CheckConcurrentChannelOverlap( tHalHandle hHal, v_U16_t sap_ch,
\brief API to cancel MAC scan.
\param hHal - The handle returned by macOpen.
\param sessionId - sessionId for interface
+ \param reason - Reason to abort the scan
\return VOS_STATUS
VOS_STATUS_E_FAILURE - failure
VOS_STATUS_SUCCESS success
---------------------------------------------------------------------------*/
-eHalStatus sme_AbortMacScan(tHalHandle hHal, tANI_U8 sessionId);
+eHalStatus sme_AbortMacScan(tHalHandle hHal, tANI_U8 sessionId,
+ eCsrAbortReason reason);
/* ---------------------------------------------------------------------------
\fn sme_GetCfgValidChannels
diff --git a/CORE/SME/src/csr/csrApiRoam.c b/CORE/SME/src/csr/csrApiRoam.c
index e18e21ad8fd6..c30500f39cc9 100644
--- a/CORE/SME/src/csr/csrApiRoam.c
+++ b/CORE/SME/src/csr/csrApiRoam.c
@@ -6690,7 +6690,7 @@ eHalStatus csrRoamConnect(tpAniSirGlobal pMac, tANI_U32 sessionId, tCsrRoamProfi
csrScanRemoveFreshScanCommand(pMac, sessionId);
csrScanCancelIdleScan(pMac);
//Only abort the scan if it is not used for other roam/connect purpose
- csrScanAbortMacScan(pMac, sessionId);
+ csrScanAbortMacScan(pMac, sessionId, eCSR_SCAN_ABORT_DEFAULT);
if (!vos_concurrent_sessions_running() && (VOS_STA_SAP_MODE == pProfile->csrPersona))//In case of AP mode we do not want idle mode scan
{
csrScanDisable(pMac);
@@ -10463,7 +10463,7 @@ void csrRoamCancelRoaming(tpAniSirGlobal pMac, tANI_U32 sessionId)
//Roaming is stopped after here
csrRoamCompleteRoaming(pMac, sessionId, eANI_BOOLEAN_TRUE, roamResult);
//Since CSR may be in lostlink roaming situation, abort all roaming related activities
- csrScanAbortMacScan(pMac, sessionId);
+ csrScanAbortMacScan(pMac, sessionId, eCSR_SCAN_ABORT_DEFAULT);
csrRoamStopRoamingTimer(pMac, sessionId);
}
}
diff --git a/CORE/SME/src/csr/csrApiScan.c b/CORE/SME/src/csr/csrApiScan.c
index 87d9164e026b..537918f96bb9 100644
--- a/CORE/SME/src/csr/csrApiScan.c
+++ b/CORE/SME/src/csr/csrApiScan.c
@@ -7874,7 +7874,8 @@ eHalStatus csrProcessSetBGScanParam(tpAniSirGlobal pMac, tSmeCmd *pCommand)
}
-eHalStatus csrScanAbortMacScan(tpAniSirGlobal pMac, tANI_U8 sessionId)
+eHalStatus csrScanAbortMacScan(tpAniSirGlobal pMac, tANI_U8 sessionId,
+ eCsrAbortReason reason)
{
eHalStatus status = eHAL_STATUS_FAILURE;
tSirSmeScanAbortReq *pMsg;
@@ -8054,7 +8055,7 @@ eHalStatus csrScanAbortMacScanNotForConnect(tpAniSirGlobal pMac,
if( !csrIsScanForRoamCommandActive( pMac ) )
{
//Only abort the scan if it is not used for other roam/connect purpose
- status = csrScanAbortMacScan(pMac, sessionId);
+ status = csrScanAbortMacScan(pMac, sessionId, eCSR_SCAN_ABORT_DEFAULT);
}
return (status);
diff --git a/CORE/SME/src/csr/csrInsideApi.h b/CORE/SME/src/csr/csrInsideApi.h
index 4d285cf9bb6c..3016d6fcdad6 100644
--- a/CORE/SME/src/csr/csrInsideApi.h
+++ b/CORE/SME/src/csr/csrInsideApi.h
@@ -265,7 +265,8 @@ void csrScanStopTimers(tpAniSirGlobal pMac);
tANI_BOOLEAN csrScanRemoveNotRoamingScanCommand(tpAniSirGlobal pMac);
//To remove fresh scan commands from the pending queue
tANI_BOOLEAN csrScanRemoveFreshScanCommand(tpAniSirGlobal pMac, tANI_U8 sessionId);
-eHalStatus csrScanAbortMacScan(tpAniSirGlobal pMac, tANI_U8 sessionId);
+eHalStatus csrScanAbortMacScan(tpAniSirGlobal pMac, tANI_U8 sessionId,
+ eCsrAbortReason reason);
void csrRemoveCmdFromPendingList(tpAniSirGlobal pMac, tDblLinkList *pList,
eSmeCommandType commandType );
void csrRemoveCmdWithSessionIdFromPendingList(tpAniSirGlobal pMac,
diff --git a/CORE/SME/src/csr/csrNeighborRoam.c b/CORE/SME/src/csr/csrNeighborRoam.c
index 8f1316d06bbd..3ecfbc9f36b4 100644
--- a/CORE/SME/src/csr/csrNeighborRoam.c
+++ b/CORE/SME/src/csr/csrNeighborRoam.c
@@ -875,7 +875,8 @@ static void csrNeighborRoamResetCfgListChanScanControlInfo(tpAniSirGlobal pMac)
/* Abort any ongoing scan */
if (eANI_BOOLEAN_TRUE == pNeighborRoamInfo->scanRspPending)
{
- csrScanAbortMacScan(pMac, pNeighborRoamInfo->csrSessionId);
+ csrScanAbortMacScan(pMac, pNeighborRoamInfo->csrSessionId,
+ eCSR_SCAN_ABORT_DEFAULT);
}
pNeighborRoamInfo->scanRspPending = eANI_BOOLEAN_FALSE;
diff --git a/CORE/SME/src/p2p/p2p_Api.c b/CORE/SME/src/p2p/p2p_Api.c
index 14b630e8836a..b73d8dc6ea8e 100644
--- a/CORE/SME/src/p2p/p2p_Api.c
+++ b/CORE/SME/src/p2p/p2p_Api.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012-2013 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012-2014 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@@ -1194,7 +1194,7 @@ eHalStatus p2pCreateActionFrame(tpAniSirGlobal pMac, tANI_U8 SessionID, void *p2
return eHAL_STATUS_FAILURE;
}
- csrScanAbortMacScan(pMac);
+ csrScanAbortMacScan(pMac, SessionID, eCSR_SCAN_ABORT_DEFAULT);
switch (actionFrameType)
{
diff --git a/CORE/SME/src/sme_common/sme_Api.c b/CORE/SME/src/sme_common/sme_Api.c
index 3d0394eb7b7a..17aaec7bd491 100644
--- a/CORE/SME/src/sme_common/sme_Api.c
+++ b/CORE/SME/src/sme_common/sme_Api.c
@@ -6921,11 +6921,13 @@ eHalStatus sme_SetPowerParams(tHalHandle hHal, tSirSetPowerParamsReq* pwParams,
\brief API to cancel MAC scan.
\param hHal - The handle returned by macOpen.
\param sessionId - sessionId on which we need to abort scan.
+ \param reason - Reason to abort the scan.
\return VOS_STATUS
VOS_STATUS_E_FAILURE - failure
VOS_STATUS_SUCCESS success
---------------------------------------------------------------------------*/
-eHalStatus sme_AbortMacScan(tHalHandle hHal, tANI_U8 sessionId)
+eHalStatus sme_AbortMacScan(tHalHandle hHal, tANI_U8 sessionId,
+ eCsrAbortReason reason)
{
eHalStatus status;
tpAniSirGlobal pMac = PMAC_STRUCT( hHal );
@@ -6935,7 +6937,7 @@ eHalStatus sme_AbortMacScan(tHalHandle hHal, tANI_U8 sessionId)
status = sme_AcquireGlobalLock( &pMac->sme );
if ( HAL_STATUS_SUCCESS( status ) )
{
- status = csrScanAbortMacScan(pMac, sessionId);
+ status = csrScanAbortMacScan(pMac, sessionId, reason);
sme_ReleaseGlobalLock( &pMac->sme );
}
diff --git a/CORE/VOSS/src/vos_api.c b/CORE/VOSS/src/vos_api.c
index 9efc09040c90..299cd34c4473 100644
--- a/CORE/VOSS/src/vos_api.c
+++ b/CORE/VOSS/src/vos_api.c
@@ -2219,7 +2219,7 @@ void vos_abort_mac_scan(v_U8_t sessionId)
return;
}
- hdd_abort_mac_scan(pHddCtx, sessionId);
+ hdd_abort_mac_scan(pHddCtx, sessionId, eCSR_SCAN_ABORT_DEFAULT);
return;
}
/*---------------------------------------------------------------------------