From 8565366031b50ebce0184ebaf4a07a7e63db488e Mon Sep 17 00:00:00 2001 From: chenjiji09 Date: Fri, 11 Nov 2022 10:38:18 +0800 Subject: [PATCH] app/procinfo: add some extended features - app/procinfo: add dpdk version dump - app/procinfo: add firmware version dump - app/procinfo: add RSS RETA dump - app/procinfo: add module eeprom info dump - app/procinfo: add dump of Rx/Tx burst mode - app/procinfo: fix some wrong doxygen syntax - app/procinfo: support descriptor dump - doc: add some extended features in procinfo guide --- 0195-app-procinfo-add-dpdk-version-dump.patch | 92 +++++++++ ...p-procinfo-add-firmware-version-dump.patch | 108 ++++++++++ 0197-app-procinfo-add-RSS-RETA-dump.patch | 130 ++++++++++++ ...procinfo-add-module-eeprom-info-dump.patch | 125 ++++++++++++ ...rocinfo-add-dump-of-Rx-Tx-burst-mode.patch | 74 +++++++ ...ocinfo-fix-some-wrong-doxygen-syntax.patch | 110 +++++++++++ ...app-procinfo-support-descriptor-dump.patch | 185 ++++++++++++++++++ ...-extended-features-in-procinfo-guide.patch | 79 ++++++++ dpdk.spec | 21 +- 9 files changed, 923 insertions(+), 1 deletion(-) create mode 100644 0195-app-procinfo-add-dpdk-version-dump.patch create mode 100644 0196-app-procinfo-add-firmware-version-dump.patch create mode 100644 0197-app-procinfo-add-RSS-RETA-dump.patch create mode 100644 0198-app-procinfo-add-module-eeprom-info-dump.patch create mode 100644 0199-app-procinfo-add-dump-of-Rx-Tx-burst-mode.patch create mode 100644 0200-app-procinfo-fix-some-wrong-doxygen-syntax.patch create mode 100644 0201-app-procinfo-support-descriptor-dump.patch create mode 100644 0202-doc-add-some-extended-features-in-procinfo-guide.patch diff --git a/0195-app-procinfo-add-dpdk-version-dump.patch b/0195-app-procinfo-add-dpdk-version-dump.patch new file mode 100644 index 0000000..8b3f430 --- /dev/null +++ b/0195-app-procinfo-add-dpdk-version-dump.patch @@ -0,0 +1,92 @@ +From fa7568873908a8f14159ab7e562cbaf6230aa7f6 Mon Sep 17 00:00:00 2001 +From: "Min Hu (Connor)" +Date: Tue, 11 Oct 2022 19:18:36 +0800 +Subject: app/procinfo: add dpdk version dump + +Add support for dump dpdk version. + +The command is like: +dpdk-proc-info -a xxxx:xx:xx.x --file-prefix=xxx -- --version + +Signed-off-by: Min Hu (Connor) +Signed-off-by: Dongdong Liu +Acked-by: Reshma Pattan +--- + app/proc-info/main.c | 19 ++++++++++++++++++- + 1 file changed, 18 insertions(+), 1 deletion(-) + +diff --git a/app/proc-info/main.c b/app/proc-info/main.c +index accb5e716d..72b74d6287 100644 +--- a/app/proc-info/main.c ++++ b/app/proc-info/main.c +@@ -39,6 +39,7 @@ + #include + #include + #include ++#include + + /* Maximum long option length for option parsing. */ + #define MAX_LONG_OPT_SZ 64 +@@ -102,6 +103,8 @@ static char *mempool_iter_name; + /**< Enable dump regs. */ + static uint32_t enable_dump_regs; + static char *dump_regs_file_prefix; ++/* Enable show DPDK version. */ ++static uint32_t enable_shw_version; + + /**< display usage */ + static void +@@ -130,6 +133,7 @@ proc_info_usage(const char *prgname) + " --show-crypto: to display crypto information\n" + " --show-ring[=name]: to display ring information\n" + " --show-mempool[=name]: to display mempool information\n" ++ " --version: to display DPDK version\n" + " --iter-mempool=name: iterate mempool elements to display content\n" + " --dump-regs=file-prefix: dump registers to file with the file-prefix\n", + prgname); +@@ -242,6 +246,7 @@ proc_info_parse_args(int argc, char **argv) + {"show-mempool", optional_argument, NULL, 0}, + {"iter-mempool", required_argument, NULL, 0}, + {"dump-regs", required_argument, NULL, 0}, ++ {"version", 0, NULL, 0}, + {NULL, 0, 0, 0} + }; + +@@ -313,7 +318,9 @@ proc_info_parse_args(int argc, char **argv) + "dump-regs", MAX_LONG_OPT_SZ)) { + enable_dump_regs = 1; + dump_regs_file_prefix = optarg; +- } ++ } else if (!strncmp(long_option[option_index].name, ++ "version", MAX_LONG_OPT_SZ)) ++ enable_shw_version = 1; + break; + case 1: + /* Print xstat single value given by name*/ +@@ -1476,6 +1483,14 @@ dump_regs(char *file_prefix) + } + } + ++static void ++show_version(void) ++{ ++ snprintf(bdr_str, MAX_STRING_LEN, " show - DPDK version "); ++ STATS_BDR_STR(10, bdr_str); ++ printf("DPDK version: %s\n", rte_version()); ++} ++ + int + main(int argc, char **argv) + { +@@ -1589,6 +1604,8 @@ main(int argc, char **argv) + iter_mempool(mempool_iter_name); + if (enable_dump_regs) + dump_regs(dump_regs_file_prefix); ++ if (enable_shw_version) ++ show_version(); + + RTE_ETH_FOREACH_DEV(i) + rte_eth_dev_close(i); +-- +2.23.0 + diff --git a/0196-app-procinfo-add-firmware-version-dump.patch b/0196-app-procinfo-add-firmware-version-dump.patch new file mode 100644 index 0000000..ff635aa --- /dev/null +++ b/0196-app-procinfo-add-firmware-version-dump.patch @@ -0,0 +1,108 @@ +From d64ecbaa1d8c8fa64cd655099bbf09c2b19a7c3f Mon Sep 17 00:00:00 2001 +From: Dongdong Liu +Date: Tue, 11 Oct 2022 19:18:37 +0800 +Subject: app/procinfo: add firmware version dump + +Add support for dump ethdev firmware version. + +The command is like: +dpdk-proc-info -a xxxx:xx:xx.x --file-prefix=xxx -- --firmware-version + +Signed-off-by: Min Hu (Connor) +Signed-off-by: Dongdong Liu +Acked-by: Reshma Pattan +--- + app/proc-info/main.c | 35 +++++++++++++++++++++++++++++++++++ + 1 file changed, 35 insertions(+) + +diff --git a/app/proc-info/main.c b/app/proc-info/main.c +index 72b74d6287..3ea839dbfe 100644 +--- a/app/proc-info/main.c ++++ b/app/proc-info/main.c +@@ -45,6 +45,8 @@ + #define MAX_LONG_OPT_SZ 64 + #define MAX_STRING_LEN 256 + ++#define ETHDEV_FWVERS_LEN 32 ++ + #define STATS_BDR_FMT "========================================" + #define STATS_BDR_STR(w, s) printf("%.*s%s%.*s\n", w, \ + STATS_BDR_FMT, s, w, STATS_BDR_FMT) +@@ -105,6 +107,8 @@ static uint32_t enable_dump_regs; + static char *dump_regs_file_prefix; + /* Enable show DPDK version. */ + static uint32_t enable_shw_version; ++/* Enable show ethdev firmware version. */ ++static uint32_t enable_shw_fw_version; + + /**< display usage */ + static void +@@ -134,6 +138,7 @@ proc_info_usage(const char *prgname) + " --show-ring[=name]: to display ring information\n" + " --show-mempool[=name]: to display mempool information\n" + " --version: to display DPDK version\n" ++ " --firmware-version: to display ethdev firmware version\n" + " --iter-mempool=name: iterate mempool elements to display content\n" + " --dump-regs=file-prefix: dump registers to file with the file-prefix\n", + prgname); +@@ -247,6 +252,7 @@ proc_info_parse_args(int argc, char **argv) + {"iter-mempool", required_argument, NULL, 0}, + {"dump-regs", required_argument, NULL, 0}, + {"version", 0, NULL, 0}, ++ {"firmware-version", 0, NULL, 0}, + {NULL, 0, 0, 0} + }; + +@@ -321,6 +327,9 @@ proc_info_parse_args(int argc, char **argv) + } else if (!strncmp(long_option[option_index].name, + "version", MAX_LONG_OPT_SZ)) + enable_shw_version = 1; ++ else if (!strncmp(long_option[option_index].name, ++ "firmware-version", MAX_LONG_OPT_SZ)) ++ enable_shw_fw_version = 1; + break; + case 1: + /* Print xstat single value given by name*/ +@@ -1491,6 +1500,30 @@ show_version(void) + printf("DPDK version: %s\n", rte_version()); + } + ++static void ++show_firmware_version(void) ++{ ++ char fw_version[ETHDEV_FWVERS_LEN]; ++ uint16_t i; ++ ++ snprintf(bdr_str, MAX_STRING_LEN, " show - firmware version "); ++ STATS_BDR_STR(10, bdr_str); ++ ++ RTE_ETH_FOREACH_DEV(i) { ++ /* Skip if port is not in mask */ ++ if ((enabled_port_mask & (1ul << i)) == 0) ++ continue; ++ ++ if (rte_eth_dev_fw_version_get(i, fw_version, ++ ETHDEV_FWVERS_LEN) == 0) ++ printf("Ethdev port %u firmware version: %s\n", i, ++ fw_version); ++ else ++ printf("Ethdev port %u firmware version: %s\n", i, ++ "not available"); ++ } ++} ++ + int + main(int argc, char **argv) + { +@@ -1606,6 +1639,8 @@ main(int argc, char **argv) + dump_regs(dump_regs_file_prefix); + if (enable_shw_version) + show_version(); ++ if (enable_shw_fw_version) ++ show_firmware_version(); + + RTE_ETH_FOREACH_DEV(i) + rte_eth_dev_close(i); +-- +2.23.0 + diff --git a/0197-app-procinfo-add-RSS-RETA-dump.patch b/0197-app-procinfo-add-RSS-RETA-dump.patch new file mode 100644 index 0000000..7698c60 --- /dev/null +++ b/0197-app-procinfo-add-RSS-RETA-dump.patch @@ -0,0 +1,130 @@ +From 2cf85f0081673ca87cb352c22c72576729f6e135 Mon Sep 17 00:00:00 2001 +From: "Min Hu (Connor)" +Date: Tue, 11 Oct 2022 19:18:38 +0800 +Subject: app/procinfo: add RSS RETA dump + +This patch add support for RSS reta dump. + +The command is like: +dpdk-proc-info -a xxxx:xx:xx.x --file-prefix=xxx -- --show-rss-reta + +Signed-off-by: Min Hu (Connor) +Signed-off-by: Dongdong Liu +Acked-by: Reshma Pattan +--- + app/proc-info/main.c | 57 ++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 57 insertions(+) + +diff --git a/app/proc-info/main.c b/app/proc-info/main.c +index 3ea839dbfe..3f8104e798 100644 +--- a/app/proc-info/main.c ++++ b/app/proc-info/main.c +@@ -46,6 +46,8 @@ + #define MAX_STRING_LEN 256 + + #define ETHDEV_FWVERS_LEN 32 ++#define RTE_RETA_CONF_GROUP_NUM 32 ++#define DIV_ROUND_UP(n, d) (((n) + (d) - 1) / (d)) + + #define STATS_BDR_FMT "========================================" + #define STATS_BDR_STR(w, s) printf("%.*s%s%.*s\n", w, \ +@@ -109,6 +111,8 @@ static char *dump_regs_file_prefix; + static uint32_t enable_shw_version; + /* Enable show ethdev firmware version. */ + static uint32_t enable_shw_fw_version; ++/* Enable show RSS reta. */ ++static uint32_t enable_shw_rss_reta; + + /**< display usage */ + static void +@@ -139,6 +143,7 @@ proc_info_usage(const char *prgname) + " --show-mempool[=name]: to display mempool information\n" + " --version: to display DPDK version\n" + " --firmware-version: to display ethdev firmware version\n" ++ " --show-rss-reta: to display ports redirection table\n" + " --iter-mempool=name: iterate mempool elements to display content\n" + " --dump-regs=file-prefix: dump registers to file with the file-prefix\n", + prgname); +@@ -253,6 +258,7 @@ proc_info_parse_args(int argc, char **argv) + {"dump-regs", required_argument, NULL, 0}, + {"version", 0, NULL, 0}, + {"firmware-version", 0, NULL, 0}, ++ {"show-rss-reta", 0, NULL, 0}, + {NULL, 0, 0, 0} + }; + +@@ -330,6 +336,9 @@ proc_info_parse_args(int argc, char **argv) + else if (!strncmp(long_option[option_index].name, + "firmware-version", MAX_LONG_OPT_SZ)) + enable_shw_fw_version = 1; ++ else if (!strncmp(long_option[option_index].name, ++ "show-rss-reta", MAX_LONG_OPT_SZ)) ++ enable_shw_rss_reta = 1; + break; + case 1: + /* Print xstat single value given by name*/ +@@ -1524,6 +1533,52 @@ show_firmware_version(void) + } + } + ++static void ++show_port_rss_reta_info(void) ++{ ++ struct rte_eth_rss_reta_entry64 reta_conf[RTE_RETA_CONF_GROUP_NUM + 1]; ++ struct rte_eth_dev_info dev_info; ++ uint16_t i, idx, shift; ++ uint16_t num; ++ uint16_t id; ++ int ret; ++ ++ RTE_ETH_FOREACH_DEV(id) { ++ /* Skip if port is not in mask */ ++ if ((enabled_port_mask & (1ul << id)) == 0) ++ continue; ++ ++ snprintf(bdr_str, MAX_STRING_LEN, " Port %u ", id); ++ STATS_BDR_STR(5, bdr_str); ++ ++ ret = rte_eth_dev_info_get(id, &dev_info); ++ if (ret != 0) { ++ fprintf(stderr, "Error getting device info: %s\n", ++ strerror(-ret)); ++ return; ++ } ++ ++ num = DIV_ROUND_UP(dev_info.reta_size, RTE_ETH_RETA_GROUP_SIZE); ++ memset(reta_conf, 0, sizeof(reta_conf)); ++ for (i = 0; i < num; i++) ++ reta_conf[i].mask = ~0ULL; ++ ++ ret = rte_eth_dev_rss_reta_query(id, reta_conf, dev_info.reta_size); ++ if (ret != 0) { ++ fprintf(stderr, "Error getting RSS RETA info: %s\n", ++ strerror(-ret)); ++ return; ++ } ++ ++ for (i = 0; i < dev_info.reta_size; i++) { ++ idx = i / RTE_ETH_RETA_GROUP_SIZE; ++ shift = i % RTE_ETH_RETA_GROUP_SIZE; ++ printf("RSS RETA configuration: hash index=%u, queue=%u\n", ++ i, reta_conf[idx].reta[shift]); ++ } ++ } ++} ++ + int + main(int argc, char **argv) + { +@@ -1641,6 +1696,8 @@ main(int argc, char **argv) + show_version(); + if (enable_shw_fw_version) + show_firmware_version(); ++ if (enable_shw_rss_reta) ++ show_port_rss_reta_info(); + + RTE_ETH_FOREACH_DEV(i) + rte_eth_dev_close(i); +-- +2.23.0 + diff --git a/0198-app-procinfo-add-module-eeprom-info-dump.patch b/0198-app-procinfo-add-module-eeprom-info-dump.patch new file mode 100644 index 0000000..e5c1077 --- /dev/null +++ b/0198-app-procinfo-add-module-eeprom-info-dump.patch @@ -0,0 +1,125 @@ +From b3182cafae4e4a24e1efd0c59f4cfa2a5348e4ea Mon Sep 17 00:00:00 2001 +From: "Min Hu (Connor)" +Date: Tue, 11 Oct 2022 19:18:39 +0800 +Subject: app/procinfo: add module eeprom info dump + +This patch add support for module eeprom info dump. + +The command is like: +dpdk-proc-info -a xxxx:xx:xx.x --file-prefix=xxx -- --show-module-eeprom + +Signed-off-by: Min Hu (Connor) +Signed-off-by: Dongdong Liu +Acked-by: Reshma Pattan +--- + app/proc-info/main.c | 52 ++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 52 insertions(+) + +diff --git a/app/proc-info/main.c b/app/proc-info/main.c +index 3f8104e798..9a3900db6b 100644 +--- a/app/proc-info/main.c ++++ b/app/proc-info/main.c +@@ -48,6 +48,7 @@ + #define ETHDEV_FWVERS_LEN 32 + #define RTE_RETA_CONF_GROUP_NUM 32 + #define DIV_ROUND_UP(n, d) (((n) + (d) - 1) / (d)) ++#define EEPROM_DUMP_CHUNKSIZE 1024 + + #define STATS_BDR_FMT "========================================" + #define STATS_BDR_STR(w, s) printf("%.*s%s%.*s\n", w, \ +@@ -113,6 +114,8 @@ static uint32_t enable_shw_version; + static uint32_t enable_shw_fw_version; + /* Enable show RSS reta. */ + static uint32_t enable_shw_rss_reta; ++/* Enable show module eeprom information. */ ++static uint32_t enable_shw_module_eeprom; + + /**< display usage */ + static void +@@ -144,6 +147,7 @@ proc_info_usage(const char *prgname) + " --version: to display DPDK version\n" + " --firmware-version: to display ethdev firmware version\n" + " --show-rss-reta: to display ports redirection table\n" ++ " --show-module-eeprom: to display ports module eeprom information\n" + " --iter-mempool=name: iterate mempool elements to display content\n" + " --dump-regs=file-prefix: dump registers to file with the file-prefix\n", + prgname); +@@ -259,6 +263,7 @@ proc_info_parse_args(int argc, char **argv) + {"version", 0, NULL, 0}, + {"firmware-version", 0, NULL, 0}, + {"show-rss-reta", 0, NULL, 0}, ++ {"show-module-eeprom", 0, NULL, 0}, + {NULL, 0, 0, 0} + }; + +@@ -339,6 +344,9 @@ proc_info_parse_args(int argc, char **argv) + else if (!strncmp(long_option[option_index].name, + "show-rss-reta", MAX_LONG_OPT_SZ)) + enable_shw_rss_reta = 1; ++ else if (!strncmp(long_option[option_index].name, ++ "show-module-eeprom", MAX_LONG_OPT_SZ)) ++ enable_shw_module_eeprom = 1; + break; + case 1: + /* Print xstat single value given by name*/ +@@ -1579,6 +1587,48 @@ show_port_rss_reta_info(void) + } + } + ++static void ++show_module_eeprom_info(void) ++{ ++ unsigned char bytes_eeprom[EEPROM_DUMP_CHUNKSIZE]; ++ struct rte_eth_dev_module_info module_info; ++ struct rte_dev_eeprom_info eeprom_info; ++ uint16_t i; ++ int ret; ++ ++ RTE_ETH_FOREACH_DEV(i) { ++ /* Skip if port is not in mask */ ++ if ((enabled_port_mask & (1ul << i)) == 0) ++ continue; ++ ++ snprintf(bdr_str, MAX_STRING_LEN, " Port %u ", i); ++ STATS_BDR_STR(5, bdr_str); ++ ++ ret = rte_eth_dev_get_module_info(i, &module_info); ++ if (ret != 0) { ++ fprintf(stderr, "Module EEPROM information read error: %s\n", ++ strerror(-ret)); ++ return; ++ } ++ ++ eeprom_info.offset = 0; ++ eeprom_info.length = module_info.eeprom_len; ++ eeprom_info.data = bytes_eeprom; ++ ++ ret = rte_eth_dev_get_module_eeprom(i, &eeprom_info); ++ if (ret != 0) { ++ fprintf(stderr, "Module EEPROM read error: %s\n", ++ strerror(-ret)); ++ return; ++ } ++ ++ rte_hexdump(stdout, "hexdump", eeprom_info.data, ++ eeprom_info.length); ++ printf("Finish -- Port: %u MODULE EEPROM length: %d bytes\n", ++ i, eeprom_info.length); ++ } ++} ++ + int + main(int argc, char **argv) + { +@@ -1698,6 +1748,8 @@ main(int argc, char **argv) + show_firmware_version(); + if (enable_shw_rss_reta) + show_port_rss_reta_info(); ++ if (enable_shw_module_eeprom) ++ show_module_eeprom_info(); + + RTE_ETH_FOREACH_DEV(i) + rte_eth_dev_close(i); +-- +2.23.0 + diff --git a/0199-app-procinfo-add-dump-of-Rx-Tx-burst-mode.patch b/0199-app-procinfo-add-dump-of-Rx-Tx-burst-mode.patch new file mode 100644 index 0000000..bf6337a --- /dev/null +++ b/0199-app-procinfo-add-dump-of-Rx-Tx-burst-mode.patch @@ -0,0 +1,74 @@ +From b99bfff9a3e4498eca8cc372472a455428f349c7 Mon Sep 17 00:00:00 2001 +From: Jie Hai +Date: Tue, 11 Oct 2022 19:18:40 +0800 +Subject: app/procinfo: add dump of Rx/Tx burst mode + +Add dump of Rx/Tx burst mode in --show-port. + +Sample output changes: + - rx queue +- -- 0 descriptors 0/1024 drop_en rx buffer size 2048 \ + mempool mb_pool_0 socket 0 ++ -- 0 descriptors 0/1024 drop_en rx buffer size 2048 \ + mempool mb_pool_0 socket 0 burst mode : Vector Neon + - tx queue +- -- 0 descriptors 1024 thresh 32/928 \ + offloads : MBUF_FAST_FREE ++ -- 0 descriptors 1024 thresh 32/928 \ + offloads : MBUF_FAST_FREE burst mode : Scalar + +Signed-off-by: Jie Hai +Signed-off-by: Dongdong Liu +Acked-by: Reshma Pattan +--- + app/proc-info/main.c | 15 +++++++++++++++ + 1 file changed, 15 insertions(+) + +diff --git a/app/proc-info/main.c b/app/proc-info/main.c +index 9a3900db6b..fa4330d7d0 100644 +--- a/app/proc-info/main.c ++++ b/app/proc-info/main.c +@@ -845,6 +845,7 @@ show_port(void) + + for (j = 0; j < dev_info.nb_rx_queues; j++) { + struct rte_eth_rxq_info queue_info; ++ struct rte_eth_burst_mode mode; + int count; + + ret = rte_eth_rx_queue_info_get(i, j, &queue_info); +@@ -880,11 +881,18 @@ show_port(void) + if (queue_info.conf.offloads != 0) + show_offloads(queue_info.conf.offloads, rte_eth_dev_rx_offload_name); + ++ if (rte_eth_rx_burst_mode_get(i, j, &mode) == 0) ++ printf(" burst mode : %s%s", ++ mode.info, ++ mode.flags & RTE_ETH_BURST_FLAG_PER_QUEUE ? ++ " (per queue)" : ""); ++ + printf("\n"); + } + + for (j = 0; j < dev_info.nb_tx_queues; j++) { + struct rte_eth_txq_info queue_info; ++ struct rte_eth_burst_mode mode; + + ret = rte_eth_tx_queue_info_get(i, j, &queue_info); + if (ret != 0) +@@ -905,6 +913,13 @@ show_port(void) + + if (queue_info.conf.offloads != 0) + show_offloads(queue_info.conf.offloads, rte_eth_dev_tx_offload_name); ++ ++ if (rte_eth_tx_burst_mode_get(i, j, &mode) == 0) ++ printf(" burst mode : %s%s", ++ mode.info, ++ mode.flags & RTE_ETH_BURST_FLAG_PER_QUEUE ? ++ " (per queue)" : ""); ++ + printf("\n"); + } + +-- +2.23.0 + diff --git a/0200-app-procinfo-fix-some-wrong-doxygen-syntax.patch b/0200-app-procinfo-fix-some-wrong-doxygen-syntax.patch new file mode 100644 index 0000000..61c897a --- /dev/null +++ b/0200-app-procinfo-fix-some-wrong-doxygen-syntax.patch @@ -0,0 +1,110 @@ +From bc54ddcc021752558783ddc1ff1d8e72f5bf525c Mon Sep 17 00:00:00 2001 +From: Dongdong Liu +Date: Tue, 11 Oct 2022 19:18:41 +0800 +Subject: app/procinfo: fix some wrong doxygen syntax + +This code is to do cleanup for the wrong doxygen syntax comments +The DPDK API is documented using doxygen comment annotations in the +header files. The procinfo code seems no need to use doxygen comment. + +Signed-off-by: Dongdong Liu +Acked-by: Reshma Pattan +--- + app/proc-info/main.c | 42 +++++++++++++++++++++--------------------- + 1 file changed, 21 insertions(+), 21 deletions(-) + +diff --git a/app/proc-info/main.c b/app/proc-info/main.c +index fa4330d7d0..dc948c7cc5 100644 +--- a/app/proc-info/main.c ++++ b/app/proc-info/main.c +@@ -54,33 +54,33 @@ + #define STATS_BDR_STR(w, s) printf("%.*s%s%.*s\n", w, \ + STATS_BDR_FMT, s, w, STATS_BDR_FMT) + +-/**< mask of enabled ports */ ++/* mask of enabled ports */ + static unsigned long enabled_port_mask; +-/**< Enable stats. */ ++/* Enable stats. */ + static uint32_t enable_stats; +-/**< Enable xstats. */ ++/* Enable xstats. */ + static uint32_t enable_xstats; +-/**< Enable collectd format*/ ++/* Enable collectd format */ + static uint32_t enable_collectd_format; +-/**< FD to send collectd format messages to STDOUT*/ ++/* FD to send collectd format messages to STDOUT */ + static int stdout_fd; +-/**< Host id process is running on */ ++/* Host id process is running on */ + static char host_id[MAX_LONG_OPT_SZ]; + #ifdef RTE_LIB_METRICS +-/**< Enable metrics. */ ++/* Enable metrics. */ + static uint32_t enable_metrics; + #endif +-/**< Enable stats reset. */ ++/* Enable stats reset. */ + static uint32_t reset_stats; +-/**< Enable xstats reset. */ ++/* Enable xstats reset. */ + static uint32_t reset_xstats; +-/**< Enable memory info. */ ++/* Enable memory info. */ + static uint32_t mem_info; +-/**< Enable displaying xstat name. */ ++/* Enable displaying xstat name. */ + static uint32_t enable_xstats_name; + static char *xstats_name; + +-/**< Enable xstats by ids. */ ++/* Enable xstats by ids. */ + #define MAX_NB_XSTATS_IDS 1024 + static uint32_t nb_xstats_ids; + static uint64_t xstats_ids[MAX_NB_XSTATS_IDS]; +@@ -88,24 +88,24 @@ static uint64_t xstats_ids[MAX_NB_XSTATS_IDS]; + /* show border */ + static char bdr_str[MAX_STRING_LEN]; + +-/**< Enable show port. */ ++/* Enable show port. */ + static uint32_t enable_shw_port; +-/**< Enable show port private info. */ ++/* Enable show port private info. */ + static uint32_t enable_shw_port_priv; +-/**< Enable show tm. */ ++/* Enable show tm. */ + static uint32_t enable_shw_tm; +-/**< Enable show crypto. */ ++/* Enable show crypto. */ + static uint32_t enable_shw_crypto; +-/**< Enable show ring. */ ++/* Enable show ring. */ + static uint32_t enable_shw_ring; + static char *ring_name; +-/**< Enable show mempool. */ ++/* Enable show mempool. */ + static uint32_t enable_shw_mempool; + static char *mempool_name; +-/**< Enable iter mempool. */ ++/* Enable iter mempool. */ + static uint32_t enable_iter_mempool; + static char *mempool_iter_name; +-/**< Enable dump regs. */ ++/* Enable dump regs. */ + static uint32_t enable_dump_regs; + static char *dump_regs_file_prefix; + /* Enable show DPDK version. */ +@@ -117,7 +117,7 @@ static uint32_t enable_shw_rss_reta; + /* Enable show module eeprom information. */ + static uint32_t enable_shw_module_eeprom; + +-/**< display usage */ ++/* display usage */ + static void + proc_info_usage(const char *prgname) + { +-- +2.23.0 + diff --git a/0201-app-procinfo-support-descriptor-dump.patch b/0201-app-procinfo-support-descriptor-dump.patch new file mode 100644 index 0000000..44a8625 --- /dev/null +++ b/0201-app-procinfo-support-descriptor-dump.patch @@ -0,0 +1,185 @@ +From add8499365b11a0e2ffb9499711e982f71ada5e5 Mon Sep 17 00:00:00 2001 +From: Dongdong Liu +Date: Tue, 11 Oct 2022 19:18:42 +0800 +Subject: app/procinfo: support descriptor dump + +This patch support Rx/Tx descriptor dump + +The command is like: +dpdk-proc-info -a xxxx:xx:xx.x --file-prefix=xxx -- +--show-rx-descriptor queue_id:offset:num + +dpdk-proc-info -a xxxx:xx:xx.x --file-prefix=xxx -- +--show-tx-descriptor queue_id:offset:num + +queue_id: A queue identifier on this port. +offset: The offset of the descriptor starting from tail. +num: The number of the descriptors to dump. + +Signed-off-by: Min Hu (Connor) +Signed-off-by: Dongdong Liu +Acked-by: Reshma Pattan +--- + app/proc-info/main.c | 104 +++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 104 insertions(+) + +diff --git a/app/proc-info/main.c b/app/proc-info/main.c +index dc948c7cc5..0cc01e3dad 100644 +--- a/app/proc-info/main.c ++++ b/app/proc-info/main.c +@@ -117,6 +117,21 @@ static uint32_t enable_shw_rss_reta; + /* Enable show module eeprom information. */ + static uint32_t enable_shw_module_eeprom; + ++/* Enable dump Rx/Tx descriptor. */ ++static uint32_t enable_shw_rx_desc_dump; ++static uint32_t enable_shw_tx_desc_dump; ++ ++#define DESC_PARAM_NUM 3 ++ ++struct desc_param { ++ uint16_t queue_id; /* A queue identifier on this port. */ ++ uint16_t offset; /* The offset of the descriptor starting from tail. */ ++ uint16_t num; /* The number of the descriptors to dump. */ ++}; ++ ++static struct desc_param rx_desc_param; ++static struct desc_param tx_desc_param; ++ + /* display usage */ + static void + proc_info_usage(const char *prgname) +@@ -148,6 +163,14 @@ proc_info_usage(const char *prgname) + " --firmware-version: to display ethdev firmware version\n" + " --show-rss-reta: to display ports redirection table\n" + " --show-module-eeprom: to display ports module eeprom information\n" ++ " --show-rx-descriptor queue_id:offset:num to display ports Rx descriptor information. " ++ "queue_id: A Rx queue identifier on this port. " ++ "offset: The offset of the descriptor starting from tail. " ++ "num: The number of the descriptors to dump.\n" ++ " --show-tx-descriptor queue_id:offset:num to display ports Tx descriptor information. " ++ "queue_id: A Tx queue identifier on this port. " ++ "offset: The offset of the descriptor starting from tail. " ++ "num: The number of the descriptors to dump.\n" + " --iter-mempool=name: iterate mempool elements to display content\n" + " --dump-regs=file-prefix: dump registers to file with the file-prefix\n", + prgname); +@@ -200,6 +223,19 @@ parse_xstats_ids(char *list, uint64_t *ids, int limit) { + return length; + } + ++static int ++parse_descriptor_param(char *list, struct desc_param *desc) ++{ ++ int ret; ++ ++ ret = sscanf(list, "%hu:%hu:%hu", &desc->queue_id, &desc->offset, ++ &desc->num); ++ if (ret != DESC_PARAM_NUM) ++ return -EINVAL; ++ ++ return 0; ++} ++ + static int + proc_info_preparse_args(int argc, char **argv) + { +@@ -264,6 +300,8 @@ proc_info_parse_args(int argc, char **argv) + {"firmware-version", 0, NULL, 0}, + {"show-rss-reta", 0, NULL, 0}, + {"show-module-eeprom", 0, NULL, 0}, ++ {"show-rx-descriptor", required_argument, NULL, 1}, ++ {"show-tx-descriptor", required_argument, NULL, 1}, + {NULL, 0, 0, 0} + }; + +@@ -367,6 +405,26 @@ proc_info_parse_args(int argc, char **argv) + return -1; + } + nb_xstats_ids = ret; ++ } else if (!strncmp(long_option[option_index].name, ++ "show-rx-descriptor", MAX_LONG_OPT_SZ)) { ++ int ret = parse_descriptor_param(optarg, ++ &rx_desc_param); ++ if (ret < 0) { ++ fprintf(stderr, "Error parsing Rx descriptor param: %s\n", ++ strerror(-ret)); ++ return -1; ++ } ++ enable_shw_rx_desc_dump = 1; ++ } else if (!strncmp(long_option[option_index].name, ++ "show-tx-descriptor", MAX_LONG_OPT_SZ)) { ++ int ret = parse_descriptor_param(optarg, ++ &tx_desc_param); ++ if (ret < 0) { ++ fprintf(stderr, "Error parsing Tx descriptor param: %s\n", ++ strerror(-ret)); ++ return -1; ++ } ++ enable_shw_tx_desc_dump = 1; + } + break; + default: +@@ -1644,6 +1702,48 @@ show_module_eeprom_info(void) + } + } + ++static void ++nic_rx_descriptor_display(uint16_t port_id, struct desc_param *desc) ++{ ++ uint16_t queue_id = desc->queue_id; ++ uint16_t offset = desc->offset; ++ uint16_t num = desc->num; ++ int ret; ++ ++ snprintf(bdr_str, MAX_STRING_LEN, " show - Rx descriptor "); ++ STATS_BDR_STR(10, bdr_str); ++ ++ printf("Dump ethdev Rx descriptor for port %u, queue %u, offset %u, num %u\n", ++ port_id, queue_id, offset, num); ++ ++ ret = rte_eth_rx_descriptor_dump(port_id, queue_id, offset, num, ++ stdout); ++ if (ret < 0) ++ fprintf(stderr, "Error dumping ethdev Rx descriptor: %s\n", ++ strerror(-ret)); ++} ++ ++static void ++nic_tx_descriptor_display(uint16_t port_id, struct desc_param *desc) ++{ ++ uint16_t queue_id = desc->queue_id; ++ uint16_t offset = desc->offset; ++ uint16_t num = desc->num; ++ int ret; ++ ++ snprintf(bdr_str, MAX_STRING_LEN, " show - Tx descriptor "); ++ STATS_BDR_STR(10, bdr_str); ++ ++ printf("Dump ethdev Tx descriptor for port %u, queue %u, offset %u, num %u\n", ++ port_id, queue_id, offset, num); ++ ++ ret = rte_eth_tx_descriptor_dump(port_id, queue_id, offset, num, ++ stdout); ++ if (ret < 0) ++ fprintf(stderr, "Error dumping ethdev Tx descriptor: %s\n", ++ strerror(-ret)); ++} ++ + int + main(int argc, char **argv) + { +@@ -1732,6 +1832,10 @@ main(int argc, char **argv) + metrics_display(i); + #endif + ++ if (enable_shw_rx_desc_dump) ++ nic_rx_descriptor_display(i, &rx_desc_param); ++ if (enable_shw_tx_desc_dump) ++ nic_tx_descriptor_display(i, &tx_desc_param); + } + + #ifdef RTE_LIB_METRICS +-- +2.23.0 + diff --git a/0202-doc-add-some-extended-features-in-procinfo-guide.patch b/0202-doc-add-some-extended-features-in-procinfo-guide.patch new file mode 100644 index 0000000..9bc9644 --- /dev/null +++ b/0202-doc-add-some-extended-features-in-procinfo-guide.patch @@ -0,0 +1,79 @@ +From 37461ec8977c3a7c1a51b2901680f5aaa01294d8 Mon Sep 17 00:00:00 2001 +From: Dongdong Liu +Date: Tue, 11 Oct 2022 19:18:43 +0800 +Subject: doc: add some extended features in procinfo guide + +Add the below extended features in procinfo guide. + +--show-port-private +--version +--firmware-version +--show-rss-reta +--show-module-eeprom +--show-rx-descriptor +--show-tx-descriptor + +Signed-off-by: Dongdong Liu +Acked-by: Reshma Pattan +--- + doc/guides/tools/proc_info.rst | 36 ++++++++++++++++++++++++++++++++-- + 1 file changed, 34 insertions(+), 2 deletions(-) + +diff --git a/doc/guides/tools/proc_info.rst b/doc/guides/tools/proc_info.rst +index 9772d97ef0..ad70bc47a5 100644 +--- a/doc/guides/tools/proc_info.rst ++++ b/doc/guides/tools/proc_info.rst +@@ -17,9 +17,12 @@ The application has a number of command line options: + + .. code-block:: console + +- .//app/dpdk-procinfo -- -m | [-p PORTMASK] [--stats | --xstats | ++ .//app/dpdk-proc-info -- -m | [-p PORTMASK] [--stats | --xstats | + --stats-reset | --xstats-reset] [ --show-port | --show-tm | --show-crypto | +- --show-ring[=name] | --show-mempool[=name] | --iter-mempool=name ] ++ --show-ring[=name] | --show-mempool[=name] | --iter-mempool=name | ++ --show-port-private | --version | --firmware-version | --show-rss-reta | ++ --show-module-eeprom | --show-rx-descriptor queue_id:offset:num | ++ --show-tx-descriptor queue_id:offset:num] + + Parameters + ~~~~~~~~~~ +@@ -69,6 +72,35 @@ mempool. For invalid or no mempool name, whole list is dump. + The iter-mempool parameter iterates and displays mempool elements specified + by name. For invalid or no mempool name no elements are displayed. + ++**--show-port-private** ++The show-port-private parameter displays ports private information. ++ ++**--version** ++The version parameter displays DPDK version. ++ ++**--firmware-version** ++The firmware-version parameter displays ethdev firmware version. ++ ++**--show-rss-reta** ++The show-rss-reta parameter displays ports rss redirection table. ++ ++**--show-module-eeprom** ++The show-module-eeprom parameter displays ports module eeprom information. ++ ++**--show-rx-descriptor queue_id:offset:num** ++The show-rx-descriptor parameter displays ports Rx descriptor information ++specified by queue_id, offset and num. ++queue_id: A Rx queue identifier on this port. ++offset: The offset of the descriptor starting from tail. ++num: The number of the descriptors to dump. ++ ++**--show-tx-descriptor queue_id:offset:num** ++The show-tx-descriptor parameter displays ports Tx descriptor information ++specified by queue_id, offset and num. ++queue_id: A Tx queue identifier on this port. ++offset: The offset of the descriptor starting from tail. ++num: The number of the descriptors to dump. ++ + Limitations + ----------- + +-- +2.23.0 + diff --git a/dpdk.spec b/dpdk.spec index 6764de5..cd6f124 100644 --- a/dpdk.spec +++ b/dpdk.spec @@ -1,6 +1,6 @@ Name: dpdk Version: 21.11 -Release: 22 +Release: 23 Packager: packaging@6wind.com URL: http://dpdk.org %global source_version 21.11 @@ -212,6 +212,14 @@ Patch9191: 0191-net-bonding-add-link-speeds-configuration.patch Patch9192: 0192-net-bonding-call-Tx-prepare-before-Tx-burst.patch Patch9193: 0193-net-bonding-fix-MTU-set-for-slaves.patch Patch9194: 0194-app-testpmd-remove-jumbo-offload-related-code.patch +Patch0195: 0195-app-procinfo-add-dpdk-version-dump.patch +Patch0196: 0196-app-procinfo-add-firmware-version-dump.patch +Patch0197: 0197-app-procinfo-add-RSS-RETA-dump.patch +Patch0198: 0198-app-procinfo-add-module-eeprom-info-dump.patch +Patch0199: 0199-app-procinfo-add-dump-of-Rx-Tx-burst-mode.patch +Patch0200: 0200-app-procinfo-fix-some-wrong-doxygen-syntax.patch +Patch0201: 0201-app-procinfo-support-descriptor-dump.patch +Patch0202: 0202-doc-add-some-extended-features-in-procinfo-guide.patch Summary: Data Plane Development Kit core Group: System Environment/Libraries @@ -340,6 +348,17 @@ strip -g $RPM_BUILD_ROOT/lib/modules/%{kern_devel_ver}/extra/dpdk/igb_uio.ko /usr/sbin/depmod %changelog +* Fri Nov 11 2022 chenjiji - 21.11-23 + app/procinfo: add some extended features + - app/procinfo: add dpdk version dump + - app/procinfo: add firmware version dump + - app/procinfo: add RSS RETA dump + - app/procinfo: add module eeprom info dump + - app/procinfo: add dump of Rx/Tx burst mode + - app/procinfo: fix some wrong doxygen syntax + - app/procinfo: support descriptor dump + - doc: add some extended features in procinfo guide + * Mon Nov 07 2022 jiangheng - 21.11-22 - set platform to generic for compatibility -- Gitee