Received: by 2002:a05:6a11:4021:0:0:0:0 with SMTP id ky33csp552581pxb; Wed, 29 Sep 2021 05:04:12 -0700 (PDT) X-Google-Smtp-Source: ABdhPJys3Q3fYNnWLlaKVW6I6D4JrIpL7zBvr92btgPzTiimoYsV+VGMZ6IFGBF2sz2i55f0aO0L X-Received: by 2002:a63:cc01:: with SMTP id x1mr9308482pgf.304.1632917052117; Wed, 29 Sep 2021 05:04:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1632917052; cv=none; d=google.com; s=arc-20160816; b=cA8qZ+PERTx1UATbgt6aSwITarYojUGngp++hJPpR10o2WvxG1bCjqhdN6lmFB7Nex LnBzyPyBBueo0EtUtWdxsoc8EOiGVfPOgHtQsqj7/d8FmgImluo4l2Fe0dQvwqAqyVjd Gp8uBg2xZAqUiCuBJw78cIv9TeyfzF0kfiqPBs4MoJQ+b4TRJ0YO/jLHVUY0DwTp5kl+ VLuu9JnsiU5264bh2mJWJ4OIkIVod/DpFNAtyd34feP55Pn6r7xUp4CPYxYLY/JDEmUQ KxkaqYri+GMjlFPPywupnBjBbTbiX1ig1QtlbZq6G2YCVII/41jPQoUl7vsHEJ3Qb3WK XcBA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=y3u4fmIMY7mkQcqv6yobMLi6T035+rTxOcC64HdinD8=; b=ztR7fITRTExrucykkz6yLw7gLLqTdfMCUzTF9rhfh1b5nKXIgLv7Pnw1TngiVWbIjn pSRDPkLEp8x00E+WHUgTFAPOU2R/8CFZK7vw93LVwQH9O+eFwsLqH+GBoi4tgXSWMPOd Pso9L6c5alSA2K4MrA4nAgiQSLO0DUF1cL4gHyr/5aDUEbL6C9l+3/iMhcoYhn2rXmnh kTU1lbdnK9wz2BtwbtPaw83YwB/vYeTWUJdFgYkqUiOPJcaH4TghJF58c3e+tQ8gvHT8 1vNDmMw4tfDd9c/k5YJeu5+KhvBscLQDPP7ugg7khPxNt6LK8oIwKeCTH0LxhhSzAolW tE0w== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=huawei.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id d12si2623110plr.310.2021.09.29.05.03.55; Wed, 29 Sep 2021 05:04:12 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=huawei.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1343541AbhI2L5s (ORCPT + 99 others); Wed, 29 Sep 2021 07:57:48 -0400 Received: from szxga08-in.huawei.com ([45.249.212.255]:24126 "EHLO szxga08-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S245310AbhI2L5r (ORCPT ); Wed, 29 Sep 2021 07:57:47 -0400 Received: from dggemv704-chm.china.huawei.com (unknown [172.30.72.53]) by szxga08-in.huawei.com (SkyGuard) with ESMTP id 4HKFD61PJcz1DHHk; Wed, 29 Sep 2021 19:54:46 +0800 (CST) Received: from kwepemm600016.china.huawei.com (7.193.23.20) by dggemv704-chm.china.huawei.com (10.3.19.47) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.8; Wed, 29 Sep 2021 19:56:03 +0800 Received: from localhost.localdomain (10.67.165.24) by kwepemm600016.china.huawei.com (7.193.23.20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.8; Wed, 29 Sep 2021 19:56:04 +0800 From: Guangbin Huang To: , CC: , , , , Subject: [RFC PATCH net-next] net: hns3: debugfs add support dumping page pool info Date: Wed, 29 Sep 2021 19:51:53 +0800 Message-ID: <20210929115154.16385-1-huangguangbin2@huawei.com> X-Mailer: git-send-email 2.33.0 MIME-Version: 1.0 Content-Transfer-Encoding: 7BIT Content-Type: text/plain; charset=US-ASCII X-Originating-IP: [10.67.165.24] X-ClientProxiedBy: dggems705-chm.china.huawei.com (10.3.19.182) To kwepemm600016.china.huawei.com (7.193.23.20) X-CFilter-Loop: Reflected Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Hao Chen Add a file node "page_pool_info" for debugfs, then cat this file node to dump page pool info as below: QUEUE_ID ALLOCATE_CNT FREE_CNT POOL_SIZE ORDER NID MAX_LEN 000 xxx xxx xxx xxx xxx xxx 001 002 . . Signed-off-by: Hao Chen --- drivers/net/ethernet/hisilicon/hns3/hnae3.h | 1 + .../ethernet/hisilicon/hns3/hns3_debugfs.c | 79 +++++++++++++++++++ 2 files changed, 80 insertions(+) diff --git a/drivers/net/ethernet/hisilicon/hns3/hnae3.h b/drivers/net/ethernet/hisilicon/hns3/hnae3.h index 6ccb0109412b..93c929235940 100644 --- a/drivers/net/ethernet/hisilicon/hns3/hnae3.h +++ b/drivers/net/ethernet/hisilicon/hns3/hnae3.h @@ -298,6 +298,7 @@ enum hnae3_dbg_cmd { HNAE3_DBG_CMD_MAC_TNL_STATUS, HNAE3_DBG_CMD_SERV_INFO, HNAE3_DBG_CMD_UMV_INFO, + HNAE3_DBG_CMD_PAGE_POOL_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 a1555f074e06..a63e9d707048 100644 --- a/drivers/net/ethernet/hisilicon/hns3/hns3_debugfs.c +++ b/drivers/net/ethernet/hisilicon/hns3/hns3_debugfs.c @@ -336,6 +336,13 @@ static struct hns3_dbg_cmd_info hns3_dbg_cmd[] = { .buf_len = HNS3_DBG_READ_LEN, .init = hns3_dbg_common_file_init, }, + { + .name = "page_pool_info", + .cmd = HNAE3_DBG_CMD_PAGE_POOL_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[] = { @@ -941,6 +948,74 @@ static int hns3_dbg_dev_info(struct hnae3_handle *h, char *buf, int len) return 0; } +static const struct hns3_dbg_item page_pool_info_items[] = { + { "QUEUE_ID", 2 }, + { "ALLOCATE_CNT", 2 }, + { "FREE_CNT", 2 }, + { "POOL_SIZE", 2 }, + { "ORDER", 2 }, + { "NID", 2 }, + { "MAX_LEN", 2 }, +}; + +static void hns3_dump_page_pool_info(struct hns3_enet_ring *ring, + char **result, u32 index) +{ + u32 j = 0; + + sprintf(result[j++], "%8u", index); + sprintf(result[j++], "%12u", ring->page_pool->pages_state_hold_cnt); + sprintf(result[j++], "%8u", ring->page_pool->pages_state_release_cnt); + sprintf(result[j++], "%9u", ring->page_pool->p->pool_size); + sprintf(result[j++], "%5u", ring->page_pool->p->order); + sprintf(result[j++], "%3d", ring->page_pool->p->nid); + sprintf(result[j++], "%7u", ring->page_pool->p->max_len); +} + + +static int +hns3_dbg_page_pool_info(struct hnae3_handle *h, char *buf, int len) +{ + char data_str[ARRAY_SIZE(page_pool_info_items)][HNS3_DBG_DATA_STR_LEN]; + char *result[ARRAY_SIZE(page_pool_info_items)]; + struct hns3_nic_priv *priv = h->priv; + char content[HNS3_DBG_INFO_LEN]; + struct hns3_enet_ring *ring; + int pos = 0; + u32 i; + + if (!priv->ring) { + dev_err(&h->pdev->dev, "priv->ring is NULL\n"); + return -EFAULT; + } + + if(!page_pool_enabled) { + dev_err(&h->pdev->dev, "page pool is not enabled\n"); + return -EINVAL; + } + + for (i = 0; i < ARRAY_SIZE(page_pool_info_items); i++) + result[i] = &data_str[i][0]; + + hns3_dbg_fill_content(content, sizeof(content), page_pool_info_items, + NULL, ARRAY_SIZE(page_pool_info_items)); + pos += scnprintf(buf + pos, len - pos, "%s", content); + for (i = 0; i < h->kinfo.num_tqps; i++) { + if (!test_bit(HNS3_NIC_STATE_INITED, &priv->state) || + test_bit(HNS3_NIC_STATE_RESETTING, &priv->state)) + return -EPERM; + ring = &priv->ring[(u32)(i + h->kinfo.num_tqps)]; + hns3_dump_page_pool_info(ring, result, i); + hns3_dbg_fill_content(content, sizeof(content), + page_pool_info_items, + (const char **)result, + ARRAY_SIZE(page_pool_info_items)); + pos += scnprintf(buf + pos, len - pos, "%s", content); + } + + return 0; +} + static int hns3_dbg_get_cmd_index(struct hns3_dbg_data *dbg_data, u32 *index) { u32 i; @@ -982,6 +1057,10 @@ static const struct hns3_dbg_func hns3_dbg_cmd_func[] = { .cmd = HNAE3_DBG_CMD_TX_QUEUE_INFO, .dbg_dump = hns3_dbg_tx_queue_info, }, + { + .cmd = HNAE3_DBG_CMD_PAGE_POOL_INFO, + .dbg_dump = hns3_dbg_page_pool_info, + }, }; static int hns3_dbg_read_cmd(struct hns3_dbg_data *dbg_data, -- 2.33.0