diff options
author | Varun Wadekar <vwadekar@nvidia.com> | 2018-06-20 16:12:50 -0700 |
---|---|---|
committer | Varun Wadekar <vwadekar@nvidia.com> | 2020-02-20 09:25:45 -0800 |
commit | 21368290b451b347da56e5aba6ac1bc621e3009b (patch) | |
tree | 03559487662f2e2034767c8375b1717d82e81e91 /plat/nvidia | |
parent | 6f47acdb3bd8784b8c2fbdeb399ebefb496807a7 (diff) | |
download | platform_external_arm-trusted-firmware-21368290b451b347da56e5aba6ac1bc621e3009b.tar.gz platform_external_arm-trusted-firmware-21368290b451b347da56e5aba6ac1bc621e3009b.tar.bz2 platform_external_arm-trusted-firmware-21368290b451b347da56e5aba6ac1bc621e3009b.zip |
Tegra: bpmp_ipc: improve cyclomatic complexity
Code complexity is a good indication of maintainability versus
testability of a piece of software.
ISO26262 introduces the following thresholds:
complexity < 10 is accepted
10 <= complexity < 20 has to be justified
complexity >= 20 cannot be accepted
Rationale is that number of test cases to fully test a piece of
software can (depending on the coverage metrics) grow exponentially
with the number of branches in the software.
This patch removes redundant conditionals from 'ipc_send_req_atomic'
handler to reduce the McCabe Cyclomatic Complexity for this function
Change-Id: I20fef79a771301e1c824aea72a45ff83f97591d5
Signed-off-by: Varun Wadekar <vwadekar@nvidia.com>
Diffstat (limited to 'plat/nvidia')
-rw-r--r-- | plat/nvidia/tegra/common/drivers/bpmp_ipc/intf.c | 55 |
1 files changed, 25 insertions, 30 deletions
diff --git a/plat/nvidia/tegra/common/drivers/bpmp_ipc/intf.c b/plat/nvidia/tegra/common/drivers/bpmp_ipc/intf.c index eaf96751c..2e90d2547 100644 --- a/plat/nvidia/tegra/common/drivers/bpmp_ipc/intf.c +++ b/plat/nvidia/tegra/common/drivers/bpmp_ipc/intf.c @@ -175,44 +175,39 @@ static int32_t tegra_bpmp_ipc_send_req_atomic(uint32_t mrq, void *p_out, if ((p_out == NULL) || (size_out > IVC_DATA_SZ_BYTES) || (frame == NULL)) { ERROR("%s: invalid parameters, exiting\n", __func__); - ret = -EINVAL; + return -EINVAL; } - if (ret == 0) { - - /* prepare the command frame */ - frame->mrq = mrq; - frame->flags = FLAG_DO_ACK; - p_fdata = frame->data; - (void)memcpy(p_fdata, p_out, (size_t)size_out); + /* prepare the command frame */ + frame->mrq = mrq; + frame->flags = FLAG_DO_ACK; + p_fdata = frame->data; + (void)memcpy(p_fdata, p_out, (size_t)size_out); - /* signal the slave */ - tegra_bpmp_signal_slave(); + /* signal the slave */ + tegra_bpmp_signal_slave(); - /* wait for slave to ack */ - ret = tegra_bpmp_wait_for_slave_ack(); - if (ret != 0) { - ERROR("failed waiting for the slave to ack\n"); - } + /* wait for slave to ack */ + ret = tegra_bpmp_wait_for_slave_ack(); + if (ret < 0) { + ERROR("%s: wait for slave failed (%d)\n", __func__, ret); + return ret; + } - /* retrieve the response frame */ - if ((size_in <= IVC_DATA_SZ_BYTES) && (p_in != NULL) && - (ret == 0)) { + /* retrieve the response frame */ + if ((size_in <= IVC_DATA_SZ_BYTES) && (p_in != NULL)) { - f_in = tegra_bpmp_get_cur_in_frame(); - if (f_in != NULL) { - ERROR("Failed to get next input frame!\n"); - } else { - (void)memcpy(p_in, p_fdata, (size_t)size_in); - } + f_in = tegra_bpmp_get_cur_in_frame(); + if (f_in != NULL) { + ERROR("Failed to get next input frame!\n"); + } else { + (void)memcpy(p_in, p_fdata, (size_t)size_in); } + } - if (ret == 0) { - ret = tegra_bpmp_free_master(); - if (ret != 0) { - ERROR("Failed to free master\n"); - } - } + ret = tegra_bpmp_free_master(); + if (ret < 0) { + ERROR("%s: free master failed (%d)\n", __func__, ret); } return ret; |