From patchwork Thu Sep 21 04:23:47 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 131756 X-Patchwork-Delegate: david.marchand@redhat.com 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 BD4AB425DC; Thu, 21 Sep 2023 06:24:15 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 9019E402E8; Thu, 21 Sep 2023 06:24:06 +0200 (CEST) Received: from mail-pf1-f178.google.com (mail-pf1-f178.google.com [209.85.210.178]) by mails.dpdk.org (Postfix) with ESMTP id 4D3BC402CE for ; Thu, 21 Sep 2023 06:24:03 +0200 (CEST) Received: by mail-pf1-f178.google.com with SMTP id d2e1a72fcca58-6910ea9cddbso259637b3a.0 for ; Wed, 20 Sep 2023 21:24:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20230601.gappssmtp.com; s=20230601; t=1695270242; x=1695875042; darn=dpdk.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=omUtTH7y7VOw30b39TLXxrqp0tKrYGDXycHE1fkYinQ=; b=rJLMBbB1H5LQO+r0wuC8nKj7od6VtOki4ZDXRBA5j10R2PGioalxdr7osn3RAt/i1v 67JyHXmU73qzanpsfY2v1FogbR5ogvEwAF9UCyYIcgy6y+b7Vhjwcn419Xo87gye4FYo ckJlEBEZGkpMR3bjBX1SN6ZvE1F0NeukSuaE0+L8GvD3y6tUmZ2oR+z/rMq9v16ctbo8 uOaFWtonZ0M+DY6hXNsVUcjH0RH/1eJ3cej6th7yU/mxuutko0z6KZiZ/1PG0H/HxZgc giYh5iwwaVD1JlqmJHCu348aFhbtEk9gd4BZj6vjGavLe9KMtP2eWsFQJH6oBGH3rQZ7 qurQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695270242; x=1695875042; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=omUtTH7y7VOw30b39TLXxrqp0tKrYGDXycHE1fkYinQ=; b=InGmFVgzlcMKimQ3eyCNm/JVG/f7n8jkc/ZDapJR+WQ2lgIvOVap6JX1wgfDSEKYRp Q8BJvfyVBsSKyPAxHDr/5vSuUDeLRxjcwO23/0pGOVdI41V3IlYS91TYaxLq9/0AqtVW IdtP/or8ltx6FiUS6nMcTa0IUvCA5bqthCcdQHHxxm1L8fxc+eW3MIbJjg+sl+/Oss5y BUumGXq5j9Y8fGXg/w9sqBegTtegBDYWYZOG8pdSPu/gB2D04fqTYXe9tUmmWbIIOBKv VieBetw4IXV2WxA6RbcgLrYLAm9VNvCNYWwO+Q7MeTLsLPyMdkWWgqVfWFrkI1riw2ND BW5g== X-Gm-Message-State: AOJu0YzW2wGHRRP5jWh67ZJAsJMQFtIq3XGOpwtD6F/2ELgSYbgokKvq 18iZpP2s6KFuW0h6ScSL1eGqqwj9XXF/a6Nle8I= X-Google-Smtp-Source: AGHT+IEKsdjJJqTAIH0JcpiyktUBnbmP1vHf6lv5a+WTawQs3rr69XJUYLUYi8eMRKjz2EteMnZysg== X-Received: by 2002:a05:6a00:3697:b0:691:2d4:23b5 with SMTP id dw23-20020a056a00369700b0069102d423b5mr880811pfb.31.1695270242215; Wed, 20 Sep 2023 21:24:02 -0700 (PDT) Received: from hermes.local (204-195-112-131.wavecable.com. [204.195.112.131]) by smtp.gmail.com with ESMTPSA id u5-20020aa78485000000b00690d1269691sm311946pfn.22.2023.09.20.21.24.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 20 Sep 2023 21:24:01 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger , Isaac Boukris , Reshma Pattan Subject: [PATCH 2/4] dumpcap: allow multiple invocations Date: Wed, 20 Sep 2023 21:23:47 -0700 Message-Id: <20230921042349.104150-3-stephen@networkplumber.org> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230921042349.104150-1-stephen@networkplumber.org> References: <20230921042349.104150-1-stephen@networkplumber.org> MIME-Version: 1.0 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 If dumpcap is run twice with each instance pointing a different interface, it would fail because of overlap in ring a pool names. Fix by putting process id in the name. Fixes: cbb44143be74 ("app/dumpcap: add new packet capture application") Reported-by: Isaac Boukris Signed-off-by: Stephen Hemminger --- app/dumpcap/main.c | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/app/dumpcap/main.c b/app/dumpcap/main.c index 64294bbfb3e6..37754fd06f4f 100644 --- a/app/dumpcap/main.c +++ b/app/dumpcap/main.c @@ -44,7 +44,6 @@ #include #include -#define RING_NAME "capture-ring" #define MONITOR_INTERVAL (500 * 1000) #define MBUF_POOL_CACHE_SIZE 32 #define BURST_SIZE 32 @@ -647,6 +646,7 @@ static void dpdk_init(void) static struct rte_ring *create_ring(void) { struct rte_ring *ring; + char ring_name[RTE_RING_NAMESIZE]; size_t size, log2; /* Find next power of 2 >= size. */ @@ -660,28 +660,28 @@ static struct rte_ring *create_ring(void) ring_size = size; } - ring = rte_ring_lookup(RING_NAME); - if (ring == NULL) { - ring = rte_ring_create(RING_NAME, ring_size, - rte_socket_id(), 0); - if (ring == NULL) - rte_exit(EXIT_FAILURE, "Could not create ring :%s\n", - rte_strerror(rte_errno)); - } + /* Want one ring per invocation of program */ + snprintf(ring_name, sizeof(ring_name), + "dumpcap-%u", getpid()); + + ring = rte_ring_create(ring_name, ring_size, + rte_socket_id(), 0); + if (ring == NULL) + rte_exit(EXIT_FAILURE, "Could not create ring :%s\n", + rte_strerror(rte_errno)); + return ring; } static struct rte_mempool *create_mempool(void) { const struct interface *intf; - static const char pool_name[] = "capture_mbufs"; + char pool_name[RTE_MEMPOOL_NAMESIZE]; size_t num_mbufs = 2 * ring_size; struct rte_mempool *mp; uint32_t data_size = 128; - mp = rte_mempool_lookup(pool_name); - if (mp) - return mp; + snprintf(pool_name, sizeof(pool_name), "capture_%u", getpid()); /* Common pool so size mbuf for biggest snap length */ TAILQ_FOREACH(intf, &interfaces, next) { @@ -826,7 +826,7 @@ static void enable_pdump(struct rte_ring *r, struct rte_mempool *mp) rte_exit(EXIT_FAILURE, "Packet dump enable on %u:%s failed %s\n", intf->port, intf->name, - rte_strerror(-ret)); + rte_strerror(rte_errno)); } if (intf->opts.promisc_mode) {