]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
selftests: drv-net: iou-zcrx: wait for memory provider cleanup
authorJakub Kicinski <kuba@kernel.org>
Fri, 27 Feb 2026 17:13:03 +0000 (09:13 -0800)
committerJakub Kicinski <kuba@kernel.org>
Tue, 3 Mar 2026 02:21:15 +0000 (18:21 -0800)
commit27c4ab943882c8ca7d3c56241cd969da6b5e6727
tree778b20673b5c6153e0b2bb90642ff6bfd90baa63
parent8341c989ac77d712c7d6e2bce29e8a4bcb2eeae4
selftests: drv-net: iou-zcrx: wait for memory provider cleanup

io_uring defers zcrx context teardown to the iou_exit workqueue.

  # ps aux | grep iou
  ...    07:58   0:00 [kworker/u19:0-iou_exit]
  ... 07:58   0:00 [kworker/u18:2-iou_exit]

When the test's receiver process exits, bkg() returns but the memory
provider may still be attached to the rx queue. The subsequent defer()
that restores tcp-data-split then fails:

  # Exception while handling defer / cleanup (callback 3 of 3)!
  # Defer Exception| net.ynl.pyynl.lib.ynl.NlError:
      Netlink error: can't disable tcp-data-split while device has
                     memory provider enabled: Invalid argument
  not ok 1 iou-zcrx.test_zcrx.single

Add a helper that polls netdev queue-get until no rx queue reports
the io-uring memory provider attribute. Register it as a defer()
just before tcp-data-split is restored as a "barrier".

Reviewed-by: Dragos Tatulea <dtatulea@nvidia.com>
Link: https://patch.msgid.link/20260227171305.2848240-2-kuba@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
tools/testing/selftests/drivers/net/hw/iou-zcrx.py