From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 2B629A00BE; Fri, 11 Feb 2022 05:50:07 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 57EAB426ED; Fri, 11 Feb 2022 05:49:45 +0100 (CET) Received: from szxga03-in.huawei.com (szxga03-in.huawei.com [45.249.212.189]) by mails.dpdk.org (Postfix) with ESMTP id A2E6341141 for ; Fri, 11 Feb 2022 05:49:42 +0100 (CET) Received: from dggeme756-chm.china.huawei.com (unknown [172.30.72.54]) by szxga03-in.huawei.com (SkyGuard) with ESMTP id 4Jw1KZ5MzpzdZdt for ; Fri, 11 Feb 2022 12:46:26 +0800 (CST) Received: from localhost.localdomain (10.69.192.56) by dggeme756-chm.china.huawei.com (10.3.19.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.2308.21; Fri, 11 Feb 2022 12:49:40 +0800 From: "Min Hu (Connor)" To: CC: "Min Hu (Connor)" , Yisen Zhuang , Lijun Ou Subject: [PATCH 7/9] net/hns3: dump flow director basic info Date: Fri, 11 Feb 2022 12:49:28 +0800 Message-ID: <20220211044930.2449-8-humin29@huawei.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20220211044930.2449-1-humin29@huawei.com> References: <20220211044930.2449-1-humin29@huawei.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-Originating-IP: [10.69.192.56] X-ClientProxiedBy: dggems702-chm.china.huawei.com (10.3.19.179) To dggeme756-chm.china.huawei.com (10.3.19.102) X-CFilter-Loop: Reflected X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org This patch dumps flow director basic info such rule numbers, hit counts for debug. Signed-off-by: Min Hu (Connor) --- drivers/net/hns3/hns3_ethdev_dump.c | 84 +++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) diff --git a/drivers/net/hns3/hns3_ethdev_dump.c b/drivers/net/hns3/hns3_ethdev_dump.c index a08f8418a2..3fb4959885 100644 --- a/drivers/net/hns3/hns3_ethdev_dump.c +++ b/drivers/net/hns3/hns3_ethdev_dump.c @@ -102,6 +102,89 @@ get_dev_feature_capability(FILE *file, struct hns3_hw *hw) hw->capability & BIT(i) ? "yes" : "no"); } +static const char * +get_fdir_tuple_name(uint32_t index) +{ + static const char * const tuple_name[] = { + "outer_dst_mac", + "outer_src_mac", + "outer_vlan_1st_tag", + "outer_vlan_2nd_tag", + "outer_eth_type", + "outer_l2_rsv", + "outer_ip_tos", + "outer_ip_proto", + "outer_src_ip", + "outer_dst_ip", + "outer_l3_rsv", + "outer_src_port", + "outer_dst_port", + "outer_l4_rsv", + "outer_tun_vni", + "outer_tun_flow_id", + "inner_dst_mac", + "inner_src_mac", + "inner_vlan_tag1", + "inner_vlan_tag2", + "inner_eth_type", + "inner_l2_rsv", + "inner_ip_tos", + "inner_ip_proto", + "inner_src_ip", + "inner_dst_ip", + "inner_l3_rsv", + "inner_src_port", + "inner_dst_port", + "inner_sctp_tag", + }; + if (index < RTE_DIM(tuple_name)) + return tuple_name[index]; + else + return "unknown"; +} + +static void +get_fdir_basic_info(FILE *file, struct hns3_pf *pf) +{ +#define TMPBUF_SIZE 2048 +#define PERLINE_TUPLE_NAMES 4 + struct hns3_fd_cfg *fdcfg = &pf->fdir.fd_cfg; + char tmpbuf[TMPBUF_SIZE] = {0}; + uint32_t i, count = 0; + + fprintf(file, " - Fdir Info:\n"); + fprintf(file, + "\t -- mode=%u max_key_len=%u rule_num:%u cnt_num:%u\n" + "\t -- key_sel=%u tuple_active=0x%x meta_data_active=0x%x\n" + "\t -- ipv6_word_en: in_s=%u in_d=%u out_s=%u out_d=%u\n" + "\t -- active_tuples:\n", + fdcfg->fd_mode, fdcfg->max_key_length, + fdcfg->rule_num[HNS3_FD_STAGE_1], + fdcfg->cnt_num[HNS3_FD_STAGE_1], + fdcfg->key_cfg[HNS3_FD_STAGE_1].key_sel, + fdcfg->key_cfg[HNS3_FD_STAGE_1].tuple_active, + fdcfg->key_cfg[HNS3_FD_STAGE_1].meta_data_active, + fdcfg->key_cfg[HNS3_FD_STAGE_1].inner_sipv6_word_en, + fdcfg->key_cfg[HNS3_FD_STAGE_1].inner_dipv6_word_en, + fdcfg->key_cfg[HNS3_FD_STAGE_1].outer_sipv6_word_en, + fdcfg->key_cfg[HNS3_FD_STAGE_1].outer_dipv6_word_en); + + for (i = 0; i < MAX_TUPLE; i++) { + if (!(fdcfg->key_cfg[HNS3_FD_STAGE_1].tuple_active & BIT(i))) + continue; + if (count % PERLINE_TUPLE_NAMES == 0) + fprintf(file, "\t "); + fprintf(file, " %s", get_fdir_tuple_name(i)); + count++; + if (count % PERLINE_TUPLE_NAMES == 0) + fprintf(file, "\n"); + } + if (count % PERLINE_TUPLE_NAMES) + fprintf(file, "\n"); + + fprintf(file, "%s", tmpbuf); +} + static void get_device_basic_info(FILE *file, struct rte_eth_dev *dev) { @@ -572,6 +655,7 @@ hns3_eth_dev_priv_dump(struct rte_eth_dev *dev, FILE *file) get_dev_mac_info(file, hns); get_rxtx_queue_info(file, dev); get_vlan_config_info(file, hw); + get_fdir_basic_info(file, &hns->pf); return 0; } -- 2.33.0