소스 검색

qcacld-3.0: Add logic to restore info when SSR happens

Add logic to check whether the context is SSR or not. If
SSR happens, restore the info which is set by vendor command.

Change-Id: I09da91e68f79e8c28f4474fb6ebe3b56dbe41da2
CRs-Fixed: 3554415
Paul Zhang 1 년 전
부모
커밋
b49fc71fdc
1개의 변경된 파일16개의 추가작업 그리고 0개의 파일을 삭제
  1. 16 0
      core/hdd/src/wlan_hdd_main.c

+ 16 - 0
core/hdd/src/wlan_hdd_main.c

@@ -14256,6 +14256,21 @@ QDF_STATUS hdd_adapter_check_duplicate_session(struct hdd_adapter *adapter)
 }
 #endif
 
+static void hdd_restore_info_for_ssr(struct hdd_adapter *adapter)
+{
+	struct hdd_context *hdd_ctx = WLAN_HDD_GET_CTX(adapter);
+
+	if (cds_is_driver_recovering()) {
+		/* ssr happens, recover the info */
+		hdd_set_vdev_phy_mode(adapter, adapter->user_phy_mode);
+		wlan_mlme_restore_user_set_link_num(hdd_ctx->psoc);
+	} else {
+		/* intf down/up happens, reset default info */
+		hdd_set_vdev_phy_mode(adapter, QCA_WLAN_VENDOR_PHY_MODE_AUTO);
+		wlan_mlme_clear_user_set_link_num(hdd_ctx->psoc);
+	}
+}
+
 int hdd_start_station_adapter(struct hdd_adapter *adapter)
 {
 	QDF_STATUS status;
@@ -14315,6 +14330,7 @@ int hdd_start_station_adapter(struct hdd_adapter *adapter)
 		wlan_hdd_init_multi_client_info_table(adapter);
 
 	hdd_adapter_set_wlm_client_latency_level(adapter);
+	hdd_restore_info_for_ssr(adapter);
 
 	hdd_exit();
 	return 0;