From: Chengwen Feng <fengchengwen@huawei.com>
To: <thomas@monjalon.net>, <ferruh.yigit@xilinx.com>
Cc: <dev@dpdk.org>, <chas3@att.com>, <humin29@huawei.com>,
<andrew.rybchenko@oktetlabs.ru>, <konstantin.ananyev@intel.com>
Subject: [PATCH v2 3/3] net/bonding: add testpmd cmd for Tx prepare
Date: Mon, 25 Jul 2022 12:08:42 +0800 [thread overview]
Message-ID: <20220725040842.35027-4-fengchengwen@huawei.com> (raw)
In-Reply-To: <20220725040842.35027-1-fengchengwen@huawei.com>
From: Chengchang Tang <tangchengchang@huawei.com>
Add new command to support enable/disable Tx prepare for bonded
devices. This helps to test some Tx HW offloads (e.g. checksum and TSO)
for bonded devices in testpmd. The command is:
set bonding tx_prepare <port_id> (enable|disable)
This patch also support display Tx prepare enabling status in
'show bonding config <port_id>' command.
Signed-off-by: Chengchang Tang <tangchengchang@huawei.com>
Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
---
.../link_bonding_poll_mode_drv_lib.rst | 9 +++
drivers/net/bonding/bonding_testpmd.c | 73 ++++++++++++++++++-
2 files changed, 81 insertions(+), 1 deletion(-)
diff --git a/doc/guides/prog_guide/link_bonding_poll_mode_drv_lib.rst b/doc/guides/prog_guide/link_bonding_poll_mode_drv_lib.rst
index a3d91b2091..428c7d67c7 100644
--- a/doc/guides/prog_guide/link_bonding_poll_mode_drv_lib.rst
+++ b/doc/guides/prog_guide/link_bonding_poll_mode_drv_lib.rst
@@ -623,6 +623,15 @@ Enable one of the specific aggregators mode when in mode 4 (link-aggregation-802
testpmd> set bonding agg_mode (port_id) (bandwidth|count|stable)
+set bonding tx_prepare
+~~~~~~~~~~~~~~~~~~~~~~
+
+Enable Tx prepare on bonding devices to help the slave devices prepare the packets for
+some HW offloading (e.g. checksum and TSO)::
+
+ testpmd> set bonding tx_prepare (port_id) (enable|disable)
+
+
show bonding config
~~~~~~~~~~~~~~~~~~~
diff --git a/drivers/net/bonding/bonding_testpmd.c b/drivers/net/bonding/bonding_testpmd.c
index 3941f4cf23..da3fe03f7e 100644
--- a/drivers/net/bonding/bonding_testpmd.c
+++ b/drivers/net/bonding/bonding_testpmd.c
@@ -413,7 +413,7 @@ static void cmd_show_bonding_config_parsed(void *parsed_result,
__rte_unused struct cmdline *cl, __rte_unused void *data)
{
struct cmd_show_bonding_config_result *res = parsed_result;
- int bonding_mode, agg_mode;
+ int bonding_mode, agg_mode, tx_prepare_flag;
portid_t slaves[RTE_MAX_ETHPORTS];
int num_slaves, num_active_slaves;
int primary_id;
@@ -429,6 +429,10 @@ static void cmd_show_bonding_config_parsed(void *parsed_result,
}
printf("\tBonding mode: %d\n", bonding_mode);
+ /* Display the Tx-prepare flag. */
+ tx_prepare_flag = rte_eth_bond_tx_prepare_get(port_id);
+ printf("\tTx-prepare state: %s\n", tx_prepare_flag == 1 ? "on" : "off");
+
if (bonding_mode == BONDING_MODE_BALANCE ||
bonding_mode == BONDING_MODE_8023AD) {
int balance_xmit_policy;
@@ -962,6 +966,68 @@ static cmdline_parse_inst_t cmd_set_bonding_agg_mode_policy = {
}
};
+struct cmd_set_bonding_tx_prepare_result {
+ cmdline_fixed_string_t set;
+ cmdline_fixed_string_t bonding;
+ cmdline_fixed_string_t tx_prepare;
+ portid_t port_id;
+ cmdline_fixed_string_t mode;
+};
+
+static void
+cmd_set_bonding_tx_prepare_parsed(void *parsed_result,
+ __rte_unused struct cmdline *cl,
+ __rte_unused void *data)
+{
+ struct cmd_set_bonding_tx_prepare_result *res = parsed_result;
+ portid_t port_id = res->port_id;
+
+ if (!strcmp(res->mode, "enable")) {
+ if (rte_eth_bond_tx_prepare_set(port_id, true) == 0)
+ printf("Tx prepare for bonding device enabled\n");
+ else
+ printf("Enabling bonding device Tx prepare "
+ "on port %d failed\n", port_id);
+ } else if (!strcmp(res->mode, "disable")) {
+ if (rte_eth_bond_tx_prepare_set(port_id, false) == 0)
+ printf("Tx prepare for bonding device disabled\n");
+ else
+ printf("Disabling bonding device Tx prepare "
+ "on port %d failed\n", port_id);
+ }
+}
+
+static cmdline_parse_token_string_t cmd_setbonding_tx_prepare_set =
+ TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_tx_prepare_result,
+ set, "set");
+static cmdline_parse_token_string_t cmd_setbonding_tx_prepare_bonding =
+ TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_tx_prepare_result,
+ bonding, "bonding");
+static cmdline_parse_token_string_t cmd_setbonding_tx_prepare_tx_prepare =
+ TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_tx_prepare_result,
+ tx_prepare, "tx_prepare");
+static cmdline_parse_token_num_t cmd_setbonding_tx_prepare_port_id =
+ TOKEN_NUM_INITIALIZER(struct cmd_set_bonding_tx_prepare_result,
+ port_id, RTE_UINT16);
+static cmdline_parse_token_string_t cmd_setbonding_tx_prepare_mode =
+ TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_tx_prepare_result,
+ mode, "enable#disable");
+
+static cmdline_parse_inst_t cmd_set_bond_tx_prepare = {
+ .f = cmd_set_bonding_tx_prepare_parsed,
+ .help_str = "set bonding tx_prepare <port_id> enable|disable: "
+ "Enable/disable tx_prepare for port_id",
+ .data = NULL,
+ .tokens = {
+ (void *)&cmd_setbonding_tx_prepare_set,
+ (void *)&cmd_setbonding_tx_prepare_bonding,
+ (void *)&cmd_setbonding_tx_prepare_tx_prepare,
+ (void *)&cmd_setbonding_tx_prepare_port_id,
+ (void *)&cmd_setbonding_tx_prepare_mode,
+ NULL
+ }
+};
+
static struct testpmd_driver_commands bonding_cmds = {
.commands = {
{
@@ -1024,6 +1090,11 @@ static struct testpmd_driver_commands bonding_cmds = {
"set bonding mode IEEE802.3AD aggregator policy (port_id) (agg_name)\n"
" Set Aggregation mode for IEEE802.3AD (mode 4)\n",
},
+ {
+ &cmd_set_bond_tx_prepare,
+ "set bonding tx_prepare <port_id> (enable|disable)\n"
+ " Enable/disable tx_prepare for bonded device\n",
+ },
{ NULL, NULL },
},
};
--
2.33.0
next prev parent reply other threads:[~2022-07-25 4:15 UTC|newest]
Thread overview: 61+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-04-16 11:04 [dpdk-dev] [RFC 0/2] add Tx prepare support for bonding device Chengchang Tang
2021-04-16 11:04 ` [dpdk-dev] [RFC 1/2] net/bonding: add Tx prepare for bonding Chengchang Tang
2021-04-16 11:04 ` [dpdk-dev] [RFC 2/2] app/testpmd: add cmd for bonding Tx prepare Chengchang Tang
2021-04-16 11:12 ` [dpdk-dev] [RFC 0/2] add Tx prepare support for bonding device Min Hu (Connor)
2021-04-20 1:26 ` Ferruh Yigit
2021-04-20 2:44 ` Chengchang Tang
2021-04-20 8:33 ` Ananyev, Konstantin
2021-04-20 12:44 ` Chengchang Tang
2021-04-20 13:18 ` Ananyev, Konstantin
2021-04-20 14:06 ` Chengchang Tang
2021-04-23 9:46 ` [dpdk-dev] [PATCH " Chengchang Tang
2021-04-23 9:46 ` [dpdk-dev] [PATCH 1/2] net/bonding: support Tx prepare for bonding Chengchang Tang
2021-06-08 9:49 ` Andrew Rybchenko
2021-06-09 6:42 ` Chengchang Tang
2021-06-09 9:35 ` Andrew Rybchenko
2021-06-10 7:32 ` Chengchang Tang
2021-06-14 14:16 ` Andrew Rybchenko
2021-06-09 10:25 ` Ananyev, Konstantin
2021-06-10 6:46 ` Chengchang Tang
2021-06-14 11:36 ` Ananyev, Konstantin
2022-05-24 12:11 ` Min Hu (Connor)
2022-07-25 4:08 ` [PATCH v2 0/3] add Tx prepare support for bonding driver Chengwen Feng
2022-07-25 4:08 ` [PATCH v2 1/3] net/bonding: support Tx prepare Chengwen Feng
2022-09-13 10:22 ` Ferruh Yigit
2022-09-13 15:08 ` Chas Williams
2022-09-14 0:46 ` fengchengwen
2022-09-14 16:59 ` Chas Williams
2022-09-17 2:35 ` fengchengwen
2022-09-17 13:38 ` Chas Williams
2022-09-19 14:07 ` Konstantin Ananyev
2022-09-19 23:02 ` Chas Williams
2022-09-22 2:12 ` fengchengwen
2022-09-25 10:32 ` Chas Williams
2022-09-26 10:18 ` Konstantin Ananyev
2022-09-26 16:36 ` Chas Williams
2022-07-25 4:08 ` [PATCH v2 2/3] net/bonding: support Tx prepare fail stats Chengwen Feng
2022-07-25 4:08 ` Chengwen Feng [this message]
2022-07-25 7:04 ` [PATCH v2 0/3] add Tx prepare support for bonding driver humin (Q)
2022-09-13 1:41 ` fengchengwen
2022-09-17 4:15 ` [PATCH v3 " Chengwen Feng
2022-09-17 4:15 ` [PATCH v3 1/3] net/bonding: support Tx prepare Chengwen Feng
2022-09-17 4:15 ` [PATCH v3 2/3] net/bonding: support Tx prepare fail stats Chengwen Feng
2022-09-17 4:15 ` [PATCH v3 3/3] net/bonding: add testpmd cmd for Tx prepare Chengwen Feng
2022-10-09 3:36 ` [PATCH v4] net/bonding: call Tx prepare before Tx burst Chengwen Feng
2022-10-10 19:42 ` Chas Williams
2022-10-11 13:28 ` fengchengwen
2022-10-11 13:20 ` [PATCH v5] " Chengwen Feng
2022-10-15 15:26 ` Chas Williams
2022-10-18 14:25 ` fengchengwen
2022-10-20 7:07 ` Andrew Rybchenko
2021-04-23 9:46 ` [dpdk-dev] [PATCH 2/2] net/bonding: support configuring Tx offloading for bonding Chengchang Tang
2021-06-08 9:49 ` Andrew Rybchenko
2021-06-09 6:57 ` Chengchang Tang
2021-06-09 9:11 ` Ananyev, Konstantin
2021-06-09 9:37 ` Andrew Rybchenko
2021-06-10 6:29 ` Chengchang Tang
2021-06-14 11:05 ` Ananyev, Konstantin
2021-06-14 14:13 ` Andrew Rybchenko
2021-04-30 6:26 ` [dpdk-dev] [PATCH 0/2] add Tx prepare support for bonding device Chengchang Tang
2021-04-30 6:47 ` Min Hu (Connor)
2021-06-03 1:44 ` Chengchang Tang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220725040842.35027-4-fengchengwen@huawei.com \
--to=fengchengwen@huawei.com \
--cc=andrew.rybchenko@oktetlabs.ru \
--cc=chas3@att.com \
--cc=dev@dpdk.org \
--cc=ferruh.yigit@xilinx.com \
--cc=humin29@huawei.com \
--cc=konstantin.ananyev@intel.com \
--cc=thomas@monjalon.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).