소스 검색

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 6 년 전
부모
커밋
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 */