Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/74021/?format=api
http://patchwork.dpdk.org/api/patches/74021/?format=api", "web_url": "http://patchwork.dpdk.org/project/dpdk/patch/20200714215108.22437-4-dharmik.thakkar@arm.com/", "project": { "id": 1, "url": "http://patchwork.dpdk.org/api/projects/1/?format=api", "name": "DPDK", "link_name": "dpdk", "list_id": "dev.dpdk.org", "list_email": "dev@dpdk.org", "web_url": "http://core.dpdk.org", "scm_url": "git://dpdk.org/dpdk", "webscm_url": "http://git.dpdk.org/dpdk", "list_archive_url": "https://inbox.dpdk.org/dev", "list_archive_url_format": "https://inbox.dpdk.org/dev/{}", "commit_url_format": "" }, "msgid": "<20200714215108.22437-4-dharmik.thakkar@arm.com>", "list_archive_url": "https://inbox.dpdk.org/dev/20200714215108.22437-4-dharmik.thakkar@arm.com", "date": "2020-07-14T21:51:05", "name": "[3/6] app/testpmd: add record-burst-stats runtime config", "commit_ref": null, "pull_url": null, "state": "accepted", "archived": true, "hash": "02b9f38cc4543d47f77a2804b2c33f2b7e9d9640", "submitter": { "id": 1108, "url": "http://patchwork.dpdk.org/api/people/1108/?format=api", "name": "Dharmik Thakkar", "email": "dharmik.thakkar@arm.com" }, "delegate": { "id": 319, "url": "http://patchwork.dpdk.org/api/users/319/?format=api", "username": "fyigit", "first_name": "Ferruh", "last_name": "Yigit", "email": "ferruh.yigit@amd.com" }, "mbox": "http://patchwork.dpdk.org/project/dpdk/patch/20200714215108.22437-4-dharmik.thakkar@arm.com/mbox/", "series": [ { "id": 11023, "url": "http://patchwork.dpdk.org/api/series/11023/?format=api", "web_url": "http://patchwork.dpdk.org/project/dpdk/list/?series=11023", "date": "2020-07-14T21:51:04", "name": "app/testpmd: add runtime config", "version": 1, "mbox": "http://patchwork.dpdk.org/series/11023/mbox/" } ], "comments": "http://patchwork.dpdk.org/api/patches/74021/comments/", "check": "success", "checks": "http://patchwork.dpdk.org/api/patches/74021/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<dev-bounces@dpdk.org>", "X-Original-To": "patchwork@inbox.dpdk.org", "Delivered-To": "patchwork@inbox.dpdk.org", "Received": [ "from dpdk.org (dpdk.org [92.243.14.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id E868FA0540;\n\tTue, 14 Jul 2020 23:52:19 +0200 (CEST)", "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id DA1E71C229;\n\tTue, 14 Jul 2020 23:51:49 +0200 (CEST)", "from foss.arm.com (foss.arm.com [217.140.110.172])\n by dpdk.org (Postfix) with ESMTP id A37ED1C1F4\n for <dev@dpdk.org>; Tue, 14 Jul 2020 23:51:41 +0200 (CEST)", "from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14])\n by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 1851E11B3;\n Tue, 14 Jul 2020 14:51:41 -0700 (PDT)", "from localhost.localdomain (2p2660v4-1.austin.arm.com\n [10.118.12.95])\n by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 0FC383F66E;\n Tue, 14 Jul 2020 14:51:41 -0700 (PDT)" ], "From": "Dharmik Thakkar <dharmik.thakkar@arm.com>", "To": "Wenzhuo Lu <wenzhuo.lu@intel.com>, Beilei Xing <beilei.xing@intel.com>,\n Bernard Iremonger <bernard.iremonger@intel.com>", "Cc": "dev@dpdk.org,\n\tnd@arm.com,\n\tDharmik Thakkar <dharmik.thakkar@arm.com>", "Date": "Tue, 14 Jul 2020 16:51:05 -0500", "Message-Id": "<20200714215108.22437-4-dharmik.thakkar@arm.com>", "X-Mailer": "git-send-email 2.17.1", "In-Reply-To": "<20200714215108.22437-1-dharmik.thakkar@arm.com>", "References": "<20200520032023.2649-2-dharmik.thakkar@arm.com>\n <20200714215108.22437-1-dharmik.thakkar@arm.com>", "Subject": "[dpdk-dev] [PATCH 3/6] app/testpmd: add record-burst-stats runtime\n\tconfig", "X-BeenThere": "dev@dpdk.org", "X-Mailman-Version": "2.1.15", "Precedence": "list", "List-Id": "DPDK patches and discussions <dev.dpdk.org>", "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>", "List-Archive": "<http://mails.dpdk.org/archives/dev/>", "List-Post": "<mailto:dev@dpdk.org>", "List-Help": "<mailto:dev-request@dpdk.org?subject=help>", "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>", "Errors-To": "dev-bounces@dpdk.org", "Sender": "\"dev\" <dev-bounces@dpdk.org>" }, "content": "Convert CONFIG_RTE_TEST_PMD_RECORD_BURST_STATS to a\nruntime configuration.\n\nSigned-off-by: Dharmik Thakkar <dharmik.thakkar@arm.com>\nTested-by: Phil Yang <phil.yang@arm.com>\nReviewed-by: Ruifeng Wang <ruifeng.wang@arm.com>\nReviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>\n---\n app/test-pmd/5tswap.c | 8 ++-----\n app/test-pmd/cmdline.c | 46 +++++++++++++++++++++++++++++++++++++++\n app/test-pmd/config.c | 6 +++++\n app/test-pmd/csumonly.c | 8 ++-----\n app/test-pmd/flowgen.c | 4 +---\n app/test-pmd/icmpecho.c | 8 ++-----\n app/test-pmd/iofwd.c | 8 ++-----\n app/test-pmd/macfwd.c | 8 ++-----\n app/test-pmd/macswap.c | 8 ++-----\n app/test-pmd/parameters.c | 7 +++++-\n app/test-pmd/rxonly.c | 4 +---\n app/test-pmd/testpmd.c | 33 ++++++++++++++--------------\n app/test-pmd/testpmd.h | 20 +++++++++++++----\n app/test-pmd/txonly.c | 4 +---\n 14 files changed, 106 insertions(+), 66 deletions(-)", "diff": "diff --git a/app/test-pmd/5tswap.c b/app/test-pmd/5tswap.c\nindex 04f035bb450f..d9026ce86556 100644\n--- a/app/test-pmd/5tswap.c\n+++ b/app/test-pmd/5tswap.c\n@@ -117,9 +117,7 @@ pkt_burst_5tuple_swap(struct fwd_stream *fs)\n \tif (unlikely(nb_rx == 0))\n \t\treturn;\n \n-#ifdef RTE_TEST_PMD_RECORD_BURST_STATS\n-\tfs->rx_burst_stats.pkt_burst_spread[nb_rx]++;\n-#endif\n+\tinc_rx_burst_stats(fs, nb_rx);\n \n \tfs->rx_packets += nb_rx;\n \ttxp = &ports[fs->tx_port];\n@@ -178,9 +176,7 @@ pkt_burst_5tuple_swap(struct fwd_stream *fs)\n \t\t}\n \t}\n \tfs->tx_packets += nb_tx;\n-#ifdef RTE_TEST_PMD_RECORD_BURST_STATS\n-\tfs->tx_burst_stats.pkt_burst_spread[nb_tx]++;\n-#endif\n+\tinc_tx_burst_stats(fs, nb_tx);\n \tif (unlikely(nb_tx < nb_rx)) {\n \t\tfs->fwd_dropped += (nb_rx - nb_tx);\n \t\tdo {\ndiff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c\nindex 1f30a9021500..6235fa0074d4 100644\n--- a/app/test-pmd/cmdline.c\n+++ b/app/test-pmd/cmdline.c\n@@ -532,6 +532,9 @@ static void cmd_help_long_parsed(void *parsed_result,\n \t\t\t\"set record-core-cycles on|off\\n\"\n \t\t\t\" Set the option to enable measurement of CPU cycles.\\n\"\n \n+\t\t\t\"set record-burst-stats on|off\\n\"\n+\t\t\t\" Set the option to enable display of RX and TX bursts.\\n\"\n+\n \t\t\t\"set port (port_id) vf (vf_id) rx|tx on|off\\n\"\n \t\t\t\" Enable/Disable a VF receive/tranmit from a port\\n\\n\"\n \n@@ -8380,6 +8383,48 @@ cmdline_parse_inst_t cmd_set_record_core_cycles = {\n \t},\n };\n \n+/* *** SET OPTION TO ENABLE DISPLAY OF RX AND TX BURSTS *** */\n+struct cmd_set_record_burst_stats_result {\n+\tcmdline_fixed_string_t keyword;\n+\tcmdline_fixed_string_t name;\n+\tcmdline_fixed_string_t on_off;\n+};\n+\n+static void\n+cmd_set_record_burst_stats_parsed(void *parsed_result,\n+\t\t\t__rte_unused struct cmdline *cl,\n+\t\t\t__rte_unused void *data)\n+{\n+\tstruct cmd_set_record_burst_stats_result *res;\n+\tuint16_t on_off = 0;\n+\n+\tres = parsed_result;\n+\ton_off = !strcmp(res->on_off, \"on\") ? 1 : 0;\n+\tset_record_burst_stats(on_off);\n+}\n+\n+cmdline_parse_token_string_t cmd_set_record_burst_stats_keyword =\n+\tTOKEN_STRING_INITIALIZER(struct cmd_set_record_burst_stats_result,\n+\t\t\t\t keyword, \"set\");\n+cmdline_parse_token_string_t cmd_set_record_burst_stats_name =\n+\tTOKEN_STRING_INITIALIZER(struct cmd_set_record_burst_stats_result,\n+\t\t\t\t name, \"record-burst-stats\");\n+cmdline_parse_token_string_t cmd_set_record_burst_stats_on_off =\n+\tTOKEN_STRING_INITIALIZER(struct cmd_set_record_burst_stats_result,\n+\t\t\t\t on_off, \"on#off\");\n+\n+cmdline_parse_inst_t cmd_set_record_burst_stats = {\n+\t.f = cmd_set_record_burst_stats_parsed,\n+\t.data = NULL,\n+\t.help_str = \"set record-burst-stats on|off\",\n+\t.tokens = {\n+\t\t(void *)&cmd_set_record_burst_stats_keyword,\n+\t\t(void *)&cmd_set_record_burst_stats_name,\n+\t\t(void *)&cmd_set_record_burst_stats_on_off,\n+\t\tNULL,\n+\t},\n+};\n+\n /* *** CONFIGURE UNICAST HASH TABLE *** */\n struct cmd_set_uc_hash_table {\n \tcmdline_fixed_string_t set;\n@@ -19533,6 +19578,7 @@ cmdline_parse_ctx_t main_ctx[] = {\n \t(cmdline_parse_inst_t *)&cmd_set_qmap,\n \t(cmdline_parse_inst_t *)&cmd_set_xstats_hide_zero,\n \t(cmdline_parse_inst_t *)&cmd_set_record_core_cycles,\n+\t(cmdline_parse_inst_t *)&cmd_set_record_burst_stats,\n \t(cmdline_parse_inst_t *)&cmd_operate_port,\n \t(cmdline_parse_inst_t *)&cmd_operate_specific_port,\n \t(cmdline_parse_inst_t *)&cmd_operate_attach_port,\ndiff --git a/app/test-pmd/config.c b/app/test-pmd/config.c\nindex d93699b34e3a..873a29a123a5 100644\n--- a/app/test-pmd/config.c\n+++ b/app/test-pmd/config.c\n@@ -3685,6 +3685,12 @@ set_record_core_cycles(uint8_t on_off)\n \trecord_core_cycles = on_off;\n }\n \n+void\n+set_record_burst_stats(uint8_t on_off)\n+{\n+\trecord_burst_stats = on_off;\n+}\n+\n static inline void\n print_fdir_mask(struct rte_eth_fdir_masks *mask)\n {\ndiff --git a/app/test-pmd/csumonly.c b/app/test-pmd/csumonly.c\nindex 836bafa0f6df..7ece398bd462 100644\n--- a/app/test-pmd/csumonly.c\n+++ b/app/test-pmd/csumonly.c\n@@ -796,9 +796,7 @@ pkt_burst_checksum_forward(struct fwd_stream *fs)\n \t/* receive a burst of packet */\n \tnb_rx = rte_eth_rx_burst(fs->rx_port, fs->rx_queue, pkts_burst,\n \t\t\t\t nb_pkt_per_burst);\n-#ifdef RTE_TEST_PMD_RECORD_BURST_STATS\n-\tfs->rx_burst_stats.pkt_burst_spread[nb_rx]++;\n-#endif\n+\tinc_rx_burst_stats(fs, nb_rx);\n \tif (unlikely(nb_rx == 0))\n \t\treturn;\n \n@@ -1082,9 +1080,7 @@ pkt_burst_checksum_forward(struct fwd_stream *fs)\n \tfs->rx_bad_l4_csum += rx_bad_l4_csum;\n \tfs->rx_bad_outer_l4_csum += rx_bad_outer_l4_csum;\n \n-#ifdef RTE_TEST_PMD_RECORD_BURST_STATS\n-\tfs->tx_burst_stats.pkt_burst_spread[nb_tx]++;\n-#endif\n+\tinc_tx_burst_stats(fs, nb_tx);\n \tif (unlikely(nb_tx < nb_rx)) {\n \t\tfs->fwd_dropped += (nb_rx - nb_tx);\n \t\tdo {\ndiff --git a/app/test-pmd/flowgen.c b/app/test-pmd/flowgen.c\nindex e92a0eeca254..acf3e24605eb 100644\n--- a/app/test-pmd/flowgen.c\n+++ b/app/test-pmd/flowgen.c\n@@ -188,9 +188,7 @@ pkt_burst_flow_gen(struct fwd_stream *fs)\n \t}\n \tfs->tx_packets += nb_tx;\n \n-#ifdef RTE_TEST_PMD_RECORD_BURST_STATS\n-\tfs->tx_burst_stats.pkt_burst_spread[nb_tx]++;\n-#endif\n+\tinc_tx_burst_stats(fs, nb_tx);\n \tif (unlikely(nb_tx < nb_pkt)) {\n \t\t/* Back out the flow counter. */\n \t\tnext_flow -= (nb_pkt - nb_tx);\ndiff --git a/app/test-pmd/icmpecho.c b/app/test-pmd/icmpecho.c\nindex 3f27e8c29d33..af6f7e7902e4 100644\n--- a/app/test-pmd/icmpecho.c\n+++ b/app/test-pmd/icmpecho.c\n@@ -302,9 +302,7 @@ reply_to_icmp_echo_rqsts(struct fwd_stream *fs)\n \t */\n \tnb_rx = rte_eth_rx_burst(fs->rx_port, fs->rx_queue, pkts_burst,\n \t\t\t\t nb_pkt_per_burst);\n-#ifdef RTE_TEST_PMD_RECORD_BURST_STATS\n-\tfs->rx_burst_stats.pkt_burst_spread[nb_rx]++;\n-#endif\n+\tinc_rx_burst_stats(fs, nb_rx);\n \tif (unlikely(nb_rx == 0))\n \t\treturn;\n \n@@ -503,9 +501,7 @@ reply_to_icmp_echo_rqsts(struct fwd_stream *fs)\n \t\t\t}\n \t\t}\n \t\tfs->tx_packets += nb_tx;\n-#ifdef RTE_TEST_PMD_RECORD_BURST_STATS\n-\t\tfs->tx_burst_stats.pkt_burst_spread[nb_tx]++;\n-#endif\n+\t\tinc_tx_burst_stats(fs, nb_tx);\n \t\tif (unlikely(nb_tx < nb_replies)) {\n \t\t\tfs->fwd_dropped += (nb_replies - nb_tx);\n \t\t\tdo {\ndiff --git a/app/test-pmd/iofwd.c b/app/test-pmd/iofwd.c\nindex 456f7b5925ed..83d098adcbf5 100644\n--- a/app/test-pmd/iofwd.c\n+++ b/app/test-pmd/iofwd.c\n@@ -59,9 +59,7 @@ pkt_burst_io_forward(struct fwd_stream *fs)\n \t */\n \tnb_rx = rte_eth_rx_burst(fs->rx_port, fs->rx_queue,\n \t\t\tpkts_burst, nb_pkt_per_burst);\n-#ifdef RTE_TEST_PMD_RECORD_BURST_STATS\n-\tfs->rx_burst_stats.pkt_burst_spread[nb_rx]++;\n-#endif\n+\tinc_rx_burst_stats(fs, nb_rx);\n \tif (unlikely(nb_rx == 0))\n \t\treturn;\n \tfs->rx_packets += nb_rx;\n@@ -80,9 +78,7 @@ pkt_burst_io_forward(struct fwd_stream *fs)\n \t\t}\n \t}\n \tfs->tx_packets += nb_tx;\n-#ifdef RTE_TEST_PMD_RECORD_BURST_STATS\n-\tfs->tx_burst_stats.pkt_burst_spread[nb_tx]++;\n-#endif\n+\tinc_tx_burst_stats(fs, nb_tx);\n \tif (unlikely(nb_tx < nb_rx)) {\n \t\tfs->fwd_dropped += (nb_rx - nb_tx);\n \t\tdo {\ndiff --git a/app/test-pmd/macfwd.c b/app/test-pmd/macfwd.c\nindex 6a77568c7e60..0568ea794d48 100644\n--- a/app/test-pmd/macfwd.c\n+++ b/app/test-pmd/macfwd.c\n@@ -65,9 +65,7 @@ pkt_burst_mac_forward(struct fwd_stream *fs)\n \t */\n \tnb_rx = rte_eth_rx_burst(fs->rx_port, fs->rx_queue, pkts_burst,\n \t\t\t\t nb_pkt_per_burst);\n-#ifdef RTE_TEST_PMD_RECORD_BURST_STATS\n-\tfs->rx_burst_stats.pkt_burst_spread[nb_rx]++;\n-#endif\n+\tinc_rx_burst_stats(fs, nb_rx);\n \tif (unlikely(nb_rx == 0))\n \t\treturn;\n \n@@ -111,9 +109,7 @@ pkt_burst_mac_forward(struct fwd_stream *fs)\n \t}\n \n \tfs->tx_packets += nb_tx;\n-#ifdef RTE_TEST_PMD_RECORD_BURST_STATS\n-\tfs->tx_burst_stats.pkt_burst_spread[nb_tx]++;\n-#endif\n+\tinc_tx_burst_stats(fs, nb_tx);\n \tif (unlikely(nb_tx < nb_rx)) {\n \t\tfs->fwd_dropped += (nb_rx - nb_tx);\n \t\tdo {\ndiff --git a/app/test-pmd/macswap.c b/app/test-pmd/macswap.c\nindex aaef5b0047b1..74e2dd838dd5 100644\n--- a/app/test-pmd/macswap.c\n+++ b/app/test-pmd/macswap.c\n@@ -66,9 +66,7 @@ pkt_burst_mac_swap(struct fwd_stream *fs)\n \t */\n \tnb_rx = rte_eth_rx_burst(fs->rx_port, fs->rx_queue, pkts_burst,\n \t\t\t\t nb_pkt_per_burst);\n-#ifdef RTE_TEST_PMD_RECORD_BURST_STATS\n-\tfs->rx_burst_stats.pkt_burst_spread[nb_rx]++;\n-#endif\n+\tinc_rx_burst_stats(fs, nb_rx);\n \tif (unlikely(nb_rx == 0))\n \t\treturn;\n \n@@ -90,9 +88,7 @@ pkt_burst_mac_swap(struct fwd_stream *fs)\n \t\t}\n \t}\n \tfs->tx_packets += nb_tx;\n-#ifdef RTE_TEST_PMD_RECORD_BURST_STATS\n-\tfs->tx_burst_stats.pkt_burst_spread[nb_tx]++;\n-#endif\n+\tinc_tx_burst_stats(fs, nb_tx);\n \tif (unlikely(nb_tx < nb_rx)) {\n \t\tfs->fwd_dropped += (nb_rx - nb_tx);\n \t\tdo {\ndiff --git a/app/test-pmd/parameters.c b/app/test-pmd/parameters.c\nindex 76072ae81b93..784515314ebd 100644\n--- a/app/test-pmd/parameters.c\n+++ b/app/test-pmd/parameters.c\n@@ -70,7 +70,8 @@ usage(char* progname)\n \t \"--rxpt= | --rxht= | --rxwt= | --rxfreet= | \"\n \t \"--txpt= | --txht= | --txwt= | --txfreet= | \"\n \t \"--txrst= | --tx-offloads= | | --rx-offloads= | \"\n-\t \"--vxlan-gpe-port= | --record-core-cycles]\\n\",\n+\t \"--vxlan-gpe-port= | --record-core-cycles | \"\n+\t \"--record-burst-stats]\\n\",\n \t progname);\n #ifdef RTE_LIBRTE_CMDLINE\n \tprintf(\" --interactive: run in interactive mode.\\n\");\n@@ -217,6 +218,7 @@ usage(char* progname)\n \tprintf(\" --rx-mq-mode=0xX: hexadecimal bitmask of RX mq mode can be \"\n \t \"enabled\\n\");\n \tprintf(\" --record-core-cycles: enable measurement of CPU cycles.\\n\");\n+\tprintf(\" --record-burst-stats: enable display of RX and TX bursts.\\n\");\n }\n \n #ifdef RTE_LIBRTE_CMDLINE\n@@ -679,6 +681,7 @@ launch_args_parse(int argc, char** argv)\n \t\t{ \"no-iova-contig\", 0, 0, 0 },\n \t\t{ \"rx-mq-mode\", 1, 0, 0 },\n \t\t{ \"record-core-cycles\", 0, 0, 0 },\n+\t\t{ \"record-burst-stats\", 0, 0, 0 },\n \t\t{ 0, 0, 0, 0 },\n \t};\n \n@@ -1385,6 +1388,8 @@ launch_args_parse(int argc, char** argv)\n \t\t\t}\n \t\t\tif (!strcmp(lgopts[opt_idx].name, \"record-core-cycles\"))\n \t\t\t\trecord_core_cycles = 1;\n+\t\t\tif (!strcmp(lgopts[opt_idx].name, \"record-burst-stats\"))\n+\t\t\t\trecord_burst_stats = 1;\n \t\t\tbreak;\n \t\tcase 'h':\n \t\t\tusage(argv[0]);\ndiff --git a/app/test-pmd/rxonly.c b/app/test-pmd/rxonly.c\nindex b6c8b8c7d5db..c78fc4609ae5 100644\n--- a/app/test-pmd/rxonly.c\n+++ b/app/test-pmd/rxonly.c\n@@ -58,9 +58,7 @@ pkt_burst_receive(struct fwd_stream *fs)\n \t */\n \tnb_rx = rte_eth_rx_burst(fs->rx_port, fs->rx_queue, pkts_burst,\n \t\t\t\t nb_pkt_per_burst);\n-#ifdef RTE_TEST_PMD_RECORD_BURST_STATS\n-\tfs->rx_burst_stats.pkt_burst_spread[nb_rx]++;\n-#endif\n+\tinc_rx_burst_stats(fs, nb_rx);\n \tif (unlikely(nb_rx == 0))\n \t\treturn;\n \ndiff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c\nindex f327b16604d2..fb286b86e51b 100644\n--- a/app/test-pmd/testpmd.c\n+++ b/app/test-pmd/testpmd.c\n@@ -480,6 +480,11 @@ uint8_t xstats_hide_zero;\n */\n uint8_t record_core_cycles;\n \n+/*\n+ * Display of RX and TX bursts disabled by default\n+ */\n+uint8_t record_burst_stats;\n+\n unsigned int num_sockets = 0;\n unsigned int socket_ids[RTE_MAX_NUMA_NODES];\n \n@@ -1684,7 +1689,6 @@ init_fwd_streams(void)\n \treturn 0;\n }\n \n-#ifdef RTE_TEST_PMD_RECORD_BURST_STATS\n static void\n pkt_burst_stats_display(const char *rx_tx, struct pkt_burst_stats *pbs)\n {\n@@ -1751,7 +1755,6 @@ pkt_burst_stats_display(const char *rx_tx, struct pkt_burst_stats *pbs)\n \t\tsburstp += burst_percent[i];\n \t}\n }\n-#endif /* RTE_TEST_PMD_RECORD_BURST_STATS */\n \n static void\n fwd_stream_stats_display(streamid_t stream_id)\n@@ -1782,10 +1785,10 @@ fwd_stream_stats_display(streamid_t stream_id)\n \t\tprintf(\"\\n\");\n \t}\n \n-#ifdef RTE_TEST_PMD_RECORD_BURST_STATS\n-\tpkt_burst_stats_display(\"RX\", &fs->rx_burst_stats);\n-\tpkt_burst_stats_display(\"TX\", &fs->tx_burst_stats);\n-#endif\n+\tif (record_burst_stats) {\n+\t\tpkt_burst_stats_display(\"RX\", &fs->rx_burst_stats);\n+\t\tpkt_burst_stats_display(\"TX\", &fs->tx_burst_stats);\n+\t}\n }\n \n void\n@@ -1915,14 +1918,14 @@ fwd_stats_display(void)\n \t\t\t stats.opackets + ports_stats[pt_id].tx_dropped);\n \t\t}\n \n-#ifdef RTE_TEST_PMD_RECORD_BURST_STATS\n-\t\tif (ports_stats[pt_id].rx_stream)\n-\t\t\tpkt_burst_stats_display(\"RX\",\n-\t\t\t\t&ports_stats[pt_id].rx_stream->rx_burst_stats);\n-\t\tif (ports_stats[pt_id].tx_stream)\n-\t\t\tpkt_burst_stats_display(\"TX\",\n-\t\t\t\t&ports_stats[pt_id].tx_stream->tx_burst_stats);\n-#endif\n+\t\tif (record_burst_stats) {\n+\t\t\tif (ports_stats[pt_id].rx_stream)\n+\t\t\t\tpkt_burst_stats_display(\"RX\",\n+\t\t\t\t\t&ports_stats[pt_id].rx_stream->rx_burst_stats);\n+\t\t\tif (ports_stats[pt_id].tx_stream)\n+\t\t\t\tpkt_burst_stats_display(\"TX\",\n+\t\t\t\t\t&ports_stats[pt_id].tx_stream->tx_burst_stats);\n+\t\t}\n \n \t\tif (port->rx_queue_stats_mapping_enabled) {\n \t\t\tprintf(\"\\n\");\n@@ -2004,10 +2007,8 @@ fwd_stats_reset(void)\n \t\tfs->rx_bad_l4_csum = 0;\n \t\tfs->rx_bad_outer_l4_csum = 0;\n \n-#ifdef RTE_TEST_PMD_RECORD_BURST_STATS\n \t\tmemset(&fs->rx_burst_stats, 0, sizeof(fs->rx_burst_stats));\n \t\tmemset(&fs->tx_burst_stats, 0, sizeof(fs->tx_burst_stats));\n-#endif\n \t\tfs->core_cycles = 0;\n \t}\n }\ndiff --git a/app/test-pmd/testpmd.h b/app/test-pmd/testpmd.h\nindex dcc37be02d59..a8ae5cceb198 100644\n--- a/app/test-pmd/testpmd.h\n+++ b/app/test-pmd/testpmd.h\n@@ -76,7 +76,6 @@ enum {\n \t/**< allocate mempool natively, use rte_pktmbuf_pool_create_extbuf */\n };\n \n-#ifdef RTE_TEST_PMD_RECORD_BURST_STATS\n /**\n * The data structure associated with RX and TX packet burst statistics\n * that are recorded for each forwarding stream.\n@@ -84,7 +83,6 @@ enum {\n struct pkt_burst_stats {\n \tunsigned int pkt_burst_spread[MAX_PKT_BURST];\n };\n-#endif\n \n /** Information for a given RSS type. */\n struct rss_type_info {\n@@ -130,10 +128,8 @@ struct fwd_stream {\n \t/**< received packets has bad outer l4 checksum */\n \tunsigned int gro_times;\t/**< GRO operation times */\n \tuint64_t core_cycles; /**< used for RX and TX processing */\n-#ifdef RTE_TEST_PMD_RECORD_BURST_STATS\n \tstruct pkt_burst_stats rx_burst_stats;\n \tstruct pkt_burst_stats tx_burst_stats;\n-#endif\n };\n \n /** Descriptor for a single flow. */\n@@ -300,6 +296,7 @@ extern uint8_t xstats_hide_zero; /**< Hide zero values for xstats display */\n \n /* globals used for configuration */\n extern uint8_t record_core_cycles; /**< Enables measurement of CPU cycles */\n+extern uint8_t record_burst_stats; /**< Enables display of RX and TX bursts */\n extern uint16_t verbose_level; /**< Drives messages being displayed, if any. */\n extern int testpmd_logtype; /**< Log type for testpmd logs */\n extern uint8_t interactive;\n@@ -694,6 +691,20 @@ get_end_cycles(struct fwd_stream *fs, uint64_t start_tsc)\n \t\tfs->core_cycles += rte_rdtsc() - start_tsc;\n }\n \n+static inline void\n+inc_rx_burst_stats(struct fwd_stream *fs, uint16_t nb_rx)\n+{\n+\tif (record_burst_stats)\n+\t\tfs->rx_burst_stats.pkt_burst_spread[nb_rx]++;\n+}\n+\n+static inline void\n+inc_tx_burst_stats(struct fwd_stream *fs, uint16_t nb_tx)\n+{\n+\tif (record_burst_stats)\n+\t\tfs->tx_burst_stats.pkt_burst_spread[nb_tx]++;\n+}\n+\n /* Prototypes */\n unsigned int parse_item_list(char* str, const char* item_name,\n \t\t\tunsigned int max_items,\n@@ -786,6 +797,7 @@ void set_qmap(portid_t port_id, uint8_t is_rx, uint16_t queue_id, uint8_t map_va\n void set_xstats_hide_zero(uint8_t on_off);\n \n void set_record_core_cycles(uint8_t on_off);\n+void set_record_burst_stats(uint8_t on_off);\n void set_verbose_level(uint16_t vb_level);\n void set_tx_pkt_segments(unsigned *seg_lengths, unsigned nb_segs);\n void show_tx_pkt_segments(void);\ndiff --git a/app/test-pmd/txonly.c b/app/test-pmd/txonly.c\nindex 00a3a6f90c7a..7d4f105ccd68 100644\n--- a/app/test-pmd/txonly.c\n+++ b/app/test-pmd/txonly.c\n@@ -369,9 +369,7 @@ pkt_burst_transmit(struct fwd_stream *fs)\n \tif (txonly_multi_flow)\n \t\tRTE_PER_LCORE(_ip_var) -= nb_pkt - nb_tx;\n \n-#ifdef RTE_TEST_PMD_RECORD_BURST_STATS\n-\tfs->tx_burst_stats.pkt_burst_spread[nb_tx]++;\n-#endif\n+\tinc_tx_burst_stats(fs, nb_tx);\n \tif (unlikely(nb_tx < nb_pkt)) {\n \t\tif (verbose_level > 0 && fs->fwd_dropped == 0)\n \t\t\tprintf(\"port %d tx_queue %d - drop \"\n", "prefixes": [ "3/6" ] }{ "id": 74021, "url": "