diff --git a/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_pro/perf_5g/perf_5g_handover_service.cpp b/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_pro/perf_5g/perf_5g_handover_service.cpp index 93606b403e98efd2caa721826d8c2804c935da11..78fd82140470fba010cb8b71bd472be103309369 100644 --- a/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_pro/perf_5g/perf_5g_handover_service.cpp +++ b/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_pro/perf_5g/perf_5g_handover_service.cpp @@ -30,6 +30,7 @@ #include "network_black_list_manager.h" #include "wifi_common_util.h" #include "wifi_global_func.h" +#include "wifi_config_center.h" namespace OHOS { namespace Wifi { @@ -68,11 +69,12 @@ void Perf5gHandoverService::OnConnected(WifiLinkedInfo &wifiLinkedInfo) isHwItCustNetwork = pEnhanceService->IsHwItCustNetwork(wifiDeviceConfig); } bool isEnterprise = DualBandUtils::IsEnterprise(wifiDeviceConfig); - connectedAp_->canNotPerf = isEnterprise || wifiLinkedInfo.isDataRestricted || - wifiDeviceConfig.keyMgmt == KEY_MGMT_NONE || isHwItCustNetwork; + connectedAp_->canNotPerf = isEnterprise || wifiLinkedInfo.isDataRestricted || isHwItCustNetwork || + wifiDeviceConfig.keyMgmt == KEY_MGMT_NONE || wifiLinkedInfo.wifiLinkType == WifiLinkType::WIFI7_EMLSR; WIFI_LOGI("OnConnected, canNotPerf:isEnterprise(%{public}d),isPortal(%{public}d),isDataRestricted(%{public}d)," - "openNet(%{public}d),isHwItCustNetwork(%{public}d)", isEnterprise, wifiDeviceConfig.isPortal, - wifiLinkedInfo.isDataRestricted, wifiDeviceConfig.keyMgmt == KEY_MGMT_NONE, isHwItCustNetwork); + "openNet(%{public}d),isHwItCustNetwork(%{public}d), isEMSR(%{public}d)", isEnterprise, + wifiDeviceConfig.isPortal, wifiLinkedInfo.isDataRestricted, wifiDeviceConfig.keyMgmt == KEY_MGMT_NONE, + isHwItCustNetwork, wifiLinkedInfo.wifiLinkType == WifiLinkType::WIFI7_EMLSR); ApConnectionInfo apConnectionInfo(wifiLinkedInfo.bssid); apConnectionInfo.SetConnectedTime(std::chrono::steady_clock::now()); connectedAp_->apInfo.apConnectionInfo = apConnectionInfo; @@ -183,6 +185,12 @@ std::string Perf5gHandoverService::Switch5g() } void Perf5gHandoverService::ScanResultUpdated(std::vector &scanInfos) { + WifiLinkedInfo linkedInfo; + WifiConfigCenter::GetInstance().GetLinkedInfo(linkedInfo); + if (linkedInfo.wifiLinkType == WifiLinkType::WIFI7_EMLSR) { + WIFI_LOGI("ScanResultUpdated, EMSR is ongoing, not pref5g"); + return; + } if (connectedAp_ == nullptr || connectedAp_->canNotPerf) { return; }