All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH mptcp-next v9 0/4] mptcp: MSG_ERRQUEUE support on the parent socket
@ 2026-05-28  5:54 David Carlier
  2026-05-28  5:54 ` [PATCH mptcp-next v9 1/4] mptcp: sockopt: factor inet_flags propagation into a mask David Carlier
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: David Carlier @ 2026-05-28  5:54 UTC (permalink / raw)
  To: mptcp; +Cc: matttbe, martineau, geliang, pabeni, David Carlier

This series lets MPTCP applications use poll(EPOLLERR) and
recvmsg(MSG_ERRQUEUE) on the parent socket to drain TX timestamps,
MSG_ZEROCOPY completion notifications and SO_EE_ORIGIN_LOCAL events
that are produced by the subflows, the same way they would on a plain
TCP socket. ICMP-derived errors stay on the subflow queue: the legacy
RECVERR ABI cannot convey their per-subflow peer identity, and they
are intended for a future MPTCP_RECERR channel.

Patch 1 factors the existing inet_flags subflow-propagation hard-coded
list into a mask, so subsequent patches can extend it without churn.

Patch 2 makes IP_RECVERR / IPV6_RECVERR (and the RFC4884 variants)
propagate to the subflows. The parent stores the bit so MPTCP-aware
helpers can branch on it.

Patch 3 splices subflow err-skbs onto the parent's sk_error_queue at
error-report time. When the parent's err queue is full, the splice
drops the offending skb (matching ip_icmp_error() / ipv6_icmp_error()
behaviour). mptcp_recvmsg(MSG_ERRQUEUE) forwards directly to
inet_recv_error(), and mptcp_poll() advertises EPOLLERR purely on the
parent's sk_err / sk_error_queue, matching tcp_poll().

Patch 4 is a selftest covering the propagation path.

Changes in v9 (addresses sashiko v8 review,
https://sashiko.dev/#/patchset/cover.1779890764.git.devnexen@gmail.com):
 - patch 2/4: don't propagate the v6-only RECVERR6 bits onto v4
   subflows in sync_socket_options(); matches the SOL_IPV6 skip already
   performed in mptcp_setsockopt_all_sf(). The bits were never read on
   an AF_INET subflow, but left existing and newly-joined subflows
   inconsistent. (sashiko v8, Low)
 - patch 3/4: don't break the __mptcp_error_report() subflow scan after
   a bare errqueue splice; only break on a real sk_err. Splicing one
   subflow's error queue no longer short-circuits the loop and leaves
   the remaining subflows' pending notifications undrained. (sashiko
   v8, High)

v8: https://lore.kernel.org/mptcp/cover.1779890764.git.devnexen@gmail.com/

David Carlier (4):
  mptcp: sockopt: factor inet_flags propagation into a mask
  mptcp: propagate RECVERR sockopts to subflows
  mptcp: support MSG_ERRQUEUE on the parent socket
  selftests: mptcp: cover IP_RECVERR sockopt propagation

 net/mptcp/protocol.c                          |  55 +++++--
 net/mptcp/sockopt.c                           | 144 +++++++++++++++---
 .../selftests/net/mptcp/mptcp_sockopt.c       |  55 +++++++
 3 files changed, 221 insertions(+), 33 deletions(-)


base-commit: 6ae41d6df6c12883277b2c9ab490b5c8b1a4fc85
-- 
2.53.0


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

end of thread, other threads:[~2026-05-28  7:02 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-28  5:54 [PATCH mptcp-next v9 0/4] mptcp: MSG_ERRQUEUE support on the parent socket David Carlier
2026-05-28  5:54 ` [PATCH mptcp-next v9 1/4] mptcp: sockopt: factor inet_flags propagation into a mask David Carlier
2026-05-28  5:54 ` [PATCH mptcp-next v9 2/4] mptcp: propagate RECVERR sockopts to subflows David Carlier
2026-05-28  5:54 ` [PATCH mptcp-next v9 3/4] mptcp: support MSG_ERRQUEUE on the parent socket David Carlier
2026-05-28  5:54 ` [PATCH mptcp-next v9 4/4] selftests: mptcp: cover IP_RECVERR sockopt propagation David Carlier
2026-05-28  7:02 ` [PATCH mptcp-next v9 0/4] mptcp: MSG_ERRQUEUE support on the parent socket MPTCP CI

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.