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 9B6D648BB5 for ; Wed, 26 Nov 2025 12:51:51 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 6FD404042F; Wed, 26 Nov 2025 12:51:51 +0100 (CET) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mails.dpdk.org (Postfix) with ESMTP id C56AA4042F for ; Wed, 26 Nov 2025 12:51:50 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1764157910; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:autocrypt:autocrypt; bh=Ga6csYBNQKRzHEzXOZ0r21RzcHlZRWIUCsHFlyW0Gpg=; b=SvAQsrKGPJfo+uG1T3tHSfWJBv3NGXWKOTGziP2WRuL9FX9/o9XMqjavnRxLXjimAQ8zji piI3c1dP0ftin05kubcu0yIMUq3hldp33vNpFyjURZhIW2Ca3DRZObMeaDjX2oBL1pGP9e KDNPbgbev5vE6jmpYTjDqweWScdO8q0= Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-19-2KJTFbOYNjClG-HMwHku8w-1; Wed, 26 Nov 2025 06:51:49 -0500 X-MC-Unique: 2KJTFbOYNjClG-HMwHku8w-1 X-Mimecast-MFC-AGG-ID: 2KJTFbOYNjClG-HMwHku8w_1764157907 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-477bf8c1413so40070385e9.1 for ; Wed, 26 Nov 2025 03:51:47 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1764157907; x=1764762707; h=content-transfer-encoding:in-reply-to:autocrypt:from :content-language:references:cc:to:subject:user-agent:mime-version :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=Ga6csYBNQKRzHEzXOZ0r21RzcHlZRWIUCsHFlyW0Gpg=; b=DnqEKstJu1AR5WC3OCrnno499uSGkf0iSMOOYBqBVwI4bwA8DzqtmQxOFjD4iuSzVh RcQH9AxUZMmLaSTjbA9fKlCxTtDsaiWiFixg87AXa+Xw3w97hES4JYR3Cx7ZDgqj2EQO 5ZT8x6UwodH5Z6cQqwZ7Hml1kjhGwtMh3VII5QXhZ975AUXNb8eVKhlGvCV7A7MCYhv2 EfL/ELLiGo8DgpK5a+R4zPgnX6bhjqmFli8+j7cPtXUTs8mu3zL+xRirWHiJOr3BbU54 yOOl8qcXO/gFGg0skF9b+X463NSBC3C0CyMpbex12XQPdh+jl5rXj63bahJv3PzjCjpx iTUQ== X-Forwarded-Encrypted: i=1; AJvYcCX4Q/zLcSkeyWFEiigAM10xTnMV84S79pXk3kLXcSWn+S0SLarzBsVS4fP5aMS010JmJO6Irwk=@dpdk.org X-Gm-Message-State: AOJu0YxZiCIcJ/avVv4w/XB/EE99kdSLOmlMOXKKNhwTUuBynU/U6IzY LdpZViZnJaF1LNbCBSAvii572iT0sJjovC8pafHhiu/j4d5P1TNlSw0V7CtU0HhYvtvGHeGR2/a UqN6c1fIK9jkEbU+CzVaq79G6NFnBnVRa4jwFB3NeSEC7hftM X-Gm-Gg: ASbGnctcOWW917nQCo1gJsGjW5C65Tq2xR5S8OVUSbKa7dMpYjCFPMVzQlp4i7ZAmBy HpOGA6RgBSGfJ0W0JOro2lEgDb/sM+2OWY+TixtQuQB6aFm3I/c2ealVAxigFdctFsBH+HEfQmR qFKVL1IasX2pG1mr6un8irYrqBXxr1noGWSSKpc+kvz8rTsYdXSnrN/YkqfJfmyEGkfOfGEwqoV rTYJMNtugCFTPx9AsR5bak5q3J6IjZ/4ywIDkd1e54DwpiuEjbBvoEq6f6TFeVY6R39rK6SgOeK UTjAh2d10mNz9oQNBYZcZwXpyvXS0qC0n54sqGJnKrP9UZCdXl6YU6Ce99OfMqzwoc8ETXFBH+I 27zZrGADYAWux X-Received: by 2002:a05:600c:450b:b0:477:b642:9dc9 with SMTP id 5b1f17b1804b1-477c01d736dmr169612465e9.28.1764157906594; Wed, 26 Nov 2025 03:51:46 -0800 (PST) X-Google-Smtp-Source: AGHT+IGk1RDMb80DNQvvgBAlZraIf9RYWKcL+pQ2p8pfdl2qz0FHXXQYC0KIrLV4lj9BlxsBaLd9FA== X-Received: by 2002:a05:600c:450b:b0:477:b642:9dc9 with SMTP id 5b1f17b1804b1-477c01d736dmr169612195e9.28.1764157906087; Wed, 26 Nov 2025 03:51:46 -0800 (PST) Received: from [192.168.0.56] ([78.16.128.110]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47903e65d51sm42486245e9.0.2025.11.26.03.51.44 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 26 Nov 2025 03:51:45 -0800 (PST) Message-ID: Date: Wed, 26 Nov 2025 11:51:44 +0000 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: patch 'examples/l3fwd: add Tx burst size configuration option' has been queued to stable release 24.11.4 To: "Ande, Venkat Kumar" , "Tummala, Sivaprasad" Cc: Dengdui Huang , Pavan Nikhilesh , Chengwen Feng , dpdk stable , Shani Peretz References: <20251125150558.232595-1-ktraynor@redhat.com> <547c464d-2c6e-4ed5-b93a-80d16626634e@redhat.com> From: Kevin Traynor Autocrypt: addr=ktraynor@redhat.com; keydata= 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 In-Reply-To: X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: DVZv-bXxm5neKe17CfRn-wkaeiSwcGbxrQwERIUo5Cg_1764157907 X-Mimecast-Originator: redhat.com Content-Language: en-US Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org On 26/11/2025 11:19, Ande, Venkat Kumar wrote: > [AMD Official Use Only - AMD Internal Distribution Only] > > Hi Kevin, > > > If the commit d5c4897ecfb2 ("examples/l3fwd: add option to set Rx burst > size"), is taken in stable branch, then this patch also should be taken. As the performance of few of our platforms drastically came down for l3fwd test scenario with that commit. > Hi Venkat, Commit d5c4897ecfb2 is part of the original 24.11 DPDK release. A change of params name may make sense on DPDK main branch, but it is not good to change user visible options on LTS branches. However, as it's fixing a performance regression and is just an example app, we can take it on 24.11 branch. It is not relevant for older LTS branches as issue was introduced in 24.11. thanks, Kevin. > > Regards, > Venkat > > -----Original Message----- > From: Kevin Traynor > Sent: Wednesday, November 26, 2025 4:39 PM > To: Tummala, Sivaprasad > Cc: Ande, Venkat Kumar ; Dengdui Huang ; Pavan Nikhilesh ; Chengwen Feng ; dpdk stable ; Shani Peretz > Subject: Re: patch 'examples/l3fwd: add Tx burst size configuration option' has been queued to stable release 24.11.4 > > Caution: This message originated from an External Source. Use proper caution when opening attachments, clicking links, or responding. > > > On 25/11/2025 15:05, Kevin Traynor wrote: >> Hi, >> >> FYI, your patch has been queued to stable release 24.11.4 >> >> Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. >> It will be pushed if I get no objections before 11/28/25. So please >> shout if anyone has objections. >> > > Re-reading this patch. It doesn't have stable tags and I don't think we should take it to LTS branches, as it is changing defaults and seems to be a small performance improvement. > >> Also note that after the patch there's a diff of the upstream commit >> vs the patch applied to the branch. This will indicate if there was >> any rebasing needed to apply to the stable branch. If there were code >> changes for rebasing >> (ie: not only metadata diffs), please double check that the rebase was >> correctly done. >> >> Queued patches are on a temporary branch at: >> https://github.com/kevintraynor/dpdk-stable >> >> This queued commit can be viewed at: >> https://github.com/kevintraynor/dpdk-stable/commit/d150d3359e9f7cbd22b >> 2d34c0fdec7b101400e98 >> >> Thanks. >> >> Kevin >> >> --- >> >From d150d3359e9f7cbd22b2d34c0fdec7b101400e98 Mon Sep 17 00:00:00 2001 >> From: Sivaprasad Tummala >> Date: Thu, 6 Nov 2025 14:16:31 +0000 >> Subject: [PATCH] examples/l3fwd: add Tx burst size configuration >> option >> >> [ upstream commit 79375d1015b308234e8b6955671a296394249f9b ] >> >> Previously, the Tx burst size in l3fwd was fixed at 256, which could >> lead to suboptimal performance in certain scenarios. >> >> This patch introduces separate --rx-burst and --tx-burst options to >> explicitly configure Rx and Tx burst sizes. By default, the Tx burst >> size now matches the Rx burst size for better efficiency and pipeline >> balance. >> >> Fixes: d5c4897ecfb2 ("examples/l3fwd: add option to set Rx burst >> size") >> >> Signed-off-by: Sivaprasad Tummala >> Tested-by: Venkat Kumar Ande >> Tested-by: Dengdui Huang >> Tested-by: Pavan Nikhilesh >> Acked-by: Chengwen Feng >> --- >> doc/guides/sample_app_ug/l3_forward.rst | 6 ++ >> examples/l3fwd/l3fwd.h | 10 +--- >> examples/l3fwd/l3fwd_acl.c | 2 +- >> examples/l3fwd/l3fwd_common.h | 5 +- >> examples/l3fwd/l3fwd_em.c | 2 +- >> examples/l3fwd/l3fwd_fib.c | 2 +- >> examples/l3fwd/l3fwd_lpm.c | 2 +- >> examples/l3fwd/main.c | 80 +++++++++++++++---------- >> 8 files changed, 67 insertions(+), 42 deletions(-) >> >> diff --git a/doc/guides/sample_app_ug/l3_forward.rst >> b/doc/guides/sample_app_ug/l3_forward.rst >> index de347eeeb1..aba671d2b7 100644 >> --- a/doc/guides/sample_app_ug/l3_forward.rst >> +++ b/doc/guides/sample_app_ug/l3_forward.rst >> @@ -78,4 +78,6 @@ The application has a number of command line options:: >> [--lookup LOOKUP_METHOD] >> >> --config(port,queue,lcore)[,(port,queue,lcore)] >> + [--rx-burst NPKTS] >> + [--tx-burst NPKTS] >> [--eth-dest=X,MM:MM:MM:MM:MM:MM] >> [--max-pkt-len PKTLEN] @@ -114,4 +116,8 >> @@ Where, >> * ``--config (port,queue,lcore)[,(port,queue,lcore)]:`` Determines which queues from which ports are mapped to which cores. >> >> +* ``--rx-burst NPKTS:`` Optional, Rx burst size in decimal (default 32). >> + >> +* ``--tx-burst NPKTS:`` Optional, Tx burst size in decimal (default 32). >> + >> * ``--eth-dest=X,MM:MM:MM:MM:MM:MM:`` Optional, ethernet destination for port X. >> >> diff --git a/examples/l3fwd/l3fwd.h b/examples/l3fwd/l3fwd.h index >> 0cce3406ee..471e3b488f 100644 >> --- a/examples/l3fwd/l3fwd.h >> +++ b/examples/l3fwd/l3fwd.h >> @@ -33,8 +33,4 @@ >> #define VECTOR_SIZE_DEFAULT MAX_PKT_BURST >> #define VECTOR_TMO_NS_DEFAULT 1E6 /* 1ms */ >> -/* >> - * Try to avoid TX buffering if we have at least MAX_TX_BURST packets to send. >> - */ >> -#define MAX_TX_BURST (MAX_PKT_BURST / 2) >> >> #define NB_SOCKETS 8 >> @@ -117,5 +113,5 @@ extern struct acl_algorithms acl_alg[]; extern >> uint32_t max_pkt_len; >> >> -extern uint32_t nb_pkt_per_burst; >> +extern uint32_t rx_burst_size; >> extern uint32_t mb_mempool_cache_size; >> >> @@ -153,6 +149,6 @@ send_single_packet(struct lcore_conf *qconf, >> >> /* enough pkts to be sent */ >> - if (unlikely(len == MAX_PKT_BURST)) { >> - send_burst(qconf, MAX_PKT_BURST, port); >> + if (unlikely(len == rx_burst_size)) { >> + send_burst(qconf, rx_burst_size, port); >> len = 0; >> } >> diff --git a/examples/l3fwd/l3fwd_acl.c b/examples/l3fwd/l3fwd_acl.c >> index 4fc4b986cc..a1275e18bc 100644 >> --- a/examples/l3fwd/l3fwd_acl.c >> +++ b/examples/l3fwd/l3fwd_acl.c >> @@ -1137,5 +1137,5 @@ acl_main_loop(__rte_unused void *dummy) >> queueid = qconf->rx_queue_list[i].queue_id; >> nb_rx = rte_eth_rx_burst(portid, queueid, >> - pkts_burst, nb_pkt_per_burst); >> + pkts_burst, rx_burst_size); >> >> if (nb_rx > 0) { diff --git >> a/examples/l3fwd/l3fwd_common.h b/examples/l3fwd/l3fwd_common.h index >> d94e5f1357..ccaf0cd402 100644 >> --- a/examples/l3fwd/l3fwd_common.h >> +++ b/examples/l3fwd/l3fwd_common.h >> @@ -26,4 +26,7 @@ >> #define SENDM_PORT_OVERHEAD(x) (x) >> >> +extern uint32_t rx_burst_size; >> +extern uint32_t tx_burst_size; >> + >> /* >> * From http://www.rfc-editor.org/rfc/rfc1812.txt section 5.2.2: >> @@ -72,5 +75,5 @@ send_packetsx4(struct lcore_conf *qconf, uint16_t port, struct rte_mbuf *m[], >> * then send them straightway. >> */ >> - if (num >= MAX_TX_BURST && len == 0) { >> + if (num >= tx_burst_size && len == 0) { >> n = rte_eth_tx_burst(port, qconf->tx_queue_id[port], m, num); >> if (unlikely(n < num)) { diff --git >> a/examples/l3fwd/l3fwd_em.c b/examples/l3fwd/l3fwd_em.c index >> da9c45e3a4..58c54ed77e 100644 >> --- a/examples/l3fwd/l3fwd_em.c >> +++ b/examples/l3fwd/l3fwd_em.c >> @@ -645,5 +645,5 @@ em_main_loop(__rte_unused void *dummy) >> queueid = qconf->rx_queue_list[i].queue_id; >> nb_rx = rte_eth_rx_burst(portid, queueid, pkts_burst, >> - nb_pkt_per_burst); >> + rx_burst_size); >> if (nb_rx == 0) >> continue; diff --git >> a/examples/l3fwd/l3fwd_fib.c b/examples/l3fwd/l3fwd_fib.c index >> 82f1739df7..4fc6bf90d5 100644 >> --- a/examples/l3fwd/l3fwd_fib.c >> +++ b/examples/l3fwd/l3fwd_fib.c >> @@ -240,5 +240,5 @@ fib_main_loop(__rte_unused void *dummy) >> queueid = qconf->rx_queue_list[i].queue_id; >> nb_rx = rte_eth_rx_burst(portid, queueid, pkts_burst, >> - nb_pkt_per_burst); >> + rx_burst_size); >> if (nb_rx == 0) >> continue; diff --git >> a/examples/l3fwd/l3fwd_lpm.c b/examples/l3fwd/l3fwd_lpm.c index >> fec0aeb79c..a71eee69ec 100644 >> --- a/examples/l3fwd/l3fwd_lpm.c >> +++ b/examples/l3fwd/l3fwd_lpm.c >> @@ -206,5 +206,5 @@ lpm_main_loop(__rte_unused void *dummy) >> queueid = qconf->rx_queue_list[i].queue_id; >> nb_rx = rte_eth_rx_burst(portid, queueid, pkts_burst, >> - nb_pkt_per_burst); >> + rx_burst_size); >> if (nb_rx == 0) >> continue; diff --git >> a/examples/l3fwd/main.c b/examples/l3fwd/main.c index >> ae3b4f6439..11aed26f94 100644 >> --- a/examples/l3fwd/main.c >> +++ b/examples/l3fwd/main.c >> @@ -58,6 +58,7 @@ static_assert(MEMPOOL_CACHE_SIZE >= MAX_PKT_BURST, >> "MAX_PKT_BURST should be at m uint16_t nb_rxd = RX_DESC_DEFAULT; >> uint16_t nb_txd = TX_DESC_DEFAULT; -uint32_t nb_pkt_per_burst = >> DEFAULT_PKT_BURST; >> +uint32_t rx_burst_size = DEFAULT_PKT_BURST; >> uint32_t mb_mempool_cache_size = MEMPOOL_CACHE_SIZE; >> +uint32_t tx_burst_size = DEFAULT_PKT_BURST; >> >> /**< Ports set in promiscuous mode off by default. */ @@ -401,5 >> +402,6 @@ print_usage(const char *prgname) >> " [--rx-queue-size NPKTS]" >> " [--tx-queue-size NPKTS]" >> - " [--burst NPKTS]" >> + " [--rx-burst NPKTS]" >> + " [--tx-burst NPKTS]" >> " [--mbcache CACHESZ]" >> " [--eth-dest=X,MM:MM:MM:MM:MM:MM]" >> @@ -428,5 +430,7 @@ print_usage(const char *prgname) >> " --tx-queue-size NPKTS: Tx queue size in decimal\n" >> " Default: %d\n" >> - " --burst NPKTS: Burst size in decimal\n" >> + " --rx-burst NPKTS: RX Burst size in decimal\n" >> + " Default: %d\n" >> + " --tx-burst NPKTS: TX Burst size in decimal\n" >> " Default: %d\n" >> " --mbcache CACHESZ: Mbuf cache size in decimal\n" >> @@ -461,6 +465,6 @@ print_usage(const char *prgname) >> " --rule_ipv6=FILE: Specify the ipv6 rules entries file.\n" >> " --alg: ACL classify method to use, one of: %s.\n\n", >> - prgname, RX_DESC_DEFAULT, TX_DESC_DEFAULT, DEFAULT_PKT_BURST, MEMPOOL_CACHE_SIZE, >> - ACL_LEAD_CHAR, ROUTE_LEAD_CHAR, alg); >> + prgname, RX_DESC_DEFAULT, TX_DESC_DEFAULT, DEFAULT_PKT_BURST, DEFAULT_PKT_BURST, >> + MEMPOOL_CACHE_SIZE, ACL_LEAD_CHAR, ROUTE_LEAD_CHAR, >> + alg); >> } >> >> @@ -696,5 +700,5 @@ parse_mbcache_size(const char *optarg) >> >> static void >> -parse_pkt_burst(const char *optarg) >> +parse_pkt_burst(const char *optarg, bool is_rx_burst, uint32_t >> +*burst_sz) >> { >> struct rte_eth_dev_info dev_info; @@ -711,29 +715,36 @@ >> parse_pkt_burst(const char *optarg) >> if (pkt_burst > MAX_PKT_BURST) { >> RTE_LOG(INFO, L3FWD, "User provided burst must be <= %d. Using default value %d\n", >> - MAX_PKT_BURST, nb_pkt_per_burst); >> + MAX_PKT_BURST, *burst_sz); >> return; >> } else if (pkt_burst > 0) { >> - nb_pkt_per_burst = (uint32_t)pkt_burst; >> + *burst_sz = (uint32_t)pkt_burst; >> return; >> } >> >> - /* If user gives a value of zero, query the PMD for its recommended Rx burst size. */ >> - ret = rte_eth_dev_info_get(0, &dev_info); >> - if (ret != 0) >> - return; >> - burst_size = dev_info.default_rxportconf.burst_size; >> - if (burst_size == 0) { >> - RTE_LOG(INFO, L3FWD, "PMD does not recommend a burst size. Using default value %d. " >> - "User provided value must be in [1, %d]\n", >> - nb_pkt_per_burst, MAX_PKT_BURST); >> - return; >> - } else if (burst_size > MAX_PKT_BURST) { >> - RTE_LOG(INFO, L3FWD, "PMD recommended burst size %d exceeds maximum value %d. " >> - "Using default value %d\n", >> - burst_size, MAX_PKT_BURST, nb_pkt_per_burst); >> - return; >> + if (is_rx_burst) { >> + /* If user gives a value of zero, query the PMD for its recommended >> + * Rx burst size. >> + */ >> + ret = rte_eth_dev_info_get(0, &dev_info); >> + if (ret != 0) >> + return; >> + burst_size = dev_info.default_rxportconf.burst_size; >> + if (burst_size == 0) { >> + RTE_LOG(INFO, L3FWD, "PMD does not recommend a burst size. Using default value %d. " >> + "User provided value must be in [1, %d]\n", >> + rx_burst_size, MAX_PKT_BURST); >> + return; >> + } else if (burst_size > MAX_PKT_BURST) { >> + RTE_LOG(INFO, L3FWD, "PMD recommended burst size %d exceeds maximum value %d. " >> + "Using default value %d\n", >> + burst_size, MAX_PKT_BURST, rx_burst_size); >> + return; >> + } >> + *burst_sz = burst_size; >> + RTE_LOG(INFO, L3FWD, "Using PMD-provided RX burst value %d\n", burst_size); >> + } else { >> + RTE_LOG(INFO, L3FWD, "User provided TX burst is 0. Using default value %d\n", >> + *burst_sz); >> } >> - nb_pkt_per_burst = burst_size; >> - RTE_LOG(INFO, L3FWD, "Using PMD-provided burst value %d\n", burst_size); >> } >> >> @@ -769,5 +780,6 @@ static const char short_options[] = #define >> CMD_LINE_OPT_RULE_IPV6 "rule_ipv6" >> #define CMD_LINE_OPT_ALG "alg" >> -#define CMD_LINE_OPT_PKT_BURST "burst" >> +#define CMD_LINE_OPT_PKT_RX_BURST "rx-burst" >> +#define CMD_LINE_OPT_PKT_TX_BURST "tx-burst" >> #define CMD_LINE_OPT_MB_CACHE_SIZE "mbcache" >> >> @@ -800,5 +812,6 @@ enum { >> CMD_LINE_OPT_VECTOR_SIZE_NUM, >> CMD_LINE_OPT_VECTOR_TMO_NS_NUM, >> - CMD_LINE_OPT_PKT_BURST_NUM, >> + CMD_LINE_OPT_PKT_RX_BURST_NUM, >> + CMD_LINE_OPT_PKT_TX_BURST_NUM, >> CMD_LINE_OPT_MB_CACHE_SIZE_NUM, >> }; >> @@ -828,5 +841,6 @@ static const struct option lgopts[] = { >> {CMD_LINE_OPT_RULE_IPV6, 1, 0, CMD_LINE_OPT_RULE_IPV6_NUM}, >> {CMD_LINE_OPT_ALG, 1, 0, CMD_LINE_OPT_ALG_NUM}, >> - {CMD_LINE_OPT_PKT_BURST, 1, 0, CMD_LINE_OPT_PKT_BURST_NUM}, >> + {CMD_LINE_OPT_PKT_RX_BURST, 1, 0, CMD_LINE_OPT_PKT_RX_BURST_NUM}, >> + {CMD_LINE_OPT_PKT_TX_BURST, 1, 0, CMD_LINE_OPT_PKT_TX_BURST_NUM}, >> {CMD_LINE_OPT_MB_CACHE_SIZE, 1, 0, CMD_LINE_OPT_MB_CACHE_SIZE_NUM}, >> {NULL, 0, 0, 0} >> @@ -918,6 +932,10 @@ parse_args(int argc, char **argv) >> break; >> >> - case CMD_LINE_OPT_PKT_BURST_NUM: >> - parse_pkt_burst(optarg); >> + case CMD_LINE_OPT_PKT_RX_BURST_NUM: >> + parse_pkt_burst(optarg, true, &rx_burst_size); >> + break; >> + >> + case CMD_LINE_OPT_PKT_TX_BURST_NUM: >> + parse_pkt_burst(optarg, false, &tx_burst_size); >> break; >> >> @@ -1655,4 +1673,6 @@ main(int argc, char **argv) >> rte_exit(EXIT_FAILURE, "Invalid L3FWD parameters\n"); >> >> + RTE_LOG(INFO, L3FWD, "Using Rx burst %u Tx burst %u\n", >> + rx_burst_size, tx_burst_size); >> + >> /* Setup function pointers for lookup method. */ >> setup_l3fwd_lookup_tables(); >