All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH mptcp-next v12 0/4] mptcp: MSG_ERRQUEUE support on the parent socket
@ 2026-07-30  7:12 David Carlier
  2026-07-30  7:12 ` [PATCH mptcp-next v12 1/4] mptcp: support MSG_ERRQUEUE " David Carlier
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: David Carlier @ 2026-07-30  7:12 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
through the standard inet ABI, 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 splices subflow err-skbs onto the parent's sk_error_queue at
error-report time. All forwarded events go through sock_queue_err_skb(),
which re-homes skb->sk onto the parent and charges sk_rmem_alloc, so the
parent's error queue stays bounded by sk_rcvbuf and is dropped under rmem
pressure, matching tcp's tx-timestamp path and ip_icmp_error() /
ipv6_icmp_error(). 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 2 factors the existing inet_flags subflow-propagation hard-coded
list into a mask, so the next patch can extend it without churn.

Patch 3 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 4 is a selftest covering the propagation path.

Changes in v12 (addresses Paolo's v11 review):
 - reordered the series so the core MSG_ERRQUEUE infrastructure lands
   first, before the sockopt plumbing that exposes it to user space.
   The former patch 3/4 is now 1/4.
 - 1/4: narrow mptcp_errqueue_skb_forwardable() to
   SO_EE_ORIGIN_TIMESTAMPING. SO_EE_ORIGIN_ZEROCOPY and
   SO_EE_ORIGIN_LOCAL events cannot be generated on an MPTCP parent
   today, so the helper only needs extending if and when they can be.
 - 1/4: trim the block comment above sock_queue_err_skb() and the
   matching changelog paragraphs, now redundant with the narrower
   filter.
 - 2/4: reverse christmas tree declaration ordering in
   sync_socket_options().
 - dropped the Suggested-by: Paolo Abeni tags from patches 1-3.
 - rebased on current export.

v11: https://lore.kernel.org/mptcp/20260531145955.322337-1-devnexen@gmail.com/
v10: https://lore.kernel.org/mptcp/20260529174524.260199-1-devnexen@gmail.com/

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

 net/mptcp/protocol.c                          |  54 +++++--
 net/mptcp/sockopt.c                           | 153 +++++++++++++++---
 .../selftests/net/mptcp/mptcp_sockopt.c       |  55 +++++++
 3 files changed, 228 insertions(+), 34 deletions(-)


base-commit: 6201be839b36e8dd22a23b9b367388ed900a257f
-- 
2.53.0


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

end of thread, other threads:[~2026-07-30  8:23 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-30  7:12 [PATCH mptcp-next v12 0/4] mptcp: MSG_ERRQUEUE support on the parent socket David Carlier
2026-07-30  7:12 ` [PATCH mptcp-next v12 1/4] mptcp: support MSG_ERRQUEUE " David Carlier
2026-07-30  7:12 ` [PATCH mptcp-next v12 2/4] mptcp: sockopt: factor inet_flags propagation into a mask David Carlier
2026-07-30  7:12 ` [PATCH mptcp-next v12 3/4] mptcp: propagate RECVERR sockopts to subflows David Carlier
2026-07-30  7:12 ` [PATCH mptcp-next v12 4/4] selftests: mptcp: cover IP_RECVERR sockopt propagation David Carlier
2026-07-30  8:23 ` [PATCH mptcp-next v12 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.