提交 e140343a 编写于 作者: G Guojia Liao 提交者: Yang Yingliang

net: hns3: add support for dumping MAC umv counter in debugfs

driver inclusion
category: bugfix
bugzilla: NA
CVE: NA

-------------------------------------

This patch adds support of dumping MAC umv counter in debugfs,
which will be helpful for debugging.
Signed-off-by: NGuojia Liao <liaoguojia@huawei.com>
Reviewed-by: NPeng Li <lipeng321@huawei.com>
Reviewed-by: NWeiwei Deng <dengweiwei@huawei.com>
Reviewed-by: NZhaohui Zhong <zhongzhaohui@huawei.com>
Reviewed-by: NJunxin Chen <chenjunxin1@huawei.com>
Signed-off-by: NShengzui You <youshengzui@huawei.com>
Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
上级 45cebb7f
...@@ -265,6 +265,7 @@ static void hns3_dbg_help(struct hnae3_handle *h) ...@@ -265,6 +265,7 @@ static void hns3_dbg_help(struct hnae3_handle *h)
dev_info(&h->pdev->dev, "dump qs shaper [qs id]\n"); dev_info(&h->pdev->dev, "dump qs shaper [qs id]\n");
dev_info(&h->pdev->dev, "dump uc mac list <func id>\n"); dev_info(&h->pdev->dev, "dump uc mac list <func id>\n");
dev_info(&h->pdev->dev, "dump mc mac list <func id>\n"); dev_info(&h->pdev->dev, "dump mc mac list <func id>\n");
dev_info(&h->pdev->dev, "dump umv info <func id>\n");
dev_info(&h->pdev->dev, "dump vlan filter <func id>\n"); dev_info(&h->pdev->dev, "dump vlan filter <func id>\n");
memset(printf_buf, 0, HNS3_DBG_BUF_LEN); memset(printf_buf, 0, HNS3_DBG_BUF_LEN);
......
...@@ -1615,6 +1615,49 @@ static int hclge_dbg_dump_mac_list(struct hclge_dev *hdev, const char *cmd_buf, ...@@ -1615,6 +1615,49 @@ static int hclge_dbg_dump_mac_list(struct hclge_dev *hdev, const char *cmd_buf,
return 0; return 0;
} }
static void hclge_dbg_dump_umv_info(struct hclge_dev *hdev, const char *cmd_buf)
{
struct hclge_vport *vport;
u16 share_umv_size;
u16 priv_umv_size;
u16 used_umv_num;
u32 vf_id;
int ret;
ret = kstrtouint(cmd_buf, 0, &vf_id);
if (ret < 0) {
dev_err(&hdev->pdev->dev,
"failed to dump umv info: bad command string, ret = %d\n",
ret);
return;
}
if (vf_id >= hdev->num_alloc_vport) {
dev_err(&hdev->pdev->dev,
"vf id(%u) is out of range(0-%u)\n", vf_id,
hdev->num_alloc_vport - 1);
return;
}
vport = &hdev->vport[vf_id];
mutex_lock(&hdev->vport_lock);
priv_umv_size = hdev->priv_umv_size;
share_umv_size = hdev->share_umv_size;
used_umv_num = vport->used_umv_num;
mutex_unlock(&hdev->vport_lock);
dev_info(&hdev->pdev->dev, "num_alloc_vport : %u\n",
hdev->num_alloc_vport);
dev_info(&hdev->pdev->dev, "max_umv_size : %u\n",
hdev->max_umv_size);
dev_info(&hdev->pdev->dev, "wanted_umv_size : %u\n",
hdev->wanted_umv_size);
dev_info(&hdev->pdev->dev, "priv_umv_size : %u\n", priv_umv_size);
dev_info(&hdev->pdev->dev, "share_umv_size : %u\n", share_umv_size);
dev_info(&hdev->pdev->dev, "vport(%u) used_umv_num : %u\n",
vf_id, used_umv_num);
}
static void hclge_dbg_dump_vlan_filter(struct hclge_dev *hdev, static void hclge_dbg_dump_vlan_filter(struct hclge_dev *hdev,
const char *cmd_buf) const char *cmd_buf)
{ {
...@@ -1672,6 +1715,7 @@ int hclge_dbg_run_cmd(struct hnae3_handle *handle, const char *cmd_buf) ...@@ -1672,6 +1715,7 @@ int hclge_dbg_run_cmd(struct hnae3_handle *handle, const char *cmd_buf)
#define DUMP_REG "dump reg" #define DUMP_REG "dump reg"
#define DUMP_LOOPBACK "dump loopback" #define DUMP_LOOPBACK "dump loopback"
#define DUMP_VLAN_FILTER "dump vlan filter" #define DUMP_VLAN_FILTER "dump vlan filter"
#define DUMP_UMV_INFO "dump umv info"
struct hclge_vport *vport = hclge_get_vport(handle); struct hclge_vport *vport = hclge_get_vport(handle);
struct hclge_dev *hdev = vport->back; struct hclge_dev *hdev = vport->back;
...@@ -1725,6 +1769,9 @@ int hclge_dbg_run_cmd(struct hnae3_handle *handle, const char *cmd_buf) ...@@ -1725,6 +1769,9 @@ int hclge_dbg_run_cmd(struct hnae3_handle *handle, const char *cmd_buf)
strlen(DUMP_VLAN_FILTER)) == 0) { strlen(DUMP_VLAN_FILTER)) == 0) {
hclge_dbg_dump_vlan_filter(hdev, hclge_dbg_dump_vlan_filter(hdev,
&cmd_buf[sizeof(DUMP_VLAN_FILTER)]); &cmd_buf[sizeof(DUMP_VLAN_FILTER)]);
} else if (strncmp(cmd_buf, DUMP_UMV_INFO,
strlen(DUMP_UMV_INFO)) == 0) {
hclge_dbg_dump_umv_info(hdev, &cmd_buf[sizeof(DUMP_UMV_INFO)]);
} else { } else {
dev_info(&hdev->pdev->dev, "unknown command\n"); dev_info(&hdev->pdev->dev, "unknown command\n");
return -EINVAL; return -EINVAL;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册