All of lore.kernel.org
 help / color / mirror / Atom feed
From: David Carlier <devnexen@gmail.com>
To: mptcp@lists.linux.dev
Cc: matttbe@kernel.org, martineau@kernel.org, geliang@kernel.org,
	pabeni@redhat.com, David Carlier <devnexen@gmail.com>
Subject: [PATCH mptcp-next v8 0/4] mptcp: MSG_ERRQUEUE support on the parent socket
Date: Wed, 27 May 2026 15:07:14 +0100	[thread overview]
Message-ID: <cover.1779890764.git.devnexen@gmail.com> (raw)

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 v8 (addresses Matt v7 review on patch 2 + sashiko v7
findings on patch 3,
https://sashiko.dev/#/patchset/20260509211651.104934-1-devnexen@gmail.com):
 - patch 2/4: drop the unnecessary <net/ip.h> include (transitively
   pulled in).
 - patch 2/4: explain the v4-on-AF_INET6-msk skip in
   mptcp_setsockopt_all_sf() inline and in the commit message; note
   the case was unreachable before this patch.
 - patch 2/4: drop the unreachable default: case in
   mptcp_setsockopt_recverr().
 - patch 2/4: drop the unrelated sk_family != AF_INET6 checks added
   to mptcp_setsockopt() / mptcp_getsockopt() — the v6 dispatch path
   already errors out further down.
 - patch 3/4: drop the offending skb when sock_queue_err_skb() fails
   on the parent under rmem pressure, instead of re-queueing it on
   the subflow. (sashiko v7 #2, High)
 - patch 3/4: remove mptcp_subflow_errqueue_pending() and its
   reference in mptcp_poll(). No skbs are retained on subflow queues
   anymore, so the lockless conn_list walk is no longer needed.
   (sashiko v7 #1, Critical)
 - patch 3/4: drop mptcp_recv_error() — with no on-subflow retention,
   the MSG_ERRQUEUE branch in mptcp_recvmsg() forwards directly to
   inet_recv_error().

v7: https://lore.kernel.org/mptcp/20260509211651.104934-1-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                          |  47 +++++-
 net/mptcp/sockopt.c                           | 136 ++++++++++++++----
 .../selftests/net/mptcp/mptcp_sockopt.c       |  55 +++++++
 3 files changed, 209 insertions(+), 29 deletions(-)


base-commit: 8b808b715575367c7e00bcd76a597b7b57d674b8
--
2.53.0


             reply	other threads:[~2026-05-27 14:07 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-05-27 14:07 David Carlier [this message]
2026-05-27 14:07 ` [PATCH mptcp-next v8 1/4] mptcp: sockopt: factor inet_flags propagation into a mask David Carlier
2026-05-27 14:07 ` [PATCH mptcp-next v8 2/4] mptcp: propagate RECVERR sockopts to subflows David Carlier
2026-05-27 14:07 ` [PATCH mptcp-next v8 3/4] mptcp: support MSG_ERRQUEUE on the parent socket David Carlier
2026-05-27 14:07 ` [PATCH mptcp-next v8 4/4] selftests: mptcp: cover IP_RECVERR sockopt propagation David Carlier
2026-05-27 15:14 ` [PATCH mptcp-next v8 0/4] mptcp: MSG_ERRQUEUE support on the parent socket MPTCP CI

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=cover.1779890764.git.devnexen@gmail.com \
    --to=devnexen@gmail.com \
    --cc=geliang@kernel.org \
    --cc=martineau@kernel.org \
    --cc=matttbe@kernel.org \
    --cc=mptcp@lists.linux.dev \
    --cc=pabeni@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.