From nobody Wed Apr 24 19:25:00 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6638:3394:0:0:0:0 with SMTP id h20csp744768jav; Wed, 27 Oct 2021 14:06:01 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzn3CrUl7wB5qNGpRcYyiIdHegFt0+bLA2ZzyJsKuUlAEYEpIUtnlYmSg5cQZARzSG0aIiL X-Received: by 2002:a05:6102:275a:: with SMTP id p26mr199111vsu.47.1635368761822; Wed, 27 Oct 2021 14:06:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1635368761; cv=none; d=google.com; s=arc-20160816; b=BpEOiGq7+rGETqoqeJpiBeFTrlQiW3RnKJj2WUQwfcdjB0yLv+UC4L/2z6UClOBLkQ U1lfzDDb8BcW/TeAK44ukLI71Qn3r9Q+uMRnweZXLSJcELOXzraU5deZwgYeKGtTHTBr TNUElTv3fz0dbbuSbK9HKsO1oqu7i1k7CKZ1vqknwBtIHR2UaYXOyLv8sShBEWHEAOeE kfLev2AM8FbXTNY7KkW28SHKgi6jUCJIgZwjnMf7nydy8znarUr71sVZGwwSHqoogTRX EbKJaSPDvdAhOYcjWb/9eestTvmrtfq+oAbz4aVnqmMz4hvi0jiNO0B+6wrW9/u//n0B pc/g== 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=BJqGGfuAwnG/hW/IGRSauoEMpt1Db0HTC7RNYdcT6K3uurWt6QTkzLqMSlzoMXS63s DSdbB09+RY6anAMaz53/+nFIeD2Eo/1BpOL+YBYag9cNMyV4hWVrV0oPD/o1JS4RYDEz 524oNJzSy4MGMHhGhE34v6mRBK1+ModZ4nwQaNLm1IMPdxs/A/ngOGgPhbOQVM2FPKEw 923iq44xyWbOCWtY9jiaxs7htZj7trQmTZJKOomeliWii6yfghks3WUtrnyEiYUlfAW8 Gx7P5jgh+kgqJICJiVrzOsyphhrPkRKSjey4v8cDigyOo/f0kQMFO7Ujjwu7MGbymAg5 QQsQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=GJmlJk0t; spf=pass (google.com: domain of mptcp+bounces-2290-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-2290-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 q26si1550710vsl.195.2021.10.27.14.06.01 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 27 Oct 2021 14:06:01 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-2290-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=GJmlJk0t; spf=pass (google.com: domain of mptcp+bounces-2290-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-2290-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 AD1BD1C0788 for ; Wed, 27 Oct 2021 21:06:00 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 80E952CA4; Wed, 27 Oct 2021 21:05:59 +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 E32C82C9F for ; Wed, 27 Oct 2021 21:05:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1635368756; 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=GJmlJk0t7dQTWVlh9ZnFKguDlDX0fIX/7+6UBUIDYTCrZVfwC1p797oZde7SUDoJiaCgpw PwpJxWN0VDf4LHJvOaprM26FaysfrDd9AJFbyHWtJ69eBVqMtqt9QV3kFc5NA/BSJ/kbDx xCjRdicAi0CReYt+VqGrRQ/rC6kc4ls= 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-180-XBdv90R_OVqLtfaDuQMXFA-1; Wed, 27 Oct 2021 17:05:53 -0400 X-MC-Unique: XBdv90R_OVqLtfaDuQMXFA-1 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id D0205100C609; Wed, 27 Oct 2021 21:05:52 +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 CA3375C1B4; Wed, 27 Oct 2021 21:05:51 +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 v4 1/2] Exposing __ip_sock_set_tos() in ip.h Date: Wed, 27 Oct 2021 21:05:06 +0000 Message-Id: <5d4f5b701e2cfe730d3249260f3eac82784fdd0f.1635367735.git.psonparo@redhat.com> In-Reply-To: References: X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 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 Reviewed-by: Mat Martineau --- 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 Wed Apr 24 19:25:00 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6638:3394:0:0:0:0 with SMTP id h20csp745282jav; Wed, 27 Oct 2021 14:06:32 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxqXipZhNMBO+auMSgnreKAZZm8tKuPApulKDNHUh0f2yLVGdoOQbdI3m/TTET4MiumA/1m X-Received: by 2002:a67:e294:: with SMTP id g20mr206673vsf.39.1635368792046; Wed, 27 Oct 2021 14:06:32 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1635368792; cv=none; d=google.com; s=arc-20160816; b=tLWSoTn0JjY41Dt+YyluoW+d33QPvempO69ygFLfg2HYSU0irDFASTf1TfkiIZez7/ vBV0FMCQzzqPSRncV+TNa1IfkwYHiFOXmnLgNbu5KaEjjq0kHv9pIHACrLeSaYpiparY ZOQ1Daz9S3CLb0vMLZgbekykUkNL1rMYFAe6ScLkAl16jWK/7O3rZ5iN/v+zmkQzGhsF F9Q2IvSzzQYPwEZPISLmrY+CaDNDS38DCymt80nYmKulmTwZ40zcSlIsEcqbrAWQfUrD 4vckggjWg+FJIJazjjwffh92lmvHBN87+Yz/GMJVUm3mCWHL9ow1dL2BeJp0SUc1IUoB RYEw== 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=3KTkVx7luJyA4eL1h3efgiMD5QmmIEDZJB8uhR4bYCQ=; b=Jq017yw5uQow0xxLZ9ZuqVPVNeoAQTprJs7frF7qGMisoowR/G2i2Vbd7i5zU5SSef NZ44jucs54TI3dPFyu9644CtKl4WQaZzU1wjXvd4rNHN7/p5hJUx030Y6wv2je0/oonr k3HM8mVX4ABr0HXk2LIqsgJcW1N8Eai/b8Q7Cyhk6yKAPbk+AODo6vos6hB0fIt/Q4aN 3WF+dWX4rl778vu8RSO7ApcWQAyVEeT3XpaFux9brC2OzUHiMs+pafJyuUAeKb0Wct9s lC4tuIiLGIO1uOzLR28mAdkyIJPaMiSJI/N5LqTIs4FnQPGYAqNHtC44r0Xccz+qK3K/ zJCg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=fOIaxxVI; spf=pass (google.com: domain of mptcp+bounces-2292-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-2292-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 g4si1852798uaj.133.2021.10.27.14.06.31 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 27 Oct 2021 14:06:32 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-2292-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=fOIaxxVI; spf=pass (google.com: domain of mptcp+bounces-2292-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-2292-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 9EACB1C0726 for ; Wed, 27 Oct 2021 21:06:31 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 32B2A2CA4; Wed, 27 Oct 2021 21:06:30 +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 7F4452C9F for ; Wed, 27 Oct 2021 21:06:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1635368787; 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=3KTkVx7luJyA4eL1h3efgiMD5QmmIEDZJB8uhR4bYCQ=; b=fOIaxxVIDs8vcCBp9g9vj4mLQpkoXgOJSrZ6seUJ/FhD7JIg0ZScmrMV/LqYB93B9yDXvp 2lNkuXxC/7VsegV5Tq299miStGqZ/iGoX04VQIr9oaxxRGs3jg3IYZ5HT9mbKrBSGcQ3Ng 8PJbZOSW85aN2O2cDhVhDyBpBr4UHyU= 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-474-SnCEWYsuNnGif0AgWUA5fA-1; Wed, 27 Oct 2021 17:06:21 -0400 X-MC-Unique: SnCEWYsuNnGif0AgWUA5fA-1 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id F0BF610A8E1C; Wed, 27 Oct 2021 21:06:20 +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 2A3D25C1B4; Wed, 27 Oct 2021 21:06:20 +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 v4 2/2] Support for IP_TOS for MPTCP setsockopt() Date: Wed, 27 Oct 2021 21:05:08 +0000 Message-Id: <26ff53b562d73cecbfa84f0e42d3ff100bc936cf.1635367735.git.psonparo@redhat.com> In-Reply-To: References: X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 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 Reported-by: kernel test robot Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/220 Signed-off-by: Poorva Sonparote Reviewed-by: Mat Martineau --- 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 - Changed the return value of mptcp_setsockopt_v4_set_tos() as reported by kernel test robot. Earlier it used to return a variable "ret" which wasn't being used anywhere. - The patch does not have a kselftest because there's no support for I= P_TOS in getsockopt() yet. net/mptcp/sockopt.c | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/net/mptcp/sockopt.c b/net/mptcp/sockopt.c index 8137cc3a4296..91ccce57616b 100644 --- a/net/mptcp/sockopt.c +++ b/net/mptcp/sockopt.c @@ -598,6 +598,42 @@ 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 err, val; + + 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 err; +} + +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 +673,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 +1039,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