summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYun Park <yunp@codeaurora.org>2017-01-18 17:27:02 -0800
committerqcabuildsw <qcabuildsw@localhost>2017-01-20 21:57:53 -0800
commitf726ad4eede8d6bfac11be70c886a6d0888c5349 (patch)
tree5b8b78e83de33150151802fea47d1050e299be8d
parent03575eeade7e4358f497c9bc6cd6d788d07ad69e (diff)
qcacld-3.0: Correct return value when ol_txrx_pdev_post_attach fails
When ol_txrx_pdev_post_attach fails, the return values are not correctly set, and this could cause several issues. Fix to assign return values correcly. Change-Id: I43fb97bbdb10e019e02bf289f5b4995461eb75db CRs-Fixed: 1113222
-rw-r--r--core/dp/txrx/ol_txrx.c19
1 files changed, 15 insertions, 4 deletions
diff --git a/core/dp/txrx/ol_txrx.c b/core/dp/txrx/ol_txrx.c
index c4a5c692076e..521f79ae11e1 100644
--- a/core/dp/txrx/ol_txrx.c
+++ b/core/dp/txrx/ol_txrx.c
@@ -1149,9 +1149,11 @@ ol_txrx_pdev_post_attach(ol_txrx_pdev_handle pdev)
goto ol_attach_fail;
/* Attach micro controller data path offload resource */
- if (ol_cfg_ipa_uc_offload_enabled(pdev->ctrl_pdev))
- if (htt_ipa_uc_attach(pdev->htt_pdev))
+ if (ol_cfg_ipa_uc_offload_enabled(pdev->ctrl_pdev)) {
+ ret = htt_ipa_uc_attach(pdev->htt_pdev);
+ if (ret)
goto uc_attach_fail;
+ }
/* Calculate single element reserved size power of 2 */
pdev->tx_desc.desc_reserved_size = qdf_get_pwr2(desc_element_size);
@@ -1161,6 +1163,7 @@ ol_txrx_pdev_post_attach(ol_txrx_pdev_handle pdev)
(NULL == pdev->tx_desc.desc_pages.cacheable_pages)) {
QDF_TRACE(QDF_MODULE_ID_TXRX, QDF_TRACE_LEVEL_ERROR,
"Page alloc fail");
+ ret = -ENOMEM;
goto page_alloc_fail;
}
desc_per_page = pdev->tx_desc.desc_pages.num_element_per_page;
@@ -1207,6 +1210,7 @@ ol_txrx_pdev_post_attach(ol_txrx_pdev_handle pdev)
"%s: failed to alloc HTT tx desc (%d of %d)",
__func__, i, desc_pool_size);
fail_idx = i;
+ ret = -ENOMEM;
goto desc_alloc_fail;
}
@@ -1262,6 +1266,7 @@ ol_txrx_pdev_post_attach(ol_txrx_pdev_handle pdev)
QDF_TRACE(QDF_MODULE_ID_TXRX, QDF_TRACE_LEVEL_ERROR,
"%s Invalid standard frame type: %d",
__func__, pdev->frame_format);
+ ret = -EINVAL;
goto control_init_fail;
}
@@ -1330,6 +1335,7 @@ ol_txrx_pdev_post_attach(ol_txrx_pdev_handle pdev)
"Invalid std frame type; [en/de]cap: f:%x t:%x r:%x",
pdev->frame_format,
pdev->target_tx_tran_caps, pdev->target_rx_tran_caps);
+ ret = -EINVAL;
goto control_init_fail;
}
#endif
@@ -1380,6 +1386,7 @@ ol_txrx_pdev_post_attach(ol_txrx_pdev_handle pdev)
QDF_TRACE_LEVEL_ERROR,
"%s: %s", __func__, TRACESTR01);
#undef TRACESTR01
+ ret = -EINVAL;
goto control_init_fail;
}
} else {
@@ -1408,11 +1415,15 @@ ol_txrx_pdev_post_attach(ol_txrx_pdev_handle pdev)
qdf_spinlock_create(&pdev->peer_map_unmap_lock);
OL_TXRX_PEER_STATS_MUTEX_INIT(pdev);
- if (OL_RX_REORDER_TRACE_ATTACH(pdev) != A_OK)
+ if (OL_RX_REORDER_TRACE_ATTACH(pdev) != A_OK) {
+ ret = -ENOMEM;
goto reorder_trace_attach_fail;
+ }
- if (OL_RX_PN_TRACE_ATTACH(pdev) != A_OK)
+ if (OL_RX_PN_TRACE_ATTACH(pdev) != A_OK) {
+ ret = -ENOMEM;
goto pn_trace_attach_fail;
+ }
#ifdef PERE_IP_HDR_ALIGNMENT_WAR
pdev->host_80211_enable = ol_scn_host_80211_enable_get(pdev->ctrl_pdev);