ソースを参照

qcacld-3.0: Do not BUG_ON, when recovery is started by FW assert

Host driver should avoid BUG_ON, when recovery is
in progress due to firmware assert.
Change the sequence in cds trigger recovery
function to avoid BUG_ON

Change-Id: Ibcce592caf4c4099a9cf3e124c5d2b70134116a3
CRs-Fixed: 2165972
Kabilan Kannan 7 年 前
コミット
973744ade7
1 ファイル変更11 行追加6 行削除
  1. 11 6
      core/cds/src/cds_api.c

+ 11 - 6
core/cds/src/cds_api.c

@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012-2017 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012-2018 The Linux Foundation. All rights reserved.
  *
  * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
  *
@@ -1885,14 +1885,13 @@ static void cds_trigger_recovery_work(void *param)
 	qdf_runtime_lock_t rtl;
 	qdf_device_t qdf;
 
-	if (!cds_is_self_recovery_enabled()) {
-		cds_err("Recovery is not enabled");
-		QDF_BUG(0);
+	if (cds_is_driver_recovering()) {
+		cds_err("Recovery in progress; ignoring recovery trigger");
 		return;
 	}
 
-	if (cds_is_driver_recovering() || cds_is_driver_in_bad_state()) {
-		cds_err("Recovery in progress; ignoring recovery trigger");
+	if (cds_is_driver_in_bad_state()) {
+		cds_err("Driver is in bad state; ignoring recovery trigger");
 		return;
 	}
 
@@ -1901,6 +1900,12 @@ static void cds_trigger_recovery_work(void *param)
 		return;
 	}
 
+	if (!cds_is_self_recovery_enabled()) {
+		cds_err("Recovery is not enabled");
+		QDF_BUG(0);
+		return;
+	}
+
 	qdf = cds_get_context(QDF_MODULE_ID_QDF_DEVICE);
 	if (!qdf) {
 		cds_err("Qdf context is null");