From patchwork Mon Nov 13 16:11:34 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Trevor Tao X-Patchwork-Id: 134166 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 0E52D4331C; Mon, 13 Nov 2023 17:12:00 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id B549040A6C; Mon, 13 Nov 2023 17:11:51 +0100 (CET) Received: from m15.mail.163.com (m15.mail.163.com [45.254.50.219]) by mails.dpdk.org (Postfix) with ESMTP id C66E6402AB for ; Mon, 13 Nov 2023 17:11:48 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=163.com; s=s110527; h=From:Subject:Date:Message-Id:MIME-Version; bh=jcNy9 cdXq1tDTLcB8tIDmEHxhYaazRY3kNtJncGsl20=; b=Jpn1UWaZrPsF0v4qDkTrk pg2OpCCW1ftKT0KDgcRu/9KN6kcXE/3nIf8IC0Wz4KQ8/RN6BGVUhr6KGTMKeq/q HoCZJKmVLEz2dxMtdBLSc2mjX5b+tugSdIHFP0Un8IwjPZPE5Lpv+7Y31jhOYpG8 JpSl0KFtziAWUxwPj5eyZI= Received: from u2204.. (unknown [180.113.199.183]) by zwqz-smtp-mta-g0-2 (Coremail) with SMTP id _____wD330C5SlJln8MsBQ--.14340S3; Tue, 14 Nov 2023 00:11:42 +0800 (CST) From: Trevor Tao To: dev@dpdk.org Cc: Trevor Tao Subject: [PATCH v5 1/2] examples/l3fwd: relax RSS requirement with option Date: Mon, 13 Nov 2023 16:11:34 +0000 Message-Id: <20231113161135.125307-2-taozj888@163.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231113161135.125307-1-taozj888@163.com> References: <20231113161135.125307-1-taozj888@163.com> MIME-Version: 1.0 X-CM-TRANSID: _____wD330C5SlJln8MsBQ--.14340S3 X-Coremail-Antispam: 1Uf129KBjvJXoWxCrW3ZFWrury5AFWUKF4DJwb_yoW5Zw1Dpr s8WryIqFyqvw43t3WYyF98Wrn8JFWUAws8Ars3Z343G3WUtFZ3Wr48Kr98XFn7GF4kXrW7 X3yrXryxGFn0y3JanT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x0JUS_M3UUUUU= X-Originating-IP: [180.113.199.183] X-CM-SenderInfo: hwdr6yqyyyqiywtou0bp/xtbBlwEnx2I0bIV2wAAAs- 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 "disable-rss" is added to disable the RX RSS explicitly, and it's disabled by default. Signed-off-by: Trevor Tao Acked-by: Konstantin Ananyev --- examples/l3fwd/main.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/examples/l3fwd/main.c b/examples/l3fwd/main.c index 6063eb1399..b42365ef1b 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 disable_rss; /**< Disable the RX RSS mode */ 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_DISABLE_RSS "disable-rss" #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_DISABLE_RSS_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_DISABLE_RSS, 0, 0, CMD_LINE_OPT_DISABLE_RSS_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_DISABLE_RSS_NUM: + printf("Disable RX RSS\n"); + disable_rss = 1; + break; + case CMD_LINE_OPT_PARSE_PER_PORT_POOL: printf("per port buffer pool is enabled\n"); per_port_pool = 1; @@ -1257,7 +1266,7 @@ l3fwd_poll_resource_setup(void) local_port_conf.rx_adv_conf.rss_conf.rss_hf &= dev_info.flow_type_rss_offloads; - if (dev_info.max_rx_queues == 1) + if (disable_rss == 1 || dev_info.max_rx_queues == 1) local_port_conf.rxmode.mq_mode = RTE_ETH_MQ_RX_NONE; if (local_port_conf.rx_adv_conf.rss_conf.rss_hf !=