昇腾社区首页
中文
注册

dcmi_get_ping_info接口原型

函数原型

int dcmi_get_ping_info (int card_id, int device_id, int port_id, struct dcmi_ping_operate_info *dcmi_ping, struct dcmi_ping_reply_info *dcmi_reply)

功能说明

获取指定设备到目的地址的链路连通信息。

参数说明

参数名称

输入/输出

类型

描述

card_id

输入

int

指定NPU管理单元ID,当前实际支持的ID通过dcmi_get_card_list接口获取。

device_id

输入

int

指定设备编号,通过dcmi_get_device_id_in_card接口获取。取值范围如下:

NPU芯片:[0, device_id_max-1]。

MCU芯片:mcu_id。

port_id

输入

int

NPU设备的网口端口号,当前仅支持配置0。

dcmi_ping

输入

struct dcmi_ping_operate_info*

ping操作信息。

struct dcmi_ping_operate_info {

char dst_addr[IP_ADDR_LEN];//指定ping设备的ipv4目的地址,其中IP_ADDR_LEN为16

unsigned int sdid;//指定ping设备的sdid值。配置目的地址时,sdid和dst_addr二选一。如果两者都进行了配置,以dst_addr为准

unsigned int packet_size;//指定ping的数据包的数据大小,取值范围:1792~3000Byte。其中报文头大小为1024Byte,后续1025Byte~packet_size字段进行正确性校验,每1024Byte的字段类型分布为:0xFF(256Byte)、0x00(256Byte)、0xAA(256Byte)、0x55(256Byte)

unsigned int packet_send_num;//指定ping的数据包数量,取值范围:1~1000

unsigned int packet_interval;//指定ping的延迟发包间隔,取值范围:0~10ms,0代表收到应答后立即发送

unsigned int timeout;//指定ping的每包超时等待时间,取值范围1~20000ms,配置项暂不生效

unsigned char reserved[32];//预留字段,暂未使用

};

注意:

  • 25.0.RC1之前的版本以上参数使用时存在如下约束:

    packet_send_num* (packet_interval+timeout)<=20000ms

  • 25.0.RC1及之后的版本以上参数使用时存在如下约束:

    packet_send_num* packet_interval<=20000ms

dcmi_reply

输出

struct dcmi_ping_reply_info*

ping结果信息

struct dcmi_ping_reply_info {

char dst_addr[IP_ADDR_LEN];//ping设备的ipv4目的地址

enum dcmi_ping_result ret[DCMI_PING_PACKET_NUM_MAX];//每个数据包ping结果。其中,dcmi_ping_result枚举值包括:0(未发起ping操作);1(ping报文收发成功);2(报文发送失败);3(报文接收失败)。DCMI_PING_PACKET_NUM_MAX为1000

unsigned int total_packet_send_num;//发送计数

unsigned int total_packet_recv_num;//接收计数

long start_tv_sec[DCMI_PING_PACKET_NUM_MAX];//每包ping操作开始时间,s

long start_tv_usec[DCMI_PING_PACKET_NUM_MAX];//每包ping操作开始时间,us。s和us搭配,进行时间计算

long end_tv_sec[DCMI_PING_PACKET_NUM_MAX];//每包ping操作结束时间,s

long end_tv_usec[DCMI_PING_PACKET_NUM_MAX];//每包ping操作结束时间,us。s和us搭配,进行时间计算

};

返回值说明

类型

描述

int

处理结果:

  • 成功:返回0。
  • 失败:返回码请参见返回码

异常处理

无。

约束说明

表1 部署场景

Linux物理机

Linux物理机容器

root用户

运行用户组(非root用户)

root用户

N

N

N

调用示例

…
int ret;
int card_id = 0;
int device_id = 0;
int port_id = 0;
struct dcmi_ping_operate_info = {0};
struct dcmi_ping_reply_info = {0};
dcmi_ping_operate_info.sdid = 262146;
dcmi_ping_operate_info.packet_size = 1792;
dcmi_ping_operate_info.packet_send_num = 1000;
dcmi_ping_operate_info.packet_interval = 0;
dcmi_ping_operate_info.timeout = 20;
ret = dcmi_get_ping_info(card_id, device_id, port_id, & dcmi_ping_operate_info, &dcmi_ping_reply_info);
…