From: Daniel Borkmann <daniel@iogearbox.net>
To: netdev@vger.kernel.org
Cc: bpf@vger.kernel.org, kuba@kernel.org, davem@davemloft.net,
razor@blackwall.org, pabeni@redhat.com, willemb@google.com,
sdf@fomichev.me, john.fastabend@gmail.com, martin.lau@kernel.org,
jordan@jrife.io, maciej.fijalkowski@intel.com,
magnus.karlsson@intel.com, dw@davidwei.uk, toke@redhat.com,
yangzhenze@bytedance.com, wangdongdong.6@bytedance.com
Subject: [PATCH net-next v5 15/16] selftests/net: Make NetDrvContEnv support queue leasing
Date: Fri, 9 Jan 2026 22:26:31 +0100 [thread overview]
Message-ID: <20260109212632.146920-16-daniel@iogearbox.net> (raw)
In-Reply-To: <20260109212632.146920-1-daniel@iogearbox.net>
From: David Wei <dw@davidwei.uk>
Add a new parameter `lease` to NetDrvContEnv that sets up queue leasing
in the env.
The NETIF also has some ethtool parameters changed to support memory
provider tests. This is needed in NetDrvContEnv rather than individual
test cases since the cleanup to restore NETIF can't be done, until the
netns in the env is gone.
Signed-off-by: David Wei <dw@davidwei.uk>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
---
.../selftests/drivers/net/lib/py/env.py | 45 ++++++++++++++++++-
1 file changed, 43 insertions(+), 2 deletions(-)
diff --git a/tools/testing/selftests/drivers/net/lib/py/env.py b/tools/testing/selftests/drivers/net/lib/py/env.py
index 3cc94d1e53ed..705bb09066fb 100644
--- a/tools/testing/selftests/drivers/net/lib/py/env.py
+++ b/tools/testing/selftests/drivers/net/lib/py/env.py
@@ -7,8 +7,9 @@ import time
from pathlib import Path
from lib.py import KsftSkipEx, KsftXfailEx
from lib.py import ksft_setup, wait_file
-from lib.py import cmd, ethtool, ip, CmdExitFailure, bpftool
+from lib.py import cmd, defer, ethtool, ip, CmdExitFailure, bpftool
from lib.py import NetNS, NetdevSimDev
+from lib.py import NetdevFamily, EthtoolFamily
from .remote import Remote
@@ -295,7 +296,7 @@ class NetDrvContEnv(NetDrvEpEnv):
between the physical interface and a network namespace.
"""
- def __init__(self, src_path, nk_rxqueues=1, **kwargs):
+ def __init__(self, src_path, lease=False, **kwargs):
super().__init__(src_path, **kwargs)
self.require_ipver("6")
@@ -303,6 +304,9 @@ class NetDrvContEnv(NetDrvEpEnv):
if not local_prefix:
raise KsftSkipEx("LOCAL_PREFIX_V6 required")
+ self.netdevnl = NetdevFamily()
+ self.ethnl = EthtoolFamily()
+
local_prefix = local_prefix.rstrip("/64").rstrip("::").rstrip(":")
self.ipv6_prefix = f"{local_prefix}::"
self.nk_host_ipv6 = f"{local_prefix}::2:1"
@@ -313,7 +317,11 @@ class NetDrvContEnv(NetDrvEpEnv):
self._nk_guest_ifname = None
self._tc_attached = False
self._bpf_prog_id = None
+ self._lease = lease
+ nk_rxqueues = 1
+ if lease:
+ nk_rxqueues = 2
ip(f"link add type netkit mode l2 forward peer forward numrxqueues {nk_rxqueues}")
all_links = ip("-d link show", json=True)
@@ -330,6 +338,32 @@ class NetDrvContEnv(NetDrvEpEnv):
self.nk_host_ifindex = netkit_links[1]['ifindex']
self.nk_guest_ifindex = netkit_links[0]['ifindex']
+ if self._lease:
+ channels = self.ethnl.channels_get({'header': {'dev-index': self.ifindex}})
+ channels = channels['combined-count']
+ if channels < 2:
+ raise KsftSkipEx('Test requires NETIF with at least 2 combined channels')
+
+ rings = self.ethnl.rings_get({'header': {'dev-index': self.ifindex}})
+ self._rx_rings = rings['rx']
+ self._hds_thresh = rings.get('hds-thresh', 0)
+ self.ethnl.rings_set({'header': {'dev-index': self.ifindex},
+ 'tcp-data-split': 'enabled',
+ 'hds-thresh': 0,
+ 'rx': 64})
+ self.src_queue = channels - 1
+ bind_result = self.netdevnl.queue_create(
+ {
+ "ifindex": self.nk_guest_ifindex,
+ "type": "rx",
+ "lease": {
+ "ifindex": self.ifindex,
+ "queue": {"id": self.src_queue, "type": "rx"},
+ },
+ }
+ )
+ self.nk_queue = bind_result['id']
+
self.netns = NetNS()
ip(f"link set dev {self._nk_guest_ifname} netns {self.netns.name}")
ip(f"link set dev {self._nk_host_ifname} up")
@@ -389,4 +423,11 @@ class NetDrvContEnv(NetDrvEpEnv):
del self.netns
self.netns = None
+ if self._lease:
+ self.ethnl.rings_set({'header': {'dev-index': self.ifindex},
+ 'tcp-data-split': 'unknown',
+ 'hds-thresh': self._hds_thresh,
+ 'rx': self._rx_rings})
+ self._lease = False
+
super().__del__()
--
2.43.0
next prev parent reply other threads:[~2026-01-09 21:27 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-01-09 21:26 [PATCH net-next v5 00/16] netkit: Support for io_uring zero-copy and AF_XDP Daniel Borkmann
2026-01-09 21:26 ` [PATCH net-next v5 01/16] net: Add queue-create operation Daniel Borkmann
2026-01-09 21:26 ` [PATCH net-next v5 02/16] net: Implement netdev_nl_queue_create_doit Daniel Borkmann
2026-01-11 20:55 ` Stanislav Fomichev
2026-01-12 9:15 ` Daniel Borkmann
2026-01-09 21:26 ` [PATCH net-next v5 03/16] net: Add lease info to queue-get response Daniel Borkmann
2026-01-13 3:53 ` [net-next,v5,03/16] " Jakub Kicinski
2026-01-13 10:35 ` Daniel Borkmann
2026-01-09 21:26 ` [PATCH net-next v5 04/16] net, ethtool: Disallow leased real rxqs to be resized Daniel Borkmann
2026-01-09 21:26 ` [PATCH net-next v5 05/16] net: Proxy net_mp_{open,close}_rxq for leased queues Daniel Borkmann
2026-01-09 21:26 ` [PATCH net-next v5 06/16] net: Proxy netdev_queue_get_dma_dev " Daniel Borkmann
2026-01-09 21:26 ` [PATCH net-next v5 07/16] xsk: Extend xsk_rcv_check validation Daniel Borkmann
2026-01-09 21:26 ` [PATCH net-next v5 08/16] xsk: Proxy pool management for leased queues Daniel Borkmann
2026-01-09 21:26 ` [PATCH net-next v5 09/16] netkit: Add single device mode for netkit Daniel Borkmann
2026-01-09 21:26 ` [PATCH net-next v5 10/16] netkit: Implement rtnl_link_ops->alloc and ndo_queue_create Daniel Borkmann
2026-01-09 21:26 ` [PATCH net-next v5 11/16] netkit: Add netkit notifier to check for unregistering devices Daniel Borkmann
2026-01-13 3:53 ` [net-next,v5,11/16] " Jakub Kicinski
2026-01-09 21:26 ` [PATCH net-next v5 12/16] netkit: Add xsk support for af_xdp applications Daniel Borkmann
2026-01-09 21:26 ` [PATCH net-next v5 13/16] selftests/net: Add bpf skb forwarding program Daniel Borkmann
2026-01-11 20:59 ` Stanislav Fomichev
2026-01-13 16:57 ` David Wei
2026-01-09 21:26 ` [PATCH net-next v5 14/16] selftests/net: Add env for container based tests Daniel Borkmann
2026-01-13 3:58 ` Jakub Kicinski
2026-01-13 16:58 ` David Wei
2026-01-09 21:26 ` Daniel Borkmann [this message]
2026-01-13 3:59 ` [PATCH net-next v5 15/16] selftests/net: Make NetDrvContEnv support queue leasing Jakub Kicinski
2026-01-13 16:58 ` David Wei
2026-01-09 21:26 ` [PATCH net-next v5 16/16] selftests/net: Add netkit container tests Daniel Borkmann
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=20260109212632.146920-16-daniel@iogearbox.net \
--to=daniel@iogearbox.net \
--cc=bpf@vger.kernel.org \
--cc=davem@davemloft.net \
--cc=dw@davidwei.uk \
--cc=john.fastabend@gmail.com \
--cc=jordan@jrife.io \
--cc=kuba@kernel.org \
--cc=maciej.fijalkowski@intel.com \
--cc=magnus.karlsson@intel.com \
--cc=martin.lau@kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=razor@blackwall.org \
--cc=sdf@fomichev.me \
--cc=toke@redhat.com \
--cc=wangdongdong.6@bytedance.com \
--cc=willemb@google.com \
--cc=yangzhenze@bytedance.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