LCOV - code coverage report
Current view: top level - legacy/ascend910/platform/resource/socket - hccl_network.cc (source / functions) Coverage Total Hit
Test: coverage.info Lines: 37.6 % 245 92
Test Date: 2026-08-18 17:47:01 Functions: 66.7 % 18 12

            Line data    Source code
       1              : /**
       2              :  * Copyright (c) 2025 Huawei Technologies Co., Ltd.
       3              :  * This program is free software, you can redistribute it and/or modify it under the terms and conditions of
       4              :  * CANN Open Software License Agreement Version 2.0 (the "License").
       5              :  * Please refer to the License for details. You may not use this file except in compliance with the License.
       6              :  * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED,
       7              :  * INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
       8              :  * See LICENSE in the root of the software repository for the full text of the License.
       9              :  */
      10              : 
      11              : #include <hccl/hccl_types.h>
      12              : #include "dlhal_function.h"
      13              : #include "dlra_function.h"
      14              : #include "sal_pub.h"
      15              : #include "adapter_hccp.h"
      16              : #include "network_manager_pub.h"
      17              : #include "externalinput_pub.h"
      18              : #include "hccl_network.h"
      19              : 
      20              : namespace hccl {
      21              : HcclResult
      22          256 : NetDevContext::Init(NicType nicType, s32 devicePhyId, s32 deviceLogicId, HcclIpAddress localIp, HcclIpAddress backupIp)
      23              : {
      24          256 :     devicePhyId_ = devicePhyId;
      25          256 :     deviceLogicId_ = deviceLogicId;
      26          256 :     localIp_ = localIp;
      27          256 :     backupIp_ = backupIp;
      28          256 :     nicType_ = nicType;
      29              : 
      30          256 :     if (nicType == NicType::VNIC_TYPE || nicType == NicType::DEVICE_NIC_TYPE) {
      31          231 :         nicDeployment_ = NICDeployment::NIC_DEPLOYMENT_DEVICE;
      32              :     } else {
      33           25 :         nicDeployment_ = NICDeployment::NIC_DEPLOYMENT_HOST;
      34              :     }
      35              : 
      36          256 :     if (static_cast<s32>(devicePhyId) == HOST_DEVICE_ID) {
      37            0 :         deviceLogicId_ = 0;
      38              :     }
      39              : 
      40          256 :     if (nicDeployment_ == NICDeployment::NIC_DEPLOYMENT_HOST) {
      41           25 :         CHK_RET(NetworkManager::GetInstance(deviceLogicId_).StartHostNet(localIp, hostSocketHandle_));
      42              :     }
      43              : 
      44          256 :     return HCCL_SUCCESS;
      45              : }
      46              : 
      47            0 : HcclResult NetDevContext::GetinfoConfig(const HcclNetDevInfos* info)
      48              : {
      49            0 :     CHK_PTR_NULL(info);
      50            0 :     devicePhyId_ = info->devicePhyId;
      51            0 :     isBackup_ = info->isBackup;
      52            0 :     u32 deviceLogicId = 0;
      53            0 :     CHK_RET(hrtGetDeviceIndexByPhyId(devicePhyId_, deviceLogicId));
      54            0 :     deviceLogicId_ = deviceLogicId;
      55            0 :     CHK_RET(ConvertIP(info->addr));
      56            0 :     netDevDeployment_ = info->netdevDeployment;
      57            0 :     protoType_ = info->addr.protoType;
      58              : 
      59            0 :     HCCL_INFO("[NetDevContext][InitV2] netDevDeployment_ = [%u], protoType_ = [%u]", netDevDeployment_, protoType_);
      60            0 :     return HCCL_SUCCESS;
      61              : }
      62              : 
      63            0 : HcclResult NetDevContext::ConvertIP(const HcclAddress address)
      64              : {
      65            0 :     s32 family = AF_INET;
      66              :     HcclInAddr temp;
      67            0 :     if (address.type == HCCL_ADDR_TYPE_IP_V4) {
      68            0 :         family = AF_INET;
      69            0 :         temp.addr = address.addr;
      70            0 :     } else if (address.type == HCCL_ADDR_TYPE_IP_V6) {
      71            0 :         family = AF_INET6;
      72            0 :         temp.addr6 = address.addr6;
      73              :     } else {
      74            0 :         HCCL_ERROR(
      75              :             "[NetDevContext][InitV2]this addrType [%u] is not supported, please check the configuration.",
      76              :             address.type);
      77            0 :         return HCCL_E_PARA;
      78              :     }
      79            0 :     HcclIpAddress localIptemp(family, temp);
      80            0 :     localIp_ = localIptemp;
      81            0 :     return HCCL_SUCCESS;
      82            0 : }
      83              : 
      84              : // 初始化进程和设备
      85            0 : HcclResult NetDevContext::InitV2(const HcclNetDevInfos* info)
      86              : {
      87            0 :     CHK_PTR_NULL(info);
      88            0 :     CHK_RET(GetinfoConfig(info));
      89              :     // 需要保存新的协议类型
      90            0 :     if (netDevDeployment_ == HcclNetDevDeployment::HCCL_NETDEV_DEPLOYMENT_DEVICE) {
      91            0 :         switch (protoType_) {
      92            0 :             case HCCL_PROTO_TYPE_ROCE: {
      93            0 :                 nicType_ = NicType::DEVICE_NIC_TYPE;
      94            0 :                 nicDeployment_ = NICDeployment::NIC_DEPLOYMENT_DEVICE;
      95            0 :                 bool rdmaFlag = !GetExternalInputHcclIsTcpMode();
      96            0 :                 if (!rdmaFlag) {
      97            0 :                     HCCL_ERROR(
      98              :                         "[NetDevContext][InitV2]rdmaFlag and protoType are not equal, please check the configuration.");
      99            0 :                     return HCCL_E_PARA;
     100              :                 }
     101              :                 NetworkMode netMode;
     102            0 :                 NetworkManager::GetInstance(deviceLogicId_).GetNetworkMode(netMode);
     103              :                 NotifyTypeT notifyType;
     104            0 :                 NetworkManager::GetInstance(deviceLogicId_).GetNotifyType(notifyType);
     105            0 :                 CHK_RET(NetworkManager::GetInstance(deviceLogicId_)
     106              :                             .CreateRdmaHandle(localIp_, isBackup_, netMode, notifyType, netDevDeployment_));
     107            0 :                 CHK_RET(NetworkManager::GetInstance(deviceLogicId_).CreateNicSocketHandle(localIp_));
     108            0 :                 NetworkManager::GetInstance(deviceLogicId_).GetRdmaHandleByIpAddr(localIp_, handle_);
     109              : 
     110            0 :                 CHK_PTR_NULL(handle_);
     111            0 :                 HCCL_INFO("[NetDevContext][InitV2]Deployment is device and proto is roce");
     112            0 :                 break;
     113              :             }
     114            0 :             case HCCL_PROTO_TYPE_BUS: {
     115            0 :                 nicType_ = NicType::VNIC_TYPE;
     116            0 :                 nicDeployment_ = NICDeployment::NIC_DEPLOYMENT_DEVICE;
     117            0 :                 CHK_RET(NetworkManager::GetInstance(deviceLogicId_).CreateVnicSocketHandle(localIp_));
     118            0 :                 RaResourceInfo raResourceInfo;
     119            0 :                 NetworkManager::GetInstance(deviceLogicId_).GetRaResourceInfo(raResourceInfo);
     120            0 :                 IpSocket& sock = raResourceInfo.vnicSocketMap[localIp_];
     121            0 :                 handle_ = sock.nicSocketHandle;
     122            0 :                 CHK_PTR_NULL(handle_);
     123            0 :                 HCCL_INFO("[NetDevContext][InitV2]Deployment is device and proto is bus");
     124            0 :                 break;
     125            0 :             }
     126              : 
     127            0 :             case HCCL_PROTO_TYPE_TCP: {
     128            0 :                 nicType_ = NicType::DEVICE_NIC_TYPE;
     129            0 :                 nicDeployment_ = NICDeployment::NIC_DEPLOYMENT_DEVICE;
     130            0 :                 bool rdmaFlag = !GetExternalInputHcclIsTcpMode();
     131            0 :                 if (rdmaFlag) {
     132            0 :                     HCCL_ERROR("[NetDevContext][InitV2]rdmaFlag is ERROR, please check the configuration.");
     133            0 :                     return HCCL_E_PARA;
     134              :                 }
     135            0 :                 CHK_RET(NetworkManager::GetInstance(deviceLogicId_).CreateNicSocketHandle(localIp_));
     136            0 :                 NetworkManager::GetInstance(deviceLogicId_).GetNicHandleByIpAddr(localIp_, handle_);
     137            0 :                 CHK_PTR_NULL(handle_);
     138            0 :                 HCCL_INFO("[NetDevContext][InitV2]Deployment is device and proto is tcp");
     139            0 :                 break;
     140              :             }
     141              : 
     142            0 :             default: // 保留
     143            0 :                 HCCL_ERROR(
     144              :                     "[NetDevContext][DeinitV2]this prototype [%u] is not supported in device mode, please check the "
     145              :                     "configuration.",
     146              :                     protoType_);
     147            0 :                 return HCCL_E_NOT_SUPPORT;
     148              :         }
     149            0 :     } else if (netDevDeployment_ == HcclNetDevDeployment::HCCL_NETDEV_DEPLOYMENT_HOST) {
     150            0 :         switch (protoType_) {
     151            0 :             case HCCL_PROTO_TYPE_TCP: {
     152            0 :                 nicType_ = NicType::HOST_NIC_TYPE;
     153            0 :                 nicDeployment_ = NICDeployment::NIC_DEPLOYMENT_HOST;
     154            0 :                 CHK_RET(NetworkManager::GetInstance(deviceLogicId_).CreateHostSocketHandle(localIp_, handle_));
     155            0 :                 RaResourceInfo raResourceInfo;
     156            0 :                 NetworkManager::GetInstance(deviceLogicId_).GetRaResourceInfo(raResourceInfo);
     157            0 :                 IpSocket& sock = raResourceInfo.hostNetSocketMap[localIp_];
     158            0 :                 handle_ = sock.nicSocketHandle;
     159            0 :                 CHK_PTR_NULL(handle_);
     160            0 :                 HCCL_INFO("[NetDevContext][InitV2]Deployment is host and proto is tcp");
     161            0 :                 break;
     162            0 :             }
     163            0 :             case HCCL_PROTO_TYPE_ROCE: {
     164            0 :                 nicType_ = NicType::HOST_NIC_TYPE;
     165            0 :                 nicDeployment_ = NICDeployment::NIC_DEPLOYMENT_HOST;
     166            0 :                 NetworkMode netMode = NETWORK_PEER_ONLINE;
     167            0 :                 NotifyTypeT notifyType = NOTIFY;
     168            0 :                 CHK_RET(NetworkManager::GetInstance(deviceLogicId_)
     169              :                             .CreateRdmaHandle(localIp_, isBackup_, netMode, notifyType, netDevDeployment_));
     170            0 :                 NetworkManager::GetInstance(deviceLogicId_).GetRdmaHandleByIpAddr(localIp_, handle_);
     171            0 :                 CHK_PTR_NULL(handle_);
     172            0 :                 HCCL_INFO("[NetDevContext][InitV2]Deployment is host and proto is roce");
     173            0 :                 break;
     174              :             }
     175            0 :             default: // 保留
     176            0 :                 HCCL_ERROR(
     177              :                     "[NetDevContext][DeinitV2]this prototype [%u] is not supported in host mode, please check the "
     178              :                     "configuration.",
     179              :                     protoType_);
     180            0 :                 return HCCL_E_NOT_SUPPORT;
     181              :         }
     182              :     } else {
     183            0 :         HCCL_ERROR(
     184              :             "[NetDevContext][DeinitV2]this Deployment [%u] is not supported, please check the configuration.",
     185              :             netDevDeployment_);
     186            0 :         return HCCL_E_NOT_SUPPORT;
     187              :         // 保留
     188              :     }
     189              : 
     190            0 :     return HCCL_SUCCESS;
     191              : }
     192              : 
     193          230 : HcclResult NetDevContext::Deinit()
     194              : {
     195          230 :     if (nicDeployment_ == NICDeployment::NIC_DEPLOYMENT_HOST) {
     196           25 :         CHK_RET(NetworkManager::GetInstance(deviceLogicId_).StopHostNet(hostSocketHandle_, localIp_));
     197              :     }
     198          230 :     return HCCL_SUCCESS;
     199              : }
     200              : 
     201            0 : HcclResult NetDevContext::DeinitV2()
     202              : {
     203            0 :     if (netDevDeployment_ == HcclNetDevDeployment::HCCL_NETDEV_DEPLOYMENT_DEVICE) {
     204            0 :         switch (protoType_) {
     205            0 :             case HCCL_PROTO_TYPE_ROCE:
     206            0 :                 CHK_RET(NetworkManager::GetInstance(deviceLogicId_).StopRdmaHandle(localIp_, netDevDeployment_));
     207            0 :                 break;
     208            0 :             case HCCL_PROTO_TYPE_BUS:
     209            0 :                 CHK_RET(NetworkManager::GetInstance(deviceLogicId_).StopVnicSocketHandle(localIp_));
     210            0 :                 break;
     211            0 :             case HCCL_PROTO_TYPE_TCP:
     212            0 :                 CHK_RET(NetworkManager::GetInstance(deviceLogicId_).StopNicSocketHandle(localIp_));
     213            0 :                 break;
     214            0 :             default: // 保留
     215            0 :                 HCCL_ERROR(
     216              :                     "[NetDevContext][DeinitV2]this prototype [%u] is not supported in host mode, please check the "
     217              :                     "configuration.",
     218              :                     protoType_);
     219            0 :                 return HCCL_E_NOT_SUPPORT;
     220              :         }
     221            0 :     } else if (netDevDeployment_ == HcclNetDevDeployment::HCCL_NETDEV_DEPLOYMENT_HOST) {
     222            0 :         switch (protoType_) {
     223            0 :             case HCCL_PROTO_TYPE_TCP:
     224            0 :                 CHK_RET(NetworkManager::GetInstance(deviceLogicId_).StopHostSocketHandle(localIp_));
     225            0 :                 break;
     226            0 :             case HCCL_PROTO_TYPE_ROCE:
     227            0 :                 CHK_RET(NetworkManager::GetInstance(deviceLogicId_).StopRdmaHandle(localIp_, netDevDeployment_));
     228            0 :                 break;
     229            0 :             default: // 保留
     230            0 :                 HCCL_ERROR(
     231              :                     "[NetDevContext][DeinitV2]this prototype [%u] is not supported in device mode, please check the "
     232              :                     "configuration.",
     233              :                     protoType_);
     234            0 :                 return HCCL_E_NOT_SUPPORT;
     235              :         }
     236              :     } else {
     237            0 :         HCCL_ERROR(
     238              :             "[NetDevContext][DeinitV2]this Deployment [%u] is not supported, please check the configuration.",
     239              :             netDevDeployment_);
     240            0 :         return HCCL_E_NOT_SUPPORT;
     241              :     }
     242            0 :     return HCCL_SUCCESS;
     243              : }
     244              : 
     245           13 : void NetDevContext::SetTlsStatus(TlsStatus tlsStatus)
     246              : {
     247           13 :     tlsStatus_ = tlsStatus;
     248           13 :     HCCL_INFO("[NetDevContext][SetTlsStatus]devicePhyId[%d], set tlsStatus[%d]", devicePhyId_, tlsStatus);
     249           13 :     return;
     250              : }
     251              : 
     252           13 : void NetDevContext::SetIsNotNeedGetTlsStatus(bool isNotNeedGetTlsStatus)
     253              : {
     254           13 :     isNotNeedGetTlsStatus_ = isNotNeedGetTlsStatus;
     255           13 :     return;
     256              : }
     257              : } // namespace hccl
     258              : 
     259              : HcclResult
     260          210 : HcclNetInit(NICDeployment nicDeploy, s32 devicePhyId, s32 deviceLogicId, bool enableWhitelistFlag, bool hasBackup)
     261              : {
     262          210 :     CHK_RET(hccl::DlRaFunction::GetInstance().DlRaFunctionInit());
     263          210 :     if (nicDeploy == NICDeployment::NIC_DEPLOYMENT_DEVICE) {
     264          190 :         CHK_RET(hccl::DlHalFunction::GetInstance().DlHalFunctionInit());
     265              :         bool isHostUseDevNic;
     266          189 :         CHK_RET(IsHostUseDevNic(isHostUseDevNic));
     267          189 :         u32 tempDevicePhyId = hasBackup ? static_cast<u32>(devicePhyId) : hccl::DEFAULT_PHY_ID;
     268          189 :         HCCL_DEBUG(
     269              :             "[%s]start NetworkManager Init, deviceLogicId[%u], devicePhyId[%u], nicDeploy[%d], hasBackup[%d],"
     270              :             " tempDevicePhyId[%u]",
     271              :             __func__, deviceLogicId, devicePhyId, nicDeploy, hasBackup, tempDevicePhyId);
     272          189 :         CHK_RET(hccl::NetworkManager::GetInstance(deviceLogicId)
     273              :                     .Init(
     274              :                         NICDeployment::NIC_DEPLOYMENT_DEVICE, enableWhitelistFlag, tempDevicePhyId, isHostUseDevNic,
     275              :                         hasBackup));
     276              :     } else {
     277           21 :         CHK_RET(hccl::NetworkManager::GetInstance(deviceLogicId)
     278              :                     .Init(NICDeployment::NIC_DEPLOYMENT_HOST, enableWhitelistFlag, devicePhyId));
     279              :     }
     280              : 
     281          209 :     return HCCL_SUCCESS;
     282              : }
     283              : 
     284          203 : HcclResult HcclNetDeInit(NICDeployment nicDeploy, [[maybe_unused]] s32 devicePhyId, s32 deviceLogicId, bool hasBackup)
     285              : {
     286          203 :     CHK_RET(hccl::NetworkManager::GetInstance(deviceLogicId).DeInit(nicDeploy, false, hasBackup));
     287          202 :     return HCCL_SUCCESS;
     288              : }
     289              : 
     290          239 : HcclResult HcclNetOpenDev(
     291              :     HcclNetDevCtx* netDevCtx, NicType nicType, s32 devicePhyId, s32 deviceLogicId, hccl::HcclIpAddress localIp,
     292              :     hccl::HcclIpAddress backupIp)
     293              : {
     294          239 :     CHK_PTR_NULL(netDevCtx);
     295              : 
     296          239 :     hccl::NetDevContext* pNetDevCtx = new (std::nothrow) hccl::NetDevContext();
     297          239 :     CHK_PTR_NULL(pNetDevCtx);
     298              : 
     299          239 :     HcclResult ret = pNetDevCtx->Init(nicType, devicePhyId, deviceLogicId, localIp, backupIp);
     300          239 :     if (ret != HCCL_SUCCESS) {
     301            1 :         HCCL_ERROR("[Init][Port]Init fail. ret[%u]", ret);
     302            1 :         delete pNetDevCtx;
     303            1 :         pNetDevCtx = nullptr;
     304            1 :         return ret;
     305              :     }
     306              : 
     307          238 :     *netDevCtx = pNetDevCtx;
     308              : 
     309          238 :     return HCCL_SUCCESS;
     310              : }
     311              : 
     312          230 : void HcclNetCloseDev(HcclNetDevCtx netDevCtx)
     313              : {
     314          230 :     if (netDevCtx == nullptr) {
     315            0 :         HCCL_ERROR("[HcclNetCloseDev] netDevCtx is nullptr");
     316            0 :         return;
     317              :     }
     318          230 :     hccl::NetDevContext* pNetDevCtx = static_cast<hccl::NetDevContext*>(netDevCtx);
     319              : 
     320          230 :     HcclResult ret = pNetDevCtx->Deinit();
     321          230 :     if (ret != HCCL_SUCCESS) {
     322            0 :         HCCL_ERROR("[DeInit][Port]DeInit fail. ret[%u]", ret);
     323              :     }
     324              : 
     325          230 :     delete pNetDevCtx;
     326              : }
     327              : 
     328           87 : HcclResult HcclNetDevGetNicType(HcclNetDevCtx netDevCtx, NicType* nicType)
     329              : {
     330           87 :     CHK_PTR_NULL(netDevCtx);
     331           87 :     CHK_PTR_NULL(nicType);
     332           87 :     hccl::NetDevContext* pNetDevCtx = static_cast<hccl::NetDevContext*>(netDevCtx);
     333              : 
     334           87 :     *nicType = pNetDevCtx->GetNicType();
     335           86 :     return HCCL_SUCCESS;
     336              : }
     337              : 
     338          290 : HcclResult HcclNetDevGetLocalIp(HcclNetDevCtx netDevCtx, hccl::HcclIpAddress& localIp)
     339              : {
     340          290 :     CHK_PTR_NULL(netDevCtx);
     341          290 :     hccl::NetDevContext* pNetDevCtx = static_cast<hccl::NetDevContext*>(netDevCtx);
     342              : 
     343          290 :     localIp = pNetDevCtx->GetLocalIp();
     344          289 :     return HCCL_SUCCESS;
     345              : }
     346              : 
     347           20 : HcclResult HcclNetDevGetProtoType(HcclNetDevCtx netDevCtx, u32& proto)
     348              : {
     349           20 :     CHK_PTR_NULL(netDevCtx);
     350           20 :     hccl::NetDevContext* pNetDevCtx = static_cast<hccl::NetDevContext*>(netDevCtx);
     351              : 
     352           20 :     proto = (u32)pNetDevCtx->GetProtoType();
     353           20 :     return HCCL_SUCCESS;
     354              : }
     355              : 
     356            0 : HcclResult HcclNetDevSetProtoType(HcclNetDevCtx netDevCtx, u32 proto)
     357              : {
     358            0 :     CHK_PTR_NULL(netDevCtx);
     359            0 :     hccl::NetDevContext* pNetDevCtx = static_cast<hccl::NetDevContext*>(netDevCtx);
     360              : 
     361            0 :     pNetDevCtx->SetProtoType(proto);
     362            0 :     return HCCL_SUCCESS;
     363              : }
     364              : 
     365            0 : HcclResult HcclNetDevGetPortStatus(HcclNetDevCtx netDevCtx, bool& portStatus)
     366              : {
     367            0 :     CHK_PTR_NULL(netDevCtx);
     368            0 :     hccl::NetDevContext* pNetDevCtx = static_cast<hccl::NetDevContext*>(netDevCtx);
     369            0 :     u32 devicePhyId = static_cast<u32>(pNetDevCtx->GetPhyId());
     370            0 :     RdmaHandle rdmaHandle = nullptr;
     371              :     enum PortStatus status;
     372            0 :     CHK_RET(HrtRaRdmaGetHandle(devicePhyId, rdmaHandle));
     373            0 :     CHK_RET(hrtRaRdevGetPortStatus(rdmaHandle, &status));
     374            0 :     portStatus = (status == PORT_STATUS_ACTIVE);
     375            0 :     HCCL_RUN_INFO("[HcclNetDevGetPortStatus]devicePhysicID_[%u], portStatus_[%d]", devicePhyId, portStatus);
     376            0 :     return HCCL_SUCCESS;
     377              : }
     378              : 
     379           38 : HcclResult HcclNetDevGetTlsStatus(HcclNetDevCtx netDevCtx, TlsStatus* tlsStatus)
     380              : {
     381           38 :     CHK_PTR_NULL(netDevCtx);
     382           38 :     CHK_PTR_NULL(tlsStatus);
     383              : 
     384           38 :     hccl::NetDevContext* pNetDevCtx = static_cast<hccl::NetDevContext*>(netDevCtx);
     385           38 :     std::lock_guard<std::mutex> lock(pNetDevCtx->mu_);
     386              :     // tls开关状态多个通信域只需要查询一次,后续一直使用第一次查询结果
     387           38 :     if (pNetDevCtx->IsNotNeedGetTlsStatus()) {
     388           25 :         *tlsStatus = pNetDevCtx->GettlsStatus();
     389           25 :         return HCCL_SUCCESS;
     390              :     }
     391              : 
     392           13 :     u32 devicePhyId = static_cast<u32>(pNetDevCtx->GetPhyId());
     393           13 :     struct RaInfo raInfo = {};
     394           13 :     raInfo.mode = static_cast<int>(pNetDevCtx->GetNicDeployment());
     395           13 :     raInfo.phyId = devicePhyId;
     396           13 :     bool tlsEnable = false;
     397           13 :     HcclResult ret = HrtRaGetTlsEnable(&raInfo, &tlsEnable);
     398           13 :     if (ret == HCCL_E_NOT_SUPPORT) {
     399            0 :         pNetDevCtx->SetTlsStatus(TlsStatus::UNKNOWN);
     400           13 :     } else if (tlsEnable) {
     401            0 :         pNetDevCtx->SetTlsStatus(TlsStatus::ENABLE);
     402              :     } else {
     403           13 :         pNetDevCtx->SetTlsStatus(TlsStatus::DISABLE);
     404              :     }
     405           13 :     *tlsStatus = pNetDevCtx->GettlsStatus();
     406           13 :     pNetDevCtx->SetIsNotNeedGetTlsStatus(true);
     407           13 :     return ret;
     408           38 : }
        

Generated by: LCOV version 2.0-1