From nobody Sat Nov 15 03:13:54 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=yandex-team.ru ARC-Seal: i=1; a=rsa-sha256; t=1755965290; cv=none; d=zohomail.com; s=zohoarc; b=K5BaTtbUDvjWrb/pZeqKKdza6Q3qsLR7f4NxZmwg5iwRbgmxCW3JGmCtfDPUeB2kyawPhxsVKss84Z2xDDDm/jqo0cnX9nh38F5s6Ab1O4v87T1O5kLGiNpdwiQJmJE57mvOIVGxoVSNTlOMhNLslhDdM2BZfQ38ts2uEc2uAVU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1755965290; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=q5i+N1SlqWBs6WupKPtmLQX3i9iaALrIqSXj/w8R0Uc=; b=G2d2KabLK1TPyWwEwfGKyYgy3Q71iDPcoj3b4+qHxcVOQrFK9zPWHKRoTHq5uAxkvQ3UTt3WxO3+s/QuG063eJ6UxM+GJej6ncI2nWqILM6v2BUBCEJkDMiKdn/utaMrZU4dhZ6X/kfrio9QXtFgxBjLE9fcI45GhuBNxhXvyyM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1755965290775706.3474791393661; Sat, 23 Aug 2025 09:08:10 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1upqim-0005Qe-JR; Sat, 23 Aug 2025 12:04:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1upqiU-0005LP-5O for qemu-devel@nongnu.org; Sat, 23 Aug 2025 12:03:42 -0400 Received: from forwardcorp1b.mail.yandex.net ([2a02:6b8:c02:900:1:45:d181:df01]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1upqiL-0000Hb-N6 for qemu-devel@nongnu.org; Sat, 23 Aug 2025 12:03:41 -0400 Received: from mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net (mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net [IPv6:2a02:6b8:c23:36c1:0:640:5f85:0]) by forwardcorp1b.mail.yandex.net (Yandex) with ESMTPS id D7E1880627; Sat, 23 Aug 2025 19:03:27 +0300 (MSK) Received: from vsementsov-lin.. (unknown [2a02:6bf:8080:c91::1:b]) by mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net (smtpcorp/Yandex) with ESMTPSA id Q3YUrj0Gl8c0-S66TTie8; Sat, 23 Aug 2025 19:03:27 +0300 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex-team.ru; s=default; t=1755965007; bh=q5i+N1SlqWBs6WupKPtmLQX3i9iaALrIqSXj/w8R0Uc=; h=Message-ID:Date:In-Reply-To:Cc:Subject:References:To:From; b=mPBJwF3aquTiBi8wZDHG1dC0M5WpgpyxK+pU7quEFau1//h0Yc6HisID0icY1glRE 1oAduqvVin2e40UMs/Q9z4lj1vOQZRD94sIXjBYUxBmnnl0Fcg8OyElwCF1PybvEvy fo9ui2unjTg0f9aH9OoDiHNSK5fUDWt+Ef4dLvgo= Authentication-Results: mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net; dkim=pass header.i=@yandex-team.ru From: Vladimir Sementsov-Ogievskiy To: jasowang@redhat.com Cc: qemu-devel@nongnu.org, vsementsov@yandex-team.ru, leiyang@redhat.com, steven.sistare@oracle.com Subject: [PATCH v2 01/20] net/tap: net_init_tap_one(): add return value Date: Sat, 23 Aug 2025 19:03:04 +0300 Message-ID: <20250823160323.20811-2-vsementsov@yandex-team.ru> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250823160323.20811-1-vsementsov@yandex-team.ru> References: <20250823160323.20811-1-vsementsov@yandex-team.ru> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a02:6b8:c02:900:1:45:d181:df01; envelope-from=vsementsov@yandex-team.ru; helo=forwardcorp1b.mail.yandex.net X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @yandex-team.ru) X-ZM-MESSAGEID: 1755965291456116600 Content-Type: text/plain; charset="utf-8" To avoid error propagation, let's follow common recommendation to use return value together with errp. Probably, it would also be good to use bool as a return type (switching to true/false as success/failure instead of 0/-1). But seems almost all functions (including a lot of them with errp argument) have 0/-1 semantics in net/, so making exclusions doesn't seem good. If we want such a switch, we should update the whole net/ directory. Signed-off-by: Vladimir Sementsov-Ogievskiy Tested-by: Lei Yang --- net/tap.c | 55 +++++++++++++++++++++++++------------------------------ 1 file changed, 25 insertions(+), 30 deletions(-) diff --git a/net/tap.c b/net/tap.c index f7df702f97..531ef75e91 100644 --- a/net/tap.c +++ b/net/tap.c @@ -680,11 +680,11 @@ static int net_tap_init(const NetdevTapOptions *tap, = int *vnet_hdr, =20 #define MAX_TAP_QUEUES 1024 =20 -static void net_init_tap_one(const NetdevTapOptions *tap, NetClientState *= peer, - const char *model, const char *name, - const char *ifname, const char *script, - const char *downscript, const char *vhostfdna= me, - int vnet_hdr, int fd, Error **errp) +static int net_init_tap_one(const NetdevTapOptions *tap, NetClientState *p= eer, + const char *model, const char *name, + const char *ifname, const char *script, + const char *downscript, const char *vhostfdnam= e, + int vnet_hdr, int fd, Error **errp) { Error *err =3D NULL; TAPState *s =3D net_tap_fd_init(peer, model, name, fd, vnet_hdr); @@ -765,10 +765,11 @@ static void net_init_tap_one(const NetdevTapOptions *= tap, NetClientState *peer, goto failed; } =20 - return; + return 0; =20 failed: qemu_del_net_client(&s->nc); + return -1; } =20 static int get_fds(char *str, char *fds[], int max) @@ -805,7 +806,6 @@ int net_init_tap(const Netdev *netdev, const char *name, /* for the no-fd, no-helper case */ const char *script; const char *downscript; - Error *err =3D NULL; const char *vhostfdname; char ifname[128]; int ret =3D 0; @@ -852,12 +852,10 @@ int net_init_tap(const Netdev *netdev, const char *na= me, return -1; } =20 - net_init_tap_one(tap, peer, "tap", name, NULL, - script, downscript, - vhostfdname, vnet_hdr, fd, &err); - if (err) { - error_propagate(errp, err); - close(fd); + ret =3D net_init_tap_one(tap, peer, "tap", name, NULL, + script, downscript, + vhostfdname, vnet_hdr, fd, errp); + if (ret < 0) { return -1; } } else if (tap->fds) { @@ -915,12 +913,11 @@ int net_init_tap(const Netdev *netdev, const char *na= me, goto free_fail; } =20 - net_init_tap_one(tap, peer, "tap", name, ifname, - script, downscript, - tap->vhostfds ? vhost_fds[i] : NULL, - vnet_hdr, fd, &err); - if (err) { - error_propagate(errp, err); + ret =3D net_init_tap_one(tap, peer, "tap", name, ifname, + script, downscript, + tap->vhostfds ? vhost_fds[i] : NULL, + vnet_hdr, fd, errp); + if (ret < 0) { ret =3D -1; goto free_fail; } @@ -961,11 +958,10 @@ free_fail: return -1; } =20 - net_init_tap_one(tap, peer, "bridge", name, ifname, - script, downscript, vhostfdname, - vnet_hdr, fd, &err); - if (err) { - error_propagate(errp, err); + ret =3D net_init_tap_one(tap, peer, "bridge", name, ifname, + script, downscript, vhostfdname, + vnet_hdr, fd, errp); + if (ret < 0) { close(fd); return -1; } @@ -1006,12 +1002,11 @@ free_fail: } } =20 - net_init_tap_one(tap, peer, "tap", name, ifname, - i >=3D 1 ? "no" : script, - i >=3D 1 ? "no" : downscript, - vhostfdname, vnet_hdr, fd, &err); - if (err) { - error_propagate(errp, err); + ret =3D net_init_tap_one(tap, peer, "tap", name, ifname, + i >=3D 1 ? "no" : script, + i >=3D 1 ? "no" : downscript, + vhostfdname, vnet_hdr, fd, errp); + if (ret < 0) { close(fd); return -1; } --=20 2.48.1 From nobody Sat Nov 15 03:13:54 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=yandex-team.ru ARC-Seal: i=1; a=rsa-sha256; t=1755965302; cv=none; d=zohomail.com; s=zohoarc; b=e3mxnIREDaDbXY3DTtRrRfO3y4YIDKDBvJ7333MSqpKdkXujONi93m6kSbqOb9sgqZAN+c9VwjICc6Zg/v4d2WRRPAasmxVc4tHB8GOfWzhnmvrlNYnqVNnsxu5MjpXdbjZzwGzaLR5UhNVjErdCWl9yS+ZuWfQkgKHHlGELUHk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1755965302; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=XZ907GoTMSukCC5aa7hwWOOYOieaiLj2RzPVyep6PXA=; b=EClC7i2R0GAFI+3c5OdvhM1HYwXh/BggyzsGa7hHuj3e7rDxdEvAAoK5s6YWIW4eDE730x+kef+fLZuvrM3sy30c6MT8yVs7B9TG5nc4zngl4+3Vpa1VYBBgMgMPqDc8n/yQGeNN3AZ/8GCjdKDmUM+2gucGvWLHP2J8II/CnbQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1755965302454564.5743595586581; Sat, 23 Aug 2025 09:08:22 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1upqil-0005QK-CF; Sat, 23 Aug 2025 12:03:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1upqiP-0005Kz-PC for qemu-devel@nongnu.org; Sat, 23 Aug 2025 12:03:42 -0400 Received: from forwardcorp1b.mail.yandex.net ([2a02:6b8:c02:900:1:45:d181:df01]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1upqiL-0000Hn-NS for qemu-devel@nongnu.org; Sat, 23 Aug 2025 12:03:37 -0400 Received: from mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net (mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net [IPv6:2a02:6b8:c23:36c1:0:640:5f85:0]) by forwardcorp1b.mail.yandex.net (Yandex) with ESMTPS id 60D1580629; Sat, 23 Aug 2025 19:03:28 +0300 (MSK) Received: from vsementsov-lin.. (unknown [2a02:6bf:8080:c91::1:b]) by mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net (smtpcorp/Yandex) with ESMTPSA id Q3YUrj0Gl8c0-dUguLtR1; Sat, 23 Aug 2025 19:03:27 +0300 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex-team.ru; s=default; t=1755965008; bh=XZ907GoTMSukCC5aa7hwWOOYOieaiLj2RzPVyep6PXA=; h=Message-ID:Date:In-Reply-To:Cc:Subject:References:To:From; b=0t6W0nQnMN9WznUVosvyiRGX3IQdE8Pj+wUFqeDWkI1/MCB71YTh6HnHDXy8BWT3Y 7HW5KNApu4YR41atLlQr3zrtOirspQb37MNN+t776FGq+zg3i37+Ijq16H9JvVcO1m zSULVdPo8MWtn6KHlqedUVcAYoaJXe1TkGS8pvDI= Authentication-Results: mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net; dkim=pass header.i=@yandex-team.ru From: Vladimir Sementsov-Ogievskiy To: jasowang@redhat.com Cc: qemu-devel@nongnu.org, vsementsov@yandex-team.ru, leiyang@redhat.com, steven.sistare@oracle.com Subject: [PATCH v2 02/20] net/tap: add set_fd_nonblocking() helper Date: Sat, 23 Aug 2025 19:03:05 +0300 Message-ID: <20250823160323.20811-3-vsementsov@yandex-team.ru> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250823160323.20811-1-vsementsov@yandex-team.ru> References: <20250823160323.20811-1-vsementsov@yandex-team.ru> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a02:6b8:c02:900:1:45:d181:df01; envelope-from=vsementsov@yandex-team.ru; helo=forwardcorp1b.mail.yandex.net X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @yandex-team.ru) X-ZM-MESSAGEID: 1755965304953124100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Vladimir Sementsov-Ogievskiy Tested-by: Lei Yang --- net/tap.c | 34 +++++++++++++++++++--------------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/net/tap.c b/net/tap.c index 531ef75e91..ba2731ee8a 100644 --- a/net/tap.c +++ b/net/tap.c @@ -609,6 +609,18 @@ static int net_bridge_run_helper(const char *helper, c= onst char *bridge, } } =20 +static bool set_fd_nonblocking(int fd, const char *note, Error **errp) +{ + bool ok =3D g_unix_set_fd_nonblocking(fd, true, NULL); + + if (!ok) { + error_setg_errno(errp, errno, "Failed to set fd %d (%s) nonblockin= g", + fd, note); + } + + return ok; +} + int net_init_bridge(const Netdev *netdev, const char *name, NetClientState *peer, Error **errp) { @@ -627,10 +639,10 @@ int net_init_bridge(const Netdev *netdev, const char = *name, return -1; } =20 - if (!g_unix_set_fd_nonblocking(fd, true, NULL)) { - error_setg_errno(errp, errno, "Failed to set FD nonblocking"); + if (!set_fd_nonblocking(fd, name, errp)) { return -1; } + vnet_hdr =3D tap_probe_vnet_hdr(fd, errp); if (vnet_hdr < 0) { close(fd); @@ -729,9 +741,7 @@ static int net_init_tap_one(const NetdevTapOptions *tap= , NetClientState *peer, error_propagate(errp, err); goto failed; } - if (!g_unix_set_fd_nonblocking(vhostfd, true, NULL)) { - error_setg_errno(errp, errno, "%s: Can't use file descript= or %d", - name, fd); + if (!set_fd_nonblocking(vhostfd, vhostfdname, errp)) { goto failed; } } else { @@ -741,8 +751,7 @@ static int net_init_tap_one(const NetdevTapOptions *tap= , NetClientState *peer, "tap: open vhost char device failed"); goto failed; } - if (!g_unix_set_fd_nonblocking(vhostfd, true, NULL)) { - error_setg_errno(errp, errno, "Failed to set FD nonblockin= g"); + if (!set_fd_nonblocking(vhostfd, "opened /dev/vhost-net", errp= )) { goto failed; } } @@ -839,9 +848,7 @@ int net_init_tap(const Netdev *netdev, const char *name, return -1; } =20 - if (!g_unix_set_fd_nonblocking(fd, true, NULL)) { - error_setg_errno(errp, errno, "%s: Can't use file descriptor %= d", - name, fd); + if (!set_fd_nonblocking(fd, tap->fd, errp)) { close(fd); return -1; } @@ -893,10 +900,8 @@ int net_init_tap(const Netdev *netdev, const char *nam= e, goto free_fail; } =20 - if (!g_unix_set_fd_nonblocking(fd, true, NULL)) { + if (!set_fd_nonblocking(fd, fds[i], errp)) { ret =3D -1; - error_setg_errno(errp, errno, "%s: Can't use file descript= or %d", - name, fd); goto free_fail; } =20 @@ -948,8 +953,7 @@ free_fail: return -1; } =20 - if (!g_unix_set_fd_nonblocking(fd, true, NULL)) { - error_setg_errno(errp, errno, "Failed to set FD nonblocking"); + if (!set_fd_nonblocking(fd, name, errp)) { return -1; } vnet_hdr =3D tap_probe_vnet_hdr(fd, errp); --=20 2.48.1 From nobody Sat Nov 15 03:13:54 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=yandex-team.ru ARC-Seal: i=1; a=rsa-sha256; t=1755965191; cv=none; d=zohomail.com; s=zohoarc; b=K6WHk2AwnJMnsxXPEmDe9AWbWswdToW54cm05cQtHaa0PqqpV3HYZAsxzNrfK8IAaxC+5Vr35g6PFnrEynFgduj1b+vFSa2k7e20ByIihONPvZbN4NebpF9UhtjHpg2fTMioSobxYYYVHVRTNTxCKM401eSCucO5yle708LriMU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1755965191; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=kmfQHM8TLUvJTk/2iH8NlzJJp/mIQx68htlSJAODbrY=; b=aoPGUgNL3sJwThhkv1E7hXkBSnFPfzcLo0j8vWkBbNR/nBSvN2nb/XN2JKO8VO3+OxlSEeq95Uxi5X2BxjxbHNRdQKZb4YCH+sKpNhPgBXrGwRUvE64ghp+L4IXDjt/MR+eZRM+5OKfjl4FcbIFTRP8nrT1MaVljk4KBqZGIqvE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1755965191252577.2319415493076; Sat, 23 Aug 2025 09:06:31 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1upqio-0005Rk-4O; Sat, 23 Aug 2025 12:04:02 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1upqiP-0005Ky-MN for qemu-devel@nongnu.org; Sat, 23 Aug 2025 12:03:42 -0400 Received: from forwardcorp1b.mail.yandex.net ([178.154.239.136]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1upqiL-0000Hj-0c for qemu-devel@nongnu.org; Sat, 23 Aug 2025 12:03:37 -0400 Received: from mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net (mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net [IPv6:2a02:6b8:c23:36c1:0:640:5f85:0]) by forwardcorp1b.mail.yandex.net (Yandex) with ESMTPS id DEA6B80636; Sat, 23 Aug 2025 19:03:28 +0300 (MSK) Received: from vsementsov-lin.. (unknown [2a02:6bf:8080:c91::1:b]) by mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net (smtpcorp/Yandex) with ESMTPSA id Q3YUrj0Gl8c0-FG1CDEro; Sat, 23 Aug 2025 19:03:28 +0300 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex-team.ru; s=default; t=1755965008; bh=kmfQHM8TLUvJTk/2iH8NlzJJp/mIQx68htlSJAODbrY=; h=Message-ID:Date:In-Reply-To:Cc:Subject:References:To:From; b=IVX30jzSnOOZ1wg0Z6fwK+O8gcFWe8O5bN7iiDgX9rYtSXcXyWHrb+pPlmMvnDZJ5 3ZHK2gqYfFvsOE+Stc+XbRvH50eveV8Bbb7CzuoYPExVV3eFyjsXTRHPu3iWA54tJ9 hK7AC0oa4jMWjffWinEtddhLqoKhz3vyq9ZTZkfc= Authentication-Results: mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net; dkim=pass header.i=@yandex-team.ru From: Vladimir Sementsov-Ogievskiy To: jasowang@redhat.com Cc: qemu-devel@nongnu.org, vsementsov@yandex-team.ru, leiyang@redhat.com, steven.sistare@oracle.com Subject: [PATCH v2 03/20] net/tap: tap_set_sndbuf(): add return value Date: Sat, 23 Aug 2025 19:03:06 +0300 Message-ID: <20250823160323.20811-4-vsementsov@yandex-team.ru> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250823160323.20811-1-vsementsov@yandex-team.ru> References: <20250823160323.20811-1-vsementsov@yandex-team.ru> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=178.154.239.136; envelope-from=vsementsov@yandex-team.ru; helo=forwardcorp1b.mail.yandex.net X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @yandex-team.ru) X-ZM-MESSAGEID: 1755965193615124100 Content-Type: text/plain; charset="utf-8" Follow common recommendations to avoid error propagation. Probably, it would also be good to use bool as a return type (switching to true/false as success/failure instead of 0/-1). But seems almost all functions (including a lot of them with errp argument) have 0/-1 semantics in net/, so making exclusions doesn't seem good. If we want such a switch, we should update the whole net/ directory. Signed-off-by: Vladimir Sementsov-Ogievskiy Tested-by: Lei Yang --- net/tap-linux.c | 5 ++++- net/tap.c | 4 +--- net/tap_int.h | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/net/tap-linux.c b/net/tap-linux.c index 22ec2f45d2..3625379c58 100644 --- a/net/tap-linux.c +++ b/net/tap-linux.c @@ -140,7 +140,7 @@ int tap_open(char *ifname, int ifname_size, int *vnet_h= dr, */ #define TAP_DEFAULT_SNDBUF 0 =20 -void tap_set_sndbuf(int fd, const NetdevTapOptions *tap, Error **errp) +int tap_set_sndbuf(int fd, const NetdevTapOptions *tap, Error **errp) { int sndbuf; =20 @@ -154,7 +154,10 @@ void tap_set_sndbuf(int fd, const NetdevTapOptions *ta= p, Error **errp) =20 if (ioctl(fd, TUNSETSNDBUF, &sndbuf) =3D=3D -1 && tap->has_sndbuf) { error_setg_errno(errp, errno, "TUNSETSNDBUF ioctl failed"); + return -1; } + + return 0; } =20 int tap_probe_vnet_hdr(int fd, Error **errp) diff --git a/net/tap.c b/net/tap.c index ba2731ee8a..0258ac8574 100644 --- a/net/tap.c +++ b/net/tap.c @@ -702,9 +702,7 @@ static int net_init_tap_one(const NetdevTapOptions *tap= , NetClientState *peer, TAPState *s =3D net_tap_fd_init(peer, model, name, fd, vnet_hdr); int vhostfd; =20 - tap_set_sndbuf(s->fd, tap, &err); - if (err) { - error_propagate(errp, err); + if (tap_set_sndbuf(s->fd, tap, errp) < 0) { goto failed; } =20 diff --git a/net/tap_int.h b/net/tap_int.h index 8857ff299d..d21acf8486 100644 --- a/net/tap_int.h +++ b/net/tap_int.h @@ -33,7 +33,7 @@ int tap_open(char *ifname, int ifname_size, int *vnet_hdr, =20 ssize_t tap_read_packet(int tapfd, uint8_t *buf, int maxlen); =20 -void tap_set_sndbuf(int fd, const NetdevTapOptions *tap, Error **errp); +int tap_set_sndbuf(int fd, const NetdevTapOptions *tap, Error **errp); int tap_probe_vnet_hdr(int fd, Error **errp); int tap_probe_has_ufo(int fd); int tap_probe_has_uso(int fd); --=20 2.48.1 From nobody Sat Nov 15 03:13:54 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=yandex-team.ru ARC-Seal: i=1; a=rsa-sha256; t=1755965223; cv=none; d=zohomail.com; s=zohoarc; b=RR4anN56aWsswvzAVOPukUxzgplrIHhaYoJOlltcc3OHqR3akGQyYNvaXz9NMPgiEVTJYKm7xyk7QfAeKnCFuj645hERxOCAB4CCrLILzfQQyEJJvJVobKsOQEgn6otFTLvIl7T66pGqimPjnzjq45bQM8AxGOFXiE1om8jWwDg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1755965223; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=mGSpVxvJRA2C4GRlukYvMe4WDcL+rqbKh6znjwet/FA=; b=f049fIEDR4gETEU6qT+Bttk97tRU/0HVWCkObmxQ85z4x8iI7C64YaXv8ogjnFrqbFw1IwT7K+x72IqJFGTbgZj8S61EwT06++fW1QfmN4EuFdt4nWdOYOXzWsABLVc2LtEGupVFMosfgGI0C47PrgHY0L3jjEdksIhoT060O6Q= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1755965223492198.9178679846998; Sat, 23 Aug 2025 09:07:03 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1upqis-0005UF-3b; Sat, 23 Aug 2025 12:04:06 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1upqiO-0005Kp-6A for qemu-devel@nongnu.org; Sat, 23 Aug 2025 12:03:42 -0400 Received: from forwardcorp1b.mail.yandex.net ([2a02:6b8:c02:900:1:45:d181:df01]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1upqiK-0000Hl-UO for qemu-devel@nongnu.org; Sat, 23 Aug 2025 12:03:35 -0400 Received: from mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net (mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net [IPv6:2a02:6b8:c23:36c1:0:640:5f85:0]) by forwardcorp1b.mail.yandex.net (Yandex) with ESMTPS id 602398067A; Sat, 23 Aug 2025 19:03:29 +0300 (MSK) Received: from vsementsov-lin.. (unknown [2a02:6bf:8080:c91::1:b]) by mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net (smtpcorp/Yandex) with ESMTPSA id Q3YUrj0Gl8c0-1s8nwzHb; Sat, 23 Aug 2025 19:03:29 +0300 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex-team.ru; s=default; t=1755965009; bh=mGSpVxvJRA2C4GRlukYvMe4WDcL+rqbKh6znjwet/FA=; h=Message-ID:Date:In-Reply-To:Cc:Subject:References:To:From; b=CgXWqpejNwVsQHn8dGAAbdHk5HJZyIzq1U/wvzuaYFRR4x9k8jaDL/WXjs/CI405I wVgMlaiZSeFG1YqZaDFsXV+Kv07zCPFkt7kvk4g9nMbJalaR+iTJpq9uBQwGl4NtCz OEe8z6GXoYDytcSeIBiqwpePOQL/S80FxJmdwpaU= Authentication-Results: mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net; dkim=pass header.i=@yandex-team.ru From: Vladimir Sementsov-Ogievskiy To: jasowang@redhat.com Cc: qemu-devel@nongnu.org, vsementsov@yandex-team.ru, leiyang@redhat.com, steven.sistare@oracle.com Subject: [PATCH v2 04/20] net/tap: net_init_tap_one(): drop extra error propagation Date: Sat, 23 Aug 2025 19:03:07 +0300 Message-ID: <20250823160323.20811-5-vsementsov@yandex-team.ru> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250823160323.20811-1-vsementsov@yandex-team.ru> References: <20250823160323.20811-1-vsementsov@yandex-team.ru> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a02:6b8:c02:900:1:45:d181:df01; envelope-from=vsementsov@yandex-team.ru; helo=forwardcorp1b.mail.yandex.net X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @yandex-team.ru) X-ZM-MESSAGEID: 1755965224515116600 Content-Type: text/plain; charset="utf-8" Signed-off-by: Vladimir Sementsov-Ogievskiy Tested-by: Lei Yang --- net/tap.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/net/tap.c b/net/tap.c index 0258ac8574..58c3318b1c 100644 --- a/net/tap.c +++ b/net/tap.c @@ -698,7 +698,6 @@ static int net_init_tap_one(const NetdevTapOptions *tap= , NetClientState *peer, const char *downscript, const char *vhostfdnam= e, int vnet_hdr, int fd, Error **errp) { - Error *err =3D NULL; TAPState *s =3D net_tap_fd_init(peer, model, name, fd, vnet_hdr); int vhostfd; =20 @@ -734,9 +733,8 @@ static int net_init_tap_one(const NetdevTapOptions *tap= , NetClientState *peer, } =20 if (vhostfdname) { - vhostfd =3D monitor_fd_param(monitor_cur(), vhostfdname, &err); + vhostfd =3D monitor_fd_param(monitor_cur(), vhostfdname, errp); if (vhostfd =3D=3D -1) { - error_propagate(errp, err); goto failed; } if (!set_fd_nonblocking(vhostfd, vhostfdname, errp)) { --=20 2.48.1 From nobody Sat Nov 15 03:13:54 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=yandex-team.ru ARC-Seal: i=1; a=rsa-sha256; t=1755965222; cv=none; d=zohomail.com; s=zohoarc; b=X/eH5KN6y8t6VC0o89oG17Nt0io0P457Hr9qb/iNiUSfyAxozvtpKHopYbBFPxl3JlVIZvsKhk8xpc81MtIWYEIsSBZk8ptmvV2ffdHGKrw/spxlS63ODje6HC5ui94rm4bl/AS8vRUmSiEWnBlEQVBm0UC4vQtieMaVWkB5PxI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1755965222; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=cRcMgIZiYjlHYEaFWbqF61HRn8FG2JLDckGn87d2yNY=; b=ClKge57QdW9QjOTixdFe5gaA0qV0zyqwXxPxfJa+1y4Wst5cR1pioWbdixPnn5qf1xsn4GuStk9ozSSBJYMVYE/5ZbQjmqHWnfWyEx5dyb0y2uFXJiSVuNaK3VgR8VZdBf7P8oSjupuK5cHRyMYcH+J59RXK3TjdsCrTItx3Weg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17559652226744.419045653674857; Sat, 23 Aug 2025 09:07:02 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1upqig-0005P5-0F; Sat, 23 Aug 2025 12:03:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1upqiP-0005Kx-AX for qemu-devel@nongnu.org; Sat, 23 Aug 2025 12:03:42 -0400 Received: from forwardcorp1b.mail.yandex.net ([2a02:6b8:c02:900:1:45:d181:df01]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1upqiK-0000Hu-Vu for qemu-devel@nongnu.org; Sat, 23 Aug 2025 12:03:37 -0400 Received: from mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net (mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net [IPv6:2a02:6b8:c23:36c1:0:640:5f85:0]) by forwardcorp1b.mail.yandex.net (Yandex) with ESMTPS id D7A74806D1; Sat, 23 Aug 2025 19:03:29 +0300 (MSK) Received: from vsementsov-lin.. (unknown [2a02:6bf:8080:c91::1:b]) by mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net (smtpcorp/Yandex) with ESMTPSA id Q3YUrj0Gl8c0-LbveTovP; Sat, 23 Aug 2025 19:03:29 +0300 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex-team.ru; s=default; t=1755965009; bh=cRcMgIZiYjlHYEaFWbqF61HRn8FG2JLDckGn87d2yNY=; h=Message-ID:Date:In-Reply-To:Cc:Subject:References:To:From; b=aCmD78SzmZL5+cR3V8EG10CrXoHM5HEgNx63Or7PD3b7drwfzMeyvnb3/c38RTae8 zdeadl3Wm75TGvKUolniGFYeW+LLBj4PGqYAHy/VoOcWejojSTWhUJuYlsH0/4TBH9 2JVtCBIPy1ZXO95hkvYzpDSP9177MlFh5I0APG8c= Authentication-Results: mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net; dkim=pass header.i=@yandex-team.ru From: Vladimir Sementsov-Ogievskiy To: jasowang@redhat.com Cc: qemu-devel@nongnu.org, vsementsov@yandex-team.ru, leiyang@redhat.com, steven.sistare@oracle.com Subject: [PATCH v2 05/20] net/tap: net_init_tap_one(): move parameter checking earlier Date: Sat, 23 Aug 2025 19:03:08 +0300 Message-ID: <20250823160323.20811-6-vsementsov@yandex-team.ru> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250823160323.20811-1-vsementsov@yandex-team.ru> References: <20250823160323.20811-1-vsementsov@yandex-team.ru> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a02:6b8:c02:900:1:45:d181:df01; envelope-from=vsementsov@yandex-team.ru; helo=forwardcorp1b.mail.yandex.net X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @yandex-team.ru) X-ZM-MESSAGEID: 1755965224480116600 Content-Type: text/plain; charset="utf-8" Let's keep all similar argument checking in net_init_tap() function. Signed-off-by: Vladimir Sementsov-Ogievskiy Tested-by: Lei Yang --- net/tap.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/net/tap.c b/net/tap.c index 58c3318b1c..3fe99ef63f 100644 --- a/net/tap.c +++ b/net/tap.c @@ -765,9 +765,6 @@ static int net_init_tap_one(const NetdevTapOptions *tap= , NetClientState *peer, "vhost-net requested but could not be initialized"); goto failed; } - } else if (vhostfdname) { - error_setg(errp, "vhostfd(s)=3D is not valid without vhost"); - goto failed; } =20 return 0; @@ -829,6 +826,11 @@ int net_init_tap(const Netdev *netdev, const char *nam= e, return -1; } =20 + if (tap->has_vhost && !tap->vhost && (tap->vhostfds || tap->vhostfd)) { + error_setg(errp, "vhostfd(s)=3D is not valid without vhost"); + return -1; + } + if (tap->fd) { if (tap->ifname || tap->script || tap->downscript || tap->has_vnet_hdr || tap->helper || tap->has_queues || --=20 2.48.1 From nobody Sat Nov 15 03:13:54 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=yandex-team.ru ARC-Seal: i=1; a=rsa-sha256; t=1755965223; cv=none; d=zohomail.com; s=zohoarc; b=RdOcsrpjlzQNWhFvwDEX4DFdT4djqGR+WitSIzzU306zWX12UeeI7AHBBmwCOgtk676IPr/VCSz+N+zUSskdz4GATde/BjxNIQu/iDiDuuTuPKkZt7o/xwi4E1V2Yhrx/oRszyjn9IutIfkG7N0KkfcD7d1SpV0sYKopOpAjmXA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1755965223; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=1Swq7dYJJnBLISq3vORSp+LW7aF5QGfIP3wBCjdR6cY=; b=Jct/3Z8I1vV1V5b3A3Lu3RcshnYtJ87vPtN3xMBQWNzNPKjCtOogqugndRWX9Q9CoMYq2l6ue7g62C+YWf+Tendfc0LITf8zCrhucettlAtmaL65AZpKYjPJUypqvMeZ2fhbd+qDcZh16qojt3wL5eWQobDPveRkRXRmTiPoEoM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1755965223631337.326193508133; Sat, 23 Aug 2025 09:07:03 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1upqir-0005UA-Ve; Sat, 23 Aug 2025 12:04:06 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1upqiR-0005L4-20 for qemu-devel@nongnu.org; Sat, 23 Aug 2025 12:03:42 -0400 Received: from forwardcorp1b.mail.yandex.net ([2a02:6b8:c02:900:1:45:d181:df01]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1upqiL-0000Hw-NT for qemu-devel@nongnu.org; Sat, 23 Aug 2025 12:03:38 -0400 Received: from mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net (mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net [IPv6:2a02:6b8:c23:36c1:0:640:5f85:0]) by forwardcorp1b.mail.yandex.net (Yandex) with ESMTPS id 5F90D8071A; Sat, 23 Aug 2025 19:03:30 +0300 (MSK) Received: from vsementsov-lin.. (unknown [2a02:6bf:8080:c91::1:b]) by mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net (smtpcorp/Yandex) with ESMTPSA id Q3YUrj0Gl8c0-f4VOSwhY; Sat, 23 Aug 2025 19:03:29 +0300 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex-team.ru; s=default; t=1755965010; bh=1Swq7dYJJnBLISq3vORSp+LW7aF5QGfIP3wBCjdR6cY=; h=Message-ID:Date:In-Reply-To:Cc:Subject:References:To:From; b=gvn6KARD6kbgakqiFdCMGgmFYmgSdLmAOfaYllvUOjCBqtp7k4YafGs4x4dOTxKlY eRyxxQ4eMQJpMUqm6gRGpDjTCIGx+RX0ovArMhERycxQXJCYspC4DcAYeCJILrgrlt nP191hLSdKC9IXw6XlCFfXEphh33bf32azgkqwJU= Authentication-Results: mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net; dkim=pass header.i=@yandex-team.ru From: Vladimir Sementsov-Ogievskiy To: jasowang@redhat.com Cc: qemu-devel@nongnu.org, vsementsov@yandex-team.ru, leiyang@redhat.com, steven.sistare@oracle.com Subject: [PATCH v2 06/20] net/tap: net_init_tap(): refactor parameter checking Date: Sat, 23 Aug 2025 19:03:09 +0300 Message-ID: <20250823160323.20811-7-vsementsov@yandex-team.ru> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250823160323.20811-1-vsementsov@yandex-team.ru> References: <20250823160323.20811-1-vsementsov@yandex-team.ru> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a02:6b8:c02:900:1:45:d181:df01; envelope-from=vsementsov@yandex-team.ru; helo=forwardcorp1b.mail.yandex.net X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @yandex-team.ru) X-ZM-MESSAGEID: 1755965226138124100 Content-Type: text/plain; charset="utf-8" Unite duplicated checks of different code paths. Signed-off-by: Vladimir Sementsov-Ogievskiy Tested-by: Lei Yang --- net/tap.c | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/net/tap.c b/net/tap.c index 3fe99ef63f..042f9fd01a 100644 --- a/net/tap.c +++ b/net/tap.c @@ -831,12 +831,17 @@ int net_init_tap(const Netdev *netdev, const char *na= me, return -1; } =20 + if ((tap->fd || tap->fds || tap->helper) && + (tap->ifname || tap->script || tap->downscript || + tap->has_vnet_hdr || tap->has_queues)) { + error_setg(errp, "ifname=3D, script=3D, downscript=3D, vnet_hdr=3D= , " + "queues=3D, are invalid with fd=3D/fds=3D/helper=3D"); + return -1; + } + if (tap->fd) { - if (tap->ifname || tap->script || tap->downscript || - tap->has_vnet_hdr || tap->helper || tap->has_queues || - tap->fds || tap->vhostfds) { - error_setg(errp, "ifname=3D, script=3D, downscript=3D, vnet_hd= r=3D, " - "helper=3D, queues=3D, fds=3D, and vhostfds=3D " + if (tap->helper || tap->fds || tap->vhostfds) { + error_setg(errp, "helper=3D, fds=3D, and vhostfds=3D " "are invalid with fd=3D"); return -1; } @@ -868,12 +873,8 @@ int net_init_tap(const Netdev *netdev, const char *nam= e, char **vhost_fds; int nfds =3D 0, nvhosts =3D 0; =20 - if (tap->ifname || tap->script || tap->downscript || - tap->has_vnet_hdr || tap->helper || tap->has_queues || - tap->vhostfd) { - error_setg(errp, "ifname=3D, script=3D, downscript=3D, vnet_hd= r=3D, " - "helper=3D, queues=3D, and vhostfd=3D " - "are invalid with fds=3D"); + if (tap->helper || tap->vhostfd) { + error_setg(errp, "helper=3D and vhostfd=3D are invalid with fd= s=3D"); return -1; } =20 @@ -937,10 +938,8 @@ free_fail: g_free(vhost_fds); return ret; } else if (tap->helper) { - if (tap->ifname || tap->script || tap->downscript || - tap->has_vnet_hdr || tap->has_queues || tap->vhostfds) { - error_setg(errp, "ifname=3D, script=3D, downscript=3D, vnet_hd= r=3D, " - "queues=3D, and vhostfds=3D are invalid with helper= =3D"); + if (tap->vhostfds) { + error_setg(errp, "vhostfds=3D is invalid with helper=3D"); return -1; } =20 --=20 2.48.1 From nobody Sat Nov 15 03:13:54 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=yandex-team.ru ARC-Seal: i=1; a=rsa-sha256; t=1755965141; cv=none; d=zohomail.com; s=zohoarc; b=cwhGAsN1jYSzmRaKV+Yr4tPUU4dOmkNemkMchmzm67s/e0R29YKNq0i23ND4Kc/k6m3GQmEzlqYpIRarCr4qa79y8hUkiYLtbR3PgP+M9FIGzg06UkFKSDfo3MK339IZIebXp69HDFA8F1eHZUDvii6ZKOWQNRXvZqUWELMzlfM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1755965141; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=dzrHb42O8oLXErFY753Ty76lZhfPJm8FI957hSrKvWE=; b=KpC0Tz7rxicmTURl4L0FC3O+j1pIactR/sDj5YBglo5VO9l0eJiJNdNd01qGLpMAe9uZ3HXdWjdRmOguQZ05Q6AWpwxadB4utxT1zja6llSF41TWB9Ghb0fb8/ls53wi0R5d+WF8cOlJhy3X34MwBLDwOYb5wam3+pDDw1rkt74= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17559651405941001.0042989574821; Sat, 23 Aug 2025 09:05:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1upqii-0005PH-U0; Sat, 23 Aug 2025 12:03:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1upqiQ-0005L1-2Y for qemu-devel@nongnu.org; Sat, 23 Aug 2025 12:03:42 -0400 Received: from forwardcorp1b.mail.yandex.net ([2a02:6b8:c02:900:1:45:d181:df01]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1upqiL-0000I8-NR for qemu-devel@nongnu.org; Sat, 23 Aug 2025 12:03:37 -0400 Received: from mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net (mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net [IPv6:2a02:6b8:c23:36c1:0:640:5f85:0]) by forwardcorp1b.mail.yandex.net (Yandex) with ESMTPS id D5B0580725; Sat, 23 Aug 2025 19:03:30 +0300 (MSK) Received: from vsementsov-lin.. (unknown [2a02:6bf:8080:c91::1:b]) by mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net (smtpcorp/Yandex) with ESMTPSA id Q3YUrj0Gl8c0-BkhDsNpB; Sat, 23 Aug 2025 19:03:30 +0300 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex-team.ru; s=default; t=1755965010; bh=dzrHb42O8oLXErFY753Ty76lZhfPJm8FI957hSrKvWE=; h=Message-ID:Date:In-Reply-To:Cc:Subject:References:To:From; b=fxrZW3wMmoT4eiF15hZtaRmJUtrEXeTmkjExs6TfDP5kIQr6GZtCybLJkPmgbtl1a r8ka5J63YbpqhER8pwism3lKTgDjVNzOHECUMdHxMmKVkqvqkNV0NejXDRioaHhFwl Y7yfmKnI4GMcH/W7XLafWZ1CcoX+QCoq4WPj9n0M= Authentication-Results: mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net; dkim=pass header.i=@yandex-team.ru From: Vladimir Sementsov-Ogievskiy To: jasowang@redhat.com Cc: qemu-devel@nongnu.org, vsementsov@yandex-team.ru, leiyang@redhat.com, steven.sistare@oracle.com Subject: [PATCH v2 07/20] net/tap: net_init_tap(): drop extra variable vhostfdname Date: Sat, 23 Aug 2025 19:03:10 +0300 Message-ID: <20250823160323.20811-8-vsementsov@yandex-team.ru> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250823160323.20811-1-vsementsov@yandex-team.ru> References: <20250823160323.20811-1-vsementsov@yandex-team.ru> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a02:6b8:c02:900:1:45:d181:df01; envelope-from=vsementsov@yandex-team.ru; helo=forwardcorp1b.mail.yandex.net X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @yandex-team.ru) X-ZM-MESSAGEID: 1755965143763116600 Content-Type: text/plain; charset="utf-8" Signed-off-by: Vladimir Sementsov-Ogievskiy Tested-by: Lei Yang --- net/tap.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/net/tap.c b/net/tap.c index 042f9fd01a..ade58826c8 100644 --- a/net/tap.c +++ b/net/tap.c @@ -808,14 +808,12 @@ int net_init_tap(const Netdev *netdev, const char *na= me, /* for the no-fd, no-helper case */ const char *script; const char *downscript; - const char *vhostfdname; char ifname[128]; int ret =3D 0; =20 assert(netdev->type =3D=3D NET_CLIENT_DRIVER_TAP); tap =3D &netdev->u.tap; queues =3D tap->has_queues ? tap->queues : 1; - vhostfdname =3D tap->vhostfd; script =3D tap->script; downscript =3D tap->downscript; =20 @@ -864,7 +862,7 @@ int net_init_tap(const Netdev *netdev, const char *name, =20 ret =3D net_init_tap_one(tap, peer, "tap", name, NULL, script, downscript, - vhostfdname, vnet_hdr, fd, errp); + tap->vhostfd, vnet_hdr, fd, errp); if (ret < 0) { return -1; } @@ -960,7 +958,7 @@ free_fail: } =20 ret =3D net_init_tap_one(tap, peer, "bridge", name, ifname, - script, downscript, vhostfdname, + script, downscript, tap->vhostfd, vnet_hdr, fd, errp); if (ret < 0) { close(fd); @@ -1006,7 +1004,7 @@ free_fail: ret =3D net_init_tap_one(tap, peer, "tap", name, ifname, i >=3D 1 ? "no" : script, i >=3D 1 ? "no" : downscript, - vhostfdname, vnet_hdr, fd, errp); + tap->vhostfd, vnet_hdr, fd, errp); if (ret < 0) { close(fd); return -1; --=20 2.48.1 From nobody Sat Nov 15 03:13:54 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=yandex-team.ru ARC-Seal: i=1; a=rsa-sha256; t=1755965182; cv=none; d=zohomail.com; s=zohoarc; b=d8WckbxtozgX409ZJz5RDIOyhSgvANiTv+jh2B3PSia3kFp8Mjr6mgjih+a7ZMNGBHIywu/x5GrEnkb9bhRz2zgQsll2armN94b1DtArSqPDcTlcmFYuYiBrJRueZB57QtJnJyKVZfaTKiXk/jGg2OA+x6w9xn2+cTFSjD8pqHw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1755965182; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=/jmgRZlvnyx5qMTtkk0yR8vFuAW4SpHDfPYvvSqnSc0=; b=eK0najwETPOCJdb6OixK3/jjm1mzAoyViywhj8JoEf7g2A9xr8jzq+GuA/9NtpV4j/PztIMu5LAMo0k1XqMMGrRMr+3rHStyLTHUWIRHsebU6wR3oIsgdAU4McR58uI6upp5mqOj/21cBEUPGmLaQpJOyFQck5zn26rtMV+90W4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1755965181942911.1234818000464; Sat, 23 Aug 2025 09:06:21 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1upqif-0005P4-VJ; Sat, 23 Aug 2025 12:03:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1upqiR-0005L5-35 for qemu-devel@nongnu.org; Sat, 23 Aug 2025 12:03:42 -0400 Received: from forwardcorp1b.mail.yandex.net ([2a02:6b8:c02:900:1:45:d181:df01]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1upqiM-0000IB-55 for qemu-devel@nongnu.org; Sat, 23 Aug 2025 12:03:38 -0400 Received: from mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net (mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net [IPv6:2a02:6b8:c23:36c1:0:640:5f85:0]) by forwardcorp1b.mail.yandex.net (Yandex) with ESMTPS id 63A17804EC; Sat, 23 Aug 2025 19:03:31 +0300 (MSK) Received: from vsementsov-lin.. (unknown [2a02:6bf:8080:c91::1:b]) by mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net (smtpcorp/Yandex) with ESMTPSA id Q3YUrj0Gl8c0-M9en8nDj; Sat, 23 Aug 2025 19:03:30 +0300 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex-team.ru; s=default; t=1755965011; bh=/jmgRZlvnyx5qMTtkk0yR8vFuAW4SpHDfPYvvSqnSc0=; h=Message-ID:Date:In-Reply-To:Cc:Subject:References:To:From; b=z+WY3dVWLF3nhLZ6isW8oqQ9HYJSNHHv8coNsYzF6m98iFmAWkjx6wybnNTgXzr8w Vu8NNxbst/tjURz0BnbZI+UDYZLWQpXKKTJPVW0jpLjTDyztJGNJliFPUjhryd17k5 POTx4boTlzZ/Jdrvx3xSDrnZyB6Tte0EdUbYfY+c= Authentication-Results: mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net; dkim=pass header.i=@yandex-team.ru From: Vladimir Sementsov-Ogievskiy To: jasowang@redhat.com Cc: qemu-devel@nongnu.org, vsementsov@yandex-team.ru, leiyang@redhat.com, steven.sistare@oracle.com Subject: [PATCH v2 08/20] net/tap: move local variables related to the latter case to else branch Date: Sat, 23 Aug 2025 19:03:11 +0300 Message-ID: <20250823160323.20811-9-vsementsov@yandex-team.ru> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250823160323.20811-1-vsementsov@yandex-team.ru> References: <20250823160323.20811-1-vsementsov@yandex-team.ru> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a02:6b8:c02:900:1:45:d181:df01; envelope-from=vsementsov@yandex-team.ru; helo=forwardcorp1b.mail.yandex.net X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @yandex-team.ru) X-ZM-MESSAGEID: 1755965183991116600 Content-Type: text/plain; charset="utf-8" This makes more obvious, where the variables make sense. Note that ifname, script and downscript variables are not used in net_init_tap_one() for fd/fds/helper cases. Signed-off-by: Vladimir Sementsov-Ogievskiy Tested-by: Lei Yang --- net/tap.c | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/net/tap.c b/net/tap.c index ade58826c8..80ec54f914 100644 --- a/net/tap.c +++ b/net/tap.c @@ -803,19 +803,11 @@ static int get_fds(char *str, char *fds[], int max) int net_init_tap(const Netdev *netdev, const char *name, NetClientState *peer, Error **errp) { - const NetdevTapOptions *tap; - int fd, vnet_hdr =3D 0, i =3D 0, queues; - /* for the no-fd, no-helper case */ - const char *script; - const char *downscript; - char ifname[128]; + const NetdevTapOptions *tap =3D &netdev->u.tap; + int fd, vnet_hdr =3D 0, i =3D 0; int ret =3D 0; =20 assert(netdev->type =3D=3D NET_CLIENT_DRIVER_TAP); - tap =3D &netdev->u.tap; - queues =3D tap->has_queues ? tap->queues : 1; - script =3D tap->script; - downscript =3D tap->downscript; =20 /* QEMU hubs do not support multiqueue tap, in this case peer is set. * For -netdev, peer is always NULL. */ @@ -861,7 +853,7 @@ int net_init_tap(const Netdev *netdev, const char *name, } =20 ret =3D net_init_tap_one(tap, peer, "tap", name, NULL, - script, downscript, + NULL, NULL, tap->vhostfd, vnet_hdr, fd, errp); if (ret < 0) { return -1; @@ -915,8 +907,8 @@ int net_init_tap(const Netdev *netdev, const char *name, goto free_fail; } =20 - ret =3D net_init_tap_one(tap, peer, "tap", name, ifname, - script, downscript, + ret =3D net_init_tap_one(tap, peer, "tap", name, NULL, + NULL, NULL, tap->vhostfds ? vhost_fds[i] : NULL, vnet_hdr, fd, errp); if (ret < 0) { @@ -957,16 +949,21 @@ free_fail: return -1; } =20 - ret =3D net_init_tap_one(tap, peer, "bridge", name, ifname, - script, downscript, tap->vhostfd, + ret =3D net_init_tap_one(tap, peer, "bridge", name, NULL, + NULL, NULL, tap->vhostfd, vnet_hdr, fd, errp); if (ret < 0) { close(fd); return -1; } } else { + const char *script =3D tap->script; + const char *downscript =3D tap->downscript; + int queues =3D tap->has_queues ? tap->queues : 1; g_autofree char *default_script =3D NULL; g_autofree char *default_downscript =3D NULL; + char ifname[128]; + if (tap->vhostfds) { error_setg(errp, "vhostfds=3D is invalid if fds=3D wasn't spec= ified"); return -1; --=20 2.48.1 From nobody Sat Nov 15 03:13:54 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=yandex-team.ru ARC-Seal: i=1; a=rsa-sha256; t=1755965073; cv=none; d=zohomail.com; s=zohoarc; b=Xj8glS15rENIONggIpfpoixalyOZaC3J71l6vSb5z6l42tlBLJEqouk5iTptiUbApXVm+V5jL9MD2K/2ZtX1bVC4S3Lb94S08YreDIWKWMkb+7peDZYNAkcu+/ZjjBeJ6NWPfDeUI2Ux2RJqumQHfvDANzCEEAqBpjOUxnxmjPs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1755965073; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=cVIuFmKaRA15APjAb94zI55tuavk/4RbFP5EQfNMKho=; b=SuHtTeCaTtbt1Ee/IZwJ8xf9mbkus+MIrXqPJJ8fYGm7nSPLsxPO4Ci3ky57IvzQy3GryWoizSMZ/EIXxmvwVss6JNWm3O78Rm+NARZvVOZmpbs/9zv7Xs8teCMmsAmdgbFLo3VL8FcCFPSf7TJaVuJQG1zlfk8BkfL45lRskhM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1755965073054282.1018601321862; Sat, 23 Aug 2025 09:04:33 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1upqih-0005P6-8S; Sat, 23 Aug 2025 12:03:55 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1upqiQ-0005L3-MU for qemu-devel@nongnu.org; Sat, 23 Aug 2025 12:03:42 -0400 Received: from forwardcorp1b.mail.yandex.net ([2a02:6b8:c02:900:1:45:d181:df01]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1upqiL-0000IR-NV for qemu-devel@nongnu.org; Sat, 23 Aug 2025 12:03:38 -0400 Received: from mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net (mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net [IPv6:2a02:6b8:c23:36c1:0:640:5f85:0]) by forwardcorp1b.mail.yandex.net (Yandex) with ESMTPS id F053880514; Sat, 23 Aug 2025 19:03:31 +0300 (MSK) Received: from vsementsov-lin.. (unknown [2a02:6bf:8080:c91::1:b]) by mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net (smtpcorp/Yandex) with ESMTPSA id Q3YUrj0Gl8c0-OOCJLyO0; Sat, 23 Aug 2025 19:03:31 +0300 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex-team.ru; s=default; t=1755965011; bh=cVIuFmKaRA15APjAb94zI55tuavk/4RbFP5EQfNMKho=; h=Message-ID:Date:In-Reply-To:Cc:Subject:References:To:From; b=ft+AUJjld/FChPBXnjFmn2EIi3UClslDBXZe5hDsCCs9A1OioWs42rBVuow305/Hw x6A77Btw584PMu1UyRn1zs4QWoIOYGUIju9m+z0jvWO/vKNW9yZCS++I/wlD58ZjZx +zgcPvG6YSHmxiKJSbRZnrIUGdC84wnp6q4ZPzNw= Authentication-Results: mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net; dkim=pass header.i=@yandex-team.ru From: Vladimir Sementsov-Ogievskiy To: jasowang@redhat.com Cc: qemu-devel@nongnu.org, vsementsov@yandex-team.ru, leiyang@redhat.com, steven.sistare@oracle.com Subject: [PATCH v2 09/20] net/tap: use glib strings vector and g_strsplit for fds case Date: Sat, 23 Aug 2025 19:03:12 +0300 Message-ID: <20250823160323.20811-10-vsementsov@yandex-team.ru> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250823160323.20811-1-vsementsov@yandex-team.ru> References: <20250823160323.20811-1-vsementsov@yandex-team.ru> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a02:6b8:c02:900:1:45:d181:df01; envelope-from=vsementsov@yandex-team.ru; helo=forwardcorp1b.mail.yandex.net X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @yandex-team.ru) X-ZM-MESSAGEID: 1755965078211124100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Vladimir Sementsov-Ogievskiy Tested-by: Lei Yang --- net/tap.c | 72 +++++++++++-------------------------------------------- 1 file changed, 14 insertions(+), 58 deletions(-) diff --git a/net/tap.c b/net/tap.c index 80ec54f914..ac8d955050 100644 --- a/net/tap.c +++ b/net/tap.c @@ -774,32 +774,6 @@ failed: return -1; } =20 -static int get_fds(char *str, char *fds[], int max) -{ - char *ptr =3D str, *this; - size_t len =3D strlen(str); - int i =3D 0; - - while (i < max && ptr < str + len) { - this =3D strchr(ptr, ':'); - - if (this =3D=3D NULL) { - fds[i] =3D g_strdup(ptr); - } else { - fds[i] =3D g_strndup(ptr, this - ptr); - } - - i++; - if (this =3D=3D NULL) { - break; - } else { - ptr =3D this + 1; - } - } - - return i; -} - int net_init_tap(const Netdev *netdev, const char *name, NetClientState *peer, Error **errp) { @@ -859,74 +833,56 @@ int net_init_tap(const Netdev *netdev, const char *na= me, return -1; } } else if (tap->fds) { - char **fds; - char **vhost_fds; - int nfds =3D 0, nvhosts =3D 0; + g_auto(GStrv) fds =3D NULL; + g_auto(GStrv) vhost_fds =3D NULL; + int nfds; =20 if (tap->helper || tap->vhostfd) { error_setg(errp, "helper=3D and vhostfd=3D are invalid with fd= s=3D"); return -1; } =20 - fds =3D g_new0(char *, MAX_TAP_QUEUES); - vhost_fds =3D g_new0(char *, MAX_TAP_QUEUES); + fds =3D g_strsplit(tap->fds, ":", MAX_TAP_QUEUES); + nfds =3D g_strv_length(fds); =20 - nfds =3D get_fds(tap->fds, fds, MAX_TAP_QUEUES); if (tap->vhostfds) { - nvhosts =3D get_fds(tap->vhostfds, vhost_fds, MAX_TAP_QUEUES); - if (nfds !=3D nvhosts) { + vhost_fds =3D g_strsplit(tap->vhostfds, ":", MAX_TAP_QUEUES); + if (nfds !=3D g_strv_length(vhost_fds)) { error_setg(errp, "The number of fds passed does not match " "the number of vhostfds passed"); - ret =3D -1; - goto free_fail; + return -1; } } =20 for (i =3D 0; i < nfds; i++) { fd =3D monitor_fd_param(monitor_cur(), fds[i], errp); if (fd =3D=3D -1) { - ret =3D -1; - goto free_fail; + return -1; } =20 if (!set_fd_nonblocking(fd, fds[i], errp)) { - ret =3D -1; - goto free_fail; + return -1; } =20 if (i =3D=3D 0) { vnet_hdr =3D tap_probe_vnet_hdr(fd, errp); if (vnet_hdr < 0) { - ret =3D -1; - goto free_fail; + return -1; } } else if (vnet_hdr !=3D tap_probe_vnet_hdr(fd, NULL)) { error_setg(errp, "vnet_hdr not consistent across given tap fds"); - ret =3D -1; - goto free_fail; + return -1; } =20 ret =3D net_init_tap_one(tap, peer, "tap", name, NULL, NULL, NULL, - tap->vhostfds ? vhost_fds[i] : NULL, + vhost_fds ? vhost_fds[i] : NULL, vnet_hdr, fd, errp); if (ret < 0) { - ret =3D -1; - goto free_fail; + return -1; } } - -free_fail: - for (i =3D 0; i < nvhosts; i++) { - g_free(vhost_fds[i]); - } - for (i =3D 0; i < nfds; i++) { - g_free(fds[i]); - } - g_free(fds); - g_free(vhost_fds); - return ret; } else if (tap->helper) { if (tap->vhostfds) { error_setg(errp, "vhostfds=3D is invalid with helper=3D"); --=20 2.48.1 From nobody Sat Nov 15 03:13:54 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=yandex-team.ru ARC-Seal: i=1; a=rsa-sha256; t=1755965301; cv=none; d=zohomail.com; s=zohoarc; b=eV4iX4v8ugorUOR2l0BxtWSj/j4/WBwH9jAWHoUOcqfaTiG65SYYA0yZBoWY0WIt3FTtTnKo98kJ/HWK0A2uOvg6hhv8Yr1Z58leitsiUcWetkCTY3cRJQRSwxZVxfGEMmq5wSwEyO7njTNqLdEzDm6aZPCv+9H6/say3ZZjekA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1755965301; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Nvib2fMtqDGabRyCVUGnIIQ+vzpiececeackpu4+gjk=; b=Z7MicQ+oX+GmseJFNC9rL7aTfppFCZDUeRlUijlJ99zKxpW57DquYH9sAlmXbGGYIwQ1NSZq6xMtjDKOl07qH1Kd6l/F/7ydY/XJQUULr4YYOjqBVM+X7N2CqDUGZlrml5ZemDpT3MaLTA2BVJH4/04TYlwOykRP3ByIf+Qr2FQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1755965301700359.86036936796665; Sat, 23 Aug 2025 09:08:21 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1upqil-0005QJ-CL; Sat, 23 Aug 2025 12:03:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1upqiR-0005L6-AQ for qemu-devel@nongnu.org; Sat, 23 Aug 2025 12:03:42 -0400 Received: from forwardcorp1b.mail.yandex.net ([2a02:6b8:c02:900:1:45:d181:df01]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1upqiP-0000Ik-9j for qemu-devel@nongnu.org; Sat, 23 Aug 2025 12:03:39 -0400 Received: from mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net (mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net [IPv6:2a02:6b8:c23:36c1:0:640:5f85:0]) by forwardcorp1b.mail.yandex.net (Yandex) with ESMTPS id 7F50F80776; Sat, 23 Aug 2025 19:03:32 +0300 (MSK) Received: from vsementsov-lin.. (unknown [2a02:6bf:8080:c91::1:b]) by mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net (smtpcorp/Yandex) with ESMTPSA id Q3YUrj0Gl8c0-z0jzwlq3; Sat, 23 Aug 2025 19:03:32 +0300 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex-team.ru; s=default; t=1755965012; bh=Nvib2fMtqDGabRyCVUGnIIQ+vzpiececeackpu4+gjk=; h=Message-ID:Date:In-Reply-To:Cc:Subject:References:To:From; b=dT34IYi27lR+kA5QnTxwAQo792mC39rs2qhsPJR4XmWqCxHLl4MPbhWPhmzDrBuJ+ 0NM7mwmE97oDl6VTNeUBZBVdgmxVz1J+hFXOHIRKYtLUmO+DRYpwOeXwZMLz+k/O1f qvMVWfQ7cTqEVSgMU2pF/JyNz0yNVkAZ40XaOAtw= Authentication-Results: mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net; dkim=pass header.i=@yandex-team.ru From: Vladimir Sementsov-Ogievskiy To: jasowang@redhat.com Cc: qemu-devel@nongnu.org, vsementsov@yandex-team.ru, leiyang@redhat.com, steven.sistare@oracle.com Subject: [PATCH v2 10/20] net/tap: drop extra tap_fd_get_ifname() call Date: Sat, 23 Aug 2025 19:03:13 +0300 Message-ID: <20250823160323.20811-11-vsementsov@yandex-team.ru> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250823160323.20811-1-vsementsov@yandex-team.ru> References: <20250823160323.20811-1-vsementsov@yandex-team.ru> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a02:6b8:c02:900:1:45:d181:df01; envelope-from=vsementsov@yandex-team.ru; helo=forwardcorp1b.mail.yandex.net X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @yandex-team.ru) X-ZM-MESSAGEID: 1755965302926124100 Content-Type: text/plain; charset="utf-8" tap_open() cares to update ifname, no reason to call extra ioctl. Signed-off-by: Vladimir Sementsov-Ogievskiy Tested-by: Lei Yang --- net/tap.c | 8 -------- 1 file changed, 8 deletions(-) diff --git a/net/tap.c b/net/tap.c index ac8d955050..eab0a86173 100644 --- a/net/tap.c +++ b/net/tap.c @@ -946,14 +946,6 @@ int net_init_tap(const Netdev *netdev, const char *nam= e, return -1; } =20 - if (queues > 1 && i =3D=3D 0 && !tap->ifname) { - if (tap_fd_get_ifname(fd, ifname)) { - error_setg(errp, "Fail to get ifname"); - close(fd); - return -1; - } - } - ret =3D net_init_tap_one(tap, peer, "tap", name, ifname, i >=3D 1 ? "no" : script, i >=3D 1 ? "no" : downscript, --=20 2.48.1 From nobody Sat Nov 15 03:13:55 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=yandex-team.ru ARC-Seal: i=1; a=rsa-sha256; t=1755965085; cv=none; d=zohomail.com; s=zohoarc; b=AZN1K13ETOxYsExaAIa34mOTR6ej54OwLV5UEMuT2sdi7NSlAn0tHjA/09GqIFeDJbUTG4eZbm3Y21dYTPAu68jg2vHPzl7znYkjPQVilpRHwda37biwL7tS9ZhEqAAn14UEJttBuOGqPCSVO7RXTwVEiITKArDRIrnvY+7UQV4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1755965085; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=FV7G9bFav6fly4zXKY/M2EAtJlpqhKHxyw6pyeEvM4o=; b=li/uhPEi961pXSMMxfEUBOclPZn9zfnBzDBZ0M0nnrWXiEYgJK7k96avnyy7XktvNgJfJGsUxT4y+32xaTe3ObWySjvd16GQfpSVjno5koPL2MSodupp0djBeRD5Eci2AVinaGf1yiqaFum67V5vZmtGryFxZjRmjFbqVxXjtDc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1755965084749937.8063300862309; Sat, 23 Aug 2025 09:04:44 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1upqif-0005P0-FH; Sat, 23 Aug 2025 12:03:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1upqiS-0005L7-1J for qemu-devel@nongnu.org; Sat, 23 Aug 2025 12:03:42 -0400 Received: from forwardcorp1b.mail.yandex.net ([178.154.239.136]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1upqiP-0000Im-Dh for qemu-devel@nongnu.org; Sat, 23 Aug 2025 12:03:39 -0400 Received: from mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net (mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net [IPv6:2a02:6b8:c23:36c1:0:640:5f85:0]) by forwardcorp1b.mail.yandex.net (Yandex) with ESMTPS id 0BEA680780; Sat, 23 Aug 2025 19:03:33 +0300 (MSK) Received: from vsementsov-lin.. (unknown [2a02:6bf:8080:c91::1:b]) by mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net (smtpcorp/Yandex) with ESMTPSA id Q3YUrj0Gl8c0-LwUYGfEz; Sat, 23 Aug 2025 19:03:32 +0300 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex-team.ru; s=default; t=1755965012; bh=FV7G9bFav6fly4zXKY/M2EAtJlpqhKHxyw6pyeEvM4o=; h=Message-ID:Date:In-Reply-To:Cc:Subject:References:To:From; b=skgs07ROA6QWivpeEU14GQ6AJUilW5r7GERyur+5WuOJielKgwglpdCVu9V42CG2R 4lSSzcsTMtcbMpyIBHX2uoLf7istHz1xrk6uw6pC36zc0asZUZ4I6paMJwCNXzjgkp 3fJLIRhzgxAdEwc0XS9H+tQ04NnedPJHlMEzyZIY= Authentication-Results: mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net; dkim=pass header.i=@yandex-team.ru From: Vladimir Sementsov-Ogievskiy To: jasowang@redhat.com Cc: qemu-devel@nongnu.org, vsementsov@yandex-team.ru, leiyang@redhat.com, steven.sistare@oracle.com Subject: [PATCH v2 11/20] net/tap: net_init_tap_one(): refactor to use netdev as first arg Date: Sat, 23 Aug 2025 19:03:14 +0300 Message-ID: <20250823160323.20811-12-vsementsov@yandex-team.ru> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250823160323.20811-1-vsementsov@yandex-team.ru> References: <20250823160323.20811-1-vsementsov@yandex-team.ru> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=178.154.239.136; envelope-from=vsementsov@yandex-team.ru; helo=forwardcorp1b.mail.yandex.net X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @yandex-team.ru) X-ZM-MESSAGEID: 1755965087701116600 Content-Type: text/plain; charset="utf-8" This is needed for further unification of bridge initialization in net_init_tap() and net_init_bridge(). Signed-off-by: Vladimir Sementsov-Ogievskiy Tested-by: Lei Yang --- net/tap.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/net/tap.c b/net/tap.c index eab0a86173..468dae7004 100644 --- a/net/tap.c +++ b/net/tap.c @@ -692,15 +692,18 @@ static int net_tap_init(const NetdevTapOptions *tap, = int *vnet_hdr, =20 #define MAX_TAP_QUEUES 1024 =20 -static int net_init_tap_one(const NetdevTapOptions *tap, NetClientState *p= eer, +static int net_init_tap_one(const Netdev *netdev, NetClientState *peer, const char *model, const char *name, const char *ifname, const char *script, const char *downscript, const char *vhostfdnam= e, int vnet_hdr, int fd, Error **errp) { + const NetdevTapOptions *tap =3D &netdev->u.tap; TAPState *s =3D net_tap_fd_init(peer, model, name, fd, vnet_hdr); int vhostfd; =20 + assert(netdev->type =3D=3D NET_CLIENT_DRIVER_TAP); + if (tap_set_sndbuf(s->fd, tap, errp) < 0) { goto failed; } @@ -826,7 +829,7 @@ int net_init_tap(const Netdev *netdev, const char *name, return -1; } =20 - ret =3D net_init_tap_one(tap, peer, "tap", name, NULL, + ret =3D net_init_tap_one(netdev, peer, "tap", name, NULL, NULL, NULL, tap->vhostfd, vnet_hdr, fd, errp); if (ret < 0) { @@ -875,7 +878,7 @@ int net_init_tap(const Netdev *netdev, const char *name, return -1; } =20 - ret =3D net_init_tap_one(tap, peer, "tap", name, NULL, + ret =3D net_init_tap_one(netdev, peer, "tap", name, NULL, NULL, NULL, vhost_fds ? vhost_fds[i] : NULL, vnet_hdr, fd, errp); @@ -905,7 +908,7 @@ int net_init_tap(const Netdev *netdev, const char *name, return -1; } =20 - ret =3D net_init_tap_one(tap, peer, "bridge", name, NULL, + ret =3D net_init_tap_one(netdev, peer, "bridge", name, NULL, NULL, NULL, tap->vhostfd, vnet_hdr, fd, errp); if (ret < 0) { @@ -946,7 +949,7 @@ int net_init_tap(const Netdev *netdev, const char *name, return -1; } =20 - ret =3D net_init_tap_one(tap, peer, "tap", name, ifname, + ret =3D net_init_tap_one(netdev, peer, "tap", name, ifname, i >=3D 1 ? "no" : script, i >=3D 1 ? "no" : downscript, tap->vhostfd, vnet_hdr, fd, errp); --=20 2.48.1 From nobody Sat Nov 15 03:13:55 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=yandex-team.ru ARC-Seal: i=1; a=rsa-sha256; t=1755965282; cv=none; d=zohomail.com; s=zohoarc; b=SKLdE7M3fz6rv6atstAiDZ5YW9yvpOzZ7nK//KY/CHmoAajcYI82nYS6bz7x3OecmylEHwCubHDSFUCLFYRMoRBntD8V7ZNKu5XjIRI88p55JGPKQI6tozuRDqL7wMC+q/bURAPCI60Lnoors8YQH5v09UUz3strpeL6NM8vZts= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1755965282; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=zxe/Qn8qaUIKSb9GVBdarhgmP62+YL/GaisgtgQiiKc=; b=KA/ArwLv8BEDufMvHXPymhXP4XaSJgt2vHto6TX5TjakJ7CMm4y8pCc4xU51lwiSGa6YYwKrzhM1tAtB7Nb9Vm0jZGLWAuAlRjQayqBJB5TJP0q8n9SV8W3Bj0jSUDEC2wyO1lu5/Ok4gM0No0r4GR6bQ1XsJCWObB4kw2m9ohg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1755965282256349.9791497068858; Sat, 23 Aug 2025 09:08:02 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1upqip-0005Sy-Dx; Sat, 23 Aug 2025 12:04:03 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1upqiS-0005LA-Be for qemu-devel@nongnu.org; Sat, 23 Aug 2025 12:03:42 -0400 Received: from forwardcorp1b.mail.yandex.net ([178.154.239.136]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1upqiP-0000Iu-Ta for qemu-devel@nongnu.org; Sat, 23 Aug 2025 12:03:40 -0400 Received: from mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net (mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net [IPv6:2a02:6b8:c23:36c1:0:640:5f85:0]) by forwardcorp1b.mail.yandex.net (Yandex) with ESMTPS id 89FC480781; Sat, 23 Aug 2025 19:03:33 +0300 (MSK) Received: from vsementsov-lin.. (unknown [2a02:6bf:8080:c91::1:b]) by mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net (smtpcorp/Yandex) with ESMTPSA id Q3YUrj0Gl8c0-7Ym0DEOq; Sat, 23 Aug 2025 19:03:33 +0300 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex-team.ru; s=default; t=1755965013; bh=zxe/Qn8qaUIKSb9GVBdarhgmP62+YL/GaisgtgQiiKc=; h=Message-ID:Date:In-Reply-To:Cc:Subject:References:To:From; b=ccKMhgYqkIAnm0fBjWaC978fqQjPQjxDunB0vwwZH2Sfm2PVhSyMkbScTY006vLe0 LS4EZX+dNRKcUqRhdnnXXoURWfieUcavdBVBkuNNjgRrLuChLsYeNxE3Q+saXlQLCE MRMDFGaf/pXPCTHtFfbNbJmnZNFt9lpdIwT8+WQU= Authentication-Results: mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net; dkim=pass header.i=@yandex-team.ru From: Vladimir Sementsov-Ogievskiy To: jasowang@redhat.com Cc: qemu-devel@nongnu.org, vsementsov@yandex-team.ru, leiyang@redhat.com, steven.sistare@oracle.com Subject: [PATCH v2 12/20] net/tap: net_init_tap_one(): support bridge Date: Sat, 23 Aug 2025 19:03:15 +0300 Message-ID: <20250823160323.20811-13-vsementsov@yandex-team.ru> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250823160323.20811-1-vsementsov@yandex-team.ru> References: <20250823160323.20811-1-vsementsov@yandex-team.ru> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=178.154.239.136; envelope-from=vsementsov@yandex-team.ru; helo=forwardcorp1b.mail.yandex.net X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @yandex-team.ru) X-ZM-MESSAGEID: 1755965283169116600 Content-Type: text/plain; charset="utf-8" Use net_init_tap_one() in net_init_bridge(). Signed-off-by: Vladimir Sementsov-Ogievskiy Tested-by: Lei Yang --- net/tap.c | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/net/tap.c b/net/tap.c index 468dae7004..5acfb128a1 100644 --- a/net/tap.c +++ b/net/tap.c @@ -88,6 +88,12 @@ static void launch_script(const char *setup_script, cons= t char *ifname, static void tap_send(void *opaque); static void tap_writable(void *opaque); =20 +static int net_init_tap_one(const Netdev *netdev, NetClientState *peer, + const char *model, const char *name, + const char *ifname, const char *script, + const char *downscript, const char *vhostfdnam= e, + int vnet_hdr, int fd, Error **errp); + static void tap_update_fd_handler(TAPState *s) { qemu_set_fd_handler(s->fd, @@ -626,8 +632,7 @@ int net_init_bridge(const Netdev *netdev, const char *n= ame, { const NetdevBridgeOptions *bridge; const char *helper, *br; - TAPState *s; - int fd, vnet_hdr; + int fd, vnet_hdr, ret; =20 assert(netdev->type =3D=3D NET_CLIENT_DRIVER_BRIDGE); bridge =3D &netdev->u.bridge; @@ -648,9 +653,14 @@ int net_init_bridge(const Netdev *netdev, const char *= name, close(fd); return -1; } - s =3D net_tap_fd_init(peer, "bridge", name, fd, vnet_hdr); =20 - qemu_set_info_str(&s->nc, "helper=3D%s,br=3D%s", helper, br); + ret =3D net_init_tap_one(netdev, peer, "bridge", name, + NULL, NULL, NULL, + NULL, vnet_hdr, fd, errp); + if (ret < 0) { + close(fd); + return -1; + } =20 return 0; } @@ -698,11 +708,19 @@ static int net_init_tap_one(const Netdev *netdev, Net= ClientState *peer, const char *downscript, const char *vhostfdnam= e, int vnet_hdr, int fd, Error **errp) { - const NetdevTapOptions *tap =3D &netdev->u.tap; + const NetdevTapOptions *tap; TAPState *s =3D net_tap_fd_init(peer, model, name, fd, vnet_hdr); int vhostfd; =20 + if (netdev->type =3D=3D NET_CLIENT_DRIVER_BRIDGE) { + const NetdevBridgeOptions *bridge =3D &netdev->u.bridge; + qemu_set_info_str(&s->nc, "helper=3D%s,br=3D%s", + bridge->helper, bridge->br); + return 0; + } + assert(netdev->type =3D=3D NET_CLIENT_DRIVER_TAP); + tap =3D &netdev->u.tap; =20 if (tap_set_sndbuf(s->fd, tap, errp) < 0) { goto failed; --=20 2.48.1 From nobody Sat Nov 15 03:13:55 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=yandex-team.ru ARC-Seal: i=1; a=rsa-sha256; t=1755965154; cv=none; d=zohomail.com; s=zohoarc; b=g3YXSQ77eCVxFV5U1Z6iQda25P1buc1qO5XzYdDbEOR035eeGWarJz85nvt1eBXB9uyjw2Nx4ReOtPMZCAafr20Enxaz2GKSCjt87CH89GVcLxKvbOZAKV31EO4yBVD6ppY3QMj8vFYVjHB9M+1GfmXjOwjWqqX31AUzJEgiLPE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1755965154; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=9w3QClpqsLPtFcNR/rxasMLiSjbct8d5Q3AT/oDKknU=; b=gQ8IrUcThdfTbol+BB2kHcrTuc1v/HQmGD0bMkVKRajR2KRHSPP4Pt7/bt0SvvI8FNM/oh9bsvLgRYtJO3kQgktYYPR05Zc/JiaxB6p31YLjsPt0f3WGtiXtXxl8D//xQRrLfqgpP1WeLltbfn2Gb16B56dUpiIZePpKJEpHvXY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1755965154089379.10567573036656; Sat, 23 Aug 2025 09:05:54 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1upqio-0005Ri-1R; Sat, 23 Aug 2025 12:04:02 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1upqiS-0005L9-5V for qemu-devel@nongnu.org; Sat, 23 Aug 2025 12:03:42 -0400 Received: from forwardcorp1b.mail.yandex.net ([178.154.239.136]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1upqiP-0000It-TQ for qemu-devel@nongnu.org; Sat, 23 Aug 2025 12:03:39 -0400 Received: from mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net (mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net [IPv6:2a02:6b8:c23:36c1:0:640:5f85:0]) by forwardcorp1b.mail.yandex.net (Yandex) with ESMTPS id 0E72780782; Sat, 23 Aug 2025 19:03:34 +0300 (MSK) Received: from vsementsov-lin.. (unknown [2a02:6bf:8080:c91::1:b]) by mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net (smtpcorp/Yandex) with ESMTPSA id Q3YUrj0Gl8c0-lyk6am5m; Sat, 23 Aug 2025 19:03:33 +0300 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex-team.ru; s=default; t=1755965013; bh=9w3QClpqsLPtFcNR/rxasMLiSjbct8d5Q3AT/oDKknU=; h=Message-ID:Date:In-Reply-To:Cc:Subject:References:To:From; b=Ysc3H2Ar4gr8w/BjpRdsbTxt9PF+9mSDTsnrqT5qs+M1ZyP0bkcbziY+nY1ZiI6my Pj4U4s9V6h+NmV+ZlQbeT56oMN2un+NiwrKrvveSPoKiRTC1mDmSDZKNIrapZuYji8 8B8KXY04pagv7U3rsXEMbR/jVsrNSUtVd0KEVPgE= Authentication-Results: mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net; dkim=pass header.i=@yandex-team.ru From: Vladimir Sementsov-Ogievskiy To: jasowang@redhat.com Cc: qemu-devel@nongnu.org, vsementsov@yandex-team.ru, leiyang@redhat.com, steven.sistare@oracle.com Subject: [PATCH v2 13/20] net/tap: net_init_bridge(): support tap Date: Sat, 23 Aug 2025 19:03:16 +0300 Message-ID: <20250823160323.20811-14-vsementsov@yandex-team.ru> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250823160323.20811-1-vsementsov@yandex-team.ru> References: <20250823160323.20811-1-vsementsov@yandex-team.ru> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=178.154.239.136; envelope-from=vsementsov@yandex-team.ru; helo=forwardcorp1b.mail.yandex.net X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @yandex-team.ru) X-ZM-MESSAGEID: 1755965155636116600 Content-Type: text/plain; charset="utf-8" Support tap in net_init_bridge() and reuse it for corresponding case in net_init_tap(). Signed-off-by: Vladimir Sementsov-Ogievskiy Tested-by: Lei Yang --- net/tap.c | 47 +++++++++++++++++------------------------------ 1 file changed, 17 insertions(+), 30 deletions(-) diff --git a/net/tap.c b/net/tap.c index 5acfb128a1..83a1c9250a 100644 --- a/net/tap.c +++ b/net/tap.c @@ -630,16 +630,24 @@ static bool set_fd_nonblocking(int fd, const char *no= te, Error **errp) int net_init_bridge(const Netdev *netdev, const char *name, NetClientState *peer, Error **errp) { - const NetdevBridgeOptions *bridge; + const NetdevTapOptions *tap =3D NULL; + const NetdevBridgeOptions *bridge =3D NULL; const char *helper, *br; int fd, vnet_hdr, ret; =20 - assert(netdev->type =3D=3D NET_CLIENT_DRIVER_BRIDGE); - bridge =3D &netdev->u.bridge; - helper =3D bridge->helper; - br =3D bridge->br ?: DEFAULT_BRIDGE_INTERFACE; + if (netdev->type =3D=3D NET_CLIENT_DRIVER_BRIDGE) { + bridge =3D &netdev->u.bridge; + helper =3D bridge->helper; + br =3D bridge->br; + } else { + assert(netdev->type =3D=3D NET_CLIENT_DRIVER_TAP); =20 - fd =3D net_bridge_run_helper(helper, br, errp); + tap =3D &netdev->u.tap; + helper =3D tap->helper; + br =3D tap->br; + } + + fd =3D net_bridge_run_helper(helper, br ?: DEFAULT_BRIDGE_INTERFACE, e= rrp); if (fd =3D=3D -1) { return -1; } @@ -656,7 +664,8 @@ int net_init_bridge(const Netdev *netdev, const char *n= ame, =20 ret =3D net_init_tap_one(netdev, peer, "bridge", name, NULL, NULL, NULL, - NULL, vnet_hdr, fd, errp); + tap ? tap->vhostfd : NULL, + vnet_hdr, fd, errp); if (ret < 0) { close(fd); return -1; @@ -910,29 +919,7 @@ int net_init_tap(const Netdev *netdev, const char *nam= e, return -1; } =20 - fd =3D net_bridge_run_helper(tap->helper, - tap->br ?: DEFAULT_BRIDGE_INTERFACE, - errp); - if (fd =3D=3D -1) { - return -1; - } - - if (!set_fd_nonblocking(fd, name, errp)) { - return -1; - } - vnet_hdr =3D tap_probe_vnet_hdr(fd, errp); - if (vnet_hdr < 0) { - close(fd); - return -1; - } - - ret =3D net_init_tap_one(netdev, peer, "bridge", name, NULL, - NULL, NULL, tap->vhostfd, - vnet_hdr, fd, errp); - if (ret < 0) { - close(fd); - return -1; - } + return net_init_bridge(netdev, name, peer, errp); } else { const char *script =3D tap->script; const char *downscript =3D tap->downscript; --=20 2.48.1 From nobody Sat Nov 15 03:13:55 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=yandex-team.ru ARC-Seal: i=1; a=rsa-sha256; t=1755965281; cv=none; d=zohomail.com; s=zohoarc; b=K6H85Fu4e4qtBxlXWN3G6S6alx3YU0O02I/cHhiZM+1CjwePzSLQwVenNuXdpfUSUt+RE/cucMMtoEkEyct02lYPFOYEKx+FwHIqIkrmTYALFQVuhlK69Jwi6P3Pw83yU9gSEbeqPakjISDFQv4CaYiAhyGhzohTgFMq59HQYro= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1755965281; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Eq8zW+TtfILkdauE4l8IVPeyRa7dELn4L/MyVWhIrKo=; b=KNkQKls53wEdVMdI4MT+AZpu/CX5gY1UAy3VJKL52xP61dZbR2w8Y6S6rWAjkoHx9k4F3iXscrfjCGNiLiiGeJNqjInb7uQ4o3t8bfWc8aJRpi1cqVzj+SFggVAWuaFQMZag1Ptn/z7pjm8w5xUJj5BDx8jUGXC1GlOj3+ox5uA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1755965281151682.0511873743424; Sat, 23 Aug 2025 09:08:01 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1upqir-0005U9-E8; Sat, 23 Aug 2025 12:04:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1upqid-0005OZ-A5 for qemu-devel@nongnu.org; Sat, 23 Aug 2025 12:03:52 -0400 Received: from forwardcorp1b.mail.yandex.net ([2a02:6b8:c02:900:1:45:d181:df01]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1upqia-0000JA-F6 for qemu-devel@nongnu.org; Sat, 23 Aug 2025 12:03:49 -0400 Received: from mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net (mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net [IPv6:2a02:6b8:c23:36c1:0:640:5f85:0]) by forwardcorp1b.mail.yandex.net (Yandex) with ESMTPS id 88CAE80792; Sat, 23 Aug 2025 19:03:34 +0300 (MSK) Received: from vsementsov-lin.. (unknown [2a02:6bf:8080:c91::1:b]) by mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net (smtpcorp/Yandex) with ESMTPSA id Q3YUrj0Gl8c0-1FeLE9tn; Sat, 23 Aug 2025 19:03:34 +0300 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex-team.ru; s=default; t=1755965014; bh=Eq8zW+TtfILkdauE4l8IVPeyRa7dELn4L/MyVWhIrKo=; h=Message-ID:Date:In-Reply-To:Cc:Subject:References:To:From; b=dUbeVkBIWElxt3ZuZi2sbdoac5uPJoqHBEeQsru/LHBPO71L3r29lxUX6tBqsd6eE DpDRA2rxaD7u2p4Dx79FfJbK+3bD4qVDNuxogea/EqyaWFIkF6LuDe6WO+YDKnM/P8 8DHl1hTxJt10o3UemCKPgmawWFP+HILBAJwuIHT4= Authentication-Results: mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net; dkim=pass header.i=@yandex-team.ru From: Vladimir Sementsov-Ogievskiy To: jasowang@redhat.com Cc: qemu-devel@nongnu.org, vsementsov@yandex-team.ru, leiyang@redhat.com, steven.sistare@oracle.com Subject: [PATCH v2 14/20] net/tap: refactor net_tap_init() into net_tap_open_one() Date: Sat, 23 Aug 2025 19:03:17 +0300 Message-ID: <20250823160323.20811-15-vsementsov@yandex-team.ru> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250823160323.20811-1-vsementsov@yandex-team.ru> References: <20250823160323.20811-1-vsementsov@yandex-team.ru> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a02:6b8:c02:900:1:45:d181:df01; envelope-from=vsementsov@yandex-team.ru; helo=forwardcorp1b.mail.yandex.net X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @yandex-team.ru) X-ZM-MESSAGEID: 1755965284708124102 Content-Type: text/plain; charset="utf-8" net_tap_init() is used in one place. Let's move net_init_tap_one() call to it and simplify outer loop code. Signed-off-by: Vladimir Sementsov-Ogievskiy Tested-by: Lei Yang --- net/tap.c | 54 +++++++++++++++++++++++++++++++----------------------- 1 file changed, 31 insertions(+), 23 deletions(-) diff --git a/net/tap.c b/net/tap.c index 83a1c9250a..57939ed16f 100644 --- a/net/tap.c +++ b/net/tap.c @@ -674,31 +674,37 @@ int net_init_bridge(const Netdev *netdev, const char = *name, return 0; } =20 -static int net_tap_init(const NetdevTapOptions *tap, int *vnet_hdr, - const char *setup_script, char *ifname, - size_t ifname_sz, int mq_required, Error **errp) +static int net_tap_open_one(const Netdev *netdev, + const char *name, NetClientState *peer, + const char *script, const char *downscript, + char *ifname, size_t ifname_sz, + int mq_required, Error **errp) { + const NetdevTapOptions *tap =3D &netdev->u.tap; Error *err =3D NULL; - int fd, vnet_hdr_required; + int fd, vnet_hdr_required, vnet_hdr; + int ret; + + assert(netdev->type =3D=3D NET_CLIENT_DRIVER_TAP); =20 if (tap->has_vnet_hdr) { - *vnet_hdr =3D tap->vnet_hdr; - vnet_hdr_required =3D *vnet_hdr; + vnet_hdr =3D tap->vnet_hdr; + vnet_hdr_required =3D vnet_hdr; } else { - *vnet_hdr =3D 1; + vnet_hdr =3D 1; vnet_hdr_required =3D 0; } =20 - fd =3D RETRY_ON_EINTR(tap_open(ifname, ifname_sz, vnet_hdr, vnet_hdr_r= equired, - mq_required, errp)); + fd =3D RETRY_ON_EINTR(tap_open(ifname, ifname_sz, &vnet_hdr, + vnet_hdr_required, mq_required, errp)); if (fd < 0) { return -1; } =20 - if (setup_script && - setup_script[0] !=3D '\0' && - strcmp(setup_script, "no") !=3D 0) { - launch_script(setup_script, ifname, fd, &err); + if (script && + script[0] !=3D '\0' && + strcmp(script, "no") !=3D 0) { + launch_script(script, ifname, fd, &err); if (err) { error_propagate(errp, err); close(fd); @@ -706,7 +712,15 @@ static int net_tap_init(const NetdevTapOptions *tap, i= nt *vnet_hdr, } } =20 - return fd; + ret =3D net_init_tap_one(netdev, peer, "tap", name, ifname, + script, downscript, + tap->vhostfd, vnet_hdr, fd, errp); + if (ret < 0) { + close(fd); + return -1; + } + + return 0; } =20 #define MAX_TAP_QUEUES 1024 @@ -948,20 +962,14 @@ int net_init_tap(const Netdev *netdev, const char *na= me, } =20 for (i =3D 0; i < queues; i++) { - fd =3D net_tap_init(tap, &vnet_hdr, i >=3D 1 ? "no" : script, - ifname, sizeof ifname, queues > 1, errp); - if (fd =3D=3D -1) { - return -1; - } - - ret =3D net_init_tap_one(netdev, peer, "tap", name, ifname, + ret =3D net_tap_open_one(netdev, name, peer, i >=3D 1 ? "no" : script, i >=3D 1 ? "no" : downscript, - tap->vhostfd, vnet_hdr, fd, errp); + ifname, sizeof ifname, queues > 1, errp= ); if (ret < 0) { - close(fd); return -1; } + } } =20 --=20 2.48.1 From nobody Sat Nov 15 03:13:55 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=yandex-team.ru ARC-Seal: i=1; a=rsa-sha256; t=1755965084; cv=none; d=zohomail.com; s=zohoarc; b=kUdurXEdOnesP3f6RHzbn0Be3bG8q1VvVz56kZLUSqeBtdNArosGMWSOs1+LvdZyNHMD6lLND0GIZU1wk4EJMJHxLQpT99s8cpmqcVWQPi4+GjEcgHrpQAD4WUW2NG/md85Ti2MsYLyxz1EG2IwXQGYKzj71NCAVlSjKBrlI1ho= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1755965084; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=FF4XChV3zYMW5rMxlbeISngoOcWFPoJtBUlCOjXUTV4=; b=j3dPoMAYigPnVzcLHdcdKYHq8JG/fmA+ZDo9AHvASVa+pgxdx5kCHCk/d6jQRkZhDhWGbrs/hh/leG/jQwAhGPAG/wQ1nNxyS4zezVzneMgBKsNhHJxyY3qog2wxRlT9R3eiDwnFk4fhAcguqhRMd/5iuI6himdgUrKKGmhIAk0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1755965084129323.01486580021515; Sat, 23 Aug 2025 09:04:44 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1upqio-0005S2-Ne; Sat, 23 Aug 2025 12:04:02 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1upqiS-0005LC-Lm for qemu-devel@nongnu.org; Sat, 23 Aug 2025 12:03:42 -0400 Received: from forwardcorp1b.mail.yandex.net ([2a02:6b8:c02:900:1:45:d181:df01]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1upqiQ-0000J9-ER for qemu-devel@nongnu.org; Sat, 23 Aug 2025 12:03:40 -0400 Received: from mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net (mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net [IPv6:2a02:6b8:c23:36c1:0:640:5f85:0]) by forwardcorp1b.mail.yandex.net (Yandex) with ESMTPS id 1857E80748; Sat, 23 Aug 2025 19:03:35 +0300 (MSK) Received: from vsementsov-lin.. (unknown [2a02:6bf:8080:c91::1:b]) by mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net (smtpcorp/Yandex) with ESMTPSA id Q3YUrj0Gl8c0-oJr0zruG; Sat, 23 Aug 2025 19:03:34 +0300 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex-team.ru; s=default; t=1755965014; bh=FF4XChV3zYMW5rMxlbeISngoOcWFPoJtBUlCOjXUTV4=; h=Message-ID:Date:In-Reply-To:Cc:Subject:References:To:From; b=auQU3D/s1h2bQYeAaz/Nzci//TtwKz20KxaXvOW/wXERJn+fAtuYXAoTkRh8TetSA KfFOwTstJq1u816DSU+cenBp+uc7gh9RhGfojztD/31pWu6esxKhBTV4noFUbGBWTM rlKNJeaJMGu2ziiGhuox8L9QTJ9sL/V622qrLXYo= Authentication-Results: mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net; dkim=pass header.i=@yandex-team.ru From: Vladimir Sementsov-Ogievskiy To: jasowang@redhat.com Cc: qemu-devel@nongnu.org, vsementsov@yandex-team.ru, leiyang@redhat.com, steven.sistare@oracle.com Subject: [PATCH v2 15/20] net/tap: introduce net_tap_open() Date: Sat, 23 Aug 2025 19:03:18 +0300 Message-ID: <20250823160323.20811-16-vsementsov@yandex-team.ru> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250823160323.20811-1-vsementsov@yandex-team.ru> References: <20250823160323.20811-1-vsementsov@yandex-team.ru> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a02:6b8:c02:900:1:45:d181:df01; envelope-from=vsementsov@yandex-team.ru; helo=forwardcorp1b.mail.yandex.net X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @yandex-team.ru) X-ZM-MESSAGEID: 1755965086294124100 Content-Type: text/plain; charset="utf-8" Move the latter case of net_init_tap() to a separate function. Signed-off-by: Vladimir Sementsov-Ogievskiy Tested-by: Lei Yang --- net/tap.c | 96 ++++++++++++++++++++++++++++++------------------------- 1 file changed, 53 insertions(+), 43 deletions(-) diff --git a/net/tap.c b/net/tap.c index 57939ed16f..27642c45a9 100644 --- a/net/tap.c +++ b/net/tap.c @@ -818,6 +818,49 @@ failed: return -1; } =20 +static int net_tap_open(const Netdev *netdev, + const char *name, + NetClientState *peer, + Error **errp) +{ + const NetdevTapOptions *tap =3D &netdev->u.tap; + const char *script =3D tap->script; + const char *downscript =3D tap->downscript; + int queues =3D tap->has_queues ? tap->queues : 1; + g_autofree char *default_script =3D NULL; + g_autofree char *default_downscript =3D NULL; + char ifname[128]; + int i, ret; + + assert(netdev->type =3D=3D NET_CLIENT_DRIVER_TAP); + + if (!script) { + script =3D default_script =3D get_relocated_path(DEFAULT_NETWORK_S= CRIPT); + } + if (!downscript) { + downscript =3D default_downscript =3D + get_relocated_path(DEFAULT_NETWORK_DOWN_SCRIP= T); + } + + if (tap->ifname) { + pstrcpy(ifname, sizeof ifname, tap->ifname); + } else { + ifname[0] =3D '\0'; + } + + for (i =3D 0; i < queues; i++) { + ret =3D net_tap_open_one(netdev, name, peer, + i >=3D 1 ? "no" : script, + i >=3D 1 ? "no" : downscript, + ifname, sizeof ifname, queues > 1, errp); + if (ret < 0) { + return -1; + } + } + + return 0; +} + int net_init_tap(const Netdev *netdev, const char *name, NetClientState *peer, Error **errp) { @@ -870,12 +913,9 @@ int net_init_tap(const Netdev *netdev, const char *nam= e, return -1; } =20 - ret =3D net_init_tap_one(netdev, peer, "tap", name, NULL, - NULL, NULL, - tap->vhostfd, vnet_hdr, fd, errp); - if (ret < 0) { - return -1; - } + return net_init_tap_one(netdev, peer, "tap", name, NULL, + NULL, NULL, + tap->vhostfd, vnet_hdr, fd, errp); } else if (tap->fds) { g_auto(GStrv) fds =3D NULL; g_auto(GStrv) vhost_fds =3D NULL; @@ -927,6 +967,8 @@ int net_init_tap(const Netdev *netdev, const char *name, return -1; } } + + return 0; } else if (tap->helper) { if (tap->vhostfds) { error_setg(errp, "vhostfds=3D is invalid with helper=3D"); @@ -934,46 +976,14 @@ int net_init_tap(const Netdev *netdev, const char *na= me, } =20 return net_init_bridge(netdev, name, peer, errp); - } else { - const char *script =3D tap->script; - const char *downscript =3D tap->downscript; - int queues =3D tap->has_queues ? tap->queues : 1; - g_autofree char *default_script =3D NULL; - g_autofree char *default_downscript =3D NULL; - char ifname[128]; - - if (tap->vhostfds) { - error_setg(errp, "vhostfds=3D is invalid if fds=3D wasn't spec= ified"); - return -1; - } - - if (!script) { - script =3D default_script =3D get_relocated_path(DEFAULT_NETWO= RK_SCRIPT); - } - if (!downscript) { - downscript =3D default_downscript =3D - get_relocated_path(DEFAULT_NETWORK_DOWN_S= CRIPT); - } - - if (tap->ifname) { - pstrcpy(ifname, sizeof ifname, tap->ifname); - } else { - ifname[0] =3D '\0'; - } - - for (i =3D 0; i < queues; i++) { - ret =3D net_tap_open_one(netdev, name, peer, - i >=3D 1 ? "no" : script, - i >=3D 1 ? "no" : downscript, - ifname, sizeof ifname, queues > 1, errp= ); - if (ret < 0) { - return -1; - } + } =20 - } + if (tap->vhostfds) { + error_setg(errp, "vhostfds=3D is invalid if fds=3D wasn't specifie= d"); + return -1; } =20 - return 0; + return net_tap_open(netdev, name, peer, errp); } =20 int tap_enable(NetClientState *nc) --=20 2.48.1 From nobody Sat Nov 15 03:13:55 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=yandex-team.ru ARC-Seal: i=1; a=rsa-sha256; t=1755965173; cv=none; d=zohomail.com; s=zohoarc; b=Lb8no53vZzr5C9xW5QlNEiDknXt3QCHazKDd4XLrUeVCsQHgX4Omc40avDZnxsGF2wn0Wj3KKsl8hc54jXM4y+Wk+ev50fZeWXsA/PX85aM7VZ0dMlA4QKc7jS8FyUFkwdUlUUM59uTZKFqJUeTYgpduFIU4klvv2lw/8glh4Lc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1755965173; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=iCMpe6H9zgD4Oe3l2qTjpaIzp666FTTnH4nSF1tKuI8=; b=Pbqe95RRGwX0TtN9MRb1GhpZdmaWfzyw324velcHF4b3NVGYB3sMPcCkyw35NUKPoc5Vrh5zd2AF5MjtyEcGKL9G6i/S1ru+Saeeu5C7jCRsBMNEnJvq7QqLoWfGQ9KtSym+4aF5fOlu8tB6pzJIk3UYrGrvRnv9bC1wPsa9ND0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1755965173734958.4242920334267; Sat, 23 Aug 2025 09:06:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1upqil-0005Qa-Vz; Sat, 23 Aug 2025 12:04:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1upqiT-0005LI-7s for qemu-devel@nongnu.org; Sat, 23 Aug 2025 12:03:42 -0400 Received: from forwardcorp1b.mail.yandex.net ([178.154.239.136]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1upqiQ-0000JN-SM for qemu-devel@nongnu.org; Sat, 23 Aug 2025 12:03:41 -0400 Received: from mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net (mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net [IPv6:2a02:6b8:c23:36c1:0:640:5f85:0]) by forwardcorp1b.mail.yandex.net (Yandex) with ESMTPS id 987068074D; Sat, 23 Aug 2025 19:03:35 +0300 (MSK) Received: from vsementsov-lin.. (unknown [2a02:6bf:8080:c91::1:b]) by mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net (smtpcorp/Yandex) with ESMTPSA id Q3YUrj0Gl8c0-UiUUpzB1; Sat, 23 Aug 2025 19:03:35 +0300 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex-team.ru; s=default; t=1755965015; bh=iCMpe6H9zgD4Oe3l2qTjpaIzp666FTTnH4nSF1tKuI8=; h=Message-ID:Date:In-Reply-To:Cc:Subject:References:To:From; b=Dfy8Ro8fFonlrbDeOD1yxB6LO+I7ZwnefpXGussxsMgWJdPIGKeldUbizB0nDT4uB 017Az0q7uP5dfCYtYauokTgPNm20pthE0s1UbblbKSqUf76AhbZuQEbKdOHlUEDqsO jKVLJ/Rs/i4UHQZljHsfhM2bzqCXw+pGpyNidsXk= Authentication-Results: mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net; dkim=pass header.i=@yandex-team.ru From: Vladimir Sementsov-Ogievskiy To: jasowang@redhat.com Cc: qemu-devel@nongnu.org, vsementsov@yandex-team.ru, leiyang@redhat.com, steven.sistare@oracle.com Subject: [PATCH v2 16/20] net/tap: introduce net_tap_fd_init_external() Date: Sat, 23 Aug 2025 19:03:19 +0300 Message-ID: <20250823160323.20811-17-vsementsov@yandex-team.ru> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250823160323.20811-1-vsementsov@yandex-team.ru> References: <20250823160323.20811-1-vsementsov@yandex-team.ru> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=178.154.239.136; envelope-from=vsementsov@yandex-team.ru; helo=forwardcorp1b.mail.yandex.net X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @yandex-team.ru) X-ZM-MESSAGEID: 1755965175343124100 Content-Type: text/plain; charset="utf-8" Add helper that covers logic for initializing fds, given from monitor or helper. Signed-off-by: Vladimir Sementsov-Ogievskiy Tested-by: Lei Yang --- net/tap.c | 90 ++++++++++++++++++++++--------------------------------- 1 file changed, 36 insertions(+), 54 deletions(-) diff --git a/net/tap.c b/net/tap.c index 27642c45a9..8cea6ed87b 100644 --- a/net/tap.c +++ b/net/tap.c @@ -627,13 +627,40 @@ static bool set_fd_nonblocking(int fd, const char *no= te, Error **errp) return ok; } =20 +static int net_tap_fd_init_external(const Netdev *netdev, NetClientState *= peer, + const char *model, const char *name, + const char *vhostfdname, + int *pvnet_hdr, int fd, Error **errp) +{ + int vnet_hdr; + + if (!set_fd_nonblocking(fd, name, errp)) { + return -1; + } + + vnet_hdr =3D tap_probe_vnet_hdr(fd, errp); + if (pvnet_hdr) { + if (*pvnet_hdr < 0) { + *pvnet_hdr =3D vnet_hdr; + } else if (vnet_hdr !=3D *pvnet_hdr) { + error_setg(errp, + "vnet_hdr not consistent across given tap fds"); + return -1; + } + } + + return net_init_tap_one(netdev, peer, model, name, + NULL, NULL, NULL, + vhostfdname, vnet_hdr, fd, errp); +} + int net_init_bridge(const Netdev *netdev, const char *name, NetClientState *peer, Error **errp) { const NetdevTapOptions *tap =3D NULL; const NetdevBridgeOptions *bridge =3D NULL; const char *helper, *br; - int fd, vnet_hdr, ret; + int fd; =20 if (netdev->type =3D=3D NET_CLIENT_DRIVER_BRIDGE) { bridge =3D &netdev->u.bridge; @@ -652,26 +679,8 @@ int net_init_bridge(const Netdev *netdev, const char *= name, return -1; } =20 - if (!set_fd_nonblocking(fd, name, errp)) { - return -1; - } - - vnet_hdr =3D tap_probe_vnet_hdr(fd, errp); - if (vnet_hdr < 0) { - close(fd); - return -1; - } - - ret =3D net_init_tap_one(netdev, peer, "bridge", name, - NULL, NULL, NULL, - tap ? tap->vhostfd : NULL, - vnet_hdr, fd, errp); - if (ret < 0) { - close(fd); - return -1; - } - - return 0; + return net_tap_fd_init_external(netdev, peer, "bridge", name, + tap ? tap->vhostfd : NULL, NULL, fd, e= rrp); } =20 static int net_tap_open_one(const Netdev *netdev, @@ -902,20 +911,8 @@ int net_init_tap(const Netdev *netdev, const char *nam= e, return -1; } =20 - if (!set_fd_nonblocking(fd, tap->fd, errp)) { - close(fd); - return -1; - } - - vnet_hdr =3D tap_probe_vnet_hdr(fd, errp); - if (vnet_hdr < 0) { - close(fd); - return -1; - } - - return net_init_tap_one(netdev, peer, "tap", name, NULL, - NULL, NULL, - tap->vhostfd, vnet_hdr, fd, errp); + return net_tap_fd_init_external(netdev, peer, "tap", name, + tap->vhostfd, NULL, fd, errp); } else if (tap->fds) { g_auto(GStrv) fds =3D NULL; g_auto(GStrv) vhost_fds =3D NULL; @@ -938,31 +935,16 @@ int net_init_tap(const Netdev *netdev, const char *na= me, } } =20 + vnet_hdr =3D -1; for (i =3D 0; i < nfds; i++) { fd =3D monitor_fd_param(monitor_cur(), fds[i], errp); if (fd =3D=3D -1) { return -1; } =20 - if (!set_fd_nonblocking(fd, fds[i], errp)) { - return -1; - } - - if (i =3D=3D 0) { - vnet_hdr =3D tap_probe_vnet_hdr(fd, errp); - if (vnet_hdr < 0) { - return -1; - } - } else if (vnet_hdr !=3D tap_probe_vnet_hdr(fd, NULL)) { - error_setg(errp, - "vnet_hdr not consistent across given tap fds"); - return -1; - } - - ret =3D net_init_tap_one(netdev, peer, "tap", name, NULL, - NULL, NULL, - vhost_fds ? vhost_fds[i] : NULL, - vnet_hdr, fd, errp); + ret =3D net_tap_fd_init_external(netdev, peer, "tap", name, + vhost_fds ? vhost_fds[i] : NULL, + &vnet_hdr, fd, errp); if (ret < 0) { return -1; } --=20 2.48.1 From nobody Sat Nov 15 03:13:55 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=yandex-team.ru ARC-Seal: i=1; a=rsa-sha256; t=1755965083; cv=none; d=zohomail.com; s=zohoarc; b=oHQSHH+8pBy/p+j4z5zVcVgpJJZ06/hczoET0IkateVZv3CruPLs8/ahIYelMyHlgsMcLrVDxwk4w2InPEhpB+jmps+UNUX5+YFucb2+kemyA2En5LpYeLFCmfWs/BbMmEETlyv/Q92xwYxGQoOxZ9mWy+XnL3Vj52StNTcDnaM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1755965083; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=u6MMfRHcWymyX5t4KhLBfOBvMUevLdthJ5MTH21h/2E=; b=QEvDSkp2Z82HGzsJNYLchZnMYTVYyq+/VHPg8eSjvLiXcotLuyJPOA8s6/fQKXMY4U9BGw7BhG/Z5bMB0rzQ0yaXffGzhHQyrlgLWHbP4/rfCOvgT3p2hzQUm1bOzEkVQEH4To7aRRLCTMYZKyCYoT+eCPD9WTwwIxrsXi4yzj8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 175596508315536.438273841095906; Sat, 23 Aug 2025 09:04:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1upqii-0005PG-Tt; Sat, 23 Aug 2025 12:03:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1upqiT-0005LK-Af for qemu-devel@nongnu.org; Sat, 23 Aug 2025 12:03:42 -0400 Received: from forwardcorp1b.mail.yandex.net ([178.154.239.136]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1upqiQ-0000JO-TN for qemu-devel@nongnu.org; Sat, 23 Aug 2025 12:03:41 -0400 Received: from mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net (mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net [IPv6:2a02:6b8:c23:36c1:0:640:5f85:0]) by forwardcorp1b.mail.yandex.net (Yandex) with ESMTPS id 27FA9807C5; Sat, 23 Aug 2025 19:03:36 +0300 (MSK) Received: from vsementsov-lin.. (unknown [2a02:6bf:8080:c91::1:b]) by mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net (smtpcorp/Yandex) with ESMTPSA id Q3YUrj0Gl8c0-evJl9Bnt; Sat, 23 Aug 2025 19:03:35 +0300 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex-team.ru; s=default; t=1755965015; bh=u6MMfRHcWymyX5t4KhLBfOBvMUevLdthJ5MTH21h/2E=; h=Message-ID:Date:In-Reply-To:Cc:Subject:References:To:From; b=UNw6Fo8rwAUhRAC7nwt6J+JUYXgVuamfVpM72CBNkR20ZvTlHbogZ9S6Epszcc67k LkMee7F6eCwjVP71me1Rf0JhhQu4KPcBJ9ohf6vnhZwQfk1lzvLEDkvv3XpGkzIuKk RzHl9/SKsOlDHSjWgaFyQRvl3TyQqgC+RcA3jQDs= Authentication-Results: mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net; dkim=pass header.i=@yandex-team.ru From: Vladimir Sementsov-Ogievskiy To: jasowang@redhat.com Cc: qemu-devel@nongnu.org, vsementsov@yandex-team.ru, leiyang@redhat.com, steven.sistare@oracle.com Subject: [PATCH v2 17/20] net/tap: introduce net_tap_from_monitor_fd() helper Date: Sat, 23 Aug 2025 19:03:20 +0300 Message-ID: <20250823160323.20811-18-vsementsov@yandex-team.ru> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250823160323.20811-1-vsementsov@yandex-team.ru> References: <20250823160323.20811-1-vsementsov@yandex-team.ru> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=178.154.239.136; envelope-from=vsementsov@yandex-team.ru; helo=forwardcorp1b.mail.yandex.net X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @yandex-team.ru) X-ZM-MESSAGEID: 1755965086439124100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Vladimir Sementsov-Ogievskiy Tested-by: Lei Yang --- net/tap.c | 34 +++++++++++++++++++--------------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/net/tap.c b/net/tap.c index 8cea6ed87b..2ef1db0ff1 100644 --- a/net/tap.c +++ b/net/tap.c @@ -827,6 +827,20 @@ failed: return -1; } =20 +static int net_tap_from_monitor_fd(const Netdev *netdev, NetClientState *p= eer, + const char *name, const char *vhostfdna= me, + int *pvnet_hdr, const char *fdname, + Error **errp) +{ + int fd =3D monitor_fd_param(monitor_cur(), fdname, errp); + if (fd =3D=3D -1) { + return -1; + } + + return net_tap_fd_init_external(netdev, peer, "tap", name, + vhostfdname, pvnet_hdr, fd, errp); +} + static int net_tap_open(const Netdev *netdev, const char *name, NetClientState *peer, @@ -874,7 +888,7 @@ int net_init_tap(const Netdev *netdev, const char *name, NetClientState *peer, Error **errp) { const NetdevTapOptions *tap =3D &netdev->u.tap; - int fd, vnet_hdr =3D 0, i =3D 0; + int vnet_hdr =3D 0, i =3D 0; int ret =3D 0; =20 assert(netdev->type =3D=3D NET_CLIENT_DRIVER_TAP); @@ -906,13 +920,8 @@ int net_init_tap(const Netdev *netdev, const char *nam= e, return -1; } =20 - fd =3D monitor_fd_param(monitor_cur(), tap->fd, errp); - if (fd =3D=3D -1) { - return -1; - } - - return net_tap_fd_init_external(netdev, peer, "tap", name, - tap->vhostfd, NULL, fd, errp); + return net_tap_from_monitor_fd(netdev, peer, name, tap->vhostfd, + NULL, tap->fd, errp); } else if (tap->fds) { g_auto(GStrv) fds =3D NULL; g_auto(GStrv) vhost_fds =3D NULL; @@ -937,14 +946,9 @@ int net_init_tap(const Netdev *netdev, const char *nam= e, =20 vnet_hdr =3D -1; for (i =3D 0; i < nfds; i++) { - fd =3D monitor_fd_param(monitor_cur(), fds[i], errp); - if (fd =3D=3D -1) { - return -1; - } - - ret =3D net_tap_fd_init_external(netdev, peer, "tap", name, + ret =3D net_tap_from_monitor_fd(netdev, peer, name, vhost_fds ? vhost_fds[i] : NULL, - &vnet_hdr, fd, errp); + &vnet_hdr, fds[i], errp); if (ret < 0) { return -1; } --=20 2.48.1 From nobody Sat Nov 15 03:13:55 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=yandex-team.ru ARC-Seal: i=1; a=rsa-sha256; t=1755965287; cv=none; d=zohomail.com; s=zohoarc; b=j+imcXIjQs0Urw3wm1Dnd04di/d2hc1bFGXg7Y9ySVPmjULGmYCQO7n3E8HkBU4xlKQpfLUB0H9k9UDb1i6EAfnN67xboUJ4dum9i8WMMsY7nvKsohMAWn3aHvIhvue24mGTpI9T0dbKwkfFlvi3ZVcdJuKt8+SefC+iwh6m4Qs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1755965287; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=xd+mUqjsh9xnLT4mVkn+Xb0AoSWyU83DHF8mdQFDWGg=; b=l6PvtlpdTX73xN8lKsT8dr/sVf7BPKZMccoz6EwfdQShXMh49R1w1JRlrV1RDkEGBhhdz/c9B7mBMQGSe8w9vKyV0wR9bm6JTW1kAXMBweCmNimNpWXSdDmiKsKdF35UJzR4GiK4xytd7AMQBK3h5VrAWonNe8TR5zu1AMj93+A= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1755965287319617.3383378874269; Sat, 23 Aug 2025 09:08:07 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1upqio-0005S3-OL; Sat, 23 Aug 2025 12:04:02 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1upqiU-0005LN-KP for qemu-devel@nongnu.org; Sat, 23 Aug 2025 12:03:42 -0400 Received: from forwardcorp1b.mail.yandex.net ([178.154.239.136]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1upqiQ-0000JX-Uf for qemu-devel@nongnu.org; Sat, 23 Aug 2025 12:03:41 -0400 Received: from mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net (mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net [IPv6:2a02:6b8:c23:36c1:0:640:5f85:0]) by forwardcorp1b.mail.yandex.net (Yandex) with ESMTPS id A9BB68076D; Sat, 23 Aug 2025 19:03:36 +0300 (MSK) Received: from vsementsov-lin.. (unknown [2a02:6bf:8080:c91::1:b]) by mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net (smtpcorp/Yandex) with ESMTPSA id Q3YUrj0Gl8c0-jqmGy38K; Sat, 23 Aug 2025 19:03:36 +0300 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex-team.ru; s=default; t=1755965016; bh=xd+mUqjsh9xnLT4mVkn+Xb0AoSWyU83DHF8mdQFDWGg=; h=Message-ID:Date:In-Reply-To:Cc:Subject:References:To:From; b=dz9sw+QXuLm70oZ4f7fgAtd1g/4/PluVCFbuHw6EICmcBKnY/rdx/m3dBllkxq1NM Wy8r0gbi9ksRyUhTiO5FyukmXNteeMlK4Rml+15XeMm+fW4yNf3Sqa9kbTznaIUM/1 rOdFpqALOrgf0sydIcnBdzejoAuZYdSxmVni54js= Authentication-Results: mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net; dkim=pass header.i=@yandex-team.ru From: Vladimir Sementsov-Ogievskiy To: jasowang@redhat.com Cc: qemu-devel@nongnu.org, vsementsov@yandex-team.ru, leiyang@redhat.com, steven.sistare@oracle.com Subject: [PATCH v2 18/20] net/tap: split net_tap_setup_vhost() separate function Date: Sat, 23 Aug 2025 19:03:21 +0300 Message-ID: <20250823160323.20811-19-vsementsov@yandex-team.ru> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250823160323.20811-1-vsementsov@yandex-team.ru> References: <20250823160323.20811-1-vsementsov@yandex-team.ru> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=178.154.239.136; envelope-from=vsementsov@yandex-team.ru; helo=forwardcorp1b.mail.yandex.net X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @yandex-team.ru) X-ZM-MESSAGEID: 1755965289578116600 Content-Type: text/plain; charset="utf-8" Signed-off-by: Vladimir Sementsov-Ogievskiy Tested-by: Lei Yang --- net/tap.c | 34 ++++++++++++++++++++++++---------- 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/net/tap.c b/net/tap.c index 2ef1db0ff1..f2c0f7fd06 100644 --- a/net/tap.c +++ b/net/tap.c @@ -93,6 +93,8 @@ static int net_init_tap_one(const Netdev *netdev, NetClie= ntState *peer, const char *ifname, const char *script, const char *downscript, const char *vhostfdnam= e, int vnet_hdr, int fd, Error **errp); +static int net_tap_setup_vhost(TAPState *s, const NetdevTapOptions *tap, + const char *vhostfdname, Error **errp); =20 static void tap_update_fd_handler(TAPState *s) { @@ -742,7 +744,7 @@ static int net_init_tap_one(const Netdev *netdev, NetCl= ientState *peer, { const NetdevTapOptions *tap; TAPState *s =3D net_tap_fd_init(peer, model, name, fd, vnet_hdr); - int vhostfd; + int ret; =20 if (netdev->type =3D=3D NET_CLIENT_DRIVER_BRIDGE) { const NetdevBridgeOptions *bridge =3D &netdev->u.bridge; @@ -773,9 +775,25 @@ static int net_init_tap_one(const Netdev *netdev, NetC= lientState *peer, } } =20 + ret =3D net_tap_setup_vhost(s, tap, vhostfdname, errp); + if (ret < 0) { + goto failed; + } + + return 0; + +failed: + qemu_del_net_client(&s->nc); + return -1; +} + +static int net_tap_setup_vhost(TAPState *s, const NetdevTapOptions *tap, + const char *vhostfdname, Error **errp) +{ if (tap->has_vhost ? tap->vhost : vhostfdname || (tap->has_vhostforce && tap->vhostforce)) { VhostNetOptions options; + int vhostfd; =20 options.backend_type =3D VHOST_BACKEND_TYPE_KERNEL; options.net_backend =3D &s->nc; @@ -788,20 +806,20 @@ static int net_init_tap_one(const Netdev *netdev, Net= ClientState *peer, if (vhostfdname) { vhostfd =3D monitor_fd_param(monitor_cur(), vhostfdname, errp); if (vhostfd =3D=3D -1) { - goto failed; + return -1; } if (!set_fd_nonblocking(vhostfd, vhostfdname, errp)) { - goto failed; + return -1; } } else { vhostfd =3D open("/dev/vhost-net", O_RDWR); if (vhostfd < 0) { error_setg_errno(errp, errno, "tap: open vhost char device failed"); - goto failed; + return -1; } if (!set_fd_nonblocking(vhostfd, "opened /dev/vhost-net", errp= )) { - goto failed; + return -1; } } options.opaque =3D (void *)(uintptr_t)vhostfd; @@ -816,15 +834,11 @@ static int net_init_tap_one(const Netdev *netdev, Net= ClientState *peer, if (!s->vhost_net) { error_setg(errp, "vhost-net requested but could not be initialized"); - goto failed; + return -1; } } =20 return 0; - -failed: - qemu_del_net_client(&s->nc); - return -1; } =20 static int net_tap_from_monitor_fd(const Netdev *netdev, NetClientState *p= eer, --=20 2.48.1 From nobody Sat Nov 15 03:13:55 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=yandex-team.ru ARC-Seal: i=1; a=rsa-sha256; t=1755965328; cv=none; d=zohomail.com; s=zohoarc; b=ka42LnnBKk366aXvu5PQI/7Tssiyh3NltCYD6StK4OrSXsXBVon5uBLvoabRz0Mg4f90EBU/KleGrlzmFAfacy9KjHvaJluP3AY3eWF02isEcQDlHm0SVqEEQA6cvit1ZRk0TJz9K1kN3Mp9i/VwxZAWtq8ggrbE17FsB020ZF4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1755965328; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=k60Q8EantLVMPvg4A/U7+0X4FHc8i8GygBsw8FNL2Kw=; b=EMCOJpqeGvkxG3XRsSppcx5EstDMQ2zmvGh/FE6ULrjbztd7GCrM8CvjXc/rFlAxhOdRlrRM1ENounU0hlp+xx9o5FVM4OfRy8D3FCdciLQ+HIWPxRYYJ//+1DfV8btKodJNwvlshyf0EL0gOrKS1dnHRj9j8EFr7rsH8jAl5Zk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 175596532847477.97602007141131; Sat, 23 Aug 2025 09:08:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1upqin-0005Rh-N0; Sat, 23 Aug 2025 12:04:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1upqid-0005Oa-A9 for qemu-devel@nongnu.org; Sat, 23 Aug 2025 12:03:52 -0400 Received: from forwardcorp1b.mail.yandex.net ([2a02:6b8:c02:900:1:45:d181:df01]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1upqib-0000JW-0i for qemu-devel@nongnu.org; Sat, 23 Aug 2025 12:03:50 -0400 Received: from mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net (mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net [IPv6:2a02:6b8:c23:36c1:0:640:5f85:0]) by forwardcorp1b.mail.yandex.net (Yandex) with ESMTPS id 46FED806D1; Sat, 23 Aug 2025 19:03:37 +0300 (MSK) Received: from vsementsov-lin.. (unknown [2a02:6bf:8080:c91::1:b]) by mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net (smtpcorp/Yandex) with ESMTPSA id Q3YUrj0Gl8c0-BJ4ZPdxf; Sat, 23 Aug 2025 19:03:36 +0300 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex-team.ru; s=default; t=1755965016; bh=k60Q8EantLVMPvg4A/U7+0X4FHc8i8GygBsw8FNL2Kw=; h=Message-ID:Date:In-Reply-To:Cc:Subject:References:To:From; b=1o2/mVN60qvQEf8tdvsVHo4IT02QrryHKyTKs+5yhEHXQQFlNmZgavs71aOLzCtzB LxzjL9xiH4xSAmY0mhRptzjtmfuHBJGUgB+VqblApUSg6h2W8Wcy9Fufrd8SlLE6qw XswJAww+xPE7TDeZanEKk27oSunhmWPxlo2bHw8I= Authentication-Results: mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net; dkim=pass header.i=@yandex-team.ru From: Vladimir Sementsov-Ogievskiy To: jasowang@redhat.com Cc: qemu-devel@nongnu.org, vsementsov@yandex-team.ru, leiyang@redhat.com, steven.sistare@oracle.com Subject: [PATCH v2 19/20] net/tap: drop net_tap_fd_init() Date: Sat, 23 Aug 2025 19:03:22 +0300 Message-ID: <20250823160323.20811-20-vsementsov@yandex-team.ru> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250823160323.20811-1-vsementsov@yandex-team.ru> References: <20250823160323.20811-1-vsementsov@yandex-team.ru> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a02:6b8:c02:900:1:45:d181:df01; envelope-from=vsementsov@yandex-team.ru; helo=forwardcorp1b.mail.yandex.net X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @yandex-team.ru) X-ZM-MESSAGEID: 1755965331334124100 Content-Type: text/plain; charset="utf-8" It's called only from net_init_tap_one(), and there is no semantic reason, why we do part of initialization in one function and continue in another. Let's combine them into one net_tap_fd_init_common(). Signed-off-by: Vladimir Sementsov-Ogievskiy Tested-by: Lei Yang --- net/tap.c | 97 +++++++++++++++++++++++++------------------------------ 1 file changed, 44 insertions(+), 53 deletions(-) diff --git a/net/tap.c b/net/tap.c index f2c0f7fd06..08927088eb 100644 --- a/net/tap.c +++ b/net/tap.c @@ -88,11 +88,12 @@ static void launch_script(const char *setup_script, con= st char *ifname, static void tap_send(void *opaque); static void tap_writable(void *opaque); =20 -static int net_init_tap_one(const Netdev *netdev, NetClientState *peer, - const char *model, const char *name, - const char *ifname, const char *script, - const char *downscript, const char *vhostfdnam= e, - int vnet_hdr, int fd, Error **errp); +static int net_tap_fd_init_common(const Netdev *netdev, NetClientState *pe= er, + const char *model, const char *name, + const char *ifname, const char *script, + const char *downscript, + const char *vhostfdname, + int vnet_hdr, int fd, Error **errp); static int net_tap_setup_vhost(TAPState *s, const NetdevTapOptions *tap, const char *vhostfdname, Error **errp); =20 @@ -393,42 +394,6 @@ static NetClientInfo net_tap_info =3D { .get_vhost_net =3D tap_get_vhost_net, }; =20 -static TAPState *net_tap_fd_init(NetClientState *peer, - const char *model, - const char *name, - int fd, - int vnet_hdr) -{ - NetClientState *nc; - TAPState *s; - - nc =3D qemu_new_net_client(&net_tap_info, peer, model, name); - - s =3D DO_UPCAST(TAPState, nc, nc); - - s->fd =3D fd; - s->host_vnet_hdr_len =3D vnet_hdr ? sizeof(struct virtio_net_hdr) : 0; - s->using_vnet_hdr =3D false; - s->has_ufo =3D tap_probe_has_ufo(s->fd); - s->has_uso =3D tap_probe_has_uso(s->fd); - s->enabled =3D true; - tap_set_offload(&s->nc, 0, 0, 0, 0, 0, 0, 0); - /* - * Make sure host header length is set correctly in tap: - * it might have been modified by another instance of qemu. - */ - if (vnet_hdr) { - tap_fd_set_vnet_hdr_len(s->fd, s->host_vnet_hdr_len); - } - tap_read_poll(s, true); - s->vhost_net =3D NULL; - - s->exit.notify =3D tap_exit_notify; - qemu_add_exit_notifier(&s->exit); - - return s; -} - static void close_all_fds_after_fork(int excluded_fd) { const int skip_fd[] =3D {STDIN_FILENO, STDOUT_FILENO, STDERR_FILENO, @@ -651,9 +616,9 @@ static int net_tap_fd_init_external(const Netdev *netde= v, NetClientState *peer, } } =20 - return net_init_tap_one(netdev, peer, model, name, - NULL, NULL, NULL, - vhostfdname, vnet_hdr, fd, errp); + return net_tap_fd_init_common(netdev, peer, model, name, + NULL, NULL, NULL, + vhostfdname, vnet_hdr, fd, errp); } =20 int net_init_bridge(const Netdev *netdev, const char *name, @@ -723,9 +688,9 @@ static int net_tap_open_one(const Netdev *netdev, } } =20 - ret =3D net_init_tap_one(netdev, peer, "tap", name, ifname, - script, downscript, - tap->vhostfd, vnet_hdr, fd, errp); + ret =3D net_tap_fd_init_common(netdev, peer, "tap", name, ifname, + script, downscript, + tap->vhostfd, vnet_hdr, fd, errp); if (ret < 0) { close(fd); return -1; @@ -736,15 +701,41 @@ static int net_tap_open_one(const Netdev *netdev, =20 #define MAX_TAP_QUEUES 1024 =20 -static int net_init_tap_one(const Netdev *netdev, NetClientState *peer, - const char *model, const char *name, - const char *ifname, const char *script, - const char *downscript, const char *vhostfdnam= e, - int vnet_hdr, int fd, Error **errp) +static int net_tap_fd_init_common(const Netdev *netdev, NetClientState *pe= er, + const char *model, const char *name, + const char *ifname, const char *script, + const char *downscript, + const char *vhostfdname, + int vnet_hdr, int fd, Error **errp) { const NetdevTapOptions *tap; - TAPState *s =3D net_tap_fd_init(peer, model, name, fd, vnet_hdr); int ret; + NetClientState *nc; + TAPState *s; + + nc =3D qemu_new_net_client(&net_tap_info, peer, model, name); + + s =3D DO_UPCAST(TAPState, nc, nc); + + s->fd =3D fd; + s->host_vnet_hdr_len =3D vnet_hdr ? sizeof(struct virtio_net_hdr) : 0; + s->using_vnet_hdr =3D false; + s->has_ufo =3D tap_probe_has_ufo(s->fd); + s->has_uso =3D tap_probe_has_uso(s->fd); + s->enabled =3D true; + tap_set_offload(&s->nc, 0, 0, 0, 0, 0, 0, 0); + /* + * Make sure host header length is set correctly in tap: + * it might have been modified by another instance of qemu. + */ + if (vnet_hdr) { + tap_fd_set_vnet_hdr_len(s->fd, s->host_vnet_hdr_len); + } + tap_read_poll(s, true); + s->vhost_net =3D NULL; + + s->exit.notify =3D tap_exit_notify; + qemu_add_exit_notifier(&s->exit); =20 if (netdev->type =3D=3D NET_CLIENT_DRIVER_BRIDGE) { const NetdevBridgeOptions *bridge =3D &netdev->u.bridge; --=20 2.48.1 From nobody Sat Nov 15 03:13:55 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=yandex-team.ru ARC-Seal: i=1; a=rsa-sha256; t=1755965144; cv=none; d=zohomail.com; s=zohoarc; b=MsOIKlYDxDwduGuAQyEDsMv2O3FojVChYgC/dfIhh3F15frJvZa3BnD9jobL7mGH7wtTk2wyvcB91Hwye9//yTh2YqGWxmtbFPE6dnIMWcsztSirfYn/rx5tjBDLvUfRDlbnBZniK9+MyjkRQGh5EEpKVzHPnHwAYyhcLSA/ld4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1755965144; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=iF4TzcuwNKDr7mHgH4L7HZyDowjkVVBcoumIvar7ui8=; b=A6NhffJpviOvqiMgr2JlEqhZmzTHV/Fo89vkSwUVfpS7npOGaI4sItx2Zbo8tuLJUm+VYzH5gouji1GJZkI+zYe5LhuCefBgAt+74CXe5adwYTk79Ukhf9/8VucaYAu2iVr0AZuT4Wfh4hNA0JZqo426c/S0ueLFQwGQto7umUY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 175596514381559.07727896668291; Sat, 23 Aug 2025 09:05:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1upqis-0005UN-6O; Sat, 23 Aug 2025 12:04:06 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1upqid-0005Ob-Aq for qemu-devel@nongnu.org; Sat, 23 Aug 2025 12:03:52 -0400 Received: from forwardcorp1b.mail.yandex.net ([2a02:6b8:c02:900:1:45:d181:df01]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1upqib-0000Jg-8Y for qemu-devel@nongnu.org; Sat, 23 Aug 2025 12:03:51 -0400 Received: from mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net (mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net [IPv6:2a02:6b8:c23:36c1:0:640:5f85:0]) by forwardcorp1b.mail.yandex.net (Yandex) with ESMTPS id C6C5980629; Sat, 23 Aug 2025 19:03:37 +0300 (MSK) Received: from vsementsov-lin.. (unknown [2a02:6bf:8080:c91::1:b]) by mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net (smtpcorp/Yandex) with ESMTPSA id Q3YUrj0Gl8c0-MeSH24W5; Sat, 23 Aug 2025 19:03:37 +0300 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex-team.ru; s=default; t=1755965017; bh=iF4TzcuwNKDr7mHgH4L7HZyDowjkVVBcoumIvar7ui8=; h=Message-ID:Date:In-Reply-To:Cc:Subject:References:To:From; b=zb7nP0CYVTjLeRzuqoxc0T/LokweYvay0dcxXI/azJsed9Japyym4L95zN9Zbkird 0FVn4YflcEGir03xx0u3FS4TTDwPRPSPT29RlVbdk5ECQsv1KhWyrVWCtxhhUYi0UT 8DqNCvVTYcuhWiJM/tmu04v+0IzNwjYKDyfiDUIs= Authentication-Results: mail-nwsmtp-smtp-corp-canary-81.sas.yp-c.yandex.net; dkim=pass header.i=@yandex-team.ru From: Vladimir Sementsov-Ogievskiy To: jasowang@redhat.com Cc: qemu-devel@nongnu.org, vsementsov@yandex-team.ru, leiyang@redhat.com, steven.sistare@oracle.com Subject: [PATCH v2 20/20] net/tap: introduce net_init_tap_fds() Date: Sat, 23 Aug 2025 19:03:23 +0300 Message-ID: <20250823160323.20811-21-vsementsov@yandex-team.ru> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250823160323.20811-1-vsementsov@yandex-team.ru> References: <20250823160323.20811-1-vsementsov@yandex-team.ru> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a02:6b8:c02:900:1:45:d181:df01; envelope-from=vsementsov@yandex-team.ru; helo=forwardcorp1b.mail.yandex.net X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @yandex-team.ru) X-ZM-MESSAGEID: 1755965147358124100 Content-Type: text/plain; charset="utf-8" Final refactoring step for net_init_tap: move fds case to separate function, so that net_init_tap() becomes straightforward top-level entry point to tap initialization. Signed-off-by: Vladimir Sementsov-Ogievskiy Tested-by: Lei Yang --- net/tap.c | 68 +++++++++++++++++++++++++++++++------------------------ 1 file changed, 39 insertions(+), 29 deletions(-) diff --git a/net/tap.c b/net/tap.c index 08927088eb..45d1bcd326 100644 --- a/net/tap.c +++ b/net/tap.c @@ -889,12 +889,48 @@ static int net_tap_open(const Netdev *netdev, return 0; } =20 +static int net_init_tap_fds(const Netdev *netdev, const char *name, + NetClientState *peer, Error **errp) +{ + const NetdevTapOptions *tap =3D &netdev->u.tap; + g_auto(GStrv) fds =3D NULL; + g_auto(GStrv) vhost_fds =3D NULL; + int nfds; + int vnet_hdr =3D 0, i =3D 0; + int ret; + + assert(netdev->type =3D=3D NET_CLIENT_DRIVER_TAP); + + fds =3D g_strsplit(tap->fds, ":", MAX_TAP_QUEUES); + nfds =3D g_strv_length(fds); + + if (tap->vhostfds) { + vhost_fds =3D g_strsplit(tap->vhostfds, ":", MAX_TAP_QUEUES); + if (nfds !=3D g_strv_length(vhost_fds)) { + error_setg(errp, "The number of fds passed does not match " + "the number of vhostfds passed"); + return -1; + } + } + + vnet_hdr =3D -1; + for (i =3D 0; i < nfds; i++) { + ret =3D net_tap_from_monitor_fd(netdev, peer, name, + vhost_fds ? vhost_fds[i] : NULL, + &vnet_hdr, fds[i], errp); + if (ret < 0) { + return -1; + } + } + + return 0; +} + + int net_init_tap(const Netdev *netdev, const char *name, NetClientState *peer, Error **errp) { const NetdevTapOptions *tap =3D &netdev->u.tap; - int vnet_hdr =3D 0, i =3D 0; - int ret =3D 0; =20 assert(netdev->type =3D=3D NET_CLIENT_DRIVER_TAP); =20 @@ -928,38 +964,12 @@ int net_init_tap(const Netdev *netdev, const char *na= me, return net_tap_from_monitor_fd(netdev, peer, name, tap->vhostfd, NULL, tap->fd, errp); } else if (tap->fds) { - g_auto(GStrv) fds =3D NULL; - g_auto(GStrv) vhost_fds =3D NULL; - int nfds; - if (tap->helper || tap->vhostfd) { error_setg(errp, "helper=3D and vhostfd=3D are invalid with fd= s=3D"); return -1; } =20 - fds =3D g_strsplit(tap->fds, ":", MAX_TAP_QUEUES); - nfds =3D g_strv_length(fds); - - if (tap->vhostfds) { - vhost_fds =3D g_strsplit(tap->vhostfds, ":", MAX_TAP_QUEUES); - if (nfds !=3D g_strv_length(vhost_fds)) { - error_setg(errp, "The number of fds passed does not match " - "the number of vhostfds passed"); - return -1; - } - } - - vnet_hdr =3D -1; - for (i =3D 0; i < nfds; i++) { - ret =3D net_tap_from_monitor_fd(netdev, peer, name, - vhost_fds ? vhost_fds[i] : NULL, - &vnet_hdr, fds[i], errp); - if (ret < 0) { - return -1; - } - } - - return 0; + return net_init_tap_fds(netdev, name, peer, errp); } else if (tap->helper) { if (tap->vhostfds) { error_setg(errp, "vhostfds=3D is invalid with helper=3D"); --=20 2.48.1