From 6f10989a34f5d06830539ebaa151ed685e9ee9ca Mon Sep 17 00:00:00 2001 From: chenjunxin Date: Mon, 16 Sep 2019 23:31:43 +0800 Subject: [PATCH] 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: chenjunxin Reviewed-by: dengweiwei Reviewed-by: liyongxin1 Reviewed-by: zhongzhaohui Reviewed-by: Yang Yingliang Signed-off-by: Yang Yingliang --- .../hisilicon/hns3/hns3_cae/hns3_nictool.c | 1 + .../hisilicon/hns3/hns3_cae/hns3_nictool.h | 3 +- .../hisilicon/hns3/hns3_cae/hns3_priv_dfx.c | 38 ++++++++++++++++++- .../hisilicon/hns3/hns3_cae/hns3_priv_dfx.h | 11 ++++++ 4 files changed, 50 insertions(+), 3 deletions(-) diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3_cae/hns3_nictool.c b/drivers/net/ethernet/hisilicon/hns3/hns3_cae/hns3_nictool.c index 049fd191bc6b..dab49f0285da 100644 --- a/drivers/net/ethernet/hisilicon/hns3/hns3_cae/hns3_nictool.c +++ b/drivers/net/ethernet/hisilicon/hns3/hns3_cae/hns3_nictool.c @@ -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}, diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3_cae/hns3_nictool.h b/drivers/net/ethernet/hisilicon/hns3/hns3_cae/hns3_nictool.h index 699848d6f874..4eb2158cb0bb 100644 --- a/drivers/net/ethernet/hisilicon/hns3/hns3_cae/hns3_nictool.h +++ b/drivers/net/ethernet/hisilicon/hns3/hns3_cae/hns3_nictool.h @@ -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, diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3_cae/hns3_priv_dfx.c b/drivers/net/ethernet/hisilicon/hns3/hns3_cae/hns3_priv_dfx.c index 0e28166d6bbe..a99e84ed33cf 100644 --- a/drivers/net/ethernet/hisilicon/hns3/hns3_cae/hns3_priv_dfx.c +++ b/drivers/net/ethernet/hisilicon/hns3/hns3_cae/hns3_priv_dfx.c @@ -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, ®_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, ®_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, ®_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; +} diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3_cae/hns3_priv_dfx.h b/drivers/net/ethernet/hisilicon/hns3/hns3_cae/hns3_priv_dfx.h index f9b211e95432..863c26c475c2 100644 --- a/drivers/net/ethernet/hisilicon/hns3/hns3_cae/hns3_priv_dfx.h +++ b/drivers/net/ethernet/hisilicon/hns3/hns3_cae/hns3_priv_dfx.h @@ -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 -- GitLab