summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAmar Singhal <asinghal@qca.qualcomm.com>2014-02-12 17:21:37 -0800
committerAkash Patel <c_akashp@qca.qualcomm.com>2014-02-13 21:04:08 -0800
commit1a18dbfd279482e910681add7bdac51eb36ab753 (patch)
treeee8d167996381ad73e9e833ae1398fbc613a16bc
parent3dc05e074f405d30b6b298d6b4234b4a37b77267 (diff)
qcacld: Break up the IsLoadUnloadInProgress flag
Break up the IsLoadUnloadInProgress flag to distinguish between load and unload condition. The regulatory callback needs to be called during load sequence, whereas during unload it needs to be avoided. Change-Id: I465fa935f78084cd33597a6bef3e1dae5147059b CRs-Fixed: 614579
-rw-r--r--CORE/HDD/inc/wlan_hdd_main.h4
-rw-r--r--CORE/HDD/src/wlan_hdd_assoc.c6
-rw-r--r--CORE/HDD/src/wlan_hdd_cfg80211.c12
-rw-r--r--CORE/HDD/src/wlan_hdd_main.c12
-rw-r--r--CORE/HDD/src/wlan_hdd_p2p.c3
-rw-r--r--CORE/HDD/src/wlan_hdd_softap_tx_rx.c3
-rw-r--r--CORE/VOSS/src/vos_nvitem.c6
-rw-r--r--CORE/VOSS/src/vos_sched.c3
8 files changed, 31 insertions, 18 deletions
diff --git a/CORE/HDD/inc/wlan_hdd_main.h b/CORE/HDD/inc/wlan_hdd_main.h
index 0f741496f550..9dd34731fdfc 100644
--- a/CORE/HDD/inc/wlan_hdd_main.h
+++ b/CORE/HDD/inc/wlan_hdd_main.h
@@ -1143,7 +1143,9 @@ struct hdd_context_s
volatile v_BOOL_t isLogpInProgress;
- v_BOOL_t isLoadUnloadInProgress;
+ v_BOOL_t isLoadInProgress;
+
+ v_BOOL_t isUnloadInProgress;
/**Track whether driver has been suspended.*/
hdd_ps_state_t hdd_ps_state;
diff --git a/CORE/HDD/src/wlan_hdd_assoc.c b/CORE/HDD/src/wlan_hdd_assoc.c
index acc91cd0a868..37822428594c 100644
--- a/CORE/HDD/src/wlan_hdd_assoc.c
+++ b/CORE/HDD/src/wlan_hdd_assoc.c
@@ -704,7 +704,8 @@ static void hdd_SendAssociationEvent(struct net_device *dev,tCsrRoamInfo *pCsrRo
msg = NULL;
/*During the WLAN uninitialization,supplicant is stopped before the
driver so not sending the status of the connection to supplicant*/
- if(pHddCtx->isLoadUnloadInProgress != TRUE)
+ if ((pHddCtx->isLoadInProgress != TRUE) &&
+ (pHddCtx->isUnloadInProgress != TRUE))
{
wireless_send_event(dev, we_event, &wrqu, msg);
#ifdef FEATURE_WLAN_CCX
@@ -827,7 +828,8 @@ static eHalStatus hdd_DisConnectHandler( hdd_adapter_t *pAdapter, tCsrRoamInfo *
{
/*During the WLAN uninitialization,supplicant is stopped before the
driver so not sending the status of the connection to supplicant*/
- if(pHddCtx->isLoadUnloadInProgress != TRUE)
+ if ((pHddCtx->isLoadInProgress != TRUE) &&
+ (pHddCtx->isUnloadInProgress != TRUE))
{
hddLog(VOS_TRACE_LEVEL_INFO_HIGH,
"%s: sent disconnected event to nl80211",
diff --git a/CORE/HDD/src/wlan_hdd_cfg80211.c b/CORE/HDD/src/wlan_hdd_cfg80211.c
index 8da0c0bc3df9..93bb5d90bdeb 100644
--- a/CORE/HDD/src/wlan_hdd_cfg80211.c
+++ b/CORE/HDD/src/wlan_hdd_cfg80211.c
@@ -4414,7 +4414,8 @@ wlan_hdd_cfg80211_inform_bss_frame( hdd_adapter_t *pAdapter,
status = wlan_hdd_validate_context(pHddCtx);
/*bss_update is not allowed during wlan driver loading or unloading*/
- if (pHddCtx->isLoadUnloadInProgress)
+ if ((pHddCtx->isLoadInProgress) ||
+ (pHddCtx->isUnloadInProgress))
{
VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_ERROR,
"%s:Loading_unloading in Progress. Ignore!!!",__func__);
@@ -4609,7 +4610,8 @@ static int wlan_hdd_cfg80211_update_bss( struct wiphy *wiphy,
/*bss_update is not allowed during wlan driver loading or unloading*/
- if (pHddCtx->isLoadUnloadInProgress)
+ if ((pHddCtx->isLoadInProgress) ||
+ (pHddCtx->isUnloadInProgress))
{
VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_ERROR,
"%s:Loading_unloading in Progress. Ignore!!!",__func__);
@@ -8647,7 +8649,8 @@ static int wlan_hdd_cfg80211_sched_scan_stop(struct wiphy *wiphy,
return ret;
}
- if (pHddCtx->isLoadUnloadInProgress)
+ if ((pHddCtx->isLoadInProgress) ||
+ (pHddCtx->isUnloadInProgress))
{
VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_ERROR,
"%s: Unloading/Loading in Progress. Ignore!!!", __func__);
@@ -9806,7 +9809,8 @@ int wlan_hdd_cfg80211_resume_wlan(struct wiphy *wiphy)
return 0;
}
- if (pHddCtx->isLoadUnloadInProgress)
+ if ((pHddCtx->isLoadInProgress) ||
+ (pHddCtx->isUnloadInProgress))
{
VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_ERROR,
"%s: Unloading/Loading in Progress. Ignore!!!", __func__);
diff --git a/CORE/HDD/src/wlan_hdd_main.c b/CORE/HDD/src/wlan_hdd_main.c
index a95f46f63069..d9f982a1983a 100644
--- a/CORE/HDD/src/wlan_hdd_main.c
+++ b/CORE/HDD/src/wlan_hdd_main.c
@@ -492,7 +492,8 @@ int wlan_hdd_validate_context(hdd_context_t *pHddCtx)
return -EAGAIN;
}
- if (pHddCtx->isLoadUnloadInProgress)
+ if ((pHddCtx->isLoadInProgress) ||
+ (pHddCtx->isUnloadInProgress))
{
VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_ERROR,
"%s: Unloading/Loading in Progress. Ignore!!!", __func__);
@@ -8631,7 +8632,8 @@ void __hdd_wlan_exit(void)
msleep(1000);
}
- pHddCtx->isLoadUnloadInProgress = TRUE;
+ pHddCtx->isUnloadInProgress = TRUE;
+
vos_set_load_unload_in_progress(VOS_MODULE_ID_VOSS, TRUE);
//Do all the cleanup before deregistering the driver
@@ -9034,7 +9036,7 @@ int hdd_wlan_startup(struct device *dev, v_VOID_t *hif_sc)
pHddCtx->wiphy = wiphy;
hdd_prevent_suspend();
- pHddCtx->isLoadUnloadInProgress = TRUE;
+ pHddCtx->isLoadInProgress = TRUE;
vos_set_load_unload_in_progress(VOS_MODULE_ID_VOSS, TRUE);
@@ -9735,7 +9737,7 @@ int hdd_wlan_startup(struct device *dev, v_VOID_t *hif_sc)
mutex_init(&pHddCtx->sap_lock);
- pHddCtx->isLoadUnloadInProgress = FALSE;
+ pHddCtx->isLoadInProgress = FALSE;
#ifdef WLAN_FEATURE_HOLD_RX_WAKELOCK
/* Initialize the wake lcok */
@@ -10170,7 +10172,7 @@ static void hdd_driver_exit(void)
}
}
- pHddCtx->isLoadUnloadInProgress = TRUE;
+ pHddCtx->isUnloadInProgress = TRUE;
vos_set_load_unload_in_progress(VOS_MODULE_ID_VOSS, TRUE);
}
diff --git a/CORE/HDD/src/wlan_hdd_p2p.c b/CORE/HDD/src/wlan_hdd_p2p.c
index da878e9d1b5c..d664c00cbf45 100644
--- a/CORE/HDD/src/wlan_hdd_p2p.c
+++ b/CORE/HDD/src/wlan_hdd_p2p.c
@@ -322,7 +322,8 @@ static int wlan_hdd_request_remain_on_channel( struct wiphy *wiphy,
* wlan driver is keep on receiving the remain on channel command
* and which is resulting in crash. So not allowing any remain on
* channel requets when Load/Unload is in progress*/
- if (((hdd_context_t*)pAdapter->pHddCtx)->isLoadUnloadInProgress)
+ if (((hdd_context_t*)pAdapter->pHddCtx)->isLoadInProgress ||
+ ((hdd_context_t*)pAdapter->pHddCtx)->isUnloadInProgress)
{
hddLog( LOGE,
"%s: Wlan Load/Unload is in progress", __func__);
diff --git a/CORE/HDD/src/wlan_hdd_softap_tx_rx.c b/CORE/HDD/src/wlan_hdd_softap_tx_rx.c
index 5b2952b80d3e..e43da5bebedf 100644
--- a/CORE/HDD/src/wlan_hdd_softap_tx_rx.c
+++ b/CORE/HDD/src/wlan_hdd_softap_tx_rx.c
@@ -1911,7 +1911,8 @@ VOS_STATUS hdd_softap_stop_bss( hdd_adapter_t *pAdapter)
pHddCtx = WLAN_HDD_GET_CTX(pAdapter);
/*bss deregister is not allowed during wlan driver loading or unloading*/
- if (pHddCtx->isLoadUnloadInProgress)
+ if ((pHddCtx->isLoadInProgress) ||
+ (pHddCtx->isUnloadInProgress))
{
VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_ERROR,
"%s:Loading_unloading in Progress. Ignore!!!",__func__);
diff --git a/CORE/VOSS/src/vos_nvitem.c b/CORE/VOSS/src/vos_nvitem.c
index a0a0d072be99..8ab9f334ed03 100644
--- a/CORE/VOSS/src/vos_nvitem.c
+++ b/CORE/VOSS/src/vos_nvitem.c
@@ -3322,9 +3322,9 @@ int wlan_hdd_linux_reg_notifier(struct wiphy *wiphy,
#endif
}
- if (pHddCtx->isLoadUnloadInProgress) {
- VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
- "%s: Unloading/Loading in Progress, Ignore!!!", __func__);
+ if (pHddCtx->isUnloadInProgress) {
+ VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
+ "%s: Unloading in Progress, Ignore!!!", __func__);
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,9,0))
return;
#else
diff --git a/CORE/VOSS/src/vos_sched.c b/CORE/VOSS/src/vos_sched.c
index 15ebb26f8ffb..b028963aae86 100644
--- a/CORE/VOSS/src/vos_sched.c
+++ b/CORE/VOSS/src/vos_sched.c
@@ -2238,7 +2238,8 @@ VOS_STATUS vos_watchdog_wlan_shutdown(void)
/* Release the lock here */
spin_unlock(&gpVosWatchdogContext->wdLock);
- if (pHddCtx->isLoadUnloadInProgress)
+ if ((pHddCtx->isLoadInProgress) ||
+ (pHddCtx->isUnloadInProgress))
{
VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_FATAL,
"%s: Load/unload in Progress. Ignoring signaling Watchdog",