All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH net-next v03 0/3] net: af_packet: allow joining a fanout when link is down
@ 2024-10-10 10:25 Gur Stavi
  2024-10-10 10:25 ` [PATCH net-next v03 1/3] af_packet: allow fanout_add when socket is not RUNNING Gur Stavi
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Gur Stavi @ 2024-10-10 10:25 UTC (permalink / raw)
  To: Gur Stavi
  Cc: netdev, linux-kernel, David S. Miller, Eric Dumazet,
	Jakub Kicinski, Paolo Abeni, Shuah Khan, Willem de Bruijn,
	linux-kselftest

PACKET socket can retain its fanout membership through link down and up
and leave a fanout while closed regardless of link state.
However, socket was forbidden from joining a fanout while it was not
RUNNING.

This scenario was identified while studying DPDK pmd_af_packet_drv.
Since sockets are only created during initialization, there is no reason
to fail the initialization if a single link is temporarily down.

This patch allows PACKET socket to join a fanout while not RUNNING.

Selftest psock_fanout is extended to test this "fanout while link down"
scenario.

Selftest psock_fanout is also extended to test fanout create/join by
socket that did not bind or specified a protocol, which carries an
implicit bind.

This is the only test that was performed.

Changes:

V03:
* psock_fanout: add test for joining fanout with unbound socket.
* Test that socket can receive packets before adding it to a fanout match.
  This is kind of replaces the RUNNING test that was removed.
* Initialize po->ifindex in packet_create. To -1 if no protocol is specified
  and add an explicit initialization to 0 if protocol is specified.
* Refactor relevant code in fanout_add within bind_lock, as a sequence of
  if {} else if {}, in order to reduce indentation of nested if statements and
  provide specific error codes.

V02: https://lore.kernel.org/netdev/cover.1728382839.git.gur.stavi@huawei.com
* psock_fanout: use explicit loopback up/down instead of toggle.
* psock_fanout: don't try to restore loopback state on failure.
* Rephrase commit message about "leaving a fanout".

V01: https://lore.kernel.org/netdev/cover.1728303615.git.gur.stavi@huawei.com/

Gur Stavi (3):
  af_packet: allow fanout_add when socket is not RUNNING
  selftests: net/psock_fanout: socket joins fanout when link is down
  selftests: net/psock_fanout: unbound socket fanout

 net/packet/af_packet.c                     | 35 ++++++----
 tools/testing/selftests/net/psock_fanout.c | 78 +++++++++++++++++++++-
 2 files changed, 96 insertions(+), 17 deletions(-)


base-commit: 36efaca9cb28a893cad98f0448c39a8b698859e2
-- 
2.45.2


^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2024-10-10 16:01 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-10-10 10:25 [PATCH net-next v03 0/3] net: af_packet: allow joining a fanout when link is down Gur Stavi
2024-10-10 10:25 ` [PATCH net-next v03 1/3] af_packet: allow fanout_add when socket is not RUNNING Gur Stavi
2024-10-10 10:38   ` Gur Stavi
2024-10-10 13:23   ` Willem de Bruijn
2024-10-10 16:00     ` Gur Stavi
2024-10-10 10:25 ` [PATCH net-next v03 2/3] selftests: net/psock_fanout: socket joins fanout when link is down Gur Stavi
2024-10-10 10:25 ` [PATCH net-next v03 3/3] selftests: net/psock_fanout: unbound socket fanout Gur Stavi

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.