소스 검색

cnss2: Properly handle Secure HW feature API error

There are scenarios where APIs to get HW secure mode fails
due to feature not supported. Handle the error gracefully
for such cases.

Change-Id: Iace96f21dbbcd87ddb94bf4546a0fca3b3868995
CRs-fixed: 3241447
Naman Padhiar 3 년 전
부모
커밋
2a23792d48
1개의 변경된 파일12개의 추가작업 그리고 1개의 파일을 삭제
  1. 12 1
      cnss2/main.c

+ 12 - 1
cnss2/main.c

@@ -41,6 +41,8 @@
 #define HW_STATE_UID 0x108
 #define HW_OP_GET_STATE 1
 #define HW_WIFI_UID 0x508
+#define FEATURE_NOT_SUPPORTED 12
+#define PERIPHERAL_NOT_FOUND 10
 #endif
 
 #define CNSS_DUMP_FORMAT_VER		0x11
@@ -3679,6 +3681,10 @@ int cnss_wlan_hw_disable_check(struct cnss_plat_data *plat_priv)
 	ret = IClientEnv_open(client_env, HW_STATE_UID, &app_object);
 	if (ret) {
 		cnss_pr_dbg("Failed to get app_object, ret: %d\n",  ret);
+		if (ret == FEATURE_NOT_SUPPORTED) {
+			ret = 0; /* Do not Assert */
+			cnss_pr_dbg("Secure HW feature not supported\n");
+		}
 		goto exit_release_clientenv;
 	}
 
@@ -3688,8 +3694,13 @@ int cnss_wlan_hw_disable_check(struct cnss_plat_data *plat_priv)
 			    ObjectCounts_pack(1, 1, 0, 0));
 
 	cnss_pr_dbg("SMC invoke ret: %d state: %d\n", ret, state);
-	if (ret)
+	if (ret) {
+		if (ret == PERIPHERAL_NOT_FOUND) {
+			ret = 0; /* Do not Assert */
+			cnss_pr_dbg("Secure HW mode is not updated. Peripheral not found\n");
+		}
 		goto exit_release_app_obj;
+	}
 
 	if (state == 1)
 		set_bit(CNSS_WLAN_HW_DISABLED,