From 239de05b9d8f405adda31914dbcbd1d78a9f0123 Mon Sep 17 00:00:00 2001 From: Lukas Sismis Date: Tue, 1 Jul 2025 21:43:19 +0200 Subject: [PATCH] dpdk: auto threads assign one too many threads Configuration option `threads: auto` in DPDK's interface node overassigns available threads to the interface. Commit 4dfd44d3 changed the signedness of the remaining threads counter, which caused surpass of the counter initialization. The if-clause is switched to first initialize and then use the counter. Ticket: 7798 --- src/runmode-dpdk.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/runmode-dpdk.c b/src/runmode-dpdk.c index 496d830a28..d0bbab5c07 100644 --- a/src/runmode-dpdk.c +++ b/src/runmode-dpdk.c @@ -447,16 +447,16 @@ static int ConfigSetThreads(DPDKIfaceConfig *iconf, const char *entry_str) SCReturnInt(-ERANGE); } - if (remaining_auto_cpus > 0) { - iconf->threads++; - remaining_auto_cpus--; - } else if (remaining_auto_cpus == UINT16_MAX) { + if (remaining_auto_cpus == UINT16_MAX) { // first time auto-assignment remaining_auto_cpus = sched_cpus % live_dev_count; if (remaining_auto_cpus > 0) { iconf->threads++; remaining_auto_cpus--; } + } else if (remaining_auto_cpus > 0) { + iconf->threads++; + remaining_auto_cpus--; } SCLogConfig("%s: auto-assigned %u threads", iconf->iface, iconf->threads); SCReturnInt(0); -- 2.47.2