[PATCH v2 1/3] ipv6: extract and export ip6_sock_set_tclass helpers

Geliang Tang geliang at kernel.org
Sat Aug 8 17:31:12 PDT 2026


Hi Jakub,

On Sat, 2026-08-08 at 12:59 -0700, Jakub Kicinski wrote:
> On Sat,  8 Aug 2026 14:54:59 +0800 Geliang Tang wrote:
> > IPV6_TCLASS handling in do_ipv6_setsockopt() inlines the same ECN
> > mask
> > logic and inet6_sk(sk)->tclass write that callers need when
> > propagating
> > a tclass value onto a newly created socket.
> > 
> > Pull this into small helpers
> > __ip6_sock_set_tclass()/ip6_sock_set_tclass()
> > exported via <net/ipv6.h>, so external modules can apply
> > IPV6_TCLASS
> > without duplicating the ECN handling.
> > 
> > __ip6_sock_set_tclass() will be used by MPTCP's sockopt
> > implementation
> > (similar to __ip_sock_set_tos),
> 
> not part of this series

Exactly. The export of __ip6_sock_set_tclass() is not part of this
series, it belongs to the MPTCP series that adds IPV6_TCLASS support. I
will move this export to that series instead.

> 
> > while ip6_sock_set_tclass() will be used
> > by nvme-tcp (similar to ip_sock_set_tos).
> 
> setsockopt already supports generic kernel callers, sth like:
> 
>    do_sock_setsockopt(sock, false, SOL_IPV6, IPV6_TCLASS,
>   		      KERNEL_SOCKPTR(&val), sizeof(val));
> 
> ? Please don't export helpers for every single sockopt.

That is exactly what I planned to do in a follow-up patch - please see
my reply to [1].

The goal is to make NVMe work with both TCP and MPTCP going forward. To
achieve that, all sockopt calls in NVMe need to be switched to use
do_sock_setsockopt() instead of calling individual sockopt helpers.
This approach abstracts away the protocol differences, so NVMe no
longer needs to care whether it is dealing with TCP or MPTCP.

Even when MPTCP is not involved, switching to do_sock_setsockopt()
provides a general improvement to the code. I will include this "switch
NVMe to do_sock_setsockopt" patch in v3 of this series.

Thanks,
-Geliang

[1]https://patchwork.kernel.org/project/linux-nvme/patch/a1fa5dd3ebb0cafe1bf7948bf2a96436e9452e19.1779934709.git.tanggeliang@kylinos.cn/






More information about the Linux-nvme mailing list