Thread (22 messages) 22 messages, 2 authors, 2026-04-01

Re: [PATCH net-next v10 03/14] net: Add lease info to queue-get response

From: Nikolay Aleksandrov <razor@blackwall.org>
Date: 2026-03-28 06:44:23
Also in: bpf

On 27/03/2026 14:10, Daniel Borkmann wrote:
Populate nested lease info to the queue-get response that returns the
ifindex, queue id with type and optionally netns id if the device
resides in a different netns.

Example with ynl client when using AF_XDP via queue leasing:

   # ip a
   [...]
   4: enp10s0f0np0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 xdp/id:24 qdisc mq state UP group default qlen 1000
     link/ether e8:eb:d3:a3:43:f6 brd ff:ff:ff:ff:ff:ff
     inet 10.0.0.2/24 scope global enp10s0f0np0
        valid_lft forever preferred_lft forever
     inet6 fe80::eaeb:d3ff:fea3:43f6/64 scope link proto kernel_ll
        valid_lft forever preferred_lft forever
   [...]

   # ethtool -i enp10s0f0np0
   driver: mlx5_core
   [...]

   # ynl --family netdev --output-json --do queue-get \
         --json '{"ifindex": 4, "id": 15, "type": "rx"}'
   {'id': 15,
    'ifindex': 4,
    'lease': {'ifindex': 8, 'netns-id': 0, 'queue': {'id': 1, 'type': 'rx'}},
    'napi-id': 8227,
    'type': 'rx',
    'xsk': {}}

   # ip netns list
   foo (id: 0)

   # ip netns exec foo ip a
   [...]
   8: nk@NONE: <BROADCAST,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
       link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
       inet6 fe80::200:ff:fe00:0/64 scope link proto kernel_ll
          valid_lft forever preferred_lft forever
   [...]

   # ip netns exec foo ethtool -i nk
   driver: netkit
   [...]

   # ip netns exec foo ls /sys/class/net/nk/queues/
   rx-0  rx-1  tx-0

   # ip netns exec foo ynl --family netdev --output-json --do queue-get \
         --json '{"ifindex": 8, "id": 1, "type": "rx"}'
   {"id": 1, "type": "rx", "ifindex": 8, "xsk": {}}

Note that the caller of netdev_nl_queue_fill_one() holds the netdevice
lock. For the queue-get we do not lock both devices. When queues get
{un,}leased, both devices are locked, thus if __netif_get_rx_queue_lease()
returns a lease pointer, it points to a valid device. The netns-id is
fetched via peernet2id_alloc() similarly as done in OVS.

Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Co-developed-by: David Wei <redacted>
Signed-off-by: David Wei <redacted>
---
  include/net/netdev_rx_queue.h | 14 ++++++++
  net/core/netdev-genl.c        | 66 ++++++++++++++++++++++++++++++++---
  net/core/netdev_rx_queue.c    | 54 ++++++++++++++++++++++++++++
  3 files changed, 130 insertions(+), 4 deletions(-)

Reviewed-by: Nikolay Aleksandrov <razor@blackwall.org>
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help