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

Generated by: LCOV version 2.0-1