diff options
| author | Deepak Dhamdhere <ddhamdhe@codeaurora.org> | 2017-02-12 12:50:42 -0800 |
|---|---|---|
| committer | qcabuildsw <qcabuildsw@localhost> | 2017-02-17 09:02:44 -0800 |
| commit | 5d6a5727ca09caf73236dae4612ce43aec170a4e (patch) | |
| tree | f91f0ce67ee22f4acfb9c26583fd546601342ad9 | |
| parent | e24e5bb5d5041a23d1442a7235d5528654cb253b (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.c | 2 | ||||
| -rw-r--r-- | core/wma/src/wma_data.c | 10 |
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); |
