mirror of
https://github.com/torvalds/linux.git
synced 2026-11-07 06:17:02 +01:00
selftests: drv-net: devmem: set reuseaddr on the sender's source port
devmem.py fails on the HW runners with:
CMD[remote]: dd if=/dev/zero bs=512 count=1 2>/dev/null | socat -b 512 \
-u - TCP6:[fd00:2::1]:50051,bind=[fd00:2::2]:50051,nodelay
STDERR: socat[41018] W bind(5, {AF=10 [fd00:2::2]:50051}, 28): \
Address already in use
ncdevmem installs a 5-tuple flow rule which matches the source port, so
socat has to bind it explicitly. The port comes from rand_port(), which
checks availability on the DUT - but we bind on the remote...
That said the failure rate seems to high to be random collisions
(~2% per sub-test). It's probably TIME_WAIT sockets on the remote,
run_rx_hds() alone creates 12 of them.
Set reuseaddr so a TIME_WAIT socket does not fail the bind. Collisions
with a live socket are still possible, we'll see if they are frequent
enough to care.
Reviewed-by: Breno Leitao <leitao@debian.org>
Reviewed-by: Bobby Eshleman <bobbyeshleman@meta.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Link: https://patch.msgid.link/20260912203101.153688-1-kuba@kernel.org
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
This commit is contained in:
parent
1a523f29fe
commit
b8e9e7d82e
|
|
@ -201,7 +201,7 @@ def socat_send(cfg, port, buf_size=0):
|
|||
else:
|
||||
addr = cfg.baddr
|
||||
|
||||
suffix = f",bind={cfg.remote_baddr}:{port}"
|
||||
suffix = f",bind={cfg.remote_baddr}:{port},reuseaddr"
|
||||
|
||||
buf = ""
|
||||
if buf_size:
|
||||
|
|
@ -213,7 +213,7 @@ def socat_send(cfg, port, buf_size=0):
|
|||
|
||||
def socat_listen(cfg, port):
|
||||
"""Socat listen command for TX tests."""
|
||||
return f"socat -U - TCP{cfg.addr_ipver}-LISTEN:{port}"
|
||||
return f"socat -U - TCP{cfg.addr_ipver}-LISTEN:{port},reuseaddr"
|
||||
|
||||
|
||||
def setup_test(cfg, bin_local):
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user