From 96891c25e793a7d36301fb3d1cf33acf63f2a19f Mon Sep 17 00:00:00 2001 From: Naman Padhiar Date: Mon, 8 Feb 2021 15:00:10 +0530 Subject: [PATCH] icnss2: Avoid qmi register/unregister in case of qmi failure During server arrive icnss driver exchanges qmi messages with wlan fw. When any qmi message failure is happening, icnss driver is releasing qmi handle and registering it. This qmi un-registration is leading to a server exit event get scheduled. Ideally, when fw goes down, server exit should come from qmi side. So, with this change avoid calling qmi handle release if any qmi message send fail happens. Change-Id: I003b10f312b071f516bdb135a287d5516f4ab52a Signed-off-by: Naman Padhiar --- drivers/soc/qcom/icnss2/main.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/drivers/soc/qcom/icnss2/main.c b/drivers/soc/qcom/icnss2/main.c index d58c2582cc70..21b582cc0d1c 100644 --- a/drivers/soc/qcom/icnss2/main.c +++ b/drivers/soc/qcom/icnss2/main.c @@ -573,44 +573,44 @@ static int icnss_driver_event_server_arrive(struct icnss_priv *priv, goto qmi_registered; } ignore_assert = true; - goto clear_server; + goto fail; } if (priv->device_id == WCN6750_DEVICE_ID) { ret = wlfw_host_cap_send_sync(priv); if (ret < 0) - goto clear_server; + goto fail; } if (priv->device_id == ADRASTEA_DEVICE_ID) { if (!priv->msa_va) { icnss_pr_err("Invalid MSA address\n"); ret = -EINVAL; - goto clear_server; + goto fail; } ret = wlfw_msa_mem_info_send_sync_msg(priv); if (ret < 0) { ignore_assert = true; - goto clear_server; + goto fail; } ret = wlfw_msa_ready_send_sync_msg(priv); if (ret < 0) { ignore_assert = true; - goto clear_server; + goto fail; } } ret = wlfw_cap_send_sync_msg(priv); if (ret < 0) { ignore_assert = true; - goto clear_server; + goto fail; } ret = icnss_hw_power_on(priv); if (ret) - goto clear_server; + goto fail; if (priv->device_id == WCN6750_DEVICE_ID) { ret = wlfw_device_info_send_msg(priv); @@ -656,8 +656,6 @@ static int icnss_driver_event_server_arrive(struct icnss_priv *priv, device_info_failure: icnss_hw_power_off(priv); -clear_server: - icnss_clear_server(priv); fail: ICNSS_ASSERT(ignore_assert); qmi_registered: