net: hns3: do not query unsupported commands in debugfs
authorYufeng Mo <moyufeng@huawei.com>
Thu, 1 Aug 2019 03:55:36 +0000 (11:55 +0800)
committerDavid S. Miller <davem@davemloft.net>
Thu, 1 Aug 2019 17:32:12 +0000 (13:32 -0400)
Some commands are not supported on DCB-unsupported ports.
This patch distinguishes these commands and does not query
unsupported commands in debugfs.

This patch also fix an error in the dump "qos buf cfg"
command in debugfs.

Fixes: 2849d4e7a1be ("net: hns3: Add "tc config" info query function")
Fixes: 7d9d7f8864ba ("net: hns3: Add "qos buffer" config info query function")
Signed-off-by: Yufeng Mo <moyufeng@huawei.com>
Reviewed-by: Peng Li <lipeng321@huawei.com>
Signed-off-by: Huazhong Tan <tanhuazhong@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c

index ab625c757a955261f7980e3f5f8c1904b5f83c9d..e987d18ae18d01d3905ae0b59499d1fde967aea0 100644 (file)
@@ -325,6 +325,12 @@ static void hclge_dbg_dump_tc(struct hclge_dev *hdev)
        struct hclge_desc desc;
        int i, ret;
 
+       if (!hnae3_dev_dcb_supported(hdev)) {
+               dev_info(&hdev->pdev->dev,
+                        "Only DCB-supported dev supports tc\n");
+               return;
+       }
+
        hclge_cmd_setup_basic_desc(&desc, HCLGE_OPC_ETS_TC_WEIGHT, true);
 
        ret = hclge_cmd_send(&hdev->hw, &desc, 1);
@@ -409,6 +415,12 @@ static void hclge_dbg_dump_tm_pg(struct hclge_dev *hdev)
 
        dev_info(&hdev->pdev->dev, "QS_SCH qs_id: %u\n", desc.data[0]);
 
+       if (!hnae3_dev_dcb_supported(hdev)) {
+               dev_info(&hdev->pdev->dev,
+                        "Only DCB-supported dev supports tm mapping\n");
+               return;
+       }
+
        cmd = HCLGE_OPC_TM_BP_TO_QSET_MAPPING;
        hclge_cmd_setup_basic_desc(&desc, cmd, true);
        ret = hclge_cmd_send(&hdev->hw, &desc, 1);
@@ -590,6 +602,12 @@ static void hclge_dbg_dump_tm_map(struct hclge_dev *hdev,
        dev_info(&hdev->pdev->dev, "%04d     | %04d    | %02d     | %02d\n",
                 queue_id, qset_id, pri_id, tc_id);
 
+       if (!hnae3_dev_dcb_supported(hdev)) {
+               dev_info(&hdev->pdev->dev,
+                        "Only DCB-supported dev supports tm mapping\n");
+               return;
+       }
+
        cmd = HCLGE_OPC_TM_BP_TO_QSET_MAPPING;
        bp_to_qs_map_cmd = (struct hclge_bp_to_qs_map_cmd *)desc.data;
        for (group_id = 0; group_id < 32; group_id++) {
@@ -715,6 +733,34 @@ static void hclge_dbg_dump_qos_buf_cfg(struct hclge_dev *hdev)
        dev_info(&hdev->pdev->dev, "rx_share_buf: 0x%x\n",
                 rx_buf_cmd->shared_buf);
 
+       cmd = HCLGE_OPC_RX_COM_WL_ALLOC;
+       hclge_cmd_setup_basic_desc(desc, cmd, true);
+       ret = hclge_cmd_send(&hdev->hw, desc, 1);
+       if (ret)
+               goto err_qos_cmd_send;
+
+       rx_com_wl = (struct hclge_rx_com_wl *)desc[0].data;
+       dev_info(&hdev->pdev->dev, "\n");
+       dev_info(&hdev->pdev->dev, "rx_com_wl: high: 0x%x, low: 0x%x\n",
+                rx_com_wl->com_wl.high, rx_com_wl->com_wl.low);
+
+       cmd = HCLGE_OPC_RX_GBL_PKT_CNT;
+       hclge_cmd_setup_basic_desc(desc, cmd, true);
+       ret = hclge_cmd_send(&hdev->hw, desc, 1);
+       if (ret)
+               goto err_qos_cmd_send;
+
+       rx_packet_cnt = (struct hclge_rx_com_wl *)desc[0].data;
+       dev_info(&hdev->pdev->dev,
+                "rx_global_packet_cnt: high: 0x%x, low: 0x%x\n",
+                rx_packet_cnt->com_wl.high, rx_packet_cnt->com_wl.low);
+       dev_info(&hdev->pdev->dev, "\n");
+
+       if (!hnae3_dev_dcb_supported(hdev)) {
+               dev_info(&hdev->pdev->dev,
+                        "Only DCB-supported dev supports rx priv wl\n");
+               return;
+       }
        cmd = HCLGE_OPC_RX_PRIV_WL_ALLOC;
        hclge_cmd_setup_basic_desc(&desc[0], cmd, true);
        desc[0].flag |= cpu_to_le16(HCLGE_CMD_FLAG_NEXT);
@@ -723,7 +769,6 @@ static void hclge_dbg_dump_qos_buf_cfg(struct hclge_dev *hdev)
        if (ret)
                goto err_qos_cmd_send;
 
-       dev_info(&hdev->pdev->dev, "\n");
        rx_priv_wl = (struct hclge_rx_priv_wl_buf *)desc[0].data;
        for (i = 0; i < HCLGE_TC_NUM_ONE_DESC; i++)
                dev_info(&hdev->pdev->dev,
@@ -758,29 +803,6 @@ static void hclge_dbg_dump_qos_buf_cfg(struct hclge_dev *hdev)
                         "rx_com_thrd_tc_%d: high: 0x%x, low: 0x%x\n", i + 4,
                         rx_com_thrd->com_thrd[i].high,
                         rx_com_thrd->com_thrd[i].low);
-
-       cmd = HCLGE_OPC_RX_COM_WL_ALLOC;
-       hclge_cmd_setup_basic_desc(desc, cmd, true);
-       ret = hclge_cmd_send(&hdev->hw, desc, 1);
-       if (ret)
-               goto err_qos_cmd_send;
-
-       rx_com_wl = (struct hclge_rx_com_wl *)desc[0].data;
-       dev_info(&hdev->pdev->dev, "\n");
-       dev_info(&hdev->pdev->dev, "rx_com_wl: high: 0x%x, low: 0x%x\n",
-                rx_com_wl->com_wl.high, rx_com_wl->com_wl.low);
-
-       cmd = HCLGE_OPC_RX_GBL_PKT_CNT;
-       hclge_cmd_setup_basic_desc(desc, cmd, true);
-       ret = hclge_cmd_send(&hdev->hw, desc, 1);
-       if (ret)
-               goto err_qos_cmd_send;
-
-       rx_packet_cnt = (struct hclge_rx_com_wl *)desc[0].data;
-       dev_info(&hdev->pdev->dev,
-                "rx_global_packet_cnt: high: 0x%x, low: 0x%x\n",
-                rx_packet_cnt->com_wl.high, rx_packet_cnt->com_wl.low);
-
        return;
 
 err_qos_cmd_send: