Просмотр исходного кода

qcacld-3.0: Stop the psoc idle timer during the con mode change

During con mode change the driver will perform pld idle shutdown
and restart and if the interface change timer is running which
results in duplicate of idle stop queueing.

To resolve this, add psoc idle timer stop during the con mode change.

Change-Id: I7befefd2cb996d6b3e0b4ee92ecb15e615d33e30
CRs-Fixed: 2491208
Varuneshwar Petlozu 5 лет назад
Родитель
Сommit
dbe255ce1e
1 измененных файлов с 11 добавлено и 7 удалено
  1. 11 7
      core/hdd/src/wlan_hdd_main.c

+ 11 - 7
core/hdd/src/wlan_hdd_main.c

@@ -14019,16 +14019,20 @@ static int __hdd_driver_mode_change(struct hdd_context *hdd_ctx,
 		return 0;
 	}
 
+	hdd_psoc_idle_timer_stop(hdd_ctx);
+
 	/* ensure adapters are stopped */
 	hdd_stop_present_mode(hdd_ctx, curr_mode);
 
-	is_mode_change_psoc_idle_shutdown = true;
-	errno = pld_idle_shutdown(hdd_ctx->parent_dev,
-				  hdd_mode_change_psoc_idle_shutdown);
-	if (errno) {
-		is_mode_change_psoc_idle_shutdown = false;
-		hdd_err("Stop wlan modules failed");
-		return errno;
+	if (DRIVER_MODULES_CLOSED != hdd_ctx->driver_status) {
+		is_mode_change_psoc_idle_shutdown = true;
+		errno = pld_idle_shutdown(hdd_ctx->parent_dev,
+					  hdd_mode_change_psoc_idle_shutdown);
+		if (errno) {
+			is_mode_change_psoc_idle_shutdown = false;
+			hdd_err("Stop wlan modules failed");
+			return errno;
+		}
 	}
 
 	/* Cleanup present mode before switching to new mode */