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 E98A545BCC; Wed, 30 Oct 2024 22:56:49 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 2A7514335B; Wed, 30 Oct 2024 22:56:48 +0100 (CET) Received: from mail-pl1-f178.google.com (mail-pl1-f178.google.com [209.85.214.178]) by mails.dpdk.org (Postfix) with ESMTP id 542F94327C for ; Wed, 30 Oct 2024 22:56:47 +0100 (CET) Received: by mail-pl1-f178.google.com with SMTP id d9443c01a7336-208cf673b8dso3448605ad.3 for ; Wed, 30 Oct 2024 14:56:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20230601.gappssmtp.com; s=20230601; t=1730325406; x=1730930206; darn=dpdk.org; h=content-transfer-encoding:mime-version:message-id:subject:to:from :date:from:to:cc:subject:date:message-id:reply-to; bh=ITZ2UWE/oE+iGjRmdeaUNvdiieU4hplVWKjsUYVIHrM=; b=g6FIc/LxJ313ETN+PqNkQk4nkba4ECMNnzvxKauDNnUdnD2QprmIyv07wpoAxOhhbj UZIug24GM5/HCq95HtTjaXTXhwIXKt6WsF73sJnT4ZYakRNShiJJm2Hmp4Nqdr6bSBtj AF5Liz73mHRoviIbRR595JoJnsIet6oAI+U/sEcbnbmEwKmMJvwv0LgAkyh3ERUqt58m 0+vWBMfRXdJ0L0sPSwm+apzh3ZaVl70IldP+tEvkT/WrhUEJyccUnbiYVTJdovFneA/b IAoZRGjerGxsJkahtS41iXCag49WSx6oa/cWVFOyx1hcDDDRIeMHxOFJV0iSd09QKymP bDUg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1730325406; x=1730930206; h=content-transfer-encoding:mime-version:message-id:subject:to:from :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=ITZ2UWE/oE+iGjRmdeaUNvdiieU4hplVWKjsUYVIHrM=; b=xRCGWqRh13KpUEfsv3dejr1CltwTGpSMZunbiP64WKJoRO2HkDa8/0s2OndP0qWvJm Tqi4fXf7PTvMfMNhIGBxfnZWDguxIRr948ISN6TzyZHTzksVJSRWCE5IU1xhSfEXVK0K Tn44kA6QqcCn4uw1JxaCkOePHs1Y9BXbKPeDtmBp3Ub0t8/OG++ppJtbj7QY9WP0EbBA 1eg/MIteOpfEQlYO9u57A5tV+3QkujQHRYhgusyOl0XskBasO326Z/WQ7IWVIKhAMCIa KIV/J7yeaVx3p9N5uWYN6CRwDWT562fFQuixM9Fyt0EdM/EILZTNVWGxCwiEPYWRRuNp Letw== X-Gm-Message-State: AOJu0YyLNZSb4UqzbdyGDIgUKGE+1gjwLLDSHUQ/z8G6gPOKV4VFJGy8 oFLlkkxR9F8HrE/qKxCTzKZLbSwUL0OVz+5PfEVzDvhBiZrC/4E0oZXNK7nkacd3wUED23Vm2Ph a X-Google-Smtp-Source: AGHT+IF7p75NWlzszTFs5AY3iglvxRcRr3Skd6SmzdwrXUSPlv0HIXgPhtHAYYfKBU0PlSoAwY5D1w== X-Received: by 2002:a17:903:2b03:b0:20c:5e86:9b68 with SMTP id d9443c01a7336-210c68a1a99mr266151275ad.4.1730325406384; Wed, 30 Oct 2024 14:56:46 -0700 (PDT) Received: from hermes.local (204-195-96-226.wavecable.com. [204.195.96.226]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-211057d52fasm540795ad.247.2024.10.30.14.56.46 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 30 Oct 2024 14:56:46 -0700 (PDT) Date: Wed, 30 Oct 2024 14:56:44 -0700 From: Stephen Hemminger To: dev@dpdk.org Subject: RFC - Tap io_uring PMD Message-ID: <20241030145644.0b97f23c@hermes.local> MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit 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 The current tap device is slow both due to architectural choices and the overhead of Linux system calls. I am exploring a how to fix that but some of the choices require some tradeoffs. Which leads to some open questions: 1. DPDK tap also support tunnel (TUN) mode where there is no Ethernet header only L3. Does anyone actually use this? It is different than what every other PMD expects. 2. The fastest way to use kernel TAP device would be to use io_uring. But this was added in 5.1 kernel (2019). Rather than having conditional or dual mode in DPDK tap device, perhaps there should just be a new PMD tap_uring? 3. Current TAP device provides hooks for several rte_flow types by playing games with kernel qdisc. Does anyone really use this? Propose just not doing this in new tap_uring. 4. What other features of TAP device beyond basic send/receive make sense? It looks like new device could support better statistics. 5. What about Rx interrupt support? Probably the hardest part of using io_uring is figuring out how to collect completions. The simplest way would be to handle all completions rx and tx in the rx_burst function.