linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net-next 0/3] net: hns3: add new debugfs commands
@ 2021-06-24 14:36 Guangbin Huang
  2021-06-24 14:36 ` [PATCH net-next 1/3] net: hns3: add support for FD counter in debugfs Guangbin Huang
                   ` (2 more replies)
  0 siblings, 3 replies; 11+ messages in thread
From: Guangbin Huang @ 2021-06-24 14:36 UTC (permalink / raw)
  To: davem, kuba; +Cc: netdev, linux-kernel, salil.mehta, lipeng321, huangguangbin2

This series adds three new debugfs commands for the HNS3 ethernet driver.

Guangbin Huang (1):
  net: hns3: add support for link diagnosis info in debugfs

Jian Shen (2):
  net: hns3: add support for FD counter in debugfs
  net: hns3: add support for dumping MAC umv counter in debugfs

 drivers/net/ethernet/hisilicon/hns3/hnae3.h        |   3 +
 drivers/net/ethernet/hisilicon/hns3/hns3_debugfs.c |  22 ++++
 .../net/ethernet/hisilicon/hns3/hns3pf/hclge_cmd.h |  12 ++
 .../ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c | 129 +++++++++++++++++++++
 .../ethernet/hisilicon/hns3/hns3pf/hclge_main.c    |  10 +-
 5 files changed, 174 insertions(+), 2 deletions(-)

-- 
2.8.1


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH net-next 1/3] net: hns3: add support for FD counter in debugfs
  2021-06-24 14:36 [PATCH net-next 0/3] net: hns3: add new debugfs commands Guangbin Huang
@ 2021-06-24 14:36 ` Guangbin Huang
  2021-06-24 14:36 ` [PATCH net-next 2/3] net: hns3: add support for dumping MAC umv " Guangbin Huang
  2021-06-24 14:36 ` [PATCH net-next 3/3] net: hns3: add support for link diagnosis info " Guangbin Huang
  2 siblings, 0 replies; 11+ messages in thread
From: Guangbin Huang @ 2021-06-24 14:36 UTC (permalink / raw)
  To: davem, kuba; +Cc: netdev, linux-kernel, salil.mehta, lipeng321, huangguangbin2

From: Jian Shen <shenjian15@huawei.com>

Previously, the flow director counter is not enabled. To improve the
maintainability for chechking whether flow director hit or not, enable
flow director counter for each function, and add debugfs query inerface
to query the counters for each function.

The debugfs command is below:
cat fd_counter
func_id    hit_times
pf         0
vf0        0
vf1        0

Signed-off-by: Jian Shen <shenjian15@huawei.com>
Signed-off-by: Guangbin Huang <huangguangbin2@huawei.com>
---
 drivers/net/ethernet/hisilicon/hns3/hnae3.h        |  1 +
 drivers/net/ethernet/hisilicon/hns3/hns3_debugfs.c |  7 ++++
 .../net/ethernet/hisilicon/hns3/hns3pf/hclge_cmd.h |  9 ++++++
 .../ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c | 37 ++++++++++++++++++++++
 .../ethernet/hisilicon/hns3/hns3pf/hclge_main.c    | 10 ++++--
 5 files changed, 62 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/hisilicon/hns3/hnae3.h b/drivers/net/ethernet/hisilicon/hns3/hnae3.h
index 0b202f4def83..a6ef67e47c8a 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hnae3.h
+++ b/drivers/net/ethernet/hisilicon/hns3/hnae3.h
@@ -290,6 +290,7 @@ enum hnae3_dbg_cmd {
 	HNAE3_DBG_CMD_RX_QUEUE_INFO,
 	HNAE3_DBG_CMD_TX_QUEUE_INFO,
 	HNAE3_DBG_CMD_FD_TCAM,
+	HNAE3_DBG_CMD_FD_COUNTER,
 	HNAE3_DBG_CMD_MAC_TNL_STATUS,
 	HNAE3_DBG_CMD_SERV_INFO,
 	HNAE3_DBG_CMD_UNKNOWN,
diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3_debugfs.c b/drivers/net/ethernet/hisilicon/hns3/hns3_debugfs.c
index 34b6cd904a1a..b72fdb94df63 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hns3_debugfs.c
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3_debugfs.c
@@ -323,6 +323,13 @@ static struct hns3_dbg_cmd_info hns3_dbg_cmd[] = {
 		.buf_len = HNS3_DBG_READ_LEN,
 		.init = hns3_dbg_common_file_init,
 	},
+	{
+		.name = "fd_counter",
+		.cmd = HNAE3_DBG_CMD_FD_COUNTER,
+		.dentry = HNS3_DBG_DENTRY_FD,
+		.buf_len = HNS3_DBG_READ_LEN,
+		.init = hns3_dbg_common_file_init,
+	},
 };
 
 static struct hns3_dbg_cap_info hns3_dbg_cap[] = {
diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_cmd.h b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_cmd.h
index a322dfeba5cf..18bde77ef944 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_cmd.h
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_cmd.h
@@ -248,6 +248,7 @@ enum hclge_opcode_type {
 	HCLGE_OPC_FD_KEY_CONFIG		= 0x1202,
 	HCLGE_OPC_FD_TCAM_OP		= 0x1203,
 	HCLGE_OPC_FD_AD_OP		= 0x1204,
+	HCLGE_OPC_FD_CNT_OP		= 0x1205,
 	HCLGE_OPC_FD_USER_DEF_OP	= 0x1207,
 
 	/* MDIO command */
@@ -1109,6 +1110,14 @@ struct hclge_fd_ad_config_cmd {
 	u8 rsv2[8];
 };
 
+struct hclge_fd_ad_cnt_read_cmd {
+	u8 rsv0[4];
+	__le16 index;
+	u8 rsv1[2];
+	__le64 cnt;
+	u8 rsv2[8];
+};
+
 #define HCLGE_FD_USER_DEF_OFT_S		0
 #define HCLGE_FD_USER_DEF_OFT_M		GENMASK(14, 0)
 #define HCLGE_FD_USER_DEF_EN_B		15
diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
index 6fc50d09b9db..b69c54d365a7 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
@@ -1549,6 +1549,39 @@ static int hclge_dbg_dump_fd_tcam(struct hclge_dev *hdev, char *buf, int len)
 	return ret;
 }
 
+static int hclge_dbg_dump_fd_counter(struct hclge_dev *hdev, char *buf, int len)
+{
+	u8 func_num = pci_num_vf(hdev->pdev) + 1; /* pf and enabled vf num */
+	struct hclge_fd_ad_cnt_read_cmd *req;
+	char str_id[HCLGE_DBG_ID_LEN];
+	struct hclge_desc desc;
+	int pos = 0;
+	int ret;
+	u64 cnt;
+	u8 i;
+
+	pos += scnprintf(buf + pos, len - pos,
+			 "func_id\thit_times\n");
+
+	for (i = 0; i < func_num; i++) {
+		hclge_cmd_setup_basic_desc(&desc, HCLGE_OPC_FD_CNT_OP, true);
+		req = (struct hclge_fd_ad_cnt_read_cmd *)desc.data;
+		req->index = cpu_to_le16(i);
+		ret = hclge_cmd_send(&hdev->hw, &desc, 1);
+		if (ret) {
+			dev_err(&hdev->pdev->dev, "failed to get fd counter, ret = %d\n",
+				ret);
+			return ret;
+		}
+		cnt = le64_to_cpu(req->cnt);
+		hclge_dbg_get_func_id_str(str_id, i);
+		pos += scnprintf(buf + pos, len - pos,
+				 "%s\t%llu\n", str_id, cnt);
+	}
+
+	return 0;
+}
+
 int hclge_dbg_dump_rst_info(struct hclge_dev *hdev, char *buf, int len)
 {
 	int pos = 0;
@@ -2375,6 +2408,10 @@ static const struct hclge_dbg_func hclge_dbg_cmd_func[] = {
 		.cmd = HNAE3_DBG_CMD_VLAN_CONFIG,
 		.dbg_dump = hclge_dbg_dump_vlan_config,
 	},
+	{
+		.cmd = HNAE3_DBG_CMD_FD_COUNTER,
+		.dbg_dump = hclge_dbg_dump_fd_counter,
+	},
 };
 
 int hclge_dbg_read_cmd(struct hnae3_handle *handle, enum hnae3_dbg_cmd cmd,
diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
index f3e482ab3c71..dd3354a57c62 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
@@ -6000,8 +6000,14 @@ static int hclge_config_action(struct hclge_dev *hdev, u8 stage,
 		ad_data.queue_id = rule->queue_id;
 	}
 
-	ad_data.use_counter = false;
-	ad_data.counter_id = 0;
+	if (hdev->fd_cfg.cnt_num[HCLGE_FD_STAGE_1]) {
+		ad_data.use_counter = true;
+		ad_data.counter_id = rule->vf_id %
+				     hdev->fd_cfg.cnt_num[HCLGE_FD_STAGE_1];
+	} else {
+		ad_data.use_counter = false;
+		ad_data.counter_id = 0;
+	}
 
 	ad_data.use_next_stage = false;
 	ad_data.next_input_key = 0;
-- 
2.8.1


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH net-next 2/3] net: hns3: add support for dumping MAC umv counter in debugfs
  2021-06-24 14:36 [PATCH net-next 0/3] net: hns3: add new debugfs commands Guangbin Huang
  2021-06-24 14:36 ` [PATCH net-next 1/3] net: hns3: add support for FD counter in debugfs Guangbin Huang
@ 2021-06-24 14:36 ` Guangbin Huang
  2021-06-24 14:36 ` [PATCH net-next 3/3] net: hns3: add support for link diagnosis info " Guangbin Huang
  2 siblings, 0 replies; 11+ messages in thread
From: Guangbin Huang @ 2021-06-24 14:36 UTC (permalink / raw)
  To: davem, kuba; +Cc: netdev, linux-kernel, salil.mehta, lipeng321, huangguangbin2

From: Jian Shen <shenjian15@huawei.com>

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: Jian Shen <shenjian15@huawei.com>
Signed-off-by: Guangbin Huang <huangguangbin2@huawei.com>
---
 drivers/net/ethernet/hisilicon/hns3/hnae3.h        |  1 +
 drivers/net/ethernet/hisilicon/hns3/hns3_debugfs.c |  7 +++++
 .../ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c | 34 ++++++++++++++++++++++
 3 files changed, 42 insertions(+)

diff --git a/drivers/net/ethernet/hisilicon/hns3/hnae3.h b/drivers/net/ethernet/hisilicon/hns3/hnae3.h
index a6ef67e47c8a..e0b7c3c44e7b 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hnae3.h
+++ b/drivers/net/ethernet/hisilicon/hns3/hnae3.h
@@ -293,6 +293,7 @@ enum hnae3_dbg_cmd {
 	HNAE3_DBG_CMD_FD_COUNTER,
 	HNAE3_DBG_CMD_MAC_TNL_STATUS,
 	HNAE3_DBG_CMD_SERV_INFO,
+	HNAE3_DBG_CMD_UMV_INFO,
 	HNAE3_DBG_CMD_UNKNOWN,
 };
 
diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3_debugfs.c b/drivers/net/ethernet/hisilicon/hns3/hns3_debugfs.c
index b72fdb94df63..532523069d74 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hns3_debugfs.c
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3_debugfs.c
@@ -330,6 +330,13 @@ static struct hns3_dbg_cmd_info hns3_dbg_cmd[] = {
 		.buf_len = HNS3_DBG_READ_LEN,
 		.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[] = {
diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
index b69c54d365a7..288788186ecc 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
@@ -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,
 					 struct hclge_dbg_vlan_cfg *vlan_cfg)
 {
@@ -2412,6 +2442,10 @@ static const struct hclge_dbg_func hclge_dbg_cmd_func[] = {
 		.cmd = HNAE3_DBG_CMD_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,
-- 
2.8.1


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH net-next 3/3] net: hns3: add support for link diagnosis info in debugfs
  2021-06-24 14:36 [PATCH net-next 0/3] net: hns3: add new debugfs commands Guangbin Huang
  2021-06-24 14:36 ` [PATCH net-next 1/3] net: hns3: add support for FD counter in debugfs Guangbin Huang
  2021-06-24 14:36 ` [PATCH net-next 2/3] net: hns3: add support for dumping MAC umv " Guangbin Huang
@ 2021-06-24 14:36 ` Guangbin Huang
  2021-06-24 19:25   ` Jakub Kicinski
  2 siblings, 1 reply; 11+ messages in thread
From: Guangbin Huang @ 2021-06-24 14:36 UTC (permalink / raw)
  To: davem, kuba; +Cc: netdev, linux-kernel, salil.mehta, lipeng321, huangguangbin2

In order to know reason why link down, add a debugfs file
"link_diagnosis_info" to get link faults from firmware, and each bit
represents one kind of fault.

usage example:
$ cat link_diagnosis_info
Reference clock lost
SFP is absent

Signed-off-by: Guangbin Huang <huangguangbin2@huawei.com>
---
 drivers/net/ethernet/hisilicon/hns3/hnae3.h        |  1 +
 drivers/net/ethernet/hisilicon/hns3/hns3_debugfs.c |  8 +++
 .../net/ethernet/hisilicon/hns3/hns3pf/hclge_cmd.h |  3 ++
 .../ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c | 58 ++++++++++++++++++++++
 4 files changed, 70 insertions(+)

diff --git a/drivers/net/ethernet/hisilicon/hns3/hnae3.h b/drivers/net/ethernet/hisilicon/hns3/hnae3.h
index e0b7c3c44e7b..34e5eb65c7b1 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hnae3.h
+++ b/drivers/net/ethernet/hisilicon/hns3/hnae3.h
@@ -294,6 +294,7 @@ enum hnae3_dbg_cmd {
 	HNAE3_DBG_CMD_MAC_TNL_STATUS,
 	HNAE3_DBG_CMD_SERV_INFO,
 	HNAE3_DBG_CMD_UMV_INFO,
+	HNAE3_DBG_CMD_LINK_DIAGNOSIS_INFO,
 	HNAE3_DBG_CMD_UNKNOWN,
 };
 
diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3_debugfs.c b/drivers/net/ethernet/hisilicon/hns3/hns3_debugfs.c
index 532523069d74..6a0385b5f80a 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hns3_debugfs.c
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3_debugfs.c
@@ -337,6 +337,14 @@ static struct hns3_dbg_cmd_info hns3_dbg_cmd[] = {
 		.buf_len = HNS3_DBG_READ_LEN,
 		.init = hns3_dbg_common_file_init,
 	},
+	{
+		.name = "link_diagnosis_info",
+		.cmd = HNAE3_DBG_CMD_LINK_DIAGNOSIS_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[] = {
diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_cmd.h b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_cmd.h
index 18bde77ef944..8e5be127909b 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_cmd.h
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_cmd.h
@@ -316,6 +316,9 @@ enum hclge_opcode_type {
 	/* PHY command */
 	HCLGE_OPC_PHY_LINK_KSETTING	= 0x7025,
 	HCLGE_OPC_PHY_REG		= 0x7026,
+
+	/* Query link diagnosis info command */
+	HCLGE_OPC_QUERY_LINK_DIAGNOSIS	= 0x702A,
 };
 
 #define HCLGE_TQP_REG_OFFSET		0x80000
diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
index 288788186ecc..e6d8d070711d 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
@@ -2301,6 +2301,60 @@ static int hclge_dbg_dump_mac_mc(struct hclge_dev *hdev, char *buf, int len)
 	return 0;
 }
 
+/* The order of each reason is defined by firmware, so don't change the order */
+static const char * const link_down_reason[] = {
+	"Reference clock lost",
+	"SFP tx is disabled",
+	"SFP is absent",
+	"PHY power down",
+	"Serdes analog loss of signal",
+	"Auto negotiation failed",
+	"Link training failed",
+	"Remote fault",
+	"I2C bus error",
+	"BER is too high",
+};
+
+static int hclge_dbg_dump_link_diagnosis_info(struct hclge_dev *hdev, char *buf,
+					      int len)
+{
+#define HCLGE_DBG_BIT_LEN_PER_WORD		32
+
+	u16 word_index, bit_index, i;
+	struct hclge_desc desc;
+	int pos = 0;
+	u32 data;
+	int ret;
+
+	if (hdev->ae_dev->dev_version <= HNAE3_DEVICE_VERSION_V2) {
+		dev_err(&hdev->pdev->dev, "Operation not supported\n");
+		return -EOPNOTSUPP;
+	}
+
+	hclge_cmd_setup_basic_desc(&desc, HCLGE_OPC_QUERY_LINK_DIAGNOSIS, true);
+	ret = hclge_cmd_send(&hdev->hw, &desc, 1);
+	if (ret) {
+		dev_err(&hdev->pdev->dev,
+			"failed to query link diagnosis info, ret = %d\n", ret);
+		return ret;
+	}
+
+	for (i = 0; i < ARRAY_SIZE(link_down_reason); i++) {
+		word_index = i / HCLGE_DBG_BIT_LEN_PER_WORD;
+		bit_index = i % HCLGE_DBG_BIT_LEN_PER_WORD;
+
+		data = le32_to_cpu(desc.data[word_index]);
+		if (hnae3_get_bit(data, bit_index))
+			pos += scnprintf(buf + pos, len - pos, "%s\n",
+					 link_down_reason[i]);
+	}
+
+	if (!pos)
+		pos += scnprintf(buf + pos, len - pos, "No error\n");
+
+	return 0;
+}
+
 static const struct hclge_dbg_func hclge_dbg_cmd_func[] = {
 	{
 		.cmd = HNAE3_DBG_CMD_TM_NODES,
@@ -2446,6 +2500,10 @@ static const struct hclge_dbg_func hclge_dbg_cmd_func[] = {
 		.cmd = HNAE3_DBG_CMD_UMV_INFO,
 		.dbg_dump = hclge_dbg_dump_umv_info,
 	},
+	{
+		.cmd = HNAE3_DBG_CMD_LINK_DIAGNOSIS_INFO,
+		.dbg_dump = hclge_dbg_dump_link_diagnosis_info,
+	},
 };
 
 int hclge_dbg_read_cmd(struct hnae3_handle *handle, enum hnae3_dbg_cmd cmd,
-- 
2.8.1


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH net-next 3/3] net: hns3: add support for link diagnosis info in debugfs
  2021-06-24 14:36 ` [PATCH net-next 3/3] net: hns3: add support for link diagnosis info " Guangbin Huang
@ 2021-06-24 19:25   ` Jakub Kicinski
  2021-06-25  7:08     ` huangguangbin (A)
  2021-07-01  9:03     ` huangguangbin (A)
  0 siblings, 2 replies; 11+ messages in thread
From: Jakub Kicinski @ 2021-06-24 19:25 UTC (permalink / raw)
  To: Guangbin Huang; +Cc: davem, netdev, linux-kernel, salil.mehta, lipeng321

On Thu, 24 Jun 2021 22:36:45 +0800 Guangbin Huang wrote:
> In order to know reason why link down, add a debugfs file
> "link_diagnosis_info" to get link faults from firmware, and each bit
> represents one kind of fault.
> 
> usage example:
> $ cat link_diagnosis_info
> Reference clock lost

Please use ethtool->get_link_ext_state instead.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH net-next 3/3] net: hns3: add support for link diagnosis info in debugfs
  2021-06-24 19:25   ` Jakub Kicinski
@ 2021-06-25  7:08     ` huangguangbin (A)
  2021-07-01  9:03     ` huangguangbin (A)
  1 sibling, 0 replies; 11+ messages in thread
From: huangguangbin (A) @ 2021-06-25  7:08 UTC (permalink / raw)
  To: Jakub Kicinski; +Cc: davem, netdev, linux-kernel, salil.mehta, lipeng321



On 2021/6/25 3:25, Jakub Kicinski wrote:
> On Thu, 24 Jun 2021 22:36:45 +0800 Guangbin Huang wrote:
>> In order to know reason why link down, add a debugfs file
>> "link_diagnosis_info" to get link faults from firmware, and each bit
>> represents one kind of fault.
>>
>> usage example:
>> $ cat link_diagnosis_info
>> Reference clock lost
> 
> Please use ethtool->get_link_ext_state instead.
> .
> 
Ok, thanks.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH net-next 3/3] net: hns3: add support for link diagnosis info in debugfs
  2021-06-24 19:25   ` Jakub Kicinski
  2021-06-25  7:08     ` huangguangbin (A)
@ 2021-07-01  9:03     ` huangguangbin (A)
  2021-07-01 15:54       ` Jakub Kicinski
  1 sibling, 1 reply; 11+ messages in thread
From: huangguangbin (A) @ 2021-07-01  9:03 UTC (permalink / raw)
  To: Jakub Kicinski; +Cc: davem, netdev, linux-kernel, salil.mehta, lipeng321



On 2021/6/25 3:25, Jakub Kicinski wrote:
> On Thu, 24 Jun 2021 22:36:45 +0800 Guangbin Huang wrote:
>> In order to know reason why link down, add a debugfs file
>> "link_diagnosis_info" to get link faults from firmware, and each bit
>> represents one kind of fault.
>>
>> usage example:
>> $ cat link_diagnosis_info
>> Reference clock lost
> 
> Please use ethtool->get_link_ext_state instead.
> .
> 
Hi Jakub, I have a question to consult you.
Some fault information in our patch are not existed in current ethtool extended
link states, for examples:
"Serdes reference clock lost"
"Serdes analog loss of signal"
"SFP tx is disabled"
"PHY power down"
"Remote fault"

Do you think these fault information can be added to ethtool extended link states?

Thanks,
Guangbin
.


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH net-next 3/3] net: hns3: add support for link diagnosis info in debugfs
  2021-07-01  9:03     ` huangguangbin (A)
@ 2021-07-01 15:54       ` Jakub Kicinski
  2021-07-04  1:37         ` huangguangbin (A)
  0 siblings, 1 reply; 11+ messages in thread
From: Jakub Kicinski @ 2021-07-01 15:54 UTC (permalink / raw)
  To: huangguangbin (A); +Cc: davem, netdev, linux-kernel, salil.mehta, lipeng321

On Thu, 1 Jul 2021 17:03:32 +0800 huangguangbin (A) wrote:
> On 2021/6/25 3:25, Jakub Kicinski wrote:
> > On Thu, 24 Jun 2021 22:36:45 +0800 Guangbin Huang wrote:  
> >> In order to know reason why link down, add a debugfs file
> >> "link_diagnosis_info" to get link faults from firmware, and each bit
> >> represents one kind of fault.
> >>
> >> usage example:
> >> $ cat link_diagnosis_info
> >> Reference clock lost  
> > 
> > Please use ethtool->get_link_ext_state instead.
> > .
> >   
> Hi Jakub, I have a question to consult you.
> Some fault information in our patch are not existed in current ethtool extended
> link states, for examples:
> "Serdes reference clock lost"
> "Serdes analog loss of signal"
> "SFP tx is disabled"
> "PHY power down"

Why would the PHY be powered down if user requested port to be up?

> "Remote fault"

I think we do have remote fault:

    state: ETHTOOL_LINK_EXT_STATE_LINK_TRAINING_FAILURE
 substate: ETHTOOL_LINK_EXT_SUBSTATE_LT_REMOTE_FAULT

> Do you think these fault information can be added to ethtool extended link states?

Yes, would you mind categorizing them into state/substate and sharing
the proposed additions with Amit, Ido, Andrew and other PHY experts?

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH net-next 3/3] net: hns3: add support for link diagnosis info in debugfs
  2021-07-01 15:54       ` Jakub Kicinski
@ 2021-07-04  1:37         ` huangguangbin (A)
  2021-07-04 19:57           ` Andrew Lunn
  0 siblings, 1 reply; 11+ messages in thread
From: huangguangbin (A) @ 2021-07-04  1:37 UTC (permalink / raw)
  To: Jakub Kicinski; +Cc: davem, netdev, linux-kernel, salil.mehta, lipeng321



On 2021/7/1 23:54, Jakub Kicinski wrote:
> On Thu, 1 Jul 2021 17:03:32 +0800 huangguangbin (A) wrote:
>> On 2021/6/25 3:25, Jakub Kicinski wrote:
>>> On Thu, 24 Jun 2021 22:36:45 +0800 Guangbin Huang wrote:
>>>> In order to know reason why link down, add a debugfs file
>>>> "link_diagnosis_info" to get link faults from firmware, and each bit
>>>> represents one kind of fault.
>>>>
>>>> usage example:
>>>> $ cat link_diagnosis_info
>>>> Reference clock lost
>>>
>>> Please use ethtool->get_link_ext_state instead.
>>> .
>>>    
>> Hi Jakub, I have a question to consult you.
>> Some fault information in our patch are not existed in current ethtool extended
>> link states, for examples:
>> "Serdes reference clock lost"
>> "Serdes analog loss of signal"
>> "SFP tx is disabled"
>> "PHY power down"
> 
> Why would the PHY be powered down if user requested port to be up?
> 
In the case of other user may use MDIO tool to write PHY register directly to make
PHY power down, if link state can display this information, I think it is helpful.

>> "Remote fault"
> 
> I think we do have remote fault:
> 
>      state: ETHTOOL_LINK_EXT_STATE_LINK_TRAINING_FAILURE
>   substate: ETHTOOL_LINK_EXT_SUBSTATE_LT_REMOTE_FAULT
> 
OK.

>> Do you think these fault information can be added to ethtool extended link states?
> 
> Yes, would you mind categorizing them into state/substate and sharing
> the proposed additions with Amit, Ido, Andrew and other PHY experts?
> .
> 
OK.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH net-next 3/3] net: hns3: add support for link diagnosis info in debugfs
  2021-07-04  1:37         ` huangguangbin (A)
@ 2021-07-04 19:57           ` Andrew Lunn
  2021-07-05  1:12             ` huangguangbin (A)
  0 siblings, 1 reply; 11+ messages in thread
From: Andrew Lunn @ 2021-07-04 19:57 UTC (permalink / raw)
  To: huangguangbin (A)
  Cc: Jakub Kicinski, davem, netdev, linux-kernel, salil.mehta, lipeng321

> > > Hi Jakub, I have a question to consult you.
> > > Some fault information in our patch are not existed in current ethtool extended
> > > link states, for examples:
> > > "Serdes reference clock lost"
> > > "Serdes analog loss of signal"
> > > "SFP tx is disabled"
> > > "PHY power down"
> > 
> > Why would the PHY be powered down if user requested port to be up?
> > 
> In the case of other user may use MDIO tool to write PHY register directly to make
> PHY power down, if link state can display this information, I think it is helpful.

If the user directly writes to PHY registers, they should expect bad
things to happen. They can do a lot more than power the PHY down. They
could configure it into loopback mode, turn off autoneg and force a
mode which is compatible with the peer, etc.

I don't think you need to tell the user they have pointed a foot gun
at their feet and pulled the trigger.

   Andrew

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH net-next 3/3] net: hns3: add support for link diagnosis info in debugfs
  2021-07-04 19:57           ` Andrew Lunn
@ 2021-07-05  1:12             ` huangguangbin (A)
  0 siblings, 0 replies; 11+ messages in thread
From: huangguangbin (A) @ 2021-07-05  1:12 UTC (permalink / raw)
  To: Andrew Lunn
  Cc: Jakub Kicinski, davem, netdev, linux-kernel, salil.mehta, lipeng321



On 2021/7/5 3:57, Andrew Lunn wrote:
>>>> Hi Jakub, I have a question to consult you.
>>>> Some fault information in our patch are not existed in current ethtool extended
>>>> link states, for examples:
>>>> "Serdes reference clock lost"
>>>> "Serdes analog loss of signal"
>>>> "SFP tx is disabled"
>>>> "PHY power down"
>>>
>>> Why would the PHY be powered down if user requested port to be up?
>>>
>> In the case of other user may use MDIO tool to write PHY register directly to make
>> PHY power down, if link state can display this information, I think it is helpful.
> 
> If the user directly writes to PHY registers, they should expect bad
> things to happen. They can do a lot more than power the PHY down. They
> could configure it into loopback mode, turn off autoneg and force a
> mode which is compatible with the peer, etc.
> 
> I don't think you need to tell the user they have pointed a foot gun
> at their feet and pulled the trigger.
> 
>     Andrew
> .
> 
OK, I accept your point, thanks!

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2021-07-05  1:13 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-06-24 14:36 [PATCH net-next 0/3] net: hns3: add new debugfs commands Guangbin Huang
2021-06-24 14:36 ` [PATCH net-next 1/3] net: hns3: add support for FD counter in debugfs Guangbin Huang
2021-06-24 14:36 ` [PATCH net-next 2/3] net: hns3: add support for dumping MAC umv " Guangbin Huang
2021-06-24 14:36 ` [PATCH net-next 3/3] net: hns3: add support for link diagnosis info " Guangbin Huang
2021-06-24 19:25   ` Jakub Kicinski
2021-06-25  7:08     ` huangguangbin (A)
2021-07-01  9:03     ` huangguangbin (A)
2021-07-01 15:54       ` Jakub Kicinski
2021-07-04  1:37         ` huangguangbin (A)
2021-07-04 19:57           ` Andrew Lunn
2021-07-05  1:12             ` huangguangbin (A)

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).