提交 6f10989a 编写于 作者: C chenjunxin 提交者: Xie XiuQi

net: hns3: add interface for event injection

driver inclusion
category: feature
bugzilla: NA
CVE: NA

This patch provides an interface for abnormal testing.
Signed-off-by: Nchenjunxin <chenjunxin1@huawei.com>
Reviewed-by: Ndengweiwei <dengweiwei@huawei.com>
Reviewed-by: Nliyongxin1 <liyongxin1@huawei.com>
Reviewed-by: Nzhongzhaohui <zhongzhaohui@huawei.com>
Reviewed-by: NYang Yingliang <yangyingliang@huawei.com>
Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
上级 22521cf7
......@@ -831,6 +831,7 @@ struct drv_module_handle driv_module_cmd_handle[] = {
{MAC_LOOP_CFG, hns3_test_mac_loop_cfg},
{DFX_INFO_CMD, hns3_test_get_dfx_info},
{DFX_READ_CMD, hns3_test_read_dfx_info},
{EVENT_INJECTION_CMD, hns3_test_event_injection},
{SEND_PKT, hns3_test_send_pkt},
{RX_PRIV_BUFF_WL_CFG, hns3_test_rx_priv_buff_wl_cfg},
{RX_COMMON_THRD_CFG, hns3_test_common_thrd_cfg},
......
......@@ -39,7 +39,8 @@ enum driver_cmd_type {
MAC_LOOP_CFG = 200,
DFX_INFO_CMD = 250,
DFX_READ_CMD = 251,
DFX_READ_CMD,
EVENT_INJECTION_CMD,
SEND_PKT = 300,
RECV_PKT,
......
......@@ -111,7 +111,8 @@ int hns3_test_get_dfx_info(struct hns3_nic_priv *net_priv,
reg_info.is_read = true;
ret = hns3_test_operate_nic_regs(hdev, &reg_info);
if (ret) {
pr_err("read chip%d's work mode failed!\n", chip_id);
dev_err(&hdev->pdev->dev,
"read chip%d's work mode failed!\n", chip_id);
return ret;
}
out_info->work_mode = reg_info.value;
......@@ -120,7 +121,7 @@ int hns3_test_get_dfx_info(struct hns3_nic_priv *net_priv,
reg_info.is_read = true;
ret = hns3_test_operate_nic_regs(hdev, &reg_info);
if (ret) {
pr_err("read mac's map info failed!\n");
dev_err(&hdev->pdev->dev, "read mac's map info failed!\n");
return ret;
}
for (i = 0; i < HNS3_TEST_MAX_MAC_NUMBER; i++)
......@@ -163,3 +164,36 @@ int hns3_test_read_dfx_info(struct hns3_nic_priv *net_priv,
return 0;
}
int hns3_test_event_injection(struct hns3_nic_priv *net_priv,
void *buf_in, u16 in_size,
void *buf_out, u16 *out_size)
{
struct hns3_test_event_param *in_info;
struct hns3_test_reg_param reg_info;
struct hnae3_handle *handle;
struct hclge_vport *vport;
struct hclge_dev *hdev;
int ret;
handle = net_priv->ae_handle;
vport = hclge_get_vport(handle);
hdev = vport->back;
in_info = (struct hns3_test_event_param *)buf_in;
reg_info.addr = in_info->addr;
reg_info.bit_width = 32;
reg_info.is_read = false;
reg_info.value = in_info->value;
dev_info(&hdev->pdev->dev,
"Injection event: %s start.\n", in_info->event_name);
ret = hns3_test_operate_nic_regs(hdev, &reg_info);
if (ret) {
dev_err(&hdev->pdev->dev, "Injection event error!\n");
return ret;
}
dev_info(&hdev->pdev->dev,
"Injection event: %s end.\n", in_info->event_name);
return ret;
}
......@@ -22,6 +22,14 @@ struct hns3_test_dfx_param {
u8 func_id;
};
#define HNS3_TEST_EVENT_NAME_LEN 32
struct hns3_test_event_param {
u8 event_name[HNS3_TEST_EVENT_NAME_LEN];
u64 value;
u64 addr;
};
#define HNS3_READ_INFO_FLAG 0x1
#define HNS3_READ_REGS_FLAG 0x2
......@@ -33,5 +41,8 @@ int hns3_test_get_dfx_info(struct hns3_nic_priv *net_priv,
int hns3_test_read_dfx_info(struct hns3_nic_priv *net_priv,
void *buf_in, u16 in_size,
void *buf_out, u16 *out_size);
int hns3_test_event_injection(struct hns3_nic_priv *net_priv,
void *buf_in, u16 in_size,
void *buf_out, u16 *out_size);
#endif
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册