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 02DC5431DB; Mon, 23 Oct 2023 04:38:04 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id C82F3402C8; Mon, 23 Oct 2023 04:38:03 +0200 (CEST) Received: from szxga08-in.huawei.com (szxga08-in.huawei.com [45.249.212.255]) by mails.dpdk.org (Postfix) with ESMTP id ED50F40284 for ; Mon, 23 Oct 2023 04:38:01 +0200 (CEST) Received: from dggpeml100024.china.huawei.com (unknown [172.30.72.56]) by szxga08-in.huawei.com (SkyGuard) with ESMTP id 4SDK6R2S35z15NHY; Mon, 23 Oct 2023 10:35:11 +0800 (CST) Received: from [10.67.121.161] (10.67.121.161) by dggpeml100024.china.huawei.com (7.185.36.115) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.31; Mon, 23 Oct 2023 10:38:00 +0800 Subject: Re: [PATCH] app/testpmd: support config all offload From: fengchengwen To: , CC: , Aman Singh , Yuying Zhang References: <20231023022939.33231-1-fengchengwen@huawei.com> Message-ID: <021ef283-87d4-cc90-f5f5-3b28a922705d@huawei.com> Date: Mon, 23 Oct 2023 10:37:59 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.11.0 MIME-Version: 1.0 In-Reply-To: <20231023022939.33231-1-fengchengwen@huawei.com> Content-Type: text/plain; charset="utf-8" Content-Language: en-US Content-Transfer-Encoding: 7bit X-Originating-IP: [10.67.121.161] X-ClientProxiedBy: dggems703-chm.china.huawei.com (10.3.19.180) To dggpeml100024.china.huawei.com (7.185.36.115) 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 Add cc to testpmd's maintainer due tools failed to add. On 2023/10/23 10:29, Chengwen Feng wrote: > Extend supports all offload configuration in following commands: > 1. port config 0 rx_offload all on/off > 2. port config 0 tx_offload all on/off > 3. port 0 rxq 0 rx_offload all on/off > 4. port 0 txq 0 tx_offload all on/off > > Signed-off-by: Chengwen Feng > --- > app/test-pmd/cmdline.c | 112 +++++++++++--------- > doc/guides/testpmd_app_ug/testpmd_funcs.rst | 8 +- > 2 files changed, 68 insertions(+), 52 deletions(-) > > diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c > index 679ca47b94..35f5e4bbc0 100644 > --- a/app/test-pmd/cmdline.c > +++ b/app/test-pmd/cmdline.c > @@ -763,7 +763,7 @@ static void cmd_help_long_parsed(void *parsed_result, > "port config (port_id) udp_tunnel_port add|rm vxlan|geneve|ecpri (udp_port)\n\n" > " Add/remove UDP tunnel port for tunneling offload\n\n" > > - "port config rx_offload vlan_strip|" > + "port config rx_offload all|vlan_strip|" > "ipv4_cksum|udp_cksum|tcp_cksum|tcp_lro|qinq_strip|" > "outer_ipv4_cksum|macsec_strip|" > "vlan_filter|vlan_extend|scatter|" > @@ -771,7 +771,7 @@ static void cmd_help_long_parsed(void *parsed_result, > " Enable or disable a per port Rx offloading" > " on all Rx queues of a port\n\n" > > - "port (port_id) rxq (queue_id) rx_offload vlan_strip|" > + "port (port_id) rxq (queue_id) rx_offload all|vlan_strip|" > "ipv4_cksum|udp_cksum|tcp_cksum|tcp_lro|qinq_strip|" > "outer_ipv4_cksum|macsec_strip|" > "vlan_filter|vlan_extend|scatter|" > @@ -779,7 +779,7 @@ static void cmd_help_long_parsed(void *parsed_result, > " Enable or disable a per queue Rx offloading" > " only on a specific Rx queue\n\n" > > - "port config (port_id) tx_offload vlan_insert|" > + "port config (port_id) tx_offload all|vlan_insert|" > "ipv4_cksum|udp_cksum|tcp_cksum|sctp_cksum|tcp_tso|" > "udp_tso|outer_ipv4_cksum|qinq_insert|vxlan_tnl_tso|" > "gre_tnl_tso|ipip_tnl_tso|geneve_tnl_tso|" > @@ -788,7 +788,7 @@ static void cmd_help_long_parsed(void *parsed_result, > " Enable or disable a per port Tx offloading" > " on all Tx queues of a port\n\n" > > - "port (port_id) txq (queue_id) tx_offload vlan_insert|" > + "port (port_id) txq (queue_id) tx_offload all|vlan_insert|" > "ipv4_cksum|udp_cksum|tcp_cksum|sctp_cksum|tcp_tso|" > "udp_tso|outer_ipv4_cksum|qinq_insert|vxlan_tnl_tso|" > "gre_tnl_tso|ipip_tnl_tso|geneve_tnl_tso|macsec_insert" > @@ -11112,7 +11112,7 @@ static cmdline_parse_token_string_t cmd_config_per_port_rx_offload_result_rx_off > static cmdline_parse_token_string_t cmd_config_per_port_rx_offload_result_offload = > TOKEN_STRING_INITIALIZER > (struct cmd_config_per_port_rx_offload_result, > - offload, "vlan_strip#ipv4_cksum#udp_cksum#tcp_cksum#tcp_lro#" > + offload, "all#vlan_strip#ipv4_cksum#udp_cksum#tcp_cksum#tcp_lro#" > "qinq_strip#outer_ipv4_cksum#macsec_strip#" > "vlan_filter#vlan_extend#" > "scatter#buffer_split#timestamp#security#" > @@ -11155,8 +11155,8 @@ cmd_config_per_port_rx_offload_parsed(void *parsed_result, > portid_t port_id = res->port_id; > struct rte_eth_dev_info dev_info; > struct rte_port *port = &ports[port_id]; > - uint64_t single_offload; > uint16_t nb_rx_queues; > + uint64_t offload; > int q; > int ret; > > @@ -11167,25 +11167,29 @@ cmd_config_per_port_rx_offload_parsed(void *parsed_result, > return; > } > > - single_offload = search_rx_offload(res->offload); > - if (single_offload == 0) { > - fprintf(stderr, "Unknown offload name: %s\n", res->offload); > - return; > - } > - > ret = eth_dev_info_get_print_err(port_id, &dev_info); > if (ret != 0) > return; > > + if (!strcmp(res->offload, "all")) { > + offload = dev_info.rx_offload_capa; > + } else { > + offload = search_rx_offload(res->offload); > + if (offload == 0) { > + fprintf(stderr, "Unknown offload name: %s\n", res->offload); > + return; > + } > + } > + > nb_rx_queues = dev_info.nb_rx_queues; > if (!strcmp(res->on_off, "on")) { > - port->dev_conf.rxmode.offloads |= single_offload; > + port->dev_conf.rxmode.offloads |= offload; > for (q = 0; q < nb_rx_queues; q++) > - port->rxq[q].conf.offloads |= single_offload; > + port->rxq[q].conf.offloads |= offload; > } else { > - port->dev_conf.rxmode.offloads &= ~single_offload; > + port->dev_conf.rxmode.offloads &= ~offload; > for (q = 0; q < nb_rx_queues; q++) > - port->rxq[q].conf.offloads &= ~single_offload; > + port->rxq[q].conf.offloads &= ~offload; > } > > cmd_reconfig_device_queue(port_id, 1, 1); > @@ -11194,7 +11198,7 @@ cmd_config_per_port_rx_offload_parsed(void *parsed_result, > static cmdline_parse_inst_t cmd_config_per_port_rx_offload = { > .f = cmd_config_per_port_rx_offload_parsed, > .data = NULL, > - .help_str = "port config rx_offload vlan_strip|ipv4_cksum|" > + .help_str = "port config rx_offload all|vlan_strip|ipv4_cksum|" > "udp_cksum|tcp_cksum|tcp_lro|qinq_strip|outer_ipv4_cksum|" > "macsec_strip|vlan_filter|vlan_extend|" > "scatter|buffer_split|timestamp|security|" > @@ -11244,7 +11248,7 @@ static cmdline_parse_token_string_t cmd_config_per_queue_rx_offload_result_rxoff > static cmdline_parse_token_string_t cmd_config_per_queue_rx_offload_result_offload = > TOKEN_STRING_INITIALIZER > (struct cmd_config_per_queue_rx_offload_result, > - offload, "vlan_strip#ipv4_cksum#udp_cksum#tcp_cksum#tcp_lro#" > + offload, "all#vlan_strip#ipv4_cksum#udp_cksum#tcp_cksum#tcp_lro#" > "qinq_strip#outer_ipv4_cksum#macsec_strip#" > "vlan_filter#vlan_extend#" > "scatter#buffer_split#timestamp#security#keep_crc"); > @@ -11263,7 +11267,7 @@ cmd_config_per_queue_rx_offload_parsed(void *parsed_result, > portid_t port_id = res->port_id; > uint16_t queue_id = res->queue_id; > struct rte_port *port = &ports[port_id]; > - uint64_t single_offload; > + uint64_t offload; > int ret; > > if (port->port_status != RTE_PORT_STOPPED) { > @@ -11284,16 +11288,20 @@ cmd_config_per_queue_rx_offload_parsed(void *parsed_result, > return; > } > > - single_offload = search_rx_offload(res->offload); > - if (single_offload == 0) { > - fprintf(stderr, "Unknown offload name: %s\n", res->offload); > - return; > + if (!strcmp(res->offload, "all")) { > + offload = dev_info.rx_queue_offload_capa; > + } else { > + offload = search_rx_offload(res->offload); > + if (offload == 0) { > + fprintf(stderr, "Unknown offload name: %s\n", res->offload); > + return; > + } > } > > if (!strcmp(res->on_off, "on")) > - port->rxq[queue_id].conf.offloads |= single_offload; > + port->rxq[queue_id].conf.offloads |= offload; > else > - port->rxq[queue_id].conf.offloads &= ~single_offload; > + port->rxq[queue_id].conf.offloads &= ~offload; > > cmd_reconfig_device_queue(port_id, 1, 1); > } > @@ -11302,7 +11310,7 @@ static cmdline_parse_inst_t cmd_config_per_queue_rx_offload = { > .f = cmd_config_per_queue_rx_offload_parsed, > .data = NULL, > .help_str = "port rxq rx_offload " > - "vlan_strip|ipv4_cksum|" > + "all|vlan_strip|ipv4_cksum|" > "udp_cksum|tcp_cksum|tcp_lro|qinq_strip|outer_ipv4_cksum|" > "macsec_strip|vlan_filter|vlan_extend|" > "scatter|buffer_split|timestamp|security|" > @@ -11531,7 +11539,7 @@ static cmdline_parse_token_string_t cmd_config_per_port_tx_offload_result_tx_off > static cmdline_parse_token_string_t cmd_config_per_port_tx_offload_result_offload = > TOKEN_STRING_INITIALIZER > (struct cmd_config_per_port_tx_offload_result, > - offload, "vlan_insert#ipv4_cksum#udp_cksum#tcp_cksum#" > + offload, "all#vlan_insert#ipv4_cksum#udp_cksum#tcp_cksum#" > "sctp_cksum#tcp_tso#udp_tso#outer_ipv4_cksum#" > "qinq_insert#vxlan_tnl_tso#gre_tnl_tso#" > "ipip_tnl_tso#geneve_tnl_tso#macsec_insert#" > @@ -11578,8 +11586,8 @@ cmd_config_per_port_tx_offload_parsed(void *parsed_result, > portid_t port_id = res->port_id; > struct rte_eth_dev_info dev_info; > struct rte_port *port = &ports[port_id]; > - uint64_t single_offload; > uint16_t nb_tx_queues; > + uint64_t offload; > int q; > int ret; > > @@ -11590,25 +11598,29 @@ cmd_config_per_port_tx_offload_parsed(void *parsed_result, > return; > } > > - single_offload = search_tx_offload(res->offload); > - if (single_offload == 0) { > - fprintf(stderr, "Unknown offload name: %s\n", res->offload); > - return; > - } > - > ret = eth_dev_info_get_print_err(port_id, &dev_info); > if (ret != 0) > return; > > + if (!strcmp(res->offload, "all")) { > + offload = dev_info.tx_offload_capa; > + } else { > + offload = search_tx_offload(res->offload); > + if (offload == 0) { > + fprintf(stderr, "Unknown offload name: %s\n", res->offload); > + return; > + } > + } > + > nb_tx_queues = dev_info.nb_tx_queues; > if (!strcmp(res->on_off, "on")) { > - port->dev_conf.txmode.offloads |= single_offload; > + port->dev_conf.txmode.offloads |= offload; > for (q = 0; q < nb_tx_queues; q++) > - port->txq[q].conf.offloads |= single_offload; > + port->txq[q].conf.offloads |= offload; > } else { > - port->dev_conf.txmode.offloads &= ~single_offload; > + port->dev_conf.txmode.offloads &= ~offload; > for (q = 0; q < nb_tx_queues; q++) > - port->txq[q].conf.offloads &= ~single_offload; > + port->txq[q].conf.offloads &= ~offload; > } > > cmd_reconfig_device_queue(port_id, 1, 1); > @@ -11618,7 +11630,7 @@ static cmdline_parse_inst_t cmd_config_per_port_tx_offload = { > .f = cmd_config_per_port_tx_offload_parsed, > .data = NULL, > .help_str = "port config tx_offload " > - "vlan_insert|ipv4_cksum|udp_cksum|tcp_cksum|" > + "all|vlan_insert|ipv4_cksum|udp_cksum|tcp_cksum|" > "sctp_cksum|tcp_tso|udp_tso|outer_ipv4_cksum|" > "qinq_insert|vxlan_tnl_tso|gre_tnl_tso|" > "ipip_tnl_tso|geneve_tnl_tso|macsec_insert|" > @@ -11669,7 +11681,7 @@ static cmdline_parse_token_string_t cmd_config_per_queue_tx_offload_result_txoff > static cmdline_parse_token_string_t cmd_config_per_queue_tx_offload_result_offload = > TOKEN_STRING_INITIALIZER > (struct cmd_config_per_queue_tx_offload_result, > - offload, "vlan_insert#ipv4_cksum#udp_cksum#tcp_cksum#" > + offload, "all#vlan_insert#ipv4_cksum#udp_cksum#tcp_cksum#" > "sctp_cksum#tcp_tso#udp_tso#outer_ipv4_cksum#" > "qinq_insert#vxlan_tnl_tso#gre_tnl_tso#" > "ipip_tnl_tso#geneve_tnl_tso#macsec_insert#" > @@ -11689,7 +11701,7 @@ cmd_config_per_queue_tx_offload_parsed(void *parsed_result, > portid_t port_id = res->port_id; > uint16_t queue_id = res->queue_id; > struct rte_port *port = &ports[port_id]; > - uint64_t single_offload; > + uint64_t offload; > int ret; > > if (port->port_status != RTE_PORT_STOPPED) { > @@ -11710,16 +11722,20 @@ cmd_config_per_queue_tx_offload_parsed(void *parsed_result, > return; > } > > - single_offload = search_tx_offload(res->offload); > - if (single_offload == 0) { > - fprintf(stderr, "Unknown offload name: %s\n", res->offload); > - return; > + if (!strcmp(res->offload, "all")) { > + offload = dev_info.tx_queue_offload_capa; > + } else { > + offload = search_tx_offload(res->offload); > + if (offload == 0) { > + fprintf(stderr, "Unknown offload name: %s\n", res->offload); > + return; > + } > } > > if (!strcmp(res->on_off, "on")) > - port->txq[queue_id].conf.offloads |= single_offload; > + port->txq[queue_id].conf.offloads |= offload; > else > - port->txq[queue_id].conf.offloads &= ~single_offload; > + port->txq[queue_id].conf.offloads &= ~offload; > > cmd_reconfig_device_queue(port_id, 1, 1); > } > @@ -11728,7 +11744,7 @@ static cmdline_parse_inst_t cmd_config_per_queue_tx_offload = { > .f = cmd_config_per_queue_tx_offload_parsed, > .data = NULL, > .help_str = "port txq tx_offload " > - "vlan_insert|ipv4_cksum|udp_cksum|tcp_cksum|" > + "all|vlan_insert|ipv4_cksum|udp_cksum|tcp_cksum|" > "sctp_cksum|tcp_tso|udp_tso|outer_ipv4_cksum|" > "qinq_insert|vxlan_tnl_tso|gre_tnl_tso|" > "ipip_tnl_tso|geneve_tnl_tso|macsec_insert|" > diff --git a/doc/guides/testpmd_app_ug/testpmd_funcs.rst b/doc/guides/testpmd_app_ug/testpmd_funcs.rst > index ff73d65a32..3d242c8534 100644 > --- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst > +++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst > @@ -1575,7 +1575,7 @@ Enable or disable a per port Rx offloading on all Rx queues of a port:: > testpmd> port config (port_id) rx_offload (offloading) on|off > > * ``offloading``: can be any of these offloading capability: > - vlan_strip, ipv4_cksum, udp_cksum, tcp_cksum, tcp_lro, > + all, vlan_strip, ipv4_cksum, udp_cksum, tcp_cksum, tcp_lro, > qinq_strip, outer_ipv4_cksum, macsec_strip, > vlan_filter, vlan_extend, scatter, timestamp, security, > keep_crc, rss_hash > @@ -1590,7 +1590,7 @@ Enable or disable a per queue Rx offloading only on a specific Rx queue:: > testpmd> port (port_id) rxq (queue_id) rx_offload (offloading) on|off > > * ``offloading``: can be any of these offloading capability: > - vlan_strip, ipv4_cksum, udp_cksum, tcp_cksum, tcp_lro, > + all, vlan_strip, ipv4_cksum, udp_cksum, tcp_cksum, tcp_lro, > qinq_strip, outer_ipv4_cksum, macsec_strip, > vlan_filter, vlan_extend, scatter, timestamp, security, > keep_crc > @@ -1605,7 +1605,7 @@ Enable or disable a per port Tx offloading on all Tx queues of a port:: > testpmd> port config (port_id) tx_offload (offloading) on|off > > * ``offloading``: can be any of these offloading capability: > - vlan_insert, ipv4_cksum, udp_cksum, tcp_cksum, > + all, vlan_insert, ipv4_cksum, udp_cksum, tcp_cksum, > sctp_cksum, tcp_tso, udp_tso, outer_ipv4_cksum, > qinq_insert, vxlan_tnl_tso, gre_tnl_tso, > ipip_tnl_tso, geneve_tnl_tso, macsec_insert, > @@ -1621,7 +1621,7 @@ Enable or disable a per queue Tx offloading only on a specific Tx queue:: > testpmd> port (port_id) txq (queue_id) tx_offload (offloading) on|off > > * ``offloading``: can be any of these offloading capability: > - vlan_insert, ipv4_cksum, udp_cksum, tcp_cksum, > + all, vlan_insert, ipv4_cksum, udp_cksum, tcp_cksum, > sctp_cksum, tcp_tso, udp_tso, outer_ipv4_cksum, > qinq_insert, vxlan_tnl_tso, gre_tnl_tso, > ipip_tnl_tso, geneve_tnl_tso, macsec_insert, >