From 9e973e9fb615006ee3eadc126f7d69323002951d Mon Sep 17 00:00:00 2001 From: Yue Ma Date: Thu, 15 Oct 2020 20:20:27 -0700 Subject: [PATCH] cnss2: Wait for RDDM if device is already in bad state When invoke cnss_force_collect_rddm(), if device is already in bad state, wait till dump collection is completed. Change-Id: Ic3d907bd512bb8ca99f88baf7a8d38f0c00cfe64 Signed-off-by: Yue Ma --- drivers/net/wireless/cnss2/main.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/drivers/net/wireless/cnss2/main.c b/drivers/net/wireless/cnss2/main.c index 949db0e3786c..0b0dcde01abb 100644 --- a/drivers/net/wireless/cnss2/main.c +++ b/drivers/net/wireless/cnss2/main.c @@ -1321,13 +1321,13 @@ int cnss_force_collect_rddm(struct device *dev) } if (cnss_bus_is_device_down(plat_priv)) { - cnss_pr_info("Device is already in bad state, ignore force collect rddm\n"); - return 0; + cnss_pr_info("Device is already in bad state, wait to collect rddm\n"); + goto wait_rddm; } if (test_bit(CNSS_DRIVER_RECOVERY, &plat_priv->driver_state)) { - cnss_pr_info("Recovery is already in progress, ignore forced collect rddm\n"); - return 0; + cnss_pr_info("Recovery is already in progress, wait to collect rddm\n"); + goto wait_rddm; } if (test_bit(CNSS_DRIVER_LOADING, &plat_priv->driver_state) || @@ -1342,6 +1342,7 @@ int cnss_force_collect_rddm(struct device *dev) if (ret) return ret; +wait_rddm: reinit_completion(&plat_priv->rddm_complete); ret = wait_for_completion_timeout (&plat_priv->rddm_complete,