LCOV - code coverage report
Current view: top level - base_comm/resources/hccp/rdma_service/ctx - dl_net_function.c (source / functions) Coverage Total Hit
Test: coverage.info Lines: 82.6 % 46 38
Test Date: 2026-08-18 17:47:01 Functions: 84.6 % 13 11

            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 "hccp_dl.h"
      12              : #include "net_adapt_u_api.h"
      13              : #include "dl_net_function.h"
      14              : 
      15              : void *gNetApiHandle = NULL;
      16              : #ifndef CA_CONFIG_LLT
      17              : struct RsNetOps gNetOps;
      18              : #else
      19              : struct RsNetOps gNetOps = {
      20              :     .rsNetAdaptInit = net_adapt_init,
      21              :     .rsNetAdaptUninit = net_adapt_uninit,
      22              :     .rsNetAllocJfcId = net_alloc_jfc_id,
      23              :     .rsNetFreeJfcId = net_free_jfc_id,
      24              :     .rsNetAllocJettyId = net_alloc_jetty_id,
      25              :     .rsNetFreeJettyId = net_free_jetty_id,
      26              :     .rsNetGetCqeBaseAddr = net_get_cqe_base_addr,
      27              :     .rsNetGetApiVersion = net_get_api_version,
      28              : };
      29              : #endif
      30              : 
      31            1 : int RsNetAdaptApiInit(void)
      32              : {
      33              : #ifndef CA_CONFIG_LLT
      34              :     gNetOps.rsNetAdaptInit = (int (*)(void))HccpDlsym(gNetApiHandle, "net_adapt_init");
      35              :     DL_API_RET_IS_NULL_CHECK(gNetOps.rsNetAdaptInit, "net_adapt_init");
      36              : 
      37              :     gNetOps.rsNetAdaptUninit = (void (*)(void))HccpDlsym(gNetApiHandle, "net_adapt_uninit");
      38              :     DL_API_RET_IS_NULL_CHECK(gNetOps.rsNetAdaptUninit, "net_adapt_uninit");
      39              : 
      40              :     gNetOps.rsNetAllocJfcId = (int (*)(const char *udevName, unsigned int jfcMode,
      41              :         unsigned int *jfcId))HccpDlsym(gNetApiHandle, "net_alloc_jfc_id");
      42              :     DL_API_RET_IS_NULL_CHECK(gNetOps.rsNetAllocJfcId, "net_alloc_jfc_id");
      43              : 
      44              :     gNetOps.rsNetFreeJfcId = (int (*)(const char *udevName, unsigned int jfcMode,
      45              :         unsigned int jfcId))HccpDlsym(gNetApiHandle, "net_free_jfc_id");
      46              :     DL_API_RET_IS_NULL_CHECK(gNetOps.rsNetFreeJfcId, "net_free_jfc_id");
      47              : 
      48              :     gNetOps.rsNetAllocJettyId = (int (*)(const char *udevName, unsigned int jettyMode,
      49              :         unsigned int *jettyId))HccpDlsym(gNetApiHandle, "net_alloc_jetty_id");
      50              :     DL_API_RET_IS_NULL_CHECK(gNetOps.rsNetAllocJettyId, "net_alloc_jetty_id");
      51              : 
      52              :     gNetOps.rsNetFreeJettyId = (int (*)(const char *udevName, unsigned int jettyMode,
      53              :         unsigned int jettyId))HccpDlsym(gNetApiHandle, "net_free_jetty_id");
      54              :     DL_API_RET_IS_NULL_CHECK(gNetOps.rsNetFreeJettyId, "net_free_jetty_id");
      55              : 
      56              :     gNetOps.rsNetGetCqeBaseAddr = (unsigned long long (*)(unsigned int dieId))HccpDlsym(gNetApiHandle,
      57              :         "net_get_cqe_base_addr");
      58              :     DL_API_RET_IS_NULL_CHECK(gNetOps.rsNetGetCqeBaseAddr, "net_get_cqe_base_addr");
      59              : 
      60              :     gNetOps.rsNetGetApiVersion = (unsigned int (*)(void))HccpDlsym(gNetApiHandle, "net_get_api_version");
      61              : #endif
      62            1 :     return 0;
      63              : }
      64              : 
      65            2 : int RsOpenNetSo(void)
      66              : {
      67              : #ifndef CA_CONFIG_LLT
      68              :     if (gNetApiHandle == NULL) {
      69              :         gNetApiHandle = HccpDlopen("libnet_adapt.so", RTLD_NOW);
      70              :         return ((gNetApiHandle != NULL) ? 0 : -EINVAL);
      71              :     }
      72              :     hccp_run_info("net_adapt_api HccpDlopen again!");
      73              : #endif
      74            2 :     return 0;
      75              : }
      76              : 
      77            2 : void RsCloseNetSo(void)
      78              : {
      79              : #ifndef CA_CONFIG_LLT
      80              :     if (gNetApiHandle != NULL) {
      81              :         (void)HccpDlclose(gNetApiHandle);
      82              :         gNetApiHandle = NULL;
      83              :     }
      84              : #endif
      85            2 :     return;
      86              : }
      87              : 
      88            2 : int RsNetApiInit(void)
      89              : {
      90              :     int ret;
      91              : 
      92            2 :     ret = RsOpenNetSo();
      93            2 :     CHK_PRT_RETURN(ret != 0,
      94              :         hccp_err("rs_open_net_so[libnet_adapt.so] failed! ret=[%d],"
      95              :                  "please check network adapter driver has been installed",
      96              :             ret),
      97              :         ret);
      98              : 
      99            2 :     ret = RsNetAdaptApiInit();
     100            2 :     if (ret != 0) {
     101            1 :         hccp_err("rs_net_adapt_api_init failed! ret=[%d]", ret);
     102            1 :         RsCloseNetSo();
     103            1 :         return ret;
     104              :     }
     105            1 :     return 0;
     106              : }
     107              : 
     108            1 : void RsNetApiDeinit(void)
     109              : {
     110            1 :     RsCloseNetSo();
     111            1 :     return;
     112              : }
     113              : 
     114            0 : int RsNetAdaptInit(void)
     115              : {
     116            0 :     if (gNetApiHandle == NULL || gNetOps.rsNetAdaptInit == NULL) {
     117              : #ifndef CA_CONFIG_LLT
     118              :         hccp_err("g_net_api_handle is NULL or rs_net_adapt_init is NULL");
     119              :         return -EINVAL;
     120              : #endif
     121              :     }
     122            0 :     return gNetOps.rsNetAdaptInit();
     123              : }
     124              : 
     125            0 : void RsNetAdaptUninit(void)
     126              : {
     127            0 :     if (gNetApiHandle == NULL || gNetOps.rsNetAdaptUninit == NULL) {
     128              : #ifndef CA_CONFIG_LLT
     129              :         hccp_err("g_net_api_handle is NULL or rs_net_adapt_uninit is NULL");
     130              :         return;
     131              : #endif
     132              :     }
     133            0 :     gNetOps.rsNetAdaptUninit();
     134            0 : }
     135              : 
     136            1 : int RsNetAllocJfcId(const char *udevName, unsigned int jfcMode, unsigned int *jfcId)
     137              : {
     138            1 :     if (gNetApiHandle == NULL || gNetOps.rsNetAllocJfcId == NULL) {
     139              : #ifndef CA_CONFIG_LLT
     140              :         hccp_err("g_net_api_handle is NULL or rs_net_alloc_jfc_id is NULL");
     141              :         return -EINVAL;
     142              : #endif
     143              :     }
     144            1 :     return gNetOps.rsNetAllocJfcId(udevName, jfcMode, jfcId);
     145              : }
     146              : 
     147            1 : int RsNetFreeJfcId(const char *udevName, unsigned int jfcMode, unsigned int jfcId)
     148              : {
     149            1 :     if (gNetApiHandle == NULL || gNetOps.rsNetFreeJfcId == NULL) {
     150              : #ifndef CA_CONFIG_LLT
     151              :         hccp_err("g_net_api_handle is NULL or rs_net_free_jfc_id is NULL");
     152              :         return -EINVAL;
     153              : #endif
     154              :     }
     155            1 :     return gNetOps.rsNetFreeJfcId(udevName, jfcMode, jfcId);
     156              : }
     157              : 
     158            1 : int RsNetAllocJettyId(const char *udevName, unsigned int jettyMode, unsigned int *jettyId)
     159              : {
     160            1 :     if (gNetApiHandle == NULL || gNetOps.rsNetAllocJettyId == NULL) {
     161              : #ifndef CA_CONFIG_LLT
     162              :         hccp_err("g_net_api_handle is NULL or rs_net_alloc_jetty_id is NULL");
     163              :         return -EINVAL;
     164              : #endif
     165              :     }
     166            1 :     return gNetOps.rsNetAllocJettyId(udevName, jettyMode, jettyId);
     167              : }
     168              : 
     169            1 : int RsNetFreeJettyId(const char *udevName, unsigned int jettyMode, unsigned int jettyId)
     170              : {
     171            1 :     if (gNetApiHandle == NULL || gNetOps.rsNetFreeJettyId == NULL) {
     172              : #ifndef CA_CONFIG_LLT
     173              :         hccp_err("g_net_api_handle is NULL or rs_net_free_jetty_id is NULL");
     174              :         return -EINVAL;
     175              : #endif
     176              :     }
     177            1 :     return gNetOps.rsNetFreeJettyId(udevName, jettyMode, jettyId);
     178              : }
     179              : 
     180            1 : int RsNetGetCqeBaseAddr(unsigned int dieId, unsigned long long *cqeBaseAddr)
     181              : {
     182            1 :     if (gNetApiHandle == NULL || gNetOps.rsNetGetCqeBaseAddr == NULL) {
     183              : #ifndef CA_CONFIG_LLT
     184              :         hccp_err("g_net_api_handle is NULL or rs_net_get_cqe_base_addr is NULL");
     185              :         return -EINVAL;
     186              : #endif
     187              :     }
     188            1 :     CHK_PRT_RETURN(cqeBaseAddr == NULL, hccp_err("cqe_base_addr is null, dieId:%u", dieId), -EINVAL);
     189            1 :     *cqeBaseAddr = gNetOps.rsNetGetCqeBaseAddr(dieId);
     190            1 :     return 0;
     191              : }
     192              : 
     193            5 : unsigned int RsNetGetApiVersion(void)
     194              : {
     195            5 :     if (gNetApiHandle == NULL || gNetOps.rsNetGetApiVersion == NULL) {
     196            5 :         return 0;
     197              :     }
     198              : 
     199            0 :     return gNetOps.rsNetGetApiVersion();
     200              : }
        

Generated by: LCOV version 2.0-1