diff options
| author | Dasari Srinivas <dasaris@qti.qualcomm.com> | 2014-04-10 18:49:10 +0530 |
|---|---|---|
| committer | Akash Patel <c_akashp@qca.qualcomm.com> | 2014-04-17 16:45:57 -0700 |
| commit | 56fee69191489a38f08dfd48e3987853fadf2d24 (patch) | |
| tree | eddaabb75676ef8b5567b8d5684136d63a18d6ca | |
| parent | f6ac0e102fe48fa3e8441f0db8a1f0c9c805f01b (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.h | 3 | ||||
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_cfg80211.c | 14 | ||||
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_hostapd.c | 3 | ||||
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_main.c | 8 | ||||
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_scan.c | 5 | ||||
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_wext.c | 3 | ||||
| -rw-r--r-- | CORE/SME/inc/csrApi.h | 10 | ||||
| -rw-r--r-- | CORE/SME/inc/sme_Api.h | 4 | ||||
| -rw-r--r-- | CORE/SME/src/csr/csrApiRoam.c | 4 | ||||
| -rw-r--r-- | CORE/SME/src/csr/csrApiScan.c | 5 | ||||
| -rw-r--r-- | CORE/SME/src/csr/csrInsideApi.h | 3 | ||||
| -rw-r--r-- | CORE/SME/src/csr/csrNeighborRoam.c | 3 | ||||
| -rw-r--r-- | CORE/SME/src/p2p/p2p_Api.c | 4 | ||||
| -rw-r--r-- | CORE/SME/src/sme_common/sme_Api.c | 6 | ||||
| -rw-r--r-- | CORE/VOSS/src/vos_api.c | 2 |
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; } /*--------------------------------------------------------------------------- |
