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];//预留字段,暂未使用 }; 注意: |
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 |
处理结果:
|
异常处理
无。
约束说明
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); …