提交 34df857d 编写于 作者: J Jian Shen 提交者: Zheng Zengkai

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

mainline inclusion
from mainline-master
commit d59daf6a
category: feature
bugzilla: 173966
CVE: NA

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d59daf6a4ceedf342f349e94f1300e1598213252

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

This patch adds support of dumping MAC umv counter in debugfs,
which will be helpful for debugging.

The display style is below:
$ cat umv_info
num_alloc_vport  : 2
max_umv_size     : 256
wanted_umv_size  : 256
priv_umv_size    : 85
share_umv_size   : 86
vport(0) used_umv_num : 1
vport(1) used_umv_num : 1
Signed-off-by: NJian Shen <shenjian15@huawei.com>
Signed-off-by: NGuangbin Huang <huangguangbin2@huawei.com>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
Reviewed-by: NYongxin Li <liyongxin1@huawei.com>
Signed-off-by: NJunxin Chen <chenjunxin1@huawei.com>
Signed-off-by: NZheng Zengkai <zhengzengkai@huawei.com>
上级 fab18309
...@@ -292,6 +292,7 @@ enum hnae3_dbg_cmd { ...@@ -292,6 +292,7 @@ enum hnae3_dbg_cmd {
HNAE3_DBG_CMD_FD_COUNTER, HNAE3_DBG_CMD_FD_COUNTER,
HNAE3_DBG_CMD_MAC_TNL_STATUS, HNAE3_DBG_CMD_MAC_TNL_STATUS,
HNAE3_DBG_CMD_SERV_INFO, HNAE3_DBG_CMD_SERV_INFO,
HNAE3_DBG_CMD_UMV_INFO,
HNAE3_DBG_CMD_UNKNOWN, HNAE3_DBG_CMD_UNKNOWN,
}; };
......
...@@ -330,6 +330,13 @@ static struct hns3_dbg_cmd_info hns3_dbg_cmd[] = { ...@@ -330,6 +330,13 @@ static struct hns3_dbg_cmd_info hns3_dbg_cmd[] = {
.buf_len = HNS3_DBG_READ_LEN, .buf_len = HNS3_DBG_READ_LEN,
.init = hns3_dbg_common_file_init, .init = hns3_dbg_common_file_init,
}, },
{
.name = "umv_info",
.cmd = HNAE3_DBG_CMD_UMV_INFO,
.dentry = HNS3_DBG_DENTRY_COMMON,
.buf_len = HNS3_DBG_READ_LEN,
.init = hns3_dbg_common_file_init,
},
}; };
static struct hns3_dbg_cap_info hns3_dbg_cap[] = { static struct hns3_dbg_cap_info hns3_dbg_cap[] = {
......
...@@ -1927,6 +1927,36 @@ static void hclge_dbg_dump_mac_list(struct hclge_dev *hdev, char *buf, int len, ...@@ -1927,6 +1927,36 @@ static void hclge_dbg_dump_mac_list(struct hclge_dev *hdev, char *buf, int len,
} }
} }
static int hclge_dbg_dump_umv_info(struct hclge_dev *hdev, char *buf, int len)
{
u8 func_num = pci_num_vf(hdev->pdev) + 1;
struct hclge_vport *vport;
int pos = 0;
u8 i;
pos += scnprintf(buf, len, "num_alloc_vport : %u\n",
hdev->num_alloc_vport);
pos += scnprintf(buf + pos, len - pos, "max_umv_size : %u\n",
hdev->max_umv_size);
pos += scnprintf(buf + pos, len - pos, "wanted_umv_size : %u\n",
hdev->wanted_umv_size);
pos += scnprintf(buf + pos, len - pos, "priv_umv_size : %u\n",
hdev->priv_umv_size);
mutex_lock(&hdev->vport_lock);
pos += scnprintf(buf + pos, len - pos, "share_umv_size : %u\n",
hdev->share_umv_size);
for (i = 0; i < func_num; i++) {
vport = &hdev->vport[i];
pos += scnprintf(buf + pos, len - pos,
"vport(%u) used_umv_num : %u\n",
i, vport->used_umv_num);
}
mutex_unlock(&hdev->vport_lock);
return 0;
}
static int hclge_get_vlan_rx_offload_cfg(struct hclge_dev *hdev, u8 vf_id, static int hclge_get_vlan_rx_offload_cfg(struct hclge_dev *hdev, u8 vf_id,
struct hclge_dbg_vlan_cfg *vlan_cfg) struct hclge_dbg_vlan_cfg *vlan_cfg)
{ {
...@@ -2412,6 +2442,10 @@ static const struct hclge_dbg_func hclge_dbg_cmd_func[] = { ...@@ -2412,6 +2442,10 @@ static const struct hclge_dbg_func hclge_dbg_cmd_func[] = {
.cmd = HNAE3_DBG_CMD_FD_COUNTER, .cmd = HNAE3_DBG_CMD_FD_COUNTER,
.dbg_dump = hclge_dbg_dump_fd_counter, .dbg_dump = hclge_dbg_dump_fd_counter,
}, },
{
.cmd = HNAE3_DBG_CMD_UMV_INFO,
.dbg_dump = hclge_dbg_dump_umv_info,
},
}; };
int hclge_dbg_read_cmd(struct hnae3_handle *handle, enum hnae3_dbg_cmd cmd, int hclge_dbg_read_cmd(struct hnae3_handle *handle, enum hnae3_dbg_cmd cmd,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册