summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDeepak Dhamdhere <ddhamdhe@codeaurora.org>2017-02-12 12:50:42 -0800
committerqcabuildsw <qcabuildsw@localhost>2017-02-17 09:02:44 -0800
commit5d6a5727ca09caf73236dae4612ce43aec170a4e (patch)
treef91f0ce67ee22f4acfb9c26583fd546601342ad9
parente24e5bb5d5041a23d1442a7235d5528654cb253b (diff)
qcacld-3.0: Fix error handling in peer creation
Return error instead of QDF_BUG(0) in ol_txrx_peer_attach() when it times out on duplicate peer detection. Peer unmap events from firmware may take more than 500 ms timeout observed by this routine. wma_create_peer() should return error status on failure to create peer. CRs-Fixed: 2004665 Change-Id: I8368c6320139f97584bd1647f1806a695d4a5929
-rw-r--r--core/dp/txrx/ol_txrx.c2
-rw-r--r--core/wma/src/wma_data.c10
2 files changed, 10 insertions, 2 deletions
diff --git a/core/dp/txrx/ol_txrx.c b/core/dp/txrx/ol_txrx.c
index 5b3979dd0021..41a0c223da9b 100644
--- a/core/dp/txrx/ol_txrx.c
+++ b/core/dp/txrx/ol_txrx.c
@@ -2276,7 +2276,7 @@ ol_txrx_peer_attach(ol_txrx_vdev_handle vdev, uint8_t *peer_mac_addr)
vdev->wait_on_peer_id, (int) rc);
/* Added for debugging only */
wma_peer_debug_dump();
- QDF_BUG(0);
+ QDF_ASSERT(0);
vdev->wait_on_peer_id = OL_TXRX_INVALID_LOCAL_PEER_ID;
return NULL;
}
diff --git a/core/wma/src/wma_data.c b/core/wma/src/wma_data.c
index 079378dbef78..8f5af679dd22 100644
--- a/core/wma/src/wma_data.c
+++ b/core/wma/src/wma_data.c
@@ -1177,6 +1177,7 @@ void wma_set_linkstate(tp_wma_handle wma, tpLinkStateParams params)
(params->state != eSIR_LINK_DOWN_STATE)) {
WMA_LOGD("%s: unsupported link state %d",
__func__, params->state);
+ params->status = false;
goto out;
}
@@ -1184,6 +1185,7 @@ void wma_set_linkstate(tp_wma_handle wma, tpLinkStateParams params)
if (NULL == pdev) {
WMA_LOGE("%s: Unable to get TXRX context", __func__);
+ params->status = false;
goto out;
}
@@ -1191,11 +1193,13 @@ void wma_set_linkstate(tp_wma_handle wma, tpLinkStateParams params)
if (!vdev) {
WMA_LOGP("%s: vdev not found for addr: %pM",
__func__, params->selfMacAddr);
+ params->status = false;
goto out;
}
if (wma_is_vdev_in_ap_mode(wma, vdev_id)) {
WMA_LOGD("%s: Ignoring set link req in ap mode", __func__);
+ params->status = false;
goto out;
}
@@ -1205,8 +1209,10 @@ void wma_set_linkstate(tp_wma_handle wma, tpLinkStateParams params)
status = wma_create_peer(wma, pdev, vdev, params->bssid,
WMI_PEER_TYPE_DEFAULT, vdev_id,
roam_synch_in_progress);
- if (status != QDF_STATUS_SUCCESS)
+ if (status != QDF_STATUS_SUCCESS) {
WMA_LOGE("%s: Unable to create peer", __func__);
+ params->status = false;
+ }
if (roam_synch_in_progress)
return;
} else {
@@ -1223,11 +1229,13 @@ void wma_set_linkstate(tp_wma_handle wma, tpLinkStateParams params)
if (!msg) {
WMA_LOGP(FL("Failed to fill vdev request for vdev_id %d"),
vdev_id);
+ params->status = false;
status = QDF_STATUS_E_NOMEM;
}
if (wmi_unified_vdev_stop_send(wma->wmi_handle, vdev_id)) {
WMA_LOGP("%s: %d Failed to send vdev stop vdev %d",
__func__, __LINE__, vdev_id);
+ params->status = false;
} else {
WMA_LOGP("%s: %d vdev stop sent vdev %d",
__func__, __LINE__, vdev_id);