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: 7+ 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-12 20:04 ` [PATCH net-next 2/6] psp: don't report the main netdevice's ifindex to associated namespaces 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-12 20:04 ` [PATCH net-next 4/6] psp: notify about a disassociation once it has happened Jakub Kicinski
2026-09-12 20:04 ` Jakub Kicinski [this message]
2026-09-12 20:04 ` [PATCH net-next 6/6] selftests: drv-net: psp: check the PSP disassociation notifications 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.