From patchwork Fri Oct 13 03:27:28 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Trevor Tao X-Patchwork-Id: 132586 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 545684233A; Fri, 13 Oct 2023 05:27:48 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 754A6402E6; Fri, 13 Oct 2023 05:27:44 +0200 (CEST) Received: from m12.mail.163.com (m12.mail.163.com [220.181.12.216]) by mails.dpdk.org (Postfix) with ESMTP id E420E402CB for ; Fri, 13 Oct 2023 05:27:40 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=163.com; s=s110527; h=From:Subject:Date:Message-Id:MIME-Version; bh=Gydqe h4CvXOCmV+q/kZxAy39AIsZEy/0eUJRVUz8cZs=; b=WlddU1JaCeLHc2YUik6dT 3FItVtVL3IH6kkV/ocuDVA7q0KvSn2ws/f+Tu3nk4Zw/TM3o/ks6duZ5EwLJwpAw F8Jvl4lIFA8eGzLX9NIzbdSLDfSEnrk6Y4lknYwMxnQzOYjctpIc96MeHZpZN/iR m/7dpX4v8O2dhpQDuTCVc8= Received: from u2204.. (unknown [49.76.95.19]) by zwqz-smtp-mta-g5-1 (Coremail) with SMTP id _____wDHh4MjuShlSDqlAQ--.65325S3; Fri, 13 Oct 2023 11:27:36 +0800 (CST) From: Trevor Tao To: dev@dpdk.org Cc: Trevor Tao Subject: [PATCH v2 1/3] examples/l3fwd: relax RSS requirement with option Date: Fri, 13 Oct 2023 03:27:28 +0000 Message-Id: <20231013032730.426691-2-taozj888@163.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231013032730.426691-1-taozj888@163.com> References: <20231013032730.426691-1-taozj888@163.com> MIME-Version: 1.0 X-CM-TRANSID: _____wDHh4MjuShlSDqlAQ--.65325S3 X-Coremail-Antispam: 1Uf129KBjvJXoWxCrW3ZFWrury5AFWUKF4DJwb_yoW5KryDpF s8Gry7XF1qvw43t3WFyF9xWrs8JFWUAws8Ars5Z343C3WUtFZ3Wr40krn8JF97GF48WrW7 X3yrXryxGF4qya7anT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x0JUTa0kUUUUU= X-Originating-IP: [49.76.95.19] X-CM-SenderInfo: hwdr6yqyyyqiywtou0bp/xtbBogoIx1aEJ0fdwwAAsL 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 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,"