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 A456E4318F; Tue, 17 Oct 2023 20:06:10 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 942B4406B6; Tue, 17 Oct 2023 20:06:10 +0200 (CEST) Received: from forward500c.mail.yandex.net (forward500c.mail.yandex.net [178.154.239.208]) by mails.dpdk.org (Postfix) with ESMTP id F414E4026C for ; Tue, 17 Oct 2023 20:06:08 +0200 (CEST) Received: from mail-nwsmtp-smtp-production-main-60.sas.yp-c.yandex.net (mail-nwsmtp-smtp-production-main-60.sas.yp-c.yandex.net [IPv6:2a02:6b8:c14:150a:0:640:1aa5:0]) by forward500c.mail.yandex.net (Yandex) with ESMTP id 6AB1261204; Tue, 17 Oct 2023 21:06:08 +0300 (MSK) Received: by mail-nwsmtp-smtp-production-main-60.sas.yp-c.yandex.net (smtp/Yandex) with ESMTPSA id 46pb0G5WpmI0-NGRDc7w8; Tue, 17 Oct 2023 21:06:07 +0300 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1697565967; bh=QxUZGyVQclJ2rbbnu5HzBXWCrXmZBZdWpqnaQD/z0Lw=; h=In-Reply-To:From:Date:References:To:Subject:Message-ID; b=HBF+pBhGcHQKgnYorBRwGjfquusAmw5FhXxHRoGfzRdM3p55lt9INhSPdXeh2dYJf jP5rb6zgSgn08n9EzBBcu5tG1l4N7SnGbG5RGPPQdQF0H/QMwnZn3yL5O+oBaG7MI6 z7srqgq2GUxxvHpk1Dcq+R/SnP6VsFRum8ennX74= Authentication-Results: mail-nwsmtp-smtp-production-main-60.sas.yp-c.yandex.net; dkim=pass header.i=@yandex.ru Message-ID: Date: Tue, 17 Oct 2023 19:06:03 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v2 1/3] examples/l3fwd: relax RSS requirement with option Content-Language: en-US, ru-RU To: Trevor Tao , dev@dpdk.org References: <20231013042722.429592-1-taozj888@163.com> <20231013042722.429592-2-taozj888@163.com> From: Konstantin Ananyev In-Reply-To: <20231013042722.429592-2-taozj888@163.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit 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 13.10.2023 05:27, Trevor Tao пишет: > Now the port Rx mq_mode had been set to RTE_ETH_MQ_RX_RSS > by default, but some hw and/or virtual interface does not > support the RSS and offload mode presupposed, e.g., some > virtio interfaces in the cloud don't support > RSS and the error msg may like: > > virtio_dev_configure(): RSS support requested but not supported by > the device > Port0 dev_configure = -95 > > So to enable the l3fwd running in that environment, the Rx mode requirement > can be relaxed to reflect the hardware feature reality here, and the l3fwd > can run smoothly then. > > An option named "relax-rx-mode" is added to enable the relax action > here, and it's disabled by default. > > Signed-off-by: Trevor Tao > --- > examples/l3fwd/main.c | 16 ++++++++++++++++ > 1 file changed, 16 insertions(+) > > diff --git a/examples/l3fwd/main.c b/examples/l3fwd/main.c > index 6063eb1399..89ad546a5e 100644 > --- a/examples/l3fwd/main.c > +++ b/examples/l3fwd/main.c > @@ -73,6 +73,7 @@ static enum L3FWD_LOOKUP_MODE lookup_mode; > static int numa_on = 1; /**< NUMA is enabled by default. */ > static int parse_ptype; /**< Parse packet type using rx callback, and */ > /**< disabled by default */ > +static int relax_rx_mode; /**< Relax RX mode is disabled by default */ > static int per_port_pool; /**< Use separate buffer pools per port; disabled */ > /**< by default */ > > @@ -678,6 +679,7 @@ static const char short_options[] = > #define CMD_LINE_OPT_MAX_PKT_LEN "max-pkt-len" > #define CMD_LINE_OPT_HASH_ENTRY_NUM "hash-entry-num" > #define CMD_LINE_OPT_PARSE_PTYPE "parse-ptype" > +#define CMD_LINE_OPT_RELAX_RX_MODE "relax-rx-mode" > #define CMD_LINE_OPT_PER_PORT_POOL "per-port-pool" > #define CMD_LINE_OPT_MODE "mode" > #define CMD_LINE_OPT_EVENTQ_SYNC "eventq-sched" > @@ -705,6 +707,7 @@ enum { > CMD_LINE_OPT_MAX_PKT_LEN_NUM, > CMD_LINE_OPT_HASH_ENTRY_NUM_NUM, > CMD_LINE_OPT_PARSE_PTYPE_NUM, > + CMD_LINE_OPT_RELAX_RX_MODE_NUM, > CMD_LINE_OPT_RULE_IPV4_NUM, > CMD_LINE_OPT_RULE_IPV6_NUM, > CMD_LINE_OPT_ALG_NUM, > @@ -728,6 +731,7 @@ static const struct option lgopts[] = { > {CMD_LINE_OPT_MAX_PKT_LEN, 1, 0, CMD_LINE_OPT_MAX_PKT_LEN_NUM}, > {CMD_LINE_OPT_HASH_ENTRY_NUM, 1, 0, CMD_LINE_OPT_HASH_ENTRY_NUM_NUM}, > {CMD_LINE_OPT_PARSE_PTYPE, 0, 0, CMD_LINE_OPT_PARSE_PTYPE_NUM}, > + {CMD_LINE_OPT_RELAX_RX_MODE, 0, 0, CMD_LINE_OPT_RELAX_RX_MODE_NUM}, > {CMD_LINE_OPT_PER_PORT_POOL, 0, 0, CMD_LINE_OPT_PARSE_PER_PORT_POOL}, > {CMD_LINE_OPT_MODE, 1, 0, CMD_LINE_OPT_MODE_NUM}, > {CMD_LINE_OPT_EVENTQ_SYNC, 1, 0, CMD_LINE_OPT_EVENTQ_SYNC_NUM}, > @@ -853,6 +857,11 @@ parse_args(int argc, char **argv) > parse_ptype = 1; > break; > > + case CMD_LINE_OPT_RELAX_RX_MODE_NUM: > + printf("Relax rx mode is enabled\n"); > + relax_rx_mode = 1; > + break; > + > case CMD_LINE_OPT_PARSE_PER_PORT_POOL: > printf("per port buffer pool is enabled\n"); > per_port_pool = 1; > @@ -1260,6 +1269,13 @@ l3fwd_poll_resource_setup(void) > if (dev_info.max_rx_queues == 1) > local_port_conf.rxmode.mq_mode = RTE_ETH_MQ_RX_NONE; > > + /* relax the rx rss requirement */ > + if (relax_rx_mode && !local_port_conf.rx_adv_conf.rss_conf.rss_hf) { > + printf("warning: modified the rx mq_mode to RTE_ETH_MQ_RX_NONE base on" > + " device capability\n"); > + local_port_conf.rxmode.mq_mode = RTE_ETH_MQ_RX_NONE; > + } > + > if (local_port_conf.rx_adv_conf.rss_conf.rss_hf != > port_conf.rx_adv_conf.rss_conf.rss_hf) { > printf("Port %u modified RSS hash function based on hardware support," Acked-by: Konstantin Ananyev