{"id":2230345,"url":"http://patchwork.ozlabs.org/api/1.1/patches/2230345/?format=json","web_url":"http://patchwork.ozlabs.org/project/openvswitch/patch/20260429151756.4157670-3-i.maximets@ovn.org/","project":{"id":47,"url":"http://patchwork.ozlabs.org/api/1.1/projects/47/?format=json","name":"Open vSwitch","link_name":"openvswitch","list_id":"ovs-dev.openvswitch.org","list_email":"ovs-dev@openvswitch.org","web_url":"http://openvswitch.org/","scm_url":"git@github.com:openvswitch/ovs.git","webscm_url":"https://github.com/openvswitch/ovs"},"msgid":"<20260429151756.4157670-3-i.maximets@ovn.org>","date":"2026-04-29T15:16:37","name":"[ovs-dev,net,2/2] selftests: openvswitch: add tests for tunnel vport refcounting","commit_ref":null,"pull_url":null,"state":"handled-elsewhere","archived":false,"hash":"c16b898ddfdae30e4966c3ae85677f3536c53736","submitter":{"id":76798,"url":"http://patchwork.ozlabs.org/api/1.1/people/76798/?format=json","name":"Ilya Maximets","email":"i.maximets@ovn.org"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/openvswitch/patch/20260429151756.4157670-3-i.maximets@ovn.org/mbox/","series":[{"id":502094,"url":"http://patchwork.ozlabs.org/api/1.1/series/502094/?format=json","web_url":"http://patchwork.ozlabs.org/project/openvswitch/list/?series=502094","date":"2026-04-29T15:16:35","name":"openvswitch: fix self-deadlock on release of tunnel vports","version":1,"mbox":"http://patchwork.ozlabs.org/series/502094/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/2230345/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/2230345/checks/","tags":{},"headers":{"Return-Path":"<ovs-dev-bounces@openvswitch.org>","X-Original-To":["incoming@patchwork.ozlabs.org","dev@openvswitch.org"],"Delivered-To":["patchwork-incoming@legolas.ozlabs.org","ovs-dev@lists.linuxfoundation.org"],"Authentication-Results":["legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=openvswitch.org\n (client-ip=2605:bc80:3010::136; helo=smtp3.osuosl.org;\n envelope-from=ovs-dev-bounces@openvswitch.org; receiver=patchwork.ozlabs.org)","smtp1.osuosl.org;\n dmarc=none (p=none dis=none) header.from=ovn.org"],"Received":["from smtp3.osuosl.org (smtp3.osuosl.org [IPv6:2605:bc80:3010::136])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g5LXp32Y5z1yHX\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 30 Apr 2026 01:18:18 +1000 (AEST)","from localhost (localhost [127.0.0.1])\n\tby smtp3.osuosl.org (Postfix) with ESMTP id E644E6164D;\n\tWed, 29 Apr 2026 15:18:16 +0000 (UTC)","from smtp3.osuosl.org ([127.0.0.1])\n by localhost (smtp3.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP\n id ZP1fIVXQXXl9; Wed, 29 Apr 2026 15:18:15 +0000 (UTC)","from lists.linuxfoundation.org (lf-lists.osuosl.org\n [IPv6:2605:bc80:3010:104::8cd3:938])\n\tby smtp3.osuosl.org (Postfix) with ESMTPS id B08776162D;\n\tWed, 29 Apr 2026 15:18:15 +0000 (UTC)","from lf-lists.osuosl.org (localhost [127.0.0.1])\n\tby lists.linuxfoundation.org (Postfix) with ESMTP id 8CB53C04FB;\n\tWed, 29 Apr 2026 15:18:15 +0000 (UTC)","from smtp1.osuosl.org (smtp1.osuosl.org [140.211.166.138])\n by lists.linuxfoundation.org (Postfix) with ESMTP id 15357C058F\n for <dev@openvswitch.org>; Wed, 29 Apr 2026 15:18:15 +0000 (UTC)","from localhost (localhost [127.0.0.1])\n by smtp1.osuosl.org (Postfix) with ESMTP id 28895844E2\n for <dev@openvswitch.org>; Wed, 29 Apr 2026 15:18:14 +0000 (UTC)","from smtp1.osuosl.org ([127.0.0.1])\n by localhost (smtp1.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP\n id kW0m000v2_CK for <dev@openvswitch.org>;\n Wed, 29 Apr 2026 15:18:13 +0000 (UTC)","from mail-wm1-f68.google.com (mail-wm1-f68.google.com\n [209.85.128.68])\n by smtp1.osuosl.org (Postfix) with ESMTPS id D61FD844C8\n for <dev@openvswitch.org>; Wed, 29 Apr 2026 15:18:12 +0000 (UTC)","by mail-wm1-f68.google.com with SMTP id\n 5b1f17b1804b1-483487335c2so125693765e9.2\n for <dev@openvswitch.org>; Wed, 29 Apr 2026 08:18:12 -0700 (PDT)","from im-t490s.redhat.com (89-24-32-159.nat.epc.tmcz.cz.\n [89.24.32.159]) by smtp.gmail.com with ESMTPSA id\n 5b1f17b1804b1-48a7c2d3811sm32358165e9.3.2026.04.29.08.18.09\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Wed, 29 Apr 2026 08:18:09 -0700 (PDT)"],"X-Virus-Scanned":["amavis at osuosl.org","amavis at osuosl.org"],"X-Comment":"SPF check N/A for local connections -\n client-ip=2605:bc80:3010:104::8cd3:938; helo=lists.linuxfoundation.org;\n envelope-from=ovs-dev-bounces@openvswitch.org; receiver=<UNKNOWN> ","DKIM-Filter":["OpenDKIM Filter v2.11.0 smtp3.osuosl.org B08776162D","OpenDKIM Filter v2.11.0 smtp1.osuosl.org D61FD844C8"],"Received-SPF":"Pass (mailfrom) identity=mailfrom; client-ip=209.85.128.68;\n helo=mail-wm1-f68.google.com; envelope-from=i.maximets.ovn@gmail.com;\n receiver=<UNKNOWN>","DMARC-Filter":"OpenDMARC Filter v1.4.2 smtp1.osuosl.org D61FD844C8","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1777475891; x=1778080691;\n h=content-transfer-encoding:mime-version:references:in-reply-to\n :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from\n :to:cc:subject:date:message-id:reply-to;\n bh=hJJfrQeEaqhpRK/hzlkX5+ypxVhHeghBlozgM+ehlX8=;\n b=lzkp2Y6mzyDgrC+XRHG16532SOpV/zOoya9RAL+H1voSRKLnZKyaKi0yMa2HDDZIj8\n ojor4y2HUZ+rFylYtzmbOcSyyzXm/mzpwAL4Nz54Ysm0q5RjzwAOpXIEpMpLNEpoR5vU\n eOcrDkF8IpCFNKvkgKGNnaHQRyKboaz9rt/mkEvZYKOGrTUgLJqEnIJdkpGWq6v6vpxc\n Xy/85dZFwHDgR6bci70Y8weMAVo3wZvBULXlv5+e47aIqc98x93axsuhRolU2LVw6agX\n YYXTnA8gRsvYLGnaw5IwTwZgKRbnZGj0PWlwxut7i1g7FrzI6uoUQNarkfix72i0JVrU\n 8wwg==","X-Forwarded-Encrypted":"i=1;\n AFNElJ+NuRT3SKNk73Qt/h5LoVXFn+rUw438UfU+RFldM9X/DP364Onq7Gg567LCGTLkFeXByb4=@openvswitch.org","X-Gm-Message-State":"AOJu0Yzf08DD0PQ+lCo7RHPhCgqslgxLRAlGJmXHtSMJH5+Lz2UyI/hi\n bxAxbo2kWifGQt2Oe2wtwPlgyMtMoigwBpSHFDRXTrz+hr1glEikKHCC","X-Gm-Gg":"AeBDieuK3KMl83ZpO5LVJD+t7s/wz0p7y3wvpTezvSYv3DDrHK+KbGY8ZGov6vAuE2X\n /6BRgpthdS4K/xZUmdOGY4TD+XlMFu+vyzsSYRQUsRMRexPnsWYOxIi3dO3JK2hjMESNtHtxIlm\n aT8WZ6+iAS9qPH4bCncG2E543U4eIOwcecdIxIUx2MIifUB5lGONOZ94+f0deoJh4/rSvPI4psK\n s+qGpG07f3n4LU//iT8dqOwIluF88tpclY2lnnpmRdSHKWVxew2KjGcudVjoH2a6lA/Z25YrMYl\n +tgszaeY7VPx3F6GWgnHlIbjE5q/Yc+jjoSke2BxqwHhzOhi4iOe+GEtLWp/qDdpAN59v2Hk3m7\n ldapfcYoDJRuCA5bOXWP5ksG9ZWa9iEBg/LIV/WpjH4FuqBYSn2eErepdjxJwXOMBzy6tv+COQx\n ohxyl2hgJ6nJ7rMIm1ueWnlxHyN0LrcMTX6F0F9iJBWUsOw67ulj7m53K/PCjWKoUT0gsUyQ==","X-Received":"by 2002:a05:600c:4fcd:b0:488:a916:14a8 with SMTP id\n 5b1f17b1804b1-48a77af0507mr126951365e9.10.1777475890388;\n Wed, 29 Apr 2026 08:18:10 -0700 (PDT)","From":"Ilya Maximets <i.maximets@ovn.org>","To":"netdev@vger.kernel.org","Date":"Wed, 29 Apr 2026 17:16:37 +0200","Message-ID":"<20260429151756.4157670-3-i.maximets@ovn.org>","X-Mailer":"git-send-email 2.53.0","In-Reply-To":"<20260429151756.4157670-1-i.maximets@ovn.org>","References":"<20260429151756.4157670-1-i.maximets@ovn.org>","MIME-Version":"1.0","Subject":"[ovs-dev] [PATCH net 2/2] selftests: openvswitch: add tests for\n tunnel vport refcounting","X-BeenThere":"ovs-dev@openvswitch.org","X-Mailman-Version":"2.1.30","Precedence":"list","List-Id":"<ovs-dev.openvswitch.org>","List-Unsubscribe":"<https://mail.openvswitch.org/mailman/options/ovs-dev>,\n <mailto:ovs-dev-request@openvswitch.org?subject=unsubscribe>","List-Archive":"<http://mail.openvswitch.org/pipermail/ovs-dev/>","List-Post":"<mailto:ovs-dev@openvswitch.org>","List-Help":"<mailto:ovs-dev-request@openvswitch.org?subject=help>","List-Subscribe":"<https://mail.openvswitch.org/mailman/listinfo/ovs-dev>,\n <mailto:ovs-dev-request@openvswitch.org?subject=subscribe>","Cc":"dev@openvswitch.org, linux-kselftest@vger.kernel.org,\n Yuan Tan <tanyuan98@outlook.com>, linux-kernel@vger.kernel.org,\n Ilya Maximets <i.maximets@ovn.org>, Yang Yang <n05ec@lzu.edu.cn>,\n Eric Dumazet <edumazet@google.com>, Simon Horman <horms@kernel.org>,\n Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,\n Shuah Khan <shuah@kernel.org>, \"David S. Miller\" <davem@davemloft.net>","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Errors-To":"ovs-dev-bounces@openvswitch.org","Sender":"\"dev\" <ovs-dev-bounces@openvswitch.org>"},"content":"There were a few issues found with the tunnel vport types around the\nvport destruction code.  Add some basic tests, so at least we know that\nthey can be properly added and removed without obvious issues.\n\nThe test creates OVS datapath, adds a non-LWT tunnel port, makes sure\nthey are created, and then removes the datapath and waits for all the\nports to be gone.\n\nThe dpctl script had a few bugs in the none-lwt tunnel creation code,\nso fixing them as well to make the testing possible:\n- The type of the --lwt option changed in order to properly disable it.\n- Removed byte order conversion for the port numbers, as the value\n  supposed to be in the host order.\n- Added missing 'gre' choice for the tunnel type.\n\nSigned-off-by: Ilya Maximets <i.maximets@ovn.org>\n---\n .../selftests/net/openvswitch/openvswitch.sh  | 37 +++++++++++++++++++\n .../selftests/net/openvswitch/ovs-dpctl.py    | 10 ++---\n 2 files changed, 42 insertions(+), 5 deletions(-)","diff":"diff --git a/tools/testing/selftests/net/openvswitch/openvswitch.sh b/tools/testing/selftests/net/openvswitch/openvswitch.sh\nindex b327d3061ed53..3cdd953f68132 100755\n--- a/tools/testing/selftests/net/openvswitch/openvswitch.sh\n+++ b/tools/testing/selftests/net/openvswitch/openvswitch.sh\n@@ -26,6 +26,7 @@ tests=\"\n \tnetlink_checks\t\t\t\tovsnl: validate netlink attrs and settings\n \tupcall_interfaces\t\t\tovs: test the upcall interfaces\n \ttunnel_metadata\t\t\t\tovs: test extraction of tunnel metadata\n+\ttunnel_refcount\t\t\t\tovs: test tunnel vport reference cleanup\n \tdrop_reason\t\t\t\tdrop: test drop reasons are emitted\n \tpsample\t\t\t\t\tpsample: Sampling packets with psample\"\n \n@@ -830,6 +831,42 @@ test_tunnel_metadata() {\n \treturn 0\n }\n \n+test_tunnel_refcount() {\n+\tsbxname=\"test_tunnel_refcount\"\n+\tsbx_add \"${sbxname}\" || return 1\n+\n+\tovs_sbx \"${sbxname}\" ip netns add trefns || return 1\n+\ton_exit \"ovs_sbx ${sbxname} ip netns del trefns\"\n+\n+\tfor tun_type in gre vxlan geneve; do\n+\t\tinfo \"testing ${tun_type} tunnel vport refcount\"\n+\n+\t\tovs_sbx \"${sbxname}\" ip netns exec trefns \\\n+\t\t\tpython3 $ovs_base/ovs-dpctl.py \\\n+\t\t\tadd-dp dp-${tun_type} || return 1\n+\n+\t\tovs_sbx \"${sbxname}\" ip netns exec trefns \\\n+\t\t\tpython3 $ovs_base/ovs-dpctl.py \\\n+\t\t\tadd-if --no-lwt -t ${tun_type} \\\n+\t\t\tdp-${tun_type} ovs-${tun_type}0 || return 1\n+\n+\t\tovs_wait ip -netns trefns link show \\\n+\t\t\tovs-${tun_type}0 >/dev/null 2>&1 || return 1\n+\n+\t\tinfo \"deleting dp - may hang if reference counting is broken\"\n+\t\tovs_sbx \"${sbxname}\" ip netns exec trefns \\\n+\t\t\tpython3 $ovs_base/ovs-dpctl.py \\\n+\t\t\tdel-dp dp-${tun_type} &\n+\n+\t\tdev_removed() {\n+\t\t\t! ip -netns trefns link show \"$1\" >/dev/null 2>&1\n+\t\t}\n+\t\tovs_wait dev_removed dp-${tun_type} || return 1\n+\t\tovs_wait dev_removed ovs-${tun_type}0 || return 1\n+\tdone\n+\treturn 0\n+}\n+\n run_test() {\n \t(\n \ttname=\"$1\"\ndiff --git a/tools/testing/selftests/net/openvswitch/ovs-dpctl.py b/tools/testing/selftests/net/openvswitch/ovs-dpctl.py\nindex 848f61fdcee09..196813f476434 100644\n--- a/tools/testing/selftests/net/openvswitch/ovs-dpctl.py\n+++ b/tools/testing/selftests/net/openvswitch/ovs-dpctl.py\n@@ -2069,7 +2069,7 @@ class OvsVport(GenericNetlinkSocket):\n         elif vport_type == \"internal\":\n             return OvsVport.OVS_VPORT_TYPE_INTERNAL\n         elif vport_type == \"gre\":\n-            return OvsVport.OVS_VPORT_TYPE_INTERNAL\n+            return OvsVport.OVS_VPORT_TYPE_GRE\n         elif vport_type == \"vxlan\":\n             return OvsVport.OVS_VPORT_TYPE_VXLAN\n         elif vport_type == \"geneve\":\n@@ -2131,7 +2131,7 @@ class OvsVport(GenericNetlinkSocket):\n                 if not lwt:\n                     vportopt = OvsVport.ovs_vport_msg.vportopts()\n                     vportopt[\"attrs\"].append(\n-                        [\"OVS_TUNNEL_ATTR_DST_PORT\", socket.htons(dport)]\n+                        [\"OVS_TUNNEL_ATTR_DST_PORT\", dport]\n                     )\n                     msg[\"attrs\"].append(\n                         [\"OVS_VPORT_ATTR_OPTIONS\", vportopt]\n@@ -2563,7 +2563,7 @@ def print_ovsdp_full(dp_lookup_rep, ifindex, ndb=NDB(), vpl=OvsVport()):\n             if vpo:\n                 dpo = vpo.get_attr(\"OVS_TUNNEL_ATTR_DST_PORT\")\n                 if dpo:\n-                    opts += \" tnl-dport:%s\" % socket.ntohs(dpo)\n+                    opts += \" tnl-dport:%s\" % dpo\n             print(\n                 \"  port %d: %s (%s%s)\"\n                 % (\n@@ -2632,7 +2632,7 @@ def main(argv):\n         \"--ptype\",\n         type=str,\n         default=\"netdev\",\n-        choices=[\"netdev\", \"internal\", \"geneve\", \"vxlan\"],\n+        choices=[\"netdev\", \"internal\", \"gre\", \"geneve\", \"vxlan\"],\n         help=\"Interface type (default netdev)\",\n     )\n     addifcmd.add_argument(\n@@ -2645,7 +2645,7 @@ def main(argv):\n     addifcmd.add_argument(\n         \"-l\",\n         \"--lwt\",\n-        type=bool,\n+        action=argparse.BooleanOptionalAction,\n         default=True,\n         help=\"Use LWT infrastructure instead of vport (default true).\"\n     )\n","prefixes":["ovs-dev","net","2/2"]}