LCOV - code coverage report
Current view: top level - base_comm/resources/hccp/rdma_agent/adapter - ra_adp_ping.c (source / functions) Coverage Total Hit
Test: coverage.info Lines: 100.0 % 63 63
Test Date: 2026-07-28 12:11:00 Functions: 100.0 % 7 7

            Line data    Source code
       1              : /**
       2              :  * Copyright (c) 2026 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 "ra_hdc_ping.h"
      12              : #include "ra_hdc.h"
      13              : #include "ra_adp.h"
      14              : #include "rs_ping.h"
      15              : #include "ra_adp_ping.h"
      16              : 
      17              : struct RsPingOps gPingOps = {
      18              :     .pingInit = RsPingInit,
      19              :     .pingTargetAdd = RsPingTargetAdd,
      20              :     .pingTaskStart = RsPingTaskStart,
      21              :     .pingGetResults = RsPingGetResults,
      22              :     .pingTaskStop = RsPingTaskStop,
      23              :     .pingTargetDel = RsPingTargetDel,
      24              :     .pingDeinit = RsPingDeinit,
      25              : };
      26              : 
      27            2 : int RaRsPingInit(char *inBuf, char *outBuf, int *outLen, int *opResult, int rcvBufLen)
      28              : {
      29            2 :     union OpPingInitData *pingDataOut = (union OpPingInitData *)(outBuf + sizeof(struct MsgHead));
      30            2 :     union OpPingInitData *pingData = (union OpPingInitData *)(inBuf + sizeof(struct MsgHead));
      31              : 
      32              :     HCCP_CHECK_PARAM_LEN_RET_HOST(sizeof(union OpPingInitData), sizeof(struct MsgHead), rcvBufLen, opResult);
      33              : 
      34            2 :     *opResult = gPingOps.pingInit(&pingData->txData.attr, &pingDataOut->rxData.info,
      35              :         &pingDataOut->rxData.devIndex);
      36            2 :     if (*opResult != 0) {
      37            1 :         hccp_err("ping_init failed ret[%d].", *opResult);
      38              :     }
      39              :     // only negative return value will be parsed
      40            2 :     if (*opResult > 0) {
      41            1 :         *opResult = -*opResult;
      42              :     }
      43              : 
      44            2 :     return 0;
      45              : }
      46              : 
      47            2 : int RaRsPingTargetAdd(char *inBuf, char *outBuf, int *outLen, int *opResult, int rcvBufLen)
      48              : {
      49            2 :     union OpPingAddData *pingData = (union OpPingAddData *)(inBuf + sizeof(struct MsgHead));
      50              : 
      51              :     HCCP_CHECK_PARAM_LEN_RET_HOST(sizeof(union OpPingAddData), sizeof(struct MsgHead), rcvBufLen, opResult);
      52              : 
      53            2 :     *opResult = gPingOps.pingTargetAdd(&pingData->txData.rdev, &pingData->txData.target);
      54            2 :     if (*opResult != 0) {
      55            1 :         hccp_err("ping_target_add failed ret[%d].", *opResult);
      56              :     }
      57              :     // only negative return value will be parsed
      58            2 :     if (*opResult > 0) {
      59            1 :         *opResult = -*opResult;
      60              :     }
      61              : 
      62            2 :     return 0;
      63              : }
      64              : 
      65            2 : int RaRsPingTaskStart(char *inBuf, char *outBuf, int *outLen, int *opResult, int rcvBufLen)
      66              : {
      67            2 :     union OpPingStartData *pingData = (union OpPingStartData *)(inBuf + sizeof(struct MsgHead));
      68              : 
      69              :     HCCP_CHECK_PARAM_LEN_RET_HOST(sizeof(union OpPingStartData), sizeof(struct MsgHead), rcvBufLen, opResult);
      70              : 
      71            2 :     *opResult = gPingOps.pingTaskStart(&pingData->txData.rdev, &pingData->txData.attr);
      72            2 :     if (*opResult != 0) {
      73            1 :         hccp_err("ping_task_start failed ret[%d].", *opResult);
      74              :     }
      75              :     // only negative return value will be parsed
      76            2 :     if (*opResult > 0) {
      77            1 :         *opResult = -*opResult;
      78              :     }
      79              : 
      80            2 :     return 0;
      81              : }
      82              : 
      83            3 : int RaRsPingGetResults(char *inBuf, char *outBuf, int *outLen, int *opResult, int rcvBufLen)
      84              : {
      85            3 :     union OpPingResultsData *pingDataOut = (union OpPingResultsData *)(outBuf + sizeof(struct MsgHead));
      86            3 :     union OpPingResultsData *pingData = (union OpPingResultsData *)(inBuf + sizeof(struct MsgHead));
      87              : 
      88              :     HCCP_CHECK_PARAM_LEN_RET_HOST(sizeof(union OpPingResultsData), sizeof(struct MsgHead), rcvBufLen, opResult);
      89              :     HCCP_CHECK_PARAM_LEN_RET_HOST(pingData->txData.num, 0, RA_MAX_PING_TARGET_NUM, opResult);
      90              : 
      91            6 :     *opResult = gPingOps.pingGetResults(&pingData->txData.rdev, pingData->txData.target,
      92            3 :         &pingData->txData.num, pingDataOut->rxData.target);
      93              :     // caller needs to retry, degrade log level
      94            3 :     if (*opResult == -EAGAIN) {
      95            1 :         hccp_warn("ping_get_results unsuccessful, ret[%d].", *opResult);
      96            2 :     } else if (*opResult != 0) {
      97            1 :         hccp_err("ping_get_results failed, ret[%d].", *opResult);
      98              :     }
      99              :     // only negative return value will be parsed
     100            3 :     if (*opResult > 0) {
     101            1 :         *opResult = -*opResult;
     102            1 :         return 0;
     103              :     }
     104            2 :     pingDataOut->rxData.num = pingData->txData.num;
     105              : 
     106            2 :     return 0;
     107              : }
     108              : 
     109            2 : int RaRsPingTaskStop(char *inBuf, char *outBuf, int *outLen, int *opResult, int rcvBufLen)
     110              : {
     111            2 :     union OpPingStopData *pingData = (union OpPingStopData *)(inBuf + sizeof(struct MsgHead));
     112              : 
     113              :     HCCP_CHECK_PARAM_LEN_RET_HOST(sizeof(union OpPingStopData), sizeof(struct MsgHead), rcvBufLen, opResult);
     114              : 
     115            2 :     *opResult = gPingOps.pingTaskStop(&pingData->txData.rdev);
     116            2 :     if (*opResult != 0) {
     117            1 :         hccp_err("ping_task_stop failed ret[%d].", *opResult);
     118              :     }
     119              :     // only negative return value will be parsed
     120            2 :     if (*opResult > 0) {
     121            1 :         *opResult = -*opResult;
     122              :     }
     123              : 
     124            2 :     return 0;
     125              : }
     126              : 
     127            2 : int RaRsPingTargetDel(char *inBuf, char *outBuf, int *outLen, int *opResult, int rcvBufLen)
     128              : {
     129            2 :     union OpPingDelData *pingData = (union OpPingDelData *)(inBuf + sizeof(struct MsgHead));
     130              : 
     131              :     HCCP_CHECK_PARAM_LEN_RET_HOST(sizeof(union OpPingDelData), sizeof(struct MsgHead), rcvBufLen, opResult);
     132              :     HCCP_CHECK_PARAM_LEN_RET_HOST(pingData->txData.num, 0, RA_MAX_PING_TARGET_NUM, opResult);
     133              : 
     134            2 :     *opResult = gPingOps.pingTargetDel(&pingData->txData.rdev, pingData->txData.target,
     135              :         &pingData->txData.num);
     136            2 :     if (*opResult != 0) {
     137            1 :         hccp_err("ping_target_del failed ret[%d].", *opResult);
     138              :     }
     139              :     // only negative return value will be parsed
     140            2 :     if (*opResult > 0) {
     141            1 :         *opResult = -*opResult;
     142              :     }
     143              : 
     144            2 :     return 0;
     145              : }
     146              : 
     147            2 : int RaRsPingDeinit(char *inBuf, char *outBuf, int *outLen, int *opResult, int rcvBufLen)
     148              : {
     149            2 :     union OpPingDeinitData *pingData = (union OpPingDeinitData *)(inBuf + sizeof(struct MsgHead));
     150              : 
     151              :     HCCP_CHECK_PARAM_LEN_RET_HOST(sizeof(union OpPingDeinitData), sizeof(struct MsgHead), rcvBufLen, opResult);
     152              : 
     153            2 :     *opResult = gPingOps.pingDeinit(&pingData->txData.rdev);
     154            2 :     if (*opResult != 0) {
     155            1 :         hccp_err("ping_deinit failed ret[%d].", *opResult);
     156              :     }
     157              :     // only negative return value will be parsed
     158            2 :     if (*opResult > 0) {
     159            1 :         *opResult = -*opResult;
     160              :     }
     161              : 
     162            2 :     return 0;
     163              : }
        

Generated by: LCOV version 2.0-1