13c666b58Sliuzhongzhu // SPDX-License-Identifier: GPL-2.0+
23c666b58Sliuzhongzhu /* Copyright (c) 2018-2019 Hisilicon Limited. */
33c666b58Sliuzhongzhu 
43c666b58Sliuzhongzhu #include <linux/device.h>
53c666b58Sliuzhongzhu 
66fc22440Sliuzhongzhu #include "hclge_debugfs.h"
73c666b58Sliuzhongzhu #include "hclge_cmd.h"
83c666b58Sliuzhongzhu #include "hclge_main.h"
92849d4e7Sliuzhongzhu #include "hclge_tm.h"
103c666b58Sliuzhongzhu #include "hnae3.h"
113c666b58Sliuzhongzhu 
122849d4e7Sliuzhongzhu static void hclge_title_idx_print(struct hclge_dev *hdev, bool flag, int index,
132849d4e7Sliuzhongzhu 				  char *title_buf, char *true_buf,
142849d4e7Sliuzhongzhu 				  char *false_buf)
152849d4e7Sliuzhongzhu {
162849d4e7Sliuzhongzhu 	if (flag)
172849d4e7Sliuzhongzhu 		dev_info(&hdev->pdev->dev, "%s(%d): %s\n", title_buf, index,
182849d4e7Sliuzhongzhu 			 true_buf);
192849d4e7Sliuzhongzhu 	else
202849d4e7Sliuzhongzhu 		dev_info(&hdev->pdev->dev, "%s(%d): %s\n", title_buf, index,
212849d4e7Sliuzhongzhu 			 false_buf);
222849d4e7Sliuzhongzhu }
232849d4e7Sliuzhongzhu 
242849d4e7Sliuzhongzhu static void hclge_dbg_dump_tc(struct hclge_dev *hdev)
252849d4e7Sliuzhongzhu {
262849d4e7Sliuzhongzhu 	struct hclge_ets_tc_weight_cmd *ets_weight;
272849d4e7Sliuzhongzhu 	struct hclge_desc desc;
282849d4e7Sliuzhongzhu 	int i, ret;
292849d4e7Sliuzhongzhu 
302849d4e7Sliuzhongzhu 	hclge_cmd_setup_basic_desc(&desc, HCLGE_OPC_ETS_TC_WEIGHT, true);
312849d4e7Sliuzhongzhu 
322849d4e7Sliuzhongzhu 	ret = hclge_cmd_send(&hdev->hw, &desc, 1);
332849d4e7Sliuzhongzhu 	if (ret) {
342849d4e7Sliuzhongzhu 		dev_err(&hdev->pdev->dev, "dump tc fail, status is %d.\n", ret);
352849d4e7Sliuzhongzhu 		return;
362849d4e7Sliuzhongzhu 	}
372849d4e7Sliuzhongzhu 
382849d4e7Sliuzhongzhu 	ets_weight = (struct hclge_ets_tc_weight_cmd *)desc.data;
392849d4e7Sliuzhongzhu 
402849d4e7Sliuzhongzhu 	dev_info(&hdev->pdev->dev, "dump tc\n");
412849d4e7Sliuzhongzhu 	dev_info(&hdev->pdev->dev, "weight_offset: %u\n",
422849d4e7Sliuzhongzhu 		 ets_weight->weight_offset);
432849d4e7Sliuzhongzhu 
442849d4e7Sliuzhongzhu 	for (i = 0; i < HNAE3_MAX_TC; i++)
452849d4e7Sliuzhongzhu 		hclge_title_idx_print(hdev, ets_weight->tc_weight[i], i,
462849d4e7Sliuzhongzhu 				      "tc", "no sp mode", "sp mode");
472849d4e7Sliuzhongzhu }
482849d4e7Sliuzhongzhu 
4996227f4cSliuzhongzhu static void hclge_dbg_dump_tm_pg(struct hclge_dev *hdev)
5096227f4cSliuzhongzhu {
5196227f4cSliuzhongzhu 	struct hclge_port_shapping_cmd *port_shap_cfg_cmd;
5296227f4cSliuzhongzhu 	struct hclge_bp_to_qs_map_cmd *bp_to_qs_map_cmd;
5396227f4cSliuzhongzhu 	struct hclge_pg_shapping_cmd *pg_shap_cfg_cmd;
5496227f4cSliuzhongzhu 	enum hclge_opcode_type cmd;
5596227f4cSliuzhongzhu 	struct hclge_desc desc;
5696227f4cSliuzhongzhu 	int ret;
5796227f4cSliuzhongzhu 
5896227f4cSliuzhongzhu 	cmd = HCLGE_OPC_TM_PG_C_SHAPPING;
5996227f4cSliuzhongzhu 	hclge_cmd_setup_basic_desc(&desc, cmd, true);
6096227f4cSliuzhongzhu 	ret = hclge_cmd_send(&hdev->hw, &desc, 1);
6196227f4cSliuzhongzhu 	if (ret)
6296227f4cSliuzhongzhu 		goto err_tm_pg_cmd_send;
6396227f4cSliuzhongzhu 
6496227f4cSliuzhongzhu 	pg_shap_cfg_cmd = (struct hclge_pg_shapping_cmd *)desc.data;
6596227f4cSliuzhongzhu 	dev_info(&hdev->pdev->dev, "PG_C pg_id: %u\n", pg_shap_cfg_cmd->pg_id);
6696227f4cSliuzhongzhu 	dev_info(&hdev->pdev->dev, "PG_C pg_shapping: 0x%x\n",
6796227f4cSliuzhongzhu 		 pg_shap_cfg_cmd->pg_shapping_para);
6896227f4cSliuzhongzhu 
6996227f4cSliuzhongzhu 	cmd = HCLGE_OPC_TM_PG_P_SHAPPING;
7096227f4cSliuzhongzhu 	hclge_cmd_setup_basic_desc(&desc, cmd, true);
7196227f4cSliuzhongzhu 	ret = hclge_cmd_send(&hdev->hw, &desc, 1);
7296227f4cSliuzhongzhu 	if (ret)
7396227f4cSliuzhongzhu 		goto err_tm_pg_cmd_send;
7496227f4cSliuzhongzhu 
7596227f4cSliuzhongzhu 	pg_shap_cfg_cmd = (struct hclge_pg_shapping_cmd *)desc.data;
7696227f4cSliuzhongzhu 	dev_info(&hdev->pdev->dev, "PG_P pg_id: %u\n", pg_shap_cfg_cmd->pg_id);
7796227f4cSliuzhongzhu 	dev_info(&hdev->pdev->dev, "PG_P pg_shapping: 0x%x\n",
7896227f4cSliuzhongzhu 		 pg_shap_cfg_cmd->pg_shapping_para);
7996227f4cSliuzhongzhu 
8096227f4cSliuzhongzhu 	cmd = HCLGE_OPC_TM_PORT_SHAPPING;
8196227f4cSliuzhongzhu 	hclge_cmd_setup_basic_desc(&desc, cmd, true);
8296227f4cSliuzhongzhu 	ret = hclge_cmd_send(&hdev->hw, &desc, 1);
8396227f4cSliuzhongzhu 	if (ret)
8496227f4cSliuzhongzhu 		goto err_tm_pg_cmd_send;
8596227f4cSliuzhongzhu 
8696227f4cSliuzhongzhu 	port_shap_cfg_cmd = (struct hclge_port_shapping_cmd *)desc.data;
8796227f4cSliuzhongzhu 	dev_info(&hdev->pdev->dev, "PORT port_shapping: 0x%x\n",
8896227f4cSliuzhongzhu 		 port_shap_cfg_cmd->port_shapping_para);
8996227f4cSliuzhongzhu 
9096227f4cSliuzhongzhu 	cmd = HCLGE_OPC_TM_PG_SCH_MODE_CFG;
9196227f4cSliuzhongzhu 	hclge_cmd_setup_basic_desc(&desc, cmd, true);
9296227f4cSliuzhongzhu 	ret = hclge_cmd_send(&hdev->hw, &desc, 1);
9396227f4cSliuzhongzhu 	if (ret)
9496227f4cSliuzhongzhu 		goto err_tm_pg_cmd_send;
9596227f4cSliuzhongzhu 
9696227f4cSliuzhongzhu 	dev_info(&hdev->pdev->dev, "PG_SCH pg_id: %u\n", desc.data[0]);
9796227f4cSliuzhongzhu 
9896227f4cSliuzhongzhu 	cmd = HCLGE_OPC_TM_PRI_SCH_MODE_CFG;
9996227f4cSliuzhongzhu 	hclge_cmd_setup_basic_desc(&desc, cmd, true);
10096227f4cSliuzhongzhu 	ret = hclge_cmd_send(&hdev->hw, &desc, 1);
10196227f4cSliuzhongzhu 	if (ret)
10296227f4cSliuzhongzhu 		goto err_tm_pg_cmd_send;
10396227f4cSliuzhongzhu 
10496227f4cSliuzhongzhu 	dev_info(&hdev->pdev->dev, "PRI_SCH pg_id: %u\n", desc.data[0]);
10596227f4cSliuzhongzhu 
10696227f4cSliuzhongzhu 	cmd = HCLGE_OPC_TM_QS_SCH_MODE_CFG;
10796227f4cSliuzhongzhu 	hclge_cmd_setup_basic_desc(&desc, cmd, true);
10896227f4cSliuzhongzhu 	ret = hclge_cmd_send(&hdev->hw, &desc, 1);
10996227f4cSliuzhongzhu 	if (ret)
11096227f4cSliuzhongzhu 		goto err_tm_pg_cmd_send;
11196227f4cSliuzhongzhu 
11296227f4cSliuzhongzhu 	dev_info(&hdev->pdev->dev, "QS_SCH pg_id: %u\n", desc.data[0]);
11396227f4cSliuzhongzhu 
11496227f4cSliuzhongzhu 	cmd = HCLGE_OPC_TM_BP_TO_QSET_MAPPING;
11596227f4cSliuzhongzhu 	hclge_cmd_setup_basic_desc(&desc, cmd, true);
11696227f4cSliuzhongzhu 	ret = hclge_cmd_send(&hdev->hw, &desc, 1);
11796227f4cSliuzhongzhu 	if (ret)
11896227f4cSliuzhongzhu 		goto err_tm_pg_cmd_send;
11996227f4cSliuzhongzhu 
12096227f4cSliuzhongzhu 	bp_to_qs_map_cmd = (struct hclge_bp_to_qs_map_cmd *)desc.data;
12196227f4cSliuzhongzhu 	dev_info(&hdev->pdev->dev, "BP_TO_QSET pg_id: %u\n",
12296227f4cSliuzhongzhu 		 bp_to_qs_map_cmd->tc_id);
12396227f4cSliuzhongzhu 	dev_info(&hdev->pdev->dev, "BP_TO_QSET pg_shapping: 0x%x\n",
12496227f4cSliuzhongzhu 		 bp_to_qs_map_cmd->qs_group_id);
12596227f4cSliuzhongzhu 	dev_info(&hdev->pdev->dev, "BP_TO_QSET qs_bit_map: 0x%x\n",
12696227f4cSliuzhongzhu 		 bp_to_qs_map_cmd->qs_bit_map);
12796227f4cSliuzhongzhu 	return;
12896227f4cSliuzhongzhu 
12996227f4cSliuzhongzhu err_tm_pg_cmd_send:
13096227f4cSliuzhongzhu 	dev_err(&hdev->pdev->dev, "dump tm_pg fail(0x%x), status is %d\n",
13196227f4cSliuzhongzhu 		cmd, ret);
13296227f4cSliuzhongzhu }
13396227f4cSliuzhongzhu 
13496227f4cSliuzhongzhu static void hclge_dbg_dump_tm(struct hclge_dev *hdev)
13596227f4cSliuzhongzhu {
13696227f4cSliuzhongzhu 	struct hclge_priority_weight_cmd *priority_weight;
13796227f4cSliuzhongzhu 	struct hclge_pg_to_pri_link_cmd *pg_to_pri_map;
13896227f4cSliuzhongzhu 	struct hclge_qs_to_pri_link_cmd *qs_to_pri_map;
13996227f4cSliuzhongzhu 	struct hclge_nq_to_qs_link_cmd *nq_to_qs_map;
14096227f4cSliuzhongzhu 	struct hclge_pri_shapping_cmd *shap_cfg_cmd;
14196227f4cSliuzhongzhu 	struct hclge_pg_weight_cmd *pg_weight;
14296227f4cSliuzhongzhu 	struct hclge_qs_weight_cmd *qs_weight;
14396227f4cSliuzhongzhu 	enum hclge_opcode_type cmd;
14496227f4cSliuzhongzhu 	struct hclge_desc desc;
14596227f4cSliuzhongzhu 	int ret;
14696227f4cSliuzhongzhu 
14796227f4cSliuzhongzhu 	cmd = HCLGE_OPC_TM_PG_TO_PRI_LINK;
14896227f4cSliuzhongzhu 	hclge_cmd_setup_basic_desc(&desc, cmd, true);
14996227f4cSliuzhongzhu 	ret = hclge_cmd_send(&hdev->hw, &desc, 1);
15096227f4cSliuzhongzhu 	if (ret)
15196227f4cSliuzhongzhu 		goto err_tm_cmd_send;
15296227f4cSliuzhongzhu 
15396227f4cSliuzhongzhu 	pg_to_pri_map = (struct hclge_pg_to_pri_link_cmd *)desc.data;
15496227f4cSliuzhongzhu 	dev_info(&hdev->pdev->dev, "dump tm\n");
15596227f4cSliuzhongzhu 	dev_info(&hdev->pdev->dev, "PG_TO_PRI gp_id: %u\n",
15696227f4cSliuzhongzhu 		 pg_to_pri_map->pg_id);
15796227f4cSliuzhongzhu 	dev_info(&hdev->pdev->dev, "PG_TO_PRI map: 0x%x\n",
15896227f4cSliuzhongzhu 		 pg_to_pri_map->pri_bit_map);
15996227f4cSliuzhongzhu 
16096227f4cSliuzhongzhu 	cmd = HCLGE_OPC_TM_QS_TO_PRI_LINK;
16196227f4cSliuzhongzhu 	hclge_cmd_setup_basic_desc(&desc, cmd, true);
16296227f4cSliuzhongzhu 	ret = hclge_cmd_send(&hdev->hw, &desc, 1);
16396227f4cSliuzhongzhu 	if (ret)
16496227f4cSliuzhongzhu 		goto err_tm_cmd_send;
16596227f4cSliuzhongzhu 
16696227f4cSliuzhongzhu 	qs_to_pri_map = (struct hclge_qs_to_pri_link_cmd *)desc.data;
16796227f4cSliuzhongzhu 	dev_info(&hdev->pdev->dev, "QS_TO_PRI qs_id: %u\n",
16896227f4cSliuzhongzhu 		 qs_to_pri_map->qs_id);
16996227f4cSliuzhongzhu 	dev_info(&hdev->pdev->dev, "QS_TO_PRI priority: %u\n",
17096227f4cSliuzhongzhu 		 qs_to_pri_map->priority);
17196227f4cSliuzhongzhu 	dev_info(&hdev->pdev->dev, "QS_TO_PRI link_vld: %u\n",
17296227f4cSliuzhongzhu 		 qs_to_pri_map->link_vld);
17396227f4cSliuzhongzhu 
17496227f4cSliuzhongzhu 	cmd = HCLGE_OPC_TM_NQ_TO_QS_LINK;
17596227f4cSliuzhongzhu 	hclge_cmd_setup_basic_desc(&desc, cmd, true);
17696227f4cSliuzhongzhu 	ret = hclge_cmd_send(&hdev->hw, &desc, 1);
17796227f4cSliuzhongzhu 	if (ret)
17896227f4cSliuzhongzhu 		goto err_tm_cmd_send;
17996227f4cSliuzhongzhu 
18096227f4cSliuzhongzhu 	nq_to_qs_map = (struct hclge_nq_to_qs_link_cmd *)desc.data;
18196227f4cSliuzhongzhu 	dev_info(&hdev->pdev->dev, "NQ_TO_QS nq_id: %u\n", nq_to_qs_map->nq_id);
18296227f4cSliuzhongzhu 	dev_info(&hdev->pdev->dev, "NQ_TO_QS qset_id: %u\n",
18396227f4cSliuzhongzhu 		 nq_to_qs_map->qset_id);
18496227f4cSliuzhongzhu 
18596227f4cSliuzhongzhu 	cmd = HCLGE_OPC_TM_PG_WEIGHT;
18696227f4cSliuzhongzhu 	hclge_cmd_setup_basic_desc(&desc, cmd, true);
18796227f4cSliuzhongzhu 	ret = hclge_cmd_send(&hdev->hw, &desc, 1);
18896227f4cSliuzhongzhu 	if (ret)
18996227f4cSliuzhongzhu 		goto err_tm_cmd_send;
19096227f4cSliuzhongzhu 
19196227f4cSliuzhongzhu 	pg_weight = (struct hclge_pg_weight_cmd *)desc.data;
19296227f4cSliuzhongzhu 	dev_info(&hdev->pdev->dev, "PG pg_id: %u\n", pg_weight->pg_id);
19396227f4cSliuzhongzhu 	dev_info(&hdev->pdev->dev, "PG dwrr: %u\n", pg_weight->dwrr);
19496227f4cSliuzhongzhu 
19596227f4cSliuzhongzhu 	cmd = HCLGE_OPC_TM_QS_WEIGHT;
19696227f4cSliuzhongzhu 	hclge_cmd_setup_basic_desc(&desc, cmd, true);
19796227f4cSliuzhongzhu 	ret = hclge_cmd_send(&hdev->hw, &desc, 1);
19896227f4cSliuzhongzhu 	if (ret)
19996227f4cSliuzhongzhu 		goto err_tm_cmd_send;
20096227f4cSliuzhongzhu 
20196227f4cSliuzhongzhu 	qs_weight = (struct hclge_qs_weight_cmd *)desc.data;
20296227f4cSliuzhongzhu 	dev_info(&hdev->pdev->dev, "QS qs_id: %u\n", qs_weight->qs_id);
20396227f4cSliuzhongzhu 	dev_info(&hdev->pdev->dev, "QS dwrr: %u\n", qs_weight->dwrr);
20496227f4cSliuzhongzhu 
20596227f4cSliuzhongzhu 	cmd = HCLGE_OPC_TM_PRI_WEIGHT;
20696227f4cSliuzhongzhu 	hclge_cmd_setup_basic_desc(&desc, cmd, true);
20796227f4cSliuzhongzhu 	ret = hclge_cmd_send(&hdev->hw, &desc, 1);
20896227f4cSliuzhongzhu 	if (ret)
20996227f4cSliuzhongzhu 		goto err_tm_cmd_send;
21096227f4cSliuzhongzhu 
21196227f4cSliuzhongzhu 	priority_weight = (struct hclge_priority_weight_cmd *)desc.data;
21296227f4cSliuzhongzhu 	dev_info(&hdev->pdev->dev, "PRI pri_id: %u\n", priority_weight->pri_id);
21396227f4cSliuzhongzhu 	dev_info(&hdev->pdev->dev, "PRI dwrr: %u\n", priority_weight->dwrr);
21496227f4cSliuzhongzhu 
21596227f4cSliuzhongzhu 	cmd = HCLGE_OPC_TM_PRI_C_SHAPPING;
21696227f4cSliuzhongzhu 	hclge_cmd_setup_basic_desc(&desc, cmd, true);
21796227f4cSliuzhongzhu 	ret = hclge_cmd_send(&hdev->hw, &desc, 1);
21896227f4cSliuzhongzhu 	if (ret)
21996227f4cSliuzhongzhu 		goto err_tm_cmd_send;
22096227f4cSliuzhongzhu 
22196227f4cSliuzhongzhu 	shap_cfg_cmd = (struct hclge_pri_shapping_cmd *)desc.data;
22296227f4cSliuzhongzhu 	dev_info(&hdev->pdev->dev, "PRI_C pri_id: %u\n", shap_cfg_cmd->pri_id);
22396227f4cSliuzhongzhu 	dev_info(&hdev->pdev->dev, "PRI_C pri_shapping: 0x%x\n",
22496227f4cSliuzhongzhu 		 shap_cfg_cmd->pri_shapping_para);
22596227f4cSliuzhongzhu 
22696227f4cSliuzhongzhu 	cmd = HCLGE_OPC_TM_PRI_P_SHAPPING;
22796227f4cSliuzhongzhu 	hclge_cmd_setup_basic_desc(&desc, cmd, true);
22896227f4cSliuzhongzhu 	ret = hclge_cmd_send(&hdev->hw, &desc, 1);
22996227f4cSliuzhongzhu 	if (ret)
23096227f4cSliuzhongzhu 		goto err_tm_cmd_send;
23196227f4cSliuzhongzhu 
23296227f4cSliuzhongzhu 	shap_cfg_cmd = (struct hclge_pri_shapping_cmd *)desc.data;
23396227f4cSliuzhongzhu 	dev_info(&hdev->pdev->dev, "PRI_P pri_id: %u\n", shap_cfg_cmd->pri_id);
23496227f4cSliuzhongzhu 	dev_info(&hdev->pdev->dev, "PRI_P pri_shapping: 0x%x\n",
23596227f4cSliuzhongzhu 		 shap_cfg_cmd->pri_shapping_para);
23696227f4cSliuzhongzhu 
23796227f4cSliuzhongzhu 	hclge_dbg_dump_tm_pg(hdev);
23896227f4cSliuzhongzhu 
23996227f4cSliuzhongzhu 	return;
24096227f4cSliuzhongzhu 
24196227f4cSliuzhongzhu err_tm_cmd_send:
24296227f4cSliuzhongzhu 	dev_err(&hdev->pdev->dev, "dump tm fail(0x%x), status is %d\n",
24396227f4cSliuzhongzhu 		cmd, ret);
24496227f4cSliuzhongzhu }
24596227f4cSliuzhongzhu 
246d958919dSliuzhongzhu static void hclge_dbg_dump_qos_pause_cfg(struct hclge_dev *hdev)
247d958919dSliuzhongzhu {
248d958919dSliuzhongzhu 	struct hclge_cfg_pause_param_cmd *pause_param;
249d958919dSliuzhongzhu 	struct hclge_desc desc;
250d958919dSliuzhongzhu 	int ret;
251d958919dSliuzhongzhu 
252d958919dSliuzhongzhu 	hclge_cmd_setup_basic_desc(&desc, HCLGE_OPC_CFG_MAC_PARA, true);
253d958919dSliuzhongzhu 
254d958919dSliuzhongzhu 	ret = hclge_cmd_send(&hdev->hw, &desc, 1);
255d958919dSliuzhongzhu 	if (ret) {
256d958919dSliuzhongzhu 		dev_err(&hdev->pdev->dev, "dump checksum fail, status is %d.\n",
257d958919dSliuzhongzhu 			ret);
258d958919dSliuzhongzhu 		return;
259d958919dSliuzhongzhu 	}
260d958919dSliuzhongzhu 
261d958919dSliuzhongzhu 	pause_param = (struct hclge_cfg_pause_param_cmd *)desc.data;
262d958919dSliuzhongzhu 	dev_info(&hdev->pdev->dev, "dump qos pause cfg\n");
263d958919dSliuzhongzhu 	dev_info(&hdev->pdev->dev, "pause_trans_gap: 0x%x\n",
264d958919dSliuzhongzhu 		 pause_param->pause_trans_gap);
265d958919dSliuzhongzhu 	dev_info(&hdev->pdev->dev, "pause_trans_time: 0x%x\n",
266d958919dSliuzhongzhu 		 pause_param->pause_trans_time);
267d958919dSliuzhongzhu }
268d958919dSliuzhongzhu 
2696fc22440Sliuzhongzhu static void hclge_dbg_dump_qos_pri_map(struct hclge_dev *hdev)
2706fc22440Sliuzhongzhu {
2716fc22440Sliuzhongzhu 	struct hclge_qos_pri_map_cmd *pri_map;
2726fc22440Sliuzhongzhu 	struct hclge_desc desc;
2736fc22440Sliuzhongzhu 	int ret;
2746fc22440Sliuzhongzhu 
2756fc22440Sliuzhongzhu 	hclge_cmd_setup_basic_desc(&desc, HCLGE_OPC_PRI_TO_TC_MAPPING, true);
2766fc22440Sliuzhongzhu 
2776fc22440Sliuzhongzhu 	ret = hclge_cmd_send(&hdev->hw, &desc, 1);
2786fc22440Sliuzhongzhu 	if (ret) {
2796fc22440Sliuzhongzhu 		dev_err(&hdev->pdev->dev,
2806fc22440Sliuzhongzhu 			"dump qos pri map fail, status is %d.\n", ret);
2816fc22440Sliuzhongzhu 		return;
2826fc22440Sliuzhongzhu 	}
2836fc22440Sliuzhongzhu 
2846fc22440Sliuzhongzhu 	pri_map = (struct hclge_qos_pri_map_cmd *)desc.data;
2856fc22440Sliuzhongzhu 	dev_info(&hdev->pdev->dev, "dump qos pri map\n");
2866fc22440Sliuzhongzhu 	dev_info(&hdev->pdev->dev, "vlan_to_pri: 0x%x\n", pri_map->vlan_pri);
2876fc22440Sliuzhongzhu 	dev_info(&hdev->pdev->dev, "pri_0_to_tc: 0x%x\n", pri_map->pri0_tc);
2886fc22440Sliuzhongzhu 	dev_info(&hdev->pdev->dev, "pri_1_to_tc: 0x%x\n", pri_map->pri1_tc);
2896fc22440Sliuzhongzhu 	dev_info(&hdev->pdev->dev, "pri_2_to_tc: 0x%x\n", pri_map->pri2_tc);
2906fc22440Sliuzhongzhu 	dev_info(&hdev->pdev->dev, "pri_3_to_tc: 0x%x\n", pri_map->pri3_tc);
2916fc22440Sliuzhongzhu 	dev_info(&hdev->pdev->dev, "pri_4_to_tc: 0x%x\n", pri_map->pri4_tc);
2926fc22440Sliuzhongzhu 	dev_info(&hdev->pdev->dev, "pri_5_to_tc: 0x%x\n", pri_map->pri5_tc);
2936fc22440Sliuzhongzhu 	dev_info(&hdev->pdev->dev, "pri_6_to_tc: 0x%x\n", pri_map->pri6_tc);
2946fc22440Sliuzhongzhu 	dev_info(&hdev->pdev->dev, "pri_7_to_tc: 0x%x\n", pri_map->pri7_tc);
2956fc22440Sliuzhongzhu }
2966fc22440Sliuzhongzhu 
2977d9d7f88Sliuzhongzhu static void hclge_dbg_dump_qos_buf_cfg(struct hclge_dev *hdev)
2987d9d7f88Sliuzhongzhu {
2997d9d7f88Sliuzhongzhu 	struct hclge_tx_buff_alloc_cmd *tx_buf_cmd;
3007d9d7f88Sliuzhongzhu 	struct hclge_rx_priv_buff_cmd *rx_buf_cmd;
3017d9d7f88Sliuzhongzhu 	struct hclge_rx_priv_wl_buf *rx_priv_wl;
3027d9d7f88Sliuzhongzhu 	struct hclge_rx_com_wl *rx_packet_cnt;
3037d9d7f88Sliuzhongzhu 	struct hclge_rx_com_thrd *rx_com_thrd;
3047d9d7f88Sliuzhongzhu 	struct hclge_rx_com_wl *rx_com_wl;
3057d9d7f88Sliuzhongzhu 	enum hclge_opcode_type cmd;
3067d9d7f88Sliuzhongzhu 	struct hclge_desc desc[2];
3077d9d7f88Sliuzhongzhu 	int i, ret;
3087d9d7f88Sliuzhongzhu 
3097d9d7f88Sliuzhongzhu 	cmd = HCLGE_OPC_TX_BUFF_ALLOC;
3107d9d7f88Sliuzhongzhu 	hclge_cmd_setup_basic_desc(desc, cmd, true);
3117d9d7f88Sliuzhongzhu 	ret = hclge_cmd_send(&hdev->hw, desc, 1);
3127d9d7f88Sliuzhongzhu 	if (ret)
3137d9d7f88Sliuzhongzhu 		goto err_qos_cmd_send;
3147d9d7f88Sliuzhongzhu 
3157d9d7f88Sliuzhongzhu 	dev_info(&hdev->pdev->dev, "dump qos buf cfg\n");
3167d9d7f88Sliuzhongzhu 
3177d9d7f88Sliuzhongzhu 	tx_buf_cmd = (struct hclge_tx_buff_alloc_cmd *)desc[0].data;
3187d9d7f88Sliuzhongzhu 	for (i = 0; i < HCLGE_TC_NUM; i++)
3197d9d7f88Sliuzhongzhu 		dev_info(&hdev->pdev->dev, "tx_packet_buf_tc_%d: 0x%x\n", i,
3207d9d7f88Sliuzhongzhu 			 tx_buf_cmd->tx_pkt_buff[i]);
3217d9d7f88Sliuzhongzhu 
3227d9d7f88Sliuzhongzhu 	cmd = HCLGE_OPC_RX_PRIV_BUFF_ALLOC;
3237d9d7f88Sliuzhongzhu 	hclge_cmd_setup_basic_desc(desc, cmd, true);
3247d9d7f88Sliuzhongzhu 	ret = hclge_cmd_send(&hdev->hw, desc, 1);
3257d9d7f88Sliuzhongzhu 	if (ret)
3267d9d7f88Sliuzhongzhu 		goto err_qos_cmd_send;
3277d9d7f88Sliuzhongzhu 
3287d9d7f88Sliuzhongzhu 	dev_info(&hdev->pdev->dev, "\n");
3297d9d7f88Sliuzhongzhu 	rx_buf_cmd = (struct hclge_rx_priv_buff_cmd *)desc[0].data;
3307d9d7f88Sliuzhongzhu 	for (i = 0; i < HCLGE_TC_NUM; i++)
3317d9d7f88Sliuzhongzhu 		dev_info(&hdev->pdev->dev, "rx_packet_buf_tc_%d: 0x%x\n", i,
3327d9d7f88Sliuzhongzhu 			 rx_buf_cmd->buf_num[i]);
3337d9d7f88Sliuzhongzhu 
3347d9d7f88Sliuzhongzhu 	dev_info(&hdev->pdev->dev, "rx_share_buf: 0x%x\n",
3357d9d7f88Sliuzhongzhu 		 rx_buf_cmd->shared_buf);
3367d9d7f88Sliuzhongzhu 
3377d9d7f88Sliuzhongzhu 	cmd = HCLGE_OPC_RX_PRIV_WL_ALLOC;
3387d9d7f88Sliuzhongzhu 	hclge_cmd_setup_basic_desc(&desc[0], cmd, true);
3397d9d7f88Sliuzhongzhu 	desc[0].flag |= cpu_to_le16(HCLGE_CMD_FLAG_NEXT);
3407d9d7f88Sliuzhongzhu 	hclge_cmd_setup_basic_desc(&desc[1], cmd, true);
3417d9d7f88Sliuzhongzhu 	ret = hclge_cmd_send(&hdev->hw, desc, 2);
3427d9d7f88Sliuzhongzhu 	if (ret)
3437d9d7f88Sliuzhongzhu 		goto err_qos_cmd_send;
3447d9d7f88Sliuzhongzhu 
3457d9d7f88Sliuzhongzhu 	dev_info(&hdev->pdev->dev, "\n");
3467d9d7f88Sliuzhongzhu 	rx_priv_wl = (struct hclge_rx_priv_wl_buf *)desc[0].data;
3477d9d7f88Sliuzhongzhu 	for (i = 0; i < HCLGE_TC_NUM_ONE_DESC; i++)
3487d9d7f88Sliuzhongzhu 		dev_info(&hdev->pdev->dev,
3497d9d7f88Sliuzhongzhu 			 "rx_priv_wl_tc_%d: high: 0x%x, low: 0x%x\n", i,
3507d9d7f88Sliuzhongzhu 			 rx_priv_wl->tc_wl[i].high, rx_priv_wl->tc_wl[i].low);
3517d9d7f88Sliuzhongzhu 
3527d9d7f88Sliuzhongzhu 	rx_priv_wl = (struct hclge_rx_priv_wl_buf *)desc[1].data;
3537d9d7f88Sliuzhongzhu 	for (i = 0; i < HCLGE_TC_NUM_ONE_DESC; i++)
3547d9d7f88Sliuzhongzhu 		dev_info(&hdev->pdev->dev,
3557d9d7f88Sliuzhongzhu 			 "rx_priv_wl_tc_%d: high: 0x%x, low: 0x%x\n", i + 4,
3567d9d7f88Sliuzhongzhu 			 rx_priv_wl->tc_wl[i].high, rx_priv_wl->tc_wl[i].low);
3577d9d7f88Sliuzhongzhu 
3587d9d7f88Sliuzhongzhu 	cmd = HCLGE_OPC_RX_COM_THRD_ALLOC;
3597d9d7f88Sliuzhongzhu 	hclge_cmd_setup_basic_desc(&desc[0], cmd, true);
3607d9d7f88Sliuzhongzhu 	desc[0].flag |= cpu_to_le16(HCLGE_CMD_FLAG_NEXT);
3617d9d7f88Sliuzhongzhu 	hclge_cmd_setup_basic_desc(&desc[1], cmd, true);
3627d9d7f88Sliuzhongzhu 	ret = hclge_cmd_send(&hdev->hw, desc, 2);
3637d9d7f88Sliuzhongzhu 	if (ret)
3647d9d7f88Sliuzhongzhu 		goto err_qos_cmd_send;
3657d9d7f88Sliuzhongzhu 
3667d9d7f88Sliuzhongzhu 	dev_info(&hdev->pdev->dev, "\n");
3677d9d7f88Sliuzhongzhu 	rx_com_thrd = (struct hclge_rx_com_thrd *)desc[0].data;
3687d9d7f88Sliuzhongzhu 	for (i = 0; i < HCLGE_TC_NUM_ONE_DESC; i++)
3697d9d7f88Sliuzhongzhu 		dev_info(&hdev->pdev->dev,
3707d9d7f88Sliuzhongzhu 			 "rx_com_thrd_tc_%d: high: 0x%x, low: 0x%x\n", i,
3717d9d7f88Sliuzhongzhu 			 rx_com_thrd->com_thrd[i].high,
3727d9d7f88Sliuzhongzhu 			 rx_com_thrd->com_thrd[i].low);
3737d9d7f88Sliuzhongzhu 
3747d9d7f88Sliuzhongzhu 	rx_com_thrd = (struct hclge_rx_com_thrd *)desc[1].data;
3757d9d7f88Sliuzhongzhu 	for (i = 0; i < HCLGE_TC_NUM_ONE_DESC; i++)
3767d9d7f88Sliuzhongzhu 		dev_info(&hdev->pdev->dev,
3777d9d7f88Sliuzhongzhu 			 "rx_com_thrd_tc_%d: high: 0x%x, low: 0x%x\n", i + 4,
3787d9d7f88Sliuzhongzhu 			 rx_com_thrd->com_thrd[i].high,
3797d9d7f88Sliuzhongzhu 			 rx_com_thrd->com_thrd[i].low);
3807d9d7f88Sliuzhongzhu 
3817d9d7f88Sliuzhongzhu 	cmd = HCLGE_OPC_RX_COM_WL_ALLOC;
3827d9d7f88Sliuzhongzhu 	hclge_cmd_setup_basic_desc(desc, cmd, true);
3837d9d7f88Sliuzhongzhu 	ret = hclge_cmd_send(&hdev->hw, desc, 1);
3847d9d7f88Sliuzhongzhu 	if (ret)
3857d9d7f88Sliuzhongzhu 		goto err_qos_cmd_send;
3867d9d7f88Sliuzhongzhu 
3877d9d7f88Sliuzhongzhu 	rx_com_wl = (struct hclge_rx_com_wl *)desc[0].data;
3887d9d7f88Sliuzhongzhu 	dev_info(&hdev->pdev->dev, "\n");
3897d9d7f88Sliuzhongzhu 	dev_info(&hdev->pdev->dev, "rx_com_wl: high: 0x%x, low: 0x%x\n",
3907d9d7f88Sliuzhongzhu 		 rx_com_wl->com_wl.high, rx_com_wl->com_wl.low);
3917d9d7f88Sliuzhongzhu 
3927d9d7f88Sliuzhongzhu 	cmd = HCLGE_OPC_RX_GBL_PKT_CNT;
3937d9d7f88Sliuzhongzhu 	hclge_cmd_setup_basic_desc(desc, cmd, true);
3947d9d7f88Sliuzhongzhu 	ret = hclge_cmd_send(&hdev->hw, desc, 1);
3957d9d7f88Sliuzhongzhu 	if (ret)
3967d9d7f88Sliuzhongzhu 		goto err_qos_cmd_send;
3977d9d7f88Sliuzhongzhu 
3987d9d7f88Sliuzhongzhu 	rx_packet_cnt = (struct hclge_rx_com_wl *)desc[0].data;
3997d9d7f88Sliuzhongzhu 	dev_info(&hdev->pdev->dev,
4007d9d7f88Sliuzhongzhu 		 "rx_global_packet_cnt: high: 0x%x, low: 0x%x\n",
4017d9d7f88Sliuzhongzhu 		 rx_packet_cnt->com_wl.high, rx_packet_cnt->com_wl.low);
4027d9d7f88Sliuzhongzhu 
4037d9d7f88Sliuzhongzhu 	return;
4047d9d7f88Sliuzhongzhu 
4057d9d7f88Sliuzhongzhu err_qos_cmd_send:
4067d9d7f88Sliuzhongzhu 	dev_err(&hdev->pdev->dev,
4077d9d7f88Sliuzhongzhu 		"dump qos buf cfg fail(0x%x), status is %d\n", cmd, ret);
4087d9d7f88Sliuzhongzhu }
4097d9d7f88Sliuzhongzhu 
4107737f1fbSliuzhongzhu static void hclge_dbg_dump_mng_table(struct hclge_dev *hdev)
4117737f1fbSliuzhongzhu {
4127737f1fbSliuzhongzhu 	struct hclge_mac_ethertype_idx_rd_cmd *req0;
4137737f1fbSliuzhongzhu 	char printf_buf[HCLGE_DBG_BUF_LEN];
4147737f1fbSliuzhongzhu 	struct hclge_desc desc;
4157737f1fbSliuzhongzhu 	int ret, i;
4167737f1fbSliuzhongzhu 
4177737f1fbSliuzhongzhu 	dev_info(&hdev->pdev->dev, "mng tab:\n");
4187737f1fbSliuzhongzhu 	memset(printf_buf, 0, HCLGE_DBG_BUF_LEN);
4197737f1fbSliuzhongzhu 	strncat(printf_buf,
4207737f1fbSliuzhongzhu 		"entry|mac_addr         |mask|ether|mask|vlan|mask",
4217737f1fbSliuzhongzhu 		HCLGE_DBG_BUF_LEN - 1);
4227737f1fbSliuzhongzhu 	strncat(printf_buf + strlen(printf_buf),
4237737f1fbSliuzhongzhu 		"|i_map|i_dir|e_type|pf_id|vf_id|q_id|drop\n",
4247737f1fbSliuzhongzhu 		HCLGE_DBG_BUF_LEN - strlen(printf_buf) - 1);
4257737f1fbSliuzhongzhu 
4267737f1fbSliuzhongzhu 	dev_info(&hdev->pdev->dev, "%s", printf_buf);
4277737f1fbSliuzhongzhu 
4287737f1fbSliuzhongzhu 	for (i = 0; i < HCLGE_DBG_MNG_TBL_MAX; i++) {
4297737f1fbSliuzhongzhu 		hclge_cmd_setup_basic_desc(&desc, HCLGE_MAC_ETHERTYPE_IDX_RD,
4307737f1fbSliuzhongzhu 					   true);
4317737f1fbSliuzhongzhu 		req0 = (struct hclge_mac_ethertype_idx_rd_cmd *)&desc.data;
4327737f1fbSliuzhongzhu 		req0->index = cpu_to_le16(i);
4337737f1fbSliuzhongzhu 
4347737f1fbSliuzhongzhu 		ret = hclge_cmd_send(&hdev->hw, &desc, 1);
4357737f1fbSliuzhongzhu 		if (ret) {
4367737f1fbSliuzhongzhu 			dev_err(&hdev->pdev->dev,
4377737f1fbSliuzhongzhu 				"call hclge_cmd_send fail, ret = %d\n", ret);
4387737f1fbSliuzhongzhu 			return;
4397737f1fbSliuzhongzhu 		}
4407737f1fbSliuzhongzhu 
4417737f1fbSliuzhongzhu 		if (!req0->resp_code)
4427737f1fbSliuzhongzhu 			continue;
4437737f1fbSliuzhongzhu 
4447737f1fbSliuzhongzhu 		memset(printf_buf, 0, HCLGE_DBG_BUF_LEN);
4457737f1fbSliuzhongzhu 		snprintf(printf_buf, HCLGE_DBG_BUF_LEN,
4467737f1fbSliuzhongzhu 			 "%02u   |%02x:%02x:%02x:%02x:%02x:%02x|",
4477737f1fbSliuzhongzhu 			 req0->index, req0->mac_add[0], req0->mac_add[1],
4487737f1fbSliuzhongzhu 			 req0->mac_add[2], req0->mac_add[3], req0->mac_add[4],
4497737f1fbSliuzhongzhu 			 req0->mac_add[5]);
4507737f1fbSliuzhongzhu 
4517737f1fbSliuzhongzhu 		snprintf(printf_buf + strlen(printf_buf),
4527737f1fbSliuzhongzhu 			 HCLGE_DBG_BUF_LEN - strlen(printf_buf),
4537737f1fbSliuzhongzhu 			 "%x   |%04x |%x   |%04x|%x   |%02x   |%02x   |",
4547737f1fbSliuzhongzhu 			 !!(req0->flags & HCLGE_DBG_MNG_MAC_MASK_B),
4557737f1fbSliuzhongzhu 			 req0->ethter_type,
4567737f1fbSliuzhongzhu 			 !!(req0->flags & HCLGE_DBG_MNG_ETHER_MASK_B),
4577737f1fbSliuzhongzhu 			 req0->vlan_tag & HCLGE_DBG_MNG_VLAN_TAG,
4587737f1fbSliuzhongzhu 			 !!(req0->flags & HCLGE_DBG_MNG_VLAN_MASK_B),
4597737f1fbSliuzhongzhu 			 req0->i_port_bitmap, req0->i_port_direction);
4607737f1fbSliuzhongzhu 
4617737f1fbSliuzhongzhu 		snprintf(printf_buf + strlen(printf_buf),
4627737f1fbSliuzhongzhu 			 HCLGE_DBG_BUF_LEN - strlen(printf_buf),
4637737f1fbSliuzhongzhu 			 "%d     |%d    |%02d   |%04d|%x\n",
4647737f1fbSliuzhongzhu 			 !!(req0->egress_port & HCLGE_DBG_MNG_E_TYPE_B),
4657737f1fbSliuzhongzhu 			 req0->egress_port & HCLGE_DBG_MNG_PF_ID,
4667737f1fbSliuzhongzhu 			 (req0->egress_port >> 3) & HCLGE_DBG_MNG_VF_ID,
4677737f1fbSliuzhongzhu 			 req0->egress_queue,
4687737f1fbSliuzhongzhu 			 !!(req0->egress_port & HCLGE_DBG_MNG_DROP_B));
4697737f1fbSliuzhongzhu 
4707737f1fbSliuzhongzhu 		dev_info(&hdev->pdev->dev, "%s", printf_buf);
4717737f1fbSliuzhongzhu 	}
4727737f1fbSliuzhongzhu }
4737737f1fbSliuzhongzhu 
4743c666b58Sliuzhongzhu static void hclge_dbg_fd_tcam_read(struct hclge_dev *hdev, u8 stage,
4753c666b58Sliuzhongzhu 				   bool sel_x, u32 loc)
4763c666b58Sliuzhongzhu {
4773c666b58Sliuzhongzhu 	struct hclge_fd_tcam_config_1_cmd *req1;
4783c666b58Sliuzhongzhu 	struct hclge_fd_tcam_config_2_cmd *req2;
4793c666b58Sliuzhongzhu 	struct hclge_fd_tcam_config_3_cmd *req3;
4803c666b58Sliuzhongzhu 	struct hclge_desc desc[3];
4813c666b58Sliuzhongzhu 	int ret, i;
4823c666b58Sliuzhongzhu 	u32 *req;
4833c666b58Sliuzhongzhu 
4843c666b58Sliuzhongzhu 	hclge_cmd_setup_basic_desc(&desc[0], HCLGE_OPC_FD_TCAM_OP, true);
4853c666b58Sliuzhongzhu 	desc[0].flag |= cpu_to_le16(HCLGE_CMD_FLAG_NEXT);
4863c666b58Sliuzhongzhu 	hclge_cmd_setup_basic_desc(&desc[1], HCLGE_OPC_FD_TCAM_OP, true);
4873c666b58Sliuzhongzhu 	desc[1].flag |= cpu_to_le16(HCLGE_CMD_FLAG_NEXT);
4883c666b58Sliuzhongzhu 	hclge_cmd_setup_basic_desc(&desc[2], HCLGE_OPC_FD_TCAM_OP, true);
4893c666b58Sliuzhongzhu 
4903c666b58Sliuzhongzhu 	req1 = (struct hclge_fd_tcam_config_1_cmd *)desc[0].data;
4913c666b58Sliuzhongzhu 	req2 = (struct hclge_fd_tcam_config_2_cmd *)desc[1].data;
4923c666b58Sliuzhongzhu 	req3 = (struct hclge_fd_tcam_config_3_cmd *)desc[2].data;
4933c666b58Sliuzhongzhu 
4943c666b58Sliuzhongzhu 	req1->stage  = stage;
4953c666b58Sliuzhongzhu 	req1->xy_sel = sel_x ? 1 : 0;
4963c666b58Sliuzhongzhu 	req1->index  = cpu_to_le32(loc);
4973c666b58Sliuzhongzhu 
4983c666b58Sliuzhongzhu 	ret = hclge_cmd_send(&hdev->hw, desc, 3);
4993c666b58Sliuzhongzhu 	if (ret)
5003c666b58Sliuzhongzhu 		return;
5013c666b58Sliuzhongzhu 
5023c666b58Sliuzhongzhu 	dev_info(&hdev->pdev->dev, " read result tcam key %s(%u):\n",
5033c666b58Sliuzhongzhu 		 sel_x ? "x" : "y", loc);
5043c666b58Sliuzhongzhu 
5053c666b58Sliuzhongzhu 	req = (u32 *)req1->tcam_data;
5063c666b58Sliuzhongzhu 	for (i = 0; i < 2; i++)
5073c666b58Sliuzhongzhu 		dev_info(&hdev->pdev->dev, "%08x\n", *req++);
5083c666b58Sliuzhongzhu 
5093c666b58Sliuzhongzhu 	req = (u32 *)req2->tcam_data;
5103c666b58Sliuzhongzhu 	for (i = 0; i < 6; i++)
5113c666b58Sliuzhongzhu 		dev_info(&hdev->pdev->dev, "%08x\n", *req++);
5123c666b58Sliuzhongzhu 
5133c666b58Sliuzhongzhu 	req = (u32 *)req3->tcam_data;
5143c666b58Sliuzhongzhu 	for (i = 0; i < 5; i++)
5153c666b58Sliuzhongzhu 		dev_info(&hdev->pdev->dev, "%08x\n", *req++);
5163c666b58Sliuzhongzhu }
5173c666b58Sliuzhongzhu 
5183c666b58Sliuzhongzhu static void hclge_dbg_fd_tcam(struct hclge_dev *hdev)
5193c666b58Sliuzhongzhu {
5203c666b58Sliuzhongzhu 	u32 i;
5213c666b58Sliuzhongzhu 
5223c666b58Sliuzhongzhu 	for (i = 0; i < hdev->fd_cfg.rule_num[0]; i++) {
5233c666b58Sliuzhongzhu 		hclge_dbg_fd_tcam_read(hdev, 0, true, i);
5243c666b58Sliuzhongzhu 		hclge_dbg_fd_tcam_read(hdev, 0, false, i);
5253c666b58Sliuzhongzhu 	}
5263c666b58Sliuzhongzhu }
5273c666b58Sliuzhongzhu 
5283c666b58Sliuzhongzhu int hclge_dbg_run_cmd(struct hnae3_handle *handle, char *cmd_buf)
5293c666b58Sliuzhongzhu {
5303c666b58Sliuzhongzhu 	struct hclge_vport *vport = hclge_get_vport(handle);
5313c666b58Sliuzhongzhu 	struct hclge_dev *hdev = vport->back;
5323c666b58Sliuzhongzhu 
5333c666b58Sliuzhongzhu 	if (strncmp(cmd_buf, "dump fd tcam", 12) == 0) {
5343c666b58Sliuzhongzhu 		hclge_dbg_fd_tcam(hdev);
5352849d4e7Sliuzhongzhu 	} else if (strncmp(cmd_buf, "dump tc", 7) == 0) {
5362849d4e7Sliuzhongzhu 		hclge_dbg_dump_tc(hdev);
53796227f4cSliuzhongzhu 	} else if (strncmp(cmd_buf, "dump tm", 7) == 0) {
53896227f4cSliuzhongzhu 		hclge_dbg_dump_tm(hdev);
539d958919dSliuzhongzhu 	} else if (strncmp(cmd_buf, "dump qos pause cfg", 18) == 0) {
540d958919dSliuzhongzhu 		hclge_dbg_dump_qos_pause_cfg(hdev);
5416fc22440Sliuzhongzhu 	} else if (strncmp(cmd_buf, "dump qos pri map", 16) == 0) {
5426fc22440Sliuzhongzhu 		hclge_dbg_dump_qos_pri_map(hdev);
5437d9d7f88Sliuzhongzhu 	} else if (strncmp(cmd_buf, "dump qos buf cfg", 16) == 0) {
5447d9d7f88Sliuzhongzhu 		hclge_dbg_dump_qos_buf_cfg(hdev);
5457737f1fbSliuzhongzhu 	} else if (strncmp(cmd_buf, "dump mng tbl", 12) == 0) {
5467737f1fbSliuzhongzhu 		hclge_dbg_dump_mng_table(hdev);
5473c666b58Sliuzhongzhu 	} else {
5483c666b58Sliuzhongzhu 		dev_info(&hdev->pdev->dev, "unknown command\n");
5493c666b58Sliuzhongzhu 		return -EINVAL;
5503c666b58Sliuzhongzhu 	}
5513c666b58Sliuzhongzhu 
5523c666b58Sliuzhongzhu 	return 0;
5533c666b58Sliuzhongzhu }
554