From: Jakub Kicinski <kuba@kernel.org>
To: davem@davemloft.net
Cc: netdev@vger.kernel.org, edumazet@google.com, pabeni@redhat.com,
andrew+netdev@lunn.ch, horms@kernel.org, daniel.zahka@gmail.com,
willemdebruijn.kernel@gmail.com, donald.hunter@gmail.com,
shuah@kernel.org, linux-kselftest@vger.kernel.org,
Jakub Kicinski <kuba@kernel.org>
Subject: [PATCH net-next 5/6] selftests: drv-net: psp: factor out creating a netkit in the test netns
Date: Sat, 12 Sep 2026 13:04:25 -0700 [thread overview]
Message-ID: <20260912200426.121025-6-kuba@kernel.org> (raw)
In-Reply-To: <20260912200426.121025-1-kuba@kernel.org>
The netkit removal test builds a disposable netkit pair and moves its
peer into the test namespace. The next commit needs a second associated
device there, so move that to a helper. No functional change, other
than looking the new peer up among all netkit devices rather than the
two the environment created, which is what makes it reusable.
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
---
tools/testing/selftests/drivers/net/psp.py | 60 ++++++++++++----------
1 file changed, 33 insertions(+), 27 deletions(-)
diff --git a/tools/testing/selftests/drivers/net/psp.py b/tools/testing/selftests/drivers/net/psp.py
index 43780efb84ed..d44d2c83473e 100755
--- a/tools/testing/selftests/drivers/net/psp.py
+++ b/tools/testing/selftests/drivers/net/psp.py
@@ -798,25 +798,18 @@ from lib.py import ip
ksft_true(not found, "Device should not be in assoc-list after disassociation")
-def _psp_dev_assoc_cleanup_on_netkit_del(cfg):
- """Test that assoc-list is cleared when associated netkit is deleted.
+def _add_netkit_guest(cfg, host_name, guest_name):
+ """Create a netkit pair and move its peer into the test namespace.
- Creates a disposable netkit pair for this test to avoid destroying
- the shared environment.
+ Returns the peer's ifindex there and the defer() deleting the pair.
"""
- _init_psp_dev(cfg, True)
- defer(delattr, cfg, 'psp_dev_id')
- defer(delattr, cfg, 'psp_info')
+ existing = {link['ifindex'] for link in ip("-d link show", json=True)
+ if link.get('linkinfo', {}).get('info_kind') == 'netkit'}
- existing = {cfg.nk_host_ifindex, cfg.nk_guest_ifindex}
-
- # Create a temporary netkit pair
- tmp_host_name = "tmp_nk_host"
- tmp_guest_name = "tmp_nk_guest"
rtnl = RtnlFamily()
rtnl.newlink(
{
- "ifname": tmp_host_name,
+ "ifname": host_name,
"linkinfo": {
"kind": "netkit",
"data": {
@@ -828,25 +821,38 @@ from lib.py import ip
},
flags=[Netlink.NLM_F_CREATE, Netlink.NLM_F_EXCL],
)
- cleanup_netkit = defer(ip, f"link del {tmp_host_name}")
+ cleanup = defer(ip, f"link del {host_name}")
# Find the peer by diffing against existing netkit ifindexes
all_links = ip("-d link show", json=True)
- tmp_peer = [link for link in all_links
- if link.get('linkinfo', {}).get('info_kind') == 'netkit'
- and link['ifindex'] not in existing
- and link['ifname'] != tmp_host_name]
- ksft_eq(len(tmp_peer), 1,
- "Failed to find temporary netkit peer")
- guest_name = tmp_peer[0]['ifname']
+ peer = [link for link in all_links
+ if link.get('linkinfo', {}).get('info_kind') == 'netkit'
+ and link['ifindex'] not in existing
+ and link['ifname'] != host_name]
+ ksft_eq(len(peer), 1, "Failed to find the new netkit peer")
# Rename and move guest end into the test namespace
- ip(f"link set dev {guest_name} name {tmp_guest_name}")
- ip(f"link set dev {tmp_guest_name} netns {cfg.netns.name}")
- tmp_guest_dev = ip(f"link show dev {tmp_guest_name}",
- json=True, ns=cfg.netns)[0]
- tmp_guest_ifindex = tmp_guest_dev['ifindex']
- ip(f"link set dev {tmp_guest_name} up", ns=cfg.netns)
+ ip(f"link set dev {peer[0]['ifname']} name {guest_name}")
+ ip(f"link set dev {guest_name} netns {cfg.netns.name}")
+ guest_dev = ip(f"link show dev {guest_name}", json=True, ns=cfg.netns)[0]
+ ip(f"link set dev {guest_name} up", ns=cfg.netns)
+
+ return guest_dev['ifindex'], cleanup
+
+
+def _psp_dev_assoc_cleanup_on_netkit_del(cfg):
+ """Test that assoc-list is cleared when associated netkit is deleted.
+
+ Creates a disposable netkit pair for this test to avoid destroying
+ the shared environment.
+ """
+ _init_psp_dev(cfg, True)
+ defer(delattr, cfg, 'psp_dev_id')
+ defer(delattr, cfg, 'psp_info')
+
+ tmp_host_name = "tmp_nk_host"
+ tmp_guest_ifindex, cleanup_netkit = _add_netkit_guest(cfg, tmp_host_name,
+ "tmp_nk_guest")
# Associate PSP device with the temporary guest interface
cfg.pspnl.dev_assoc({'id': cfg.psp_dev_id,
--
2.55.0
next prev parent reply other threads:[~2026-09-12 20:04 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-12 20:04 [PATCH net-next 0/6] psp: correct notifications and device info around device assoc Jakub Kicinski
2026-09-12 20:04 ` [PATCH net-next 1/6] selftests: drv-net: psp: fix linter issues Jakub Kicinski
2026-09-14 11:09 ` Daniel Zahka
2026-09-12 20:04 ` [PATCH net-next 2/6] psp: don't report the main netdevice's ifindex to associated namespaces Jakub Kicinski
2026-09-14 12:02 ` Daniel Zahka
2026-09-14 23:30 ` Jakub Kicinski
2026-09-15 6:04 ` netdev-bot+sashiko
2026-09-15 16:17 ` Jakub Kicinski
2026-09-12 20:04 ` [PATCH net-next 3/6] selftests: drv-net: psp: check the ifindex an associated netns sees Jakub Kicinski
2026-09-14 12:11 ` Daniel Zahka
2026-09-12 20:04 ` [PATCH net-next 4/6] psp: notify about a disassociation once it has happened Jakub Kicinski
2026-09-14 12:42 ` Daniel Zahka
2026-09-15 6:04 ` netdev-bot+sashiko
2026-09-15 16:18 ` Jakub Kicinski
2026-09-12 20:04 ` Jakub Kicinski [this message]
2026-09-14 12:59 ` [PATCH net-next 5/6] selftests: drv-net: psp: factor out creating a netkit in the test netns Daniel Zahka
2026-09-12 20:04 ` [PATCH net-next 6/6] selftests: drv-net: psp: check the PSP disassociation notifications Jakub Kicinski
2026-09-14 13:05 ` Daniel Zahka
2026-09-15 6:04 ` netdev-bot+sashiko
2026-09-15 16:19 ` Jakub Kicinski
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260912200426.121025-6-kuba@kernel.org \
--to=kuba@kernel.org \
--cc=andrew+netdev@lunn.ch \
--cc=daniel.zahka@gmail.com \
--cc=davem@davemloft.net \
--cc=donald.hunter@gmail.com \
--cc=edumazet@google.com \
--cc=horms@kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=shuah@kernel.org \
--cc=willemdebruijn.kernel@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).