Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 96891c25 authored by Naman Padhiar's avatar Naman Padhiar Committed by Gerrit - the friendly Code Review server
Browse files

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: default avatarNaman Padhiar <npadhiar@codeaurora.org>
parent a97a28d8
Loading
Loading
Loading
Loading
+7 −9
Original line number Diff line number Diff line
@@ -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: