From nobody Sat Apr 20 13:54:27 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a02:7824:0:0:0:0:0 with SMTP id p36csp1767588jac; Wed, 20 Oct 2021 12:56:55 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwilaLlGaGfhHQ7pRTsiTuwRsepTbZ4oSPUh2n/nZ4aDUNTSmS5SSUAK59hKJ3It1ISHEA3 X-Received: by 2002:a62:6411:0:b0:44c:bf9f:f584 with SMTP id y17-20020a626411000000b0044cbf9ff584mr1326842pfb.29.1634759815164; Wed, 20 Oct 2021 12:56:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1634759815; cv=none; d=google.com; s=arc-20160816; b=KYb5MxQCr0nuSdQJZAitTWffRagMXTiDiimw9RwXNUybOgqbcJL/gQCtAtXIBPxRki tKcX4QO4IbfO0WyzO8sBRvzpHrmk8bvt25Jjh0kNrzIsJsfvwPy5DtgVwV/VCT0Oi63p gqlDRspaZ4qMaVwL4NXGiV/sVnr2JdO8hyZ536Hb7wKg3K7cqdkERfanfNYWOURyqBcE 6O9DCBUr8kQI5wRYO4A8ox91AJmBiC5Vv3V5vZZXzuuIGjQwlh01e1Ui+iLsdZ8+dTJs ik+LfR1OzS48D14OVAwCPzeYqqzok6YMIPTvH1phUU79stgU7lG7yPHYo24men80gd49 mCgw== 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:message-id:date :subject:cc:to:from:dkim-signature; bh=WQtrsjIFoB7ijExUec1g9gasg0XP+c/vsJtJ1rHZezo=; b=n6oXBsjTBTJdPRYrChEBgMb4H81Ue6KdCpdp0MJKzOFr38iU3xzPgElhddWhIESm8E YKINZOXCCNECCwtQYbFHb3wq5RbxSagrKM5a8d39oNy7kQCOWZiNzgdDErJKHbUdBTqM N4CGveOPE3CUkop6i/Gsblv11dBaV3Ybs4MiqrilrOTOajKir/sl8NHbxENg6LjHPOkO 6SMml5/ybqVd9mJrf2AX9oEmO4Yptz5R8LxTlqEDfxCT6ATjvF8a8eJWFi7DVHR6/mYw 8BuZXWsYxEbhDDWLhAMD7Ukmp0RP+3QbdTGccs72RMGDjPqvuxpplaNNU5pI9xok1ryx woqA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=DPs8cYFX; spf=pass (google.com: domain of mptcp+bounces-2212-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-2212-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 il9si4777916pjb.99.2021.10.20.12.56.54 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 20 Oct 2021 12:56:55 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-2212-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=DPs8cYFX; spf=pass (google.com: domain of mptcp+bounces-2212-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-2212-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 967A41C0D56 for ; Wed, 20 Oct 2021 19:56:48 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 56B9E2C94; Wed, 20 Oct 2021 19:56:47 +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 91E1D72 for ; Wed, 20 Oct 2021 19:56:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1634759804; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:content-type:content-type; bh=WQtrsjIFoB7ijExUec1g9gasg0XP+c/vsJtJ1rHZezo=; b=DPs8cYFXC6jbYkuLeX78P7spFNfv06o+p4zLx6YKVYLb139Ctd8mbPpEQnhjfnLXQcvILC nKgCyVYBYSja42DjGFX7bHvGUqPZGnGy5S1t+WesjIoHKz0rwtwo2UgXBqiqw19ZJyI3iX 54j1ZhFqslbIFGzjea2qz7i/JdYK32w= 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-189-SW45Gq9sOZSJQOdNqFWVwQ-1; Wed, 20 Oct 2021 15:56:40 -0400 X-MC-Unique: SW45Gq9sOZSJQOdNqFWVwQ-1 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id C7801802575 for ; Wed, 20 Oct 2021 19:56:39 +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 25596100238C; Wed, 20 Oct 2021 19:56:38 +0000 (UTC) From: Poorva Sonparote To: mptcp@lists.linux.dev Cc: dcaratti@redhat.com Subject: [PATCH RFC] Support for SOL_IP for MPTCP setsockopt Date: Wed, 20 Oct 2021 19:56:01 +0000 Message-Id: <0c05b2c0bfb6cd5b6788d00c7f61474d0cd5a747.1634749192.git.psonparo@redhat.com> X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 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" Hello! I have been working on adding support for IP_TOS for setsockopt(). I am attaching the packetdrill test and the patch but it still won't set the= TOS value for the subflows that are created after the setsockopt() call. https://github.com/multipath-tcp/mptcp_net-next/issues/220#issuecomment-947= 863717 Thanks, Poorva This patch adds support for IP_TOS for setsockopt(.. ,SOL_IP, ..) https://github.com/multipath-tcp/mptcp_net-next/issues/220 Currently, any new subflows that are created after the setsockopt() call are not being updated with the set IP_TOS value. Signed-off-by: Poorva Sonparote --- net/mptcp/sockopt.c | 39 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/net/mptcp/sockopt.c b/net/mptcp/sockopt.c index 8137cc3a4296..f5ee49660902 100644 --- a/net/mptcp/sockopt.c +++ b/net/mptcp/sockopt.c @@ -598,6 +598,40 @@ static int mptcp_setsockopt_sol_tcp_congestion(struct = mptcp_sock *msk, sockptr_t return ret; } =20 +static int mptcp_setsockopt_sol_ip_set_tos(struct mptcp_sock *msk, int opt= name, + sockptr_t optval, unsigned int optlen) +{ + struct mptcp_subflow_context *subflow; + struct sock *sk =3D (struct sock *)msk; + int ret, err; + int val =3D 0; + + err =3D ip_setsockopt(sk, SOL_IP, optname, optval, optlen); + val =3D inet_sk(sk)->tos; + + if (err !=3D 0) + return err; + lock_sock(sk); + 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_sol_ip(struct mptcp_sock *msk, int optname, + sockptr_t optval, unsigned int optlen) +{ + switch (optname) { + case IP_TOS: + return mptcp_setsockopt_sol_ip_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,12 +671,14 @@ int mptcp_setsockopt(struct sock *sk, int level, int = optname, if (ssk) return tcp_setsockopt(ssk, level, optname, optval, optlen); =20 + if (level =3D=3D SOL_IP) + return mptcp_setsockopt_sol_ip(msk, optname, optval, optlen); + if (level =3D=3D SOL_IPV6) return mptcp_setsockopt_v6(msk, optname, optval, optlen); =20 if (level =3D=3D SOL_TCP) return mptcp_setsockopt_sol_tcp(msk, optname, optval, optlen); - return -EOPNOTSUPP; } =20 @@ -1000,6 +1036,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