From nobody Fri Apr 19 18:05:13 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6638:3394:0:0:0:0 with SMTP id h20csp1713183jav; Tue, 26 Oct 2021 19:42:09 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyn0IbQWB+3XSFfHDHGt1ZPZKJOGfuuc2/XXgOIl33j1GHcm443Rhaim+1P0gSlA9Fn/Us2 X-Received: by 2002:a4a:ca96:: with SMTP id x22mr19972221ooq.74.1635302528984; Tue, 26 Oct 2021 19:42:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1635302528; cv=none; d=google.com; s=arc-20160816; b=sq9VcyrI1eT8ZGusNtYMh3O9UsHrvFiHzK2CI4b1zo0zRbwnezun/AyVugkhmQL/9b L0SBfKFD29m0oJZOj/VLRpCyQQnT7I29fFixbh/9TlYviSKkNl+jhg/ciwBO8byjK/fC DbYVfOQHZOPcbUvVPq2X4KU0cL2Fcu06Ku6FC7LzPXP5k2yCuK8qCClEuAPskX6pQvvK d3AvlPsX48yU8FvF5sSwhObhw5B3hpFPPvrmvx+IaGEivY59gPkXTfTsBz5AQtwTHQYP tHv/vTHNUBkcH5yTMWNr1aDNrVecJ2c3OL9azsQvGVhxcDFezA7LAzsx02LMoZBtx/L7 /AJw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-unsubscribe:list-subscribe:list-id:precedence:references :in-reply-to:message-id:date:subject:cc:to:from:dkim-signature; bh=q8a6W9h5WD71UvBu3ruegFb2ddtPSbP0W5iIL1R7vWQ=; b=CNa7g3Nemt68v4RiZlOVcR87NEMyA4C8LEPH9t+zwC8I32gQ1goObcgpOm+oWzOZtd 37KLsvVWHuP7HV779p6XCxcNRSFBvWTH884IDP7H2DPSys6HWVThU29d/aE18fz5PTy9 VP/jwHI+IswXdT76W+LeRQiqO2xnIIdFv3Vu7oLsyZfRfC/FuF0ldrbn80OD7WSYSnCr ollM/dcWwpNHIUasJ8hNxSUURwDyUOb0FRhrvWbStt0r0SuMiE2G2zTDtiBS9PGk8CSs XpMZPrcS+wlA6FreW/cXzO5G57aaFpVSwSMxc1mKL6ZbGGQ8ssy9Vcw5jJZZpPttVqAb JT3A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=XJQ3tI2K; spf=pass (google.com: domain of mptcp+bounces-2274-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-2274-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from ewr.edge.kernel.org (ewr.edge.kernel.org. [147.75.197.195]) by mx.google.com with ESMTPS id d21si1424389oti.241.2021.10.26.19.42.08 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 26 Oct 2021 19:42:08 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-2274-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) client-ip=147.75.197.195; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=XJQ3tI2K; spf=pass (google.com: domain of mptcp+bounces-2274-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-2274-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ewr.edge.kernel.org (Postfix) with ESMTPS id 903D21C0A4A for ; Wed, 27 Oct 2021 02:42:08 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 534522C87; Wed, 27 Oct 2021 02:42:07 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [216.205.24.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AE9232C81 for ; Wed, 27 Oct 2021 02:42:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1635302524; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:content-type:content-type:in-reply-to:in-reply-to: references:references; bh=q8a6W9h5WD71UvBu3ruegFb2ddtPSbP0W5iIL1R7vWQ=; b=XJQ3tI2KmDD/PeHdt2vY3y3JcqhThOIHxvhvnVSW+/iFZ/UD3u6ePqlsHJKR5Nerw4l4KD ysclZSqu5o/kY/EpXXgQkkASzGJIWd0OJ6GG86fpvjyoJEsB+MuieRFiGa8/T3UjkvIM5l 8Hn+zt/Lvi3h2C2HesaGaW2HCgQoqRo= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-485-1ioKBptUOYe79jPQ33KhqQ-1; Tue, 26 Oct 2021 22:42:03 -0400 X-MC-Unique: 1ioKBptUOYe79jPQ33KhqQ-1 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 679D110A8E02; Wed, 27 Oct 2021 02:42:02 +0000 (UTC) Received: from nst.lab.eng.brq.redhat.com (nst.lab.eng.brq.redhat.com [10.37.153.171]) by smtp.corp.redhat.com (Postfix) with ESMTP id 5F7365F4EE; Wed, 27 Oct 2021 02:42:01 +0000 (UTC) From: Poorva Sonparote To: mptcp@lists.linux.dev Cc: mathew.j.martineau@linux.intel.com, matthieu.baerts@tessares.net Subject: [PATCH mptcp-next v3 1/2] Exposing __ip_sock_set_tos() in ip.h Date: Wed, 27 Oct 2021 02:41:46 +0000 Message-Id: <5d4f5b701e2cfe730d3249260f3eac82784fdd0f.1635300034.git.psonparo@redhat.com> In-Reply-To: References: X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=psonparo@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Making the static function __ip_sock_set_tos() from net/ipv4/ip_sockglue.c accessible by declaring it in include/net/ip.h The reason for doing this is to use this function to set IP_TOS value in mptcp_setsockopt() without the lock. Signed-off-by: Poorva Sonparote --- include/net/ip.h | 1 + net/ipv4/ip_sockglue.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/include/net/ip.h b/include/net/ip.h index cf229a531194..3d65a3be10e7 100644 --- a/include/net/ip.h +++ b/include/net/ip.h @@ -789,5 +789,6 @@ int ip_sock_set_mtu_discover(struct sock *sk, int val); void ip_sock_set_pktinfo(struct sock *sk); void ip_sock_set_recverr(struct sock *sk); void ip_sock_set_tos(struct sock *sk, int val); +void __ip_sock_set_tos(struct sock *sk, int val); =20 #endif /* _IP_H */ diff --git a/net/ipv4/ip_sockglue.c b/net/ipv4/ip_sockglue.c index b297bb28556e..7fd83f14daae 100644 --- a/net/ipv4/ip_sockglue.c +++ b/net/ipv4/ip_sockglue.c @@ -576,7 +576,7 @@ int ip_recv_error(struct sock *sk, struct msghdr *msg, = int len, int *addr_len) return err; } =20 -static void __ip_sock_set_tos(struct sock *sk, int val) +void __ip_sock_set_tos(struct sock *sk, int val) { if (sk->sk_type =3D=3D SOCK_STREAM) { val &=3D ~INET_ECN_MASK; --=20 2.18.2 From nobody Fri Apr 19 18:05:13 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6638:3394:0:0:0:0 with SMTP id h20csp1713279jav; Tue, 26 Oct 2021 19:42:17 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzSE0ZuNKdRVWPF3QCu5/0qCmcf+eOI9/8Omcq4xC6Ci+yK+/fhK+w48E65uwqtfBNf0+rH X-Received: by 2002:a4a:bc98:: with SMTP id m24mr19863043oop.51.1635302537152; Tue, 26 Oct 2021 19:42:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1635302537; cv=none; d=google.com; s=arc-20160816; b=AL5Qg2UQZL/MpE5om12vyomH7KaRXZljaKLuvOiNgXivXi5be7nuy3nFhfNxXAH92F ykBVG++kczJqyE4E8XLhm9p4oyUggDU5YO+LYwE1/CCTXZ3Q1sAQijz/XlCXuRyK46gl YRfEwkkAqwKc1NQAiddv/AaK7bqHBshERz4gahJcHI6mt0soRcyd70Ur+BlZZVNMN7PH p1ZSVco7StfcjRuvpd4GpZ1aKwxSS1io4xaCfkb0h9Lx2cOF43UCBDl3au5cqvNoqAel PjR9qnEU8u8XHIZca5ynNgVd5LCyIMN+8j88wiEAOqNAVvYaw5Ke3EVyjam/6hXIx5qB gjzQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-unsubscribe:list-subscribe:list-id:precedence:references :in-reply-to:message-id:date:subject:cc:to:from:dkim-signature; bh=Ml23poXa65MBhhhH/G1JBsygTX+Hz+j+KGMv6QEB8sE=; b=o91Sga7qwSG28+KmamWawQkA3KU386vclO1iDMkdJtIsLr1PfkCch9ucTsmvRlE2UY RP//9WmyGlNlu9HDs8/ILggYW+79C33C5elp6RY3Ab11zv5rjgj+gCBX71TmtuA7594Q 5IsMq2VZ/jfh+Lc9ddiqfhAthq+B1/F6ihnhYUuNjTi1L7RJYc4/Mtp4xyUZraK7zrcn FJqEGJ2SeMpanBVoYPU6OrsJYilEw++DJGkylx3WAkUMEekTKuZX19WfALudjlwMdLUG r8yS3zeUv4C7dr+BwAWLz+O0Eu4531FY0cHTdiltvEOdMeL3vrhWFTTg0KeUtSimRgif wS4A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=JkxuvTrW; spf=pass (google.com: domain of mptcp+bounces-2275-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-2275-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from ewr.edge.kernel.org (ewr.edge.kernel.org. [2604:1380:1:3600::1]) by mx.google.com with ESMTPS id v82si22736837oib.288.2021.10.26.19.42.17 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 26 Oct 2021 19:42:17 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-2275-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) client-ip=2604:1380:1:3600::1; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=JkxuvTrW; spf=pass (google.com: domain of mptcp+bounces-2275-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-2275-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ewr.edge.kernel.org (Postfix) with ESMTPS id B5EB21C0A22 for ; Wed, 27 Oct 2021 02:42:16 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 4CE3B2C87; Wed, 27 Oct 2021 02:42:15 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 178052C81 for ; Wed, 27 Oct 2021 02:42:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1635302532; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:content-type:content-type:in-reply-to:in-reply-to: references:references; bh=Ml23poXa65MBhhhH/G1JBsygTX+Hz+j+KGMv6QEB8sE=; b=JkxuvTrWRm10rqSWLknQSKuaExW5D/JRL2ZByVggfrBQLrMp1sqtymNkI2WQM1qQSLt7WK N+oeuD/4hW7E1Wxt+cKHFGi5Y7zHsV8cYJQZRXqNOACvQqNSjea5U5DcpDHEViViExsl8v IF6M/S/cnZlH3KHWfzA/1ahYbTmlwOE= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-206-eeOkX9A9Mne4F45OIOvEhA-1; Tue, 26 Oct 2021 22:42:06 -0400 X-MC-Unique: eeOkX9A9Mne4F45OIOvEhA-1 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 81366806689; Wed, 27 Oct 2021 02:42:05 +0000 (UTC) Received: from nst.lab.eng.brq.redhat.com (nst.lab.eng.brq.redhat.com [10.37.153.171]) by smtp.corp.redhat.com (Postfix) with ESMTP id ACB955F4EE; Wed, 27 Oct 2021 02:42:04 +0000 (UTC) From: Poorva Sonparote To: mptcp@lists.linux.dev Cc: mathew.j.martineau@linux.intel.com, matthieu.baerts@tessares.net Subject: [PATCH mptcp-next v3 2/2] Support for IP_TOS for MPTCP setsockopt() Date: Wed, 27 Oct 2021 02:41:47 +0000 Message-Id: In-Reply-To: References: X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=psonparo@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" SOL_IP provides a way to configure network layer attributes in a socket. This patch adds support for IP_TOS for setsockopt(.. ,SOL_IP, ..) https://github.com/multipath-tcp/mptcp_net-next/issues/220 Support for SOL_IP is added in mptcp_setsockopt() and IP_TOS is handled in a private function. The idea here is to take in the value passed for IP_TOS and set it to the current subflow, open subflows as well new subflows that might be created after the initial call to setsockopt(). This sync is done using sync_socket_options(.., ssk) and setting the value of tos using __ip_sock_set_tos(ssk,..). The patch has been tested using the packetdrill script here - https://github.com/multipath-tcp/mptcp_net-next/issues/220#issuecomment-947= 863717 It has not been selftested because there's no support for IP_TOS in getsockopt() yet. Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/220 Signed-off-by: Poorva Sonparote --- Notes: - fixed formatting errors - split out the main patch into two commits 1. Support for IP_TOS for MPTCP setsockopt() 2. Exposing __ip_sock_set_tos() in ip.h net/mptcp/sockopt.c | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/net/mptcp/sockopt.c b/net/mptcp/sockopt.c index 8137cc3a4296..ded47f0483ed 100644 --- a/net/mptcp/sockopt.c +++ b/net/mptcp/sockopt.c @@ -598,6 +598,43 @@ static int mptcp_setsockopt_sol_tcp_congestion(struct = mptcp_sock *msk, sockptr_t return ret; } =20 +static int mptcp_setsockopt_v4_set_tos(struct mptcp_sock *msk, int optname, + sockptr_t optval, unsigned int optlen) +{ + struct mptcp_subflow_context *subflow; + struct sock *sk =3D (struct sock *)msk; + int ret, val; + int err; + + err =3D ip_setsockopt(sk, SOL_IP, optname, optval, optlen); + + if (err !=3D 0) + return err; + + lock_sock(sk); + sockopt_seq_inc(msk); + val =3D inet_sk(sk)->tos; + mptcp_for_each_subflow(msk, subflow) { + struct sock *ssk =3D mptcp_subflow_tcp_sock(subflow); + + __ip_sock_set_tos(ssk, val); + } + release_sock(sk); + + return ret; +} + +static int mptcp_setsockopt_v4(struct mptcp_sock *msk, int optname, + sockptr_t optval, unsigned int optlen) +{ + switch (optname) { + case IP_TOS: + return mptcp_setsockopt_v4_set_tos(msk, optname, optval, optlen); + } + + return -EOPNOTSUPP; +} + static int mptcp_setsockopt_sol_tcp(struct mptcp_sock *msk, int optname, sockptr_t optval, unsigned int optlen) { @@ -637,6 +674,9 @@ int mptcp_setsockopt(struct sock *sk, int level, int op= tname, if (ssk) return tcp_setsockopt(ssk, level, optname, optval, optlen); =20 + if (level =3D=3D SOL_IP) + return mptcp_setsockopt_v4(msk, optname, optval, optlen); + if (level =3D=3D SOL_IPV6) return mptcp_setsockopt_v6(msk, optname, optval, optlen); =20 @@ -1000,6 +1040,7 @@ static void sync_socket_options(struct mptcp_sock *ms= k, struct sock *ssk) ssk->sk_priority =3D sk->sk_priority; ssk->sk_bound_dev_if =3D sk->sk_bound_dev_if; ssk->sk_incoming_cpu =3D sk->sk_incoming_cpu; + __ip_sock_set_tos(ssk, inet_sk(sk)->tos); =20 if (sk->sk_userlocks & tx_rx_locks) { ssk->sk_userlocks |=3D sk->sk_userlocks & tx_rx_locks; --=20 2.18.2