From nobody Sat Apr 20 12:27:36 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6638:27c:0:0:0:0 with SMTP id x28csp886088jaq; Wed, 6 Oct 2021 17:00:12 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy6BDPZ4rMXDRPeI3cAntQOL2MmkrRe58cksfy6q/apebEn8yWGMmhb7D8FmP9RuAApJvFK X-Received: by 2002:a05:622a:1345:: with SMTP id w5mr1341132qtk.259.1633564812870; Wed, 06 Oct 2021 17:00:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1633564812; cv=none; d=google.com; s=arc-20160816; b=wbVitolPzAIanFpn053ejkvNU1Wb/2cAriHbTpZIBoZMTi7+5pnKUXVONS1rN01LYl xOBOAQGeiCu7sWNfaoeYD2h+ROZaXgXsPoYfFN71P9B+07J/4JMwm+yAZyVZeYrV3X38 /fpFUeaf/eYnfhM2BEEjioNDM7Lp/erl6s1o2Lz9V9a5sAg08VbKF4o4bJZrQUx9wn73 R8rL7wG5PJ0aMQcK2htDHp3tOJe9hAacimdXdXGio+LJvCDGDIHQErQ1/ErJk5OD0SEs 4QG+P34RzDVMkLqooPGTPY8ap8QuvxZ6Koq9Mrk4nd5vAyZ8o6BDs6bxCnCkPE3RZb/V 3zAA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from; bh=xvPyIo4aa5+PkJbZZxr0/IQq7nbp/G/Q/Ssep6FPQW0=; b=f1MNzNAF7V6dftvZmoERMST6LDowNwBzZ6xSvZWeF+Tf+iH/F6xTIDypsMyV3dFuSN /ZHcHbewNDdFP417rX7s8pDTf9luyS7mVpxENnGkHO5RYBehUcVdhifHkZjEEcfLdLqu zsW7XHWhq7cXbWebFANQDp4lpbCFH9vX07shx9/gcKQkCRF2ADGtd8VCLCd3orsTEZUT EkEfkFdQMZZzaRJlw3EUaXUuLUeP/VAcrnWDhuizlN0JNj31XpAfORkQ4PURs2XS64Mj S1D5rL90wSo0EmfkjLfRB0haGoKqngAjL9C5Y3ZtUHwh9ODbKY45h6G5MRlcdSwj9KTs 846A== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of mptcp+bounces-2118-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-2118-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from ewr.edge.kernel.org (ewr.edge.kernel.org. [147.75.197.195]) by mx.google.com with ESMTPS id s190si2248121qkf.211.2021.10.06.17.00.12 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 06 Oct 2021 17:00:12 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-2118-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; spf=pass (google.com: domain of mptcp+bounces-2118-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-2118-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.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 976611C09EA for ; Thu, 7 Oct 2021 00:00:12 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 67CB22C93; Thu, 7 Oct 2021 00:00:09 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) (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 4C6602C81 for ; Thu, 7 Oct 2021 00:00:08 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6200,9189,10129"; a="226439233" X-IronPort-AV: E=Sophos;i="5.85,352,1624345200"; d="scan'208";a="226439233" Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Oct 2021 16:59:58 -0700 X-IronPort-AV: E=Sophos;i="5.85,352,1624345200"; d="scan'208";a="560351274" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.209.0.106]) by fmsmga003-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Oct 2021 16:59:58 -0700 From: Mat Martineau To: mptcp@lists.linux.dev Cc: Mat Martineau , kishen.maloor@intel.com Subject: [RFC PATCH 1/6] mptcp: Add a member to mptcp_pm_data to track kernel vs userspace mode Date: Wed, 6 Oct 2021 16:59:48 -0700 Message-Id: <20211006235953.212243-2-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20211006235953.212243-1-mathew.j.martineau@linux.intel.com> References: <20211006235953.212243-1-mathew.j.martineau@linux.intel.com> Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" When adding support for netlink path management commands, the kernel needs to know whether paths are being controlled by the in-kernel path manager or a userspace PM. Signed-off-by: Mat Martineau --- net/mptcp/pm.c | 1 + net/mptcp/protocol.h | 1 + 2 files changed, 2 insertions(+) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index 6ab386ff3294..79aafcb51756 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -369,6 +369,7 @@ void mptcp_pm_data_init(struct mptcp_sock *msk) WRITE_ONCE(msk->pm.accept_addr, false); WRITE_ONCE(msk->pm.accept_subflow, false); WRITE_ONCE(msk->pm.remote_deny_join_id0, false); + WRITE_ONCE(msk->pm.userspace, false); msk->pm.status =3D 0; =20 spin_lock_init(&msk->pm.lock); diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 284fdcec067e..b06c2307296d 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -197,6 +197,7 @@ struct mptcp_pm_data { bool accept_addr; bool accept_subflow; bool remote_deny_join_id0; + bool userspace; u8 add_addr_signaled; u8 add_addr_accepted; u8 local_addr_used; --=20 2.33.0 From nobody Sat Apr 20 12:27:36 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6638:27c:0:0:0:0 with SMTP id x28csp886024jaq; Wed, 6 Oct 2021 17:00:08 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxBj7xNKqretIC17lUXs2RXjBkH+AluAAGF6FpKjsqsXyqS5gje1TrwVnwFxHQFMfYnfACt X-Received: by 2002:a17:90a:b288:: with SMTP id c8mr1175035pjr.67.1633564808229; Wed, 06 Oct 2021 17:00:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1633564808; cv=none; d=google.com; s=arc-20160816; b=L6i9a7RVACBtqUdgild48ojG9BdrmPwQerSkzrFKXEUvk4She/QqHK5mEy1eoRsR8R dv4jx9tjbMCODviIzKDxpoCzuoelBLz7HfE/7/Rv/T76wqQklQLnFCeCWg/BwrBXGSCo LO7YFksY92aJ0+OhPyRnkdScQb4t/sbHZ+anb8EkDhVxoUeQXw6HYirshDGIwWfQgAZU vCLVFVdQ15ehCRauiSk/NqRORx+r29jh1RNJkuEoQW4QWFxzaCtVhuCER1LJ/bEtDvfG zOIzjwLA849aUJnzt6K7Pjfaocp8A0JcdnJODs5/KTbGsG0LTyo7tbBSu2H8/Pn3MinF ks9A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from; bh=RASE1wiG6Kirultj4S0eNHrWZxVd8HWk6mOEqiZj76U=; b=dvPoUCNtvf6cyWcqHyVI/4RSaloue3DMTZvgGYGhDG5RuFd7YheBncPYJvJgNHo4Uc cNqMvx3jotYZgGpf81BsCfRUcwkOB64aOX1Xcws3snIT1Cj46XiA0RsN/ghygtFBXuKr LD3lbU5NoqjbfYNqZTS6+TL+Jf5ZRGAbve7AK126lU3oHwcTK/3fZh4Tyx+YKyYVTji3 jun8PugvZxifD75ZInZluZjfHNnbnncLo7cLLzwU1GXqA93j89EPRaBRRx0iZde2Bija tJuPd3vinEpQp66hlycW/J0Khmtu/B1ycQCwXxwDQryOve6hHqUFV8gkpCFLmBezSR1o d9rA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of mptcp+bounces-2114-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) smtp.mailfrom="mptcp+bounces-2114-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from sjc.edge.kernel.org (sjc.edge.kernel.org. [147.75.69.165]) by mx.google.com with ESMTPS id 143si15098084pga.139.2021.10.06.17.00.08 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 06 Oct 2021 17:00:08 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-2114-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) client-ip=147.75.69.165; Authentication-Results: mx.google.com; spf=pass (google.com: domain of mptcp+bounces-2114-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) smtp.mailfrom="mptcp+bounces-2114-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.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 sjc.edge.kernel.org (Postfix) with ESMTPS id 682FD3E03AB for ; Thu, 7 Oct 2021 00:00:07 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id AE0272C93; Thu, 7 Oct 2021 00:00:06 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) (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 0DA5B2C81 for ; Thu, 7 Oct 2021 00:00:04 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6200,9189,10129"; a="226439235" X-IronPort-AV: E=Sophos;i="5.85,352,1624345200"; d="scan'208";a="226439235" Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Oct 2021 16:59:59 -0700 X-IronPort-AV: E=Sophos;i="5.85,352,1624345200"; d="scan'208";a="560351278" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.209.0.106]) by fmsmga003-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Oct 2021 16:59:58 -0700 From: Mat Martineau To: mptcp@lists.linux.dev Cc: Mat Martineau , kishen.maloor@intel.com Subject: [RFC PATCH 2/6] mptcp: Bypass kernel PM when userspace PM is enabled Date: Wed, 6 Oct 2021 16:59:49 -0700 Message-Id: <20211006235953.212243-3-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20211006235953.212243-1-mathew.j.martineau@linux.intel.com> References: <20211006235953.212243-1-mathew.j.martineau@linux.intel.com> Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" When a MPTCP connection is managed by a userspace PM, bypass the kernel PM for incoming advertisements and subflow events. Netlink events are still sent to userspace. Signed-off-by: Mat Martineau --- net/mptcp/pm.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index 79aafcb51756..3fa3c0faed48 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -136,7 +136,7 @@ void mptcp_pm_fully_established(struct mptcp_sock *msk,= const struct sock *ssk, * racing paths - accept() and check_fully_established() * be sure to serve this event only once. */ - if (READ_ONCE(pm->work_pending) && + if (READ_ONCE(pm->work_pending) && !READ_ONCE(pm->userspace) && !(msk->pm.status & BIT(MPTCP_PM_ALREADY_ESTABLISHED))) mptcp_pm_schedule_work(msk, MPTCP_PM_ESTABLISHED); =20 @@ -161,7 +161,7 @@ void mptcp_pm_subflow_established(struct mptcp_sock *ms= k) =20 pr_debug("msk=3D%p", msk); =20 - if (!READ_ONCE(pm->work_pending)) + if (!READ_ONCE(pm->work_pending) || READ_ONCE(pm->userspace)) return; =20 spin_lock_bh(&pm->lock); @@ -187,6 +187,9 @@ void mptcp_pm_add_addr_received(struct mptcp_sock *msk, =20 mptcp_event_addr_announced(msk, addr); =20 + if (READ_ONCE(pm->userspace)) + return; + spin_lock_bh(&pm->lock); =20 if (!READ_ONCE(pm->accept_addr)) { @@ -206,6 +209,9 @@ void mptcp_pm_add_addr_echoed(struct mptcp_sock *msk, =20 pr_debug("msk=3D%p", msk); =20 + if (READ_ONCE(pm->userspace)) + return; + spin_lock_bh(&pm->lock); =20 if (mptcp_lookup_anno_list_by_saddr(msk, addr) && READ_ONCE(pm->work_pend= ing)) @@ -233,6 +239,9 @@ void mptcp_pm_rm_addr_received(struct mptcp_sock *msk, for (i =3D 0; i < rm_list->nr; i++) mptcp_event_addr_removed(msk, rm_list->ids[i]); =20 + if (READ_ONCE(pm->userspace)) + return; + spin_lock_bh(&pm->lock); mptcp_pm_schedule_work(msk, MPTCP_PM_RM_ADDR_RECEIVED); pm->rm_list_rx =3D *rm_list; --=20 2.33.0 From nobody Sat Apr 20 12:27:36 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6638:27c:0:0:0:0 with SMTP id x28csp886043jaq; Wed, 6 Oct 2021 17:00:09 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyaS8NTm1f+1KqnKKYBeoHqdFr/S8dE74bKjQjyWcRjTJsaTM5Vo3tWyVOF/r7R615WH/PY X-Received: by 2002:a62:7bd5:0:b0:44c:72f5:5da4 with SMTP id w204-20020a627bd5000000b0044c72f55da4mr1232921pfc.48.1633564809251; Wed, 06 Oct 2021 17:00:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1633564809; cv=none; d=google.com; s=arc-20160816; b=LZZYyGSUaYwCEhXRJoxl1FjIlPhDOYdMN8hS0PfGLAAF8Xe0dbd7oexT6OkvbhTyIa 7b4E0J+FvbwpmFzflmrL0yK3gIPLTRCAwG64jQC7OEoi3YGmwJwjGs9yDO7dESL9gNfB s+G5Y7TmSfKiOWbLyqBOSzHIYrMn13s8hYap/P+YON3BkYVnWRQS6LS5e41OJqA1cEbM +z2idFxndLqYR0YbSjORReraPfrEgViSGImGHQQnfUBJzTr7jhp9hmQKxX21yPo+2T6h IvH51fUdCfZwTPiDh0WAuQGnMzTg77KLAYv7mH9S36OqkeOdzoi6KQZl46/zeaXQRpZd wlbQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from; bh=f7HcP+L9fD00gCKZl02kOEKhMO2dAaX+oHHedb3XvWg=; b=iZTvHJoMebJS0k0u8U5Q3mgdF4y4yKPC0eaSw1piYEtF+oCsisvguFZwXrn6q557vm rTtWGz9HcttIxRKWkk26uF3jRFvTBTcYkXQZO+t5kadwPmh+rt+6hgKfla1QnlTLNknp WsSi2enhX54McOEmwIZdtHRfUVgVgrnYDGaO9VyE+MjP17HtbVqDlhvp2E600L3z3X6K wg+X3A7gX1Mv6Pn6jRUnD5VjxIg9NOwBAV9ZU3vX0jrrctUKzIvHZjDyvbi7T7/Wb9G3 0V19sreDvmka1BhcnY5UeWYaavpPLmFYwhc9RCS+G2zrDZDRgGBKi4DGpi1g6MxAqfr/ NcSw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of mptcp+bounces-2115-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) smtp.mailfrom="mptcp+bounces-2115-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from sjc.edge.kernel.org (sjc.edge.kernel.org. [147.75.69.165]) by mx.google.com with ESMTPS id 143si15098084pga.139.2021.10.06.17.00.09 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 06 Oct 2021 17:00:09 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-2115-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) client-ip=147.75.69.165; Authentication-Results: mx.google.com; spf=pass (google.com: domain of mptcp+bounces-2115-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) smtp.mailfrom="mptcp+bounces-2115-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.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 sjc.edge.kernel.org (Postfix) with ESMTPS id AE3F93E01F4 for ; Thu, 7 Oct 2021 00:00:08 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 3B9FE2C97; Thu, 7 Oct 2021 00:00:08 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) (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 EACDC2C81 for ; Thu, 7 Oct 2021 00:00:06 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6200,9189,10129"; a="226439236" X-IronPort-AV: E=Sophos;i="5.85,352,1624345200"; d="scan'208";a="226439236" Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Oct 2021 16:59:59 -0700 X-IronPort-AV: E=Sophos;i="5.85,352,1624345200"; d="scan'208";a="560351282" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.209.0.106]) by fmsmga003-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Oct 2021 16:59:59 -0700 From: Mat Martineau To: mptcp@lists.linux.dev Cc: Mat Martineau , kishen.maloor@intel.com Subject: [RFC PATCH 3/6] mptcp: Make kernel path manager check for userspace-managed sockets Date: Wed, 6 Oct 2021 16:59:50 -0700 Message-Id: <20211006235953.212243-4-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20211006235953.212243-1-mathew.j.martineau@linux.intel.com> References: <20211006235953.212243-1-mathew.j.martineau@linux.intel.com> Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Userspace-managed sockets should not have their subflows or advertisements = changed by the kernel path manager. (Possible squash with earlier commit) Signed-off-by: Mat Martineau --- net/mptcp/pm_netlink.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index 30b974801d51..434049836707 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -1131,7 +1131,8 @@ static int mptcp_nl_add_subflow_or_signal_addr(struct= net *net) while ((msk =3D mptcp_token_iter_next(net, &s_slot, &s_num)) !=3D NULL) { struct sock *sk =3D (struct sock *)msk; =20 - if (!READ_ONCE(msk->fully_established)) + if (!READ_ONCE(msk->fully_established) || + READ_ONCE(msk->pm.userspace)) goto next; =20 lock_sock(sk); @@ -1269,6 +1270,9 @@ static int mptcp_nl_remove_subflow_and_signal_addr(st= ruct net *net, struct sock *sk =3D (struct sock *)msk; bool remove_subflow; =20 + if (READ_ONCE(msk->pm.userspace)) + goto next; + if (list_empty(&msk->conn_list)) { mptcp_pm_remove_anno_addr(msk, addr, false); goto next; @@ -1310,7 +1314,7 @@ static int mptcp_nl_remove_id_zero_address(struct net= *net, struct sock *sk =3D (struct sock *)msk; struct mptcp_addr_info msk_local; =20 - if (list_empty(&msk->conn_list)) + if (list_empty(&msk->conn_list) || READ_ONCE(msk->pm.userspace)) goto next; =20 local_address((struct sock_common *)msk, &msk_local); @@ -1419,9 +1423,11 @@ static void mptcp_nl_remove_addrs_list(struct net *n= et, while ((msk =3D mptcp_token_iter_next(net, &s_slot, &s_num)) !=3D NULL) { struct sock *sk =3D (struct sock *)msk; =20 - lock_sock(sk); - mptcp_pm_remove_addrs_and_subflows(msk, rm_list); - release_sock(sk); + if (!READ_ONCE(msk->pm.userspace)) { + lock_sock(sk); + mptcp_pm_remove_addrs_and_subflows(msk, rm_list); + release_sock(sk); + } =20 sock_put(sk); cond_resched(); @@ -1683,7 +1689,8 @@ static int mptcp_nl_addr_backup(struct net *net, while ((msk =3D mptcp_token_iter_next(net, &s_slot, &s_num)) !=3D NULL) { struct sock *sk =3D (struct sock *)msk; =20 - if (list_empty(&msk->conn_list)) + if (list_empty(&msk->conn_list) || + READ_ONCE(msk->pm.userspace)) goto next; =20 lock_sock(sk); --=20 2.33.0 From nobody Sat Apr 20 12:27:36 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6638:27c:0:0:0:0 with SMTP id x28csp886113jaq; Wed, 6 Oct 2021 17:00:14 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw1Ks7qh72+nBprPJFthaURd/4WZ9r9C1RoxKmEcjaVTDDHTRz0ry54sH8qBv3vk9MVz4MW X-Received: by 2002:a37:a858:: with SMTP id r85mr843753qke.5.1633564814002; Wed, 06 Oct 2021 17:00:14 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1633564813; cv=none; d=google.com; s=arc-20160816; b=O/SRwlS02FiAegDjkTnvcIf+zVr/fEkiG/6jRdu6QLCYxAtJVDPpWmITxXjLpqySYg I/kWzQOSRNVO4AFo04zcLbSdBl5BDxpxIeDrgSSXJJAhE9gInZHhsJD1AQASu3+YpkpU DBEr7D6GtRDinrexezwjQCBclmffOrzZ7vt0Kg7T6y5i+co5v4IyJIeKid8A1ME3ledW u9PtDKWpgEuYQ3rBTj+X675IC5SmASRODJBQ+aToQFTuL8i1x2XUxevUxJOCNkhdlHNI u4KrDHYfB7IihIZ4Dfz8otA2+W+JvmQRmkZQtbiax9VigG51wjPbXluKXWJPGOq3OwgO bA7A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from; bh=xjjBfrqMk46gArHjS16eeg42zQQ3y7GuUN23Oqg5p5o=; b=lt+OMqNIlrZmfEQTULFSjyuOxjAog02xB0/ktUBhZs/kR2FzFGglrs2Osqe0n5Puo1 4IjYPND0H8NDkcbX1qbwqJap2xTN71MsKamOBluYFTILAP/pDtq2MffzrzxTm3BcxDQk 0FKZMN6bToxcKrvNjIfRYAC0IxJCXeQEKL5TcQd9p3fkwuY5P3vCHEmD8cxp2YTBpf6Q 6PbyF1Mp5Huorv05mjIkNS6CfNg1Qxh3OyVhO/TPrETMqUWe4s53vFosUnmllZsIO5dX rr68HQZebrv/pRIaV/C3RyRPKCo+2HvM97eH6/L18ysbPqAhMGmyclqpEy4+sxm0HJo9 VGWQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of mptcp+bounces-2119-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-2119-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from ewr.edge.kernel.org (ewr.edge.kernel.org. [147.75.197.195]) by mx.google.com with ESMTPS id gv7si5616568qvb.39.2021.10.06.17.00.13 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 06 Oct 2021 17:00:13 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-2119-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; spf=pass (google.com: domain of mptcp+bounces-2119-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-2119-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.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 B5F531C06A2 for ; Thu, 7 Oct 2021 00:00:13 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 673F92C81; Thu, 7 Oct 2021 00:00:10 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) (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 7D42E2C95 for ; Thu, 7 Oct 2021 00:00:08 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6200,9189,10129"; a="226439238" X-IronPort-AV: E=Sophos;i="5.85,352,1624345200"; d="scan'208";a="226439238" Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Oct 2021 16:59:59 -0700 X-IronPort-AV: E=Sophos;i="5.85,352,1624345200"; d="scan'208";a="560351285" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.209.0.106]) by fmsmga003-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Oct 2021 16:59:59 -0700 From: Mat Martineau To: mptcp@lists.linux.dev Cc: Mat Martineau , kishen.maloor@intel.com Subject: [RFC PATCH 4/6] mptcp: Add a per-namespace sysctl to set the default path manager type Date: Wed, 6 Oct 2021 16:59:51 -0700 Message-Id: <20211006235953.212243-5-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20211006235953.212243-1-mathew.j.martineau@linux.intel.com> References: <20211006235953.212243-1-mathew.j.martineau@linux.intel.com> Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The new net.mptcp.userspace_pm_default sysctl determines which path manager will be used by each newly-created MPTCP socket. Alternative: set the per-namespace default using the netlink API instead. Signed-off-by: Mat Martineau --- Documentation/networking/mptcp-sysctl.rst | 17 +++++++++++++++++ net/mptcp/ctrl.c | 16 ++++++++++++++++ net/mptcp/pm.c | 4 +++- net/mptcp/protocol.h | 1 + 4 files changed, 37 insertions(+), 1 deletion(-) diff --git a/Documentation/networking/mptcp-sysctl.rst b/Documentation/netw= orking/mptcp-sysctl.rst index b0d4da71e68e..9f5d7bad9fba 100644 --- a/Documentation/networking/mptcp-sysctl.rst +++ b/Documentation/networking/mptcp-sysctl.rst @@ -46,6 +46,23 @@ allow_join_initial_addr_port - BOOLEAN =20 Default: 1 =20 +userspace_pm_default - BOOLEAN + + Set the default path manager type to use for each new MPTCP + socket. The in-kernel path manager is used if this is set to 0, + and a userspace path manager is used if the value is set + to 1. In-kernel path management will control subflow connections + and address advertisements according to per-namespace values + configured over the MPTCP netlink API. Userspace path management + puts per-MPTCP-connection subflow connection decisions and + address advertisements under control of a privileged userspace + program, at the cost of more netlink traffic to propagate all of + the related events and commands. + + This is a per-namespace sysctl. + + Default: 0 + stale_loss_cnt - INTEGER The number of MPTCP-level retransmission intervals with no traffic and pending outstanding data on a given subflow required to declare it stale. diff --git a/net/mptcp/ctrl.c b/net/mptcp/ctrl.c index 8b235468c88f..e7aedb90e35a 100644 --- a/net/mptcp/ctrl.c +++ b/net/mptcp/ctrl.c @@ -26,6 +26,7 @@ struct mptcp_pernet { u8 mptcp_enabled; u8 checksum_enabled; u8 allow_join_initial_addr_port; + u8 userspace_pm_default; }; =20 static struct mptcp_pernet *mptcp_get_pernet(const struct net *net) @@ -58,6 +59,11 @@ unsigned int mptcp_stale_loss_cnt(const struct net *net) return mptcp_get_pernet(net)->stale_loss_cnt; } =20 +int mptcp_userspace_pm_default(const struct net *net) +{ + return mptcp_get_pernet(net)->userspace_pm_default; +} + static void mptcp_pernet_set_defaults(struct mptcp_pernet *pernet) { pernet->mptcp_enabled =3D 1; @@ -65,6 +71,7 @@ static void mptcp_pernet_set_defaults(struct mptcp_pernet= *pernet) pernet->checksum_enabled =3D 0; pernet->allow_join_initial_addr_port =3D 1; pernet->stale_loss_cnt =3D 4; + pernet->userspace_pm_default =3D 0; } =20 #ifdef CONFIG_SYSCTL @@ -108,6 +115,14 @@ static struct ctl_table mptcp_sysctl_table[] =3D { .mode =3D 0644, .proc_handler =3D proc_douintvec_minmax, }, + { + .procname =3D "userspace_pm_default", + .maxlen =3D sizeof(u8), + .mode =3D 0644, + .proc_handler =3D proc_dou8vec_minmax, + .extra1 =3D SYSCTL_ZERO, + .extra2 =3D SYSCTL_ONE + }, {} }; =20 @@ -128,6 +143,7 @@ static int mptcp_pernet_new_table(struct net *net, stru= ct mptcp_pernet *pernet) table[2].data =3D &pernet->checksum_enabled; table[3].data =3D &pernet->allow_join_initial_addr_port; table[4].data =3D &pernet->stale_loss_cnt; + table[5].data =3D &pernet->userspace_pm_default; =20 hdr =3D register_net_sysctl(net, MPTCP_SYSCTL_PATH, table); if (!hdr) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index 3fa3c0faed48..e97a22fcc0fa 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -367,6 +367,8 @@ void mptcp_pm_subflow_chk_stale(const struct mptcp_sock= *msk, struct sock *ssk) =20 void mptcp_pm_data_init(struct mptcp_sock *msk) { + struct sock *sk =3D (struct sock *)msk; + msk->pm.add_addr_signaled =3D 0; msk->pm.add_addr_accepted =3D 0; msk->pm.local_addr_used =3D 0; @@ -378,7 +380,7 @@ void mptcp_pm_data_init(struct mptcp_sock *msk) WRITE_ONCE(msk->pm.accept_addr, false); WRITE_ONCE(msk->pm.accept_subflow, false); WRITE_ONCE(msk->pm.remote_deny_join_id0, false); - WRITE_ONCE(msk->pm.userspace, false); + WRITE_ONCE(msk->pm.userspace, mptcp_userspace_pm_default(sock_net(sk))); msk->pm.status =3D 0; =20 spin_lock_init(&msk->pm.lock); diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index b06c2307296d..a8f4133013bc 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -564,6 +564,7 @@ unsigned int mptcp_get_add_addr_timeout(const struct ne= t *net); int mptcp_is_checksum_enabled(const struct net *net); int mptcp_allow_join_id0(const struct net *net); unsigned int mptcp_stale_loss_cnt(const struct net *net); +int mptcp_userspace_pm_default(const struct net *net); void mptcp_subflow_fully_established(struct mptcp_subflow_context *subflow, struct mptcp_options_received *mp_opt); bool __mptcp_retransmit_pending_data(struct sock *sk); --=20 2.33.0 From nobody Sat Apr 20 12:27:36 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6638:27c:0:0:0:0 with SMTP id x28csp886079jaq; Wed, 6 Oct 2021 17:00:12 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwZQuN6Z9YwDKZCiskMKVeteY8IOSrE74m0BJCDvSt/aeGrTOYKbORcTjfVskZEtBHK1MkH X-Received: by 2002:a05:6808:10b:: with SMTP id b11mr820735oie.162.1633564812338; Wed, 06 Oct 2021 17:00:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1633564812; cv=none; d=google.com; s=arc-20160816; b=QqP5NNxSjjWxtLk5dhIFJppfJCcGUKOfowW4CTfyBkjouLSwNNI8qXSBufx4w43/Lh uookARtKLW+HohQjprh6B5Nk2Jfu0Tg+V1U7BzR6sGNyaXify27fOH52xpKWoN3iNLk9 W/cvEDdkJzKs/TGY2M/xpZlTWmuSGsB7A0qAARRZH6d285OZyBfUtDOXZD7FaFuHW4Ct 5ZV3ISO3hIc8LJke+uQQA01wc+9Ar9Yu0FdibvyDWThI/7Dqav8ts5HkoSYizm/qvBzn aTb3WX1lv6etdQIQ+qoPTAPi9qVSRKCc1A/BL2/Ty88vwpPdEb31+jCOwJ7gyfrxxFpy 3vaQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from; bh=8fSQzzOVe8d2HqiFtvB9QUfGb2/QANKYhyEXU/bVYrw=; b=wcajH5uBqUL56ZZGtcTARPO8hVXFqWVBpiD1idFz0xkxRTCgYoWZdRsYkm0Npby95V yPJkLYlt1hEL0Cyzh97OSqa/W6aJE1EsZv8chch/PkjKtOcFEEgXgFfCjN7zNVpSBRLx XiNx1GkYXstQOpW5TyqP9i7wxII3350+dJZSWNldGcD/eBkipQIP9xhtNqqnDH3Cw4LS 4WEe8zHPPW/dA6CwCnRDV8RP7Lmafl1PtHf0mH4Npd+GhPXHjiRTfPtUw9/3wPjLBbQ9 BRWOy+2XzYuNEL2hzVselmT2tFnWCBqZ2++Nu06eaH04DuQuiNy4UV3ZtaN6BUGRX4yB Kvmg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of mptcp+bounces-2117-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) smtp.mailfrom="mptcp+bounces-2117-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from sjc.edge.kernel.org (sjc.edge.kernel.org. [147.75.69.165]) by mx.google.com with ESMTPS id 2si4141814otx.78.2021.10.06.17.00.11 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 06 Oct 2021 17:00:11 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-2117-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) client-ip=147.75.69.165; Authentication-Results: mx.google.com; spf=pass (google.com: domain of mptcp+bounces-2117-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) smtp.mailfrom="mptcp+bounces-2117-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.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 sjc.edge.kernel.org (Postfix) with ESMTPS id E512B3E0EDA for ; Thu, 7 Oct 2021 00:00:10 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 5E01F2C96; Thu, 7 Oct 2021 00:00:09 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) (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 5259A2C93 for ; Thu, 7 Oct 2021 00:00:08 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6200,9189,10129"; a="226439239" X-IronPort-AV: E=Sophos;i="5.85,352,1624345200"; d="scan'208";a="226439239" Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Oct 2021 16:59:59 -0700 X-IronPort-AV: E=Sophos;i="5.85,352,1624345200"; d="scan'208";a="560351289" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.209.0.106]) by fmsmga003-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Oct 2021 16:59:59 -0700 From: Mat Martineau To: mptcp@lists.linux.dev Cc: Mat Martineau , kishen.maloor@intel.com Subject: [RFC PATCH 5/6] DO-NOT-MERGE: debug: mptcp: Warn on use of in-kernel PM functions Date: Wed, 6 Oct 2021 16:59:52 -0700 Message-Id: <20211006235953.212243-6-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20211006235953.212243-1-mathew.j.martineau@linux.intel.com> References: <20211006235953.212243-1-mathew.j.martineau@linux.intel.com> Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Double-check that all relevant call sites are filtered when sockets are managed by userspace. Signed-off-by: Mat Martineau --- net/mptcp/pm_netlink.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index 434049836707..affa84099bdd 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -468,6 +468,8 @@ static void mptcp_pm_create_subflow_or_signal_addr(stru= ct mptcp_sock *msk) struct pm_nl_pernet *pernet; unsigned int subflows_max; =20 + WARN_ON_ONCE(READ_ONCE(msk->pm.userspace)); + pernet =3D net_generic(sock_net(sk), pm_nl_pernet_id); =20 add_addr_signal_max =3D mptcp_pm_get_add_addr_signal_max(msk); @@ -700,6 +702,8 @@ static void mptcp_pm_nl_rm_addr_or_subflow(struct mptcp= _sock *msk, =20 msk_owned_by_me(msk); =20 + WARN_ON_ONCE(READ_ONCE(msk->pm.userspace)); + if (!rm_list->nr) return; =20 @@ -1244,6 +1248,8 @@ static bool mptcp_pm_remove_anno_addr(struct mptcp_so= ck *msk, struct mptcp_rm_list list =3D { .nr =3D 0 }; bool ret; =20 + WARN_ON_ONCE(READ_ONCE(msk->pm.userspace)); + list.ids[list.nr++] =3D addr->id; =20 ret =3D remove_anno_list_by_saddr(msk, addr); --=20 2.33.0 From nobody Sat Apr 20 12:27:36 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6638:27c:0:0:0:0 with SMTP id x28csp885950jaq; Wed, 6 Oct 2021 17:00:04 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwyBh88eSxt9fk9lk/dvEThLsWakDi2YonKENLStPNobh0FXvOI0YLF9WzAJ+tk1eQ9FZGa X-Received: by 2002:a37:44d7:: with SMTP id r206mr846965qka.421.1633564804390; Wed, 06 Oct 2021 17:00:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1633564804; cv=none; d=google.com; s=arc-20160816; b=0sNxERfisDaKkz8LTzd22DwikjRlDxRXSlwyHghcDy9d6cUaYy7vYQWv6N7H1ybZri 93a8KGkya49OFqeNVHhgOAj+plPaIzbrKoEiONZh+9Z9bzuYJedbzbX7H9nuUZtk8bN+ Y0Na1tY7cndawbx4mTdpfS4TJrhe1Po7rDIdtfJNELB9OA54zX94XqbRkXDGXoy4yA9b 2D8qRw0veRBVpZxEL8ZLdtvHAdzpP4YSrcnWFQsSDWFvaxTsnRv6AVxFWpPEMO1IJD4I JkQUrrxAvxHK89sBP7G6VxhA0fmJ1nEuhCxyi7naKNZuLtupwm0fPdUN2vI5BMZtpa8f QDJA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from; bh=yY/DLF4w98p1HB7YQgtlLV6+TUeSoQoPQTr+5QNyu/E=; b=bR2i11hhiBpVodG6ggujFW0ASfVG5yv97IPqVTLlr7bYKq92ff7J7i+LqibVTzf2uE dvvOVqn3Sykm73NBauKgBf6K+Rpurbjs3FTzduHbZ9iey6Uls7ZLssRCMZx8InXrNOFF ozKMJOsYC9Nj3H4ZjrO5rrUu76Vca7FR0aqGqc4g+lrW/AlGVT5Yf2/OsLTZhV2h2TAo kM9mDvbdYwLBmIwYCaNY8ZDIeEseRwDUpaMf6lUhfj5H302CNX6R9617YAip7lekbibF 08xD6D6yESzybeLCM4wv+HIHPLbR6vhAhUec7eITuy7iuAfKpF30icDUiRkf8JPgGZBE xtyA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of mptcp+bounces-2113-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-2113-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from ewr.edge.kernel.org (ewr.edge.kernel.org. [147.75.197.195]) by mx.google.com with ESMTPS id f5si13456374qkh.384.2021.10.06.17.00.04 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 06 Oct 2021 17:00:04 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-2113-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; spf=pass (google.com: domain of mptcp+bounces-2113-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-2113-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.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 B08871C07C8 for ; Thu, 7 Oct 2021 00:00:03 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 3D5582C93; Thu, 7 Oct 2021 00:00:02 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) (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 A4D992C81 for ; Thu, 7 Oct 2021 00:00:00 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6200,9189,10129"; a="249414258" X-IronPort-AV: E=Sophos;i="5.85,352,1624345200"; d="scan'208";a="249414258" Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Oct 2021 16:59:59 -0700 X-IronPort-AV: E=Sophos;i="5.85,352,1624345200"; d="scan'208";a="560351292" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.209.0.106]) by fmsmga003-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Oct 2021 16:59:59 -0700 From: Mat Martineau To: mptcp@lists.linux.dev Cc: Mat Martineau , kishen.maloor@intel.com Subject: [RFC PATCH 6/6] DO-NOT-MERGE: debug: mptcp: Warn on unexpected events when userspace PM is active Date: Wed, 6 Oct 2021 16:59:53 -0700 Message-Id: <20211006235953.212243-7-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20211006235953.212243-1-mathew.j.martineau@linux.intel.com> References: <20211006235953.212243-1-mathew.j.martineau@linux.intel.com> Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" This is to confirm the previous commits work as expected, not sure if such checks will be needed upstream. Signed-off-by: Mat Martineau --- net/mptcp/pm_netlink.c | 45 +++++++++++++++++++++++++++++++++++++----- 1 file changed, 40 insertions(+), 5 deletions(-) diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index affa84099bdd..f6299bda6eb2 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -753,14 +753,10 @@ void mptcp_pm_nl_rm_subflow_received(struct mptcp_soc= k *msk, mptcp_pm_nl_rm_addr_or_subflow(msk, rm_list, MPTCP_MIB_RMSUBFLOW); } =20 -void mptcp_pm_nl_work(struct mptcp_sock *msk) +static void mptcp_pm_kernel_work(struct mptcp_sock *msk) { struct mptcp_pm_data *pm =3D &msk->pm; =20 - msk_owned_by_me(msk); - - spin_lock_bh(&msk->pm.lock); - pr_debug("msk=3D%p status=3D%x", msk, pm->status); if (pm->status & BIT(MPTCP_PM_ADD_ADDR_RECEIVED)) { pm->status &=3D ~BIT(MPTCP_PM_ADD_ADDR_RECEIVED); @@ -782,6 +778,45 @@ void mptcp_pm_nl_work(struct mptcp_sock *msk) pm->status &=3D ~BIT(MPTCP_PM_SUBFLOW_ESTABLISHED); mptcp_pm_nl_subflow_established(msk); } +} + +static void mptcp_pm_userspace_work(struct mptcp_sock *msk) +{ + struct mptcp_pm_data *pm =3D &msk->pm; + + pr_debug("msk=3D%p status=3D%x", msk, pm->status); + if (pm->status & BIT(MPTCP_PM_ADD_ADDR_RECEIVED)) { + pm->status &=3D ~BIT(MPTCP_PM_ADD_ADDR_RECEIVED); + WARN_ONCE(1, "Unexpected ADD_ADDR status in userspace PM mode"); + } + if (pm->status & BIT(MPTCP_PM_ADD_ADDR_SEND_ACK)) { + pm->status &=3D ~BIT(MPTCP_PM_ADD_ADDR_SEND_ACK); + WARN_ONCE(1, "Unexpected ADD_ADDR retransmit status in userspace PM mode= "); + } + if (pm->status & BIT(MPTCP_PM_RM_ADDR_RECEIVED)) { + pm->status &=3D ~BIT(MPTCP_PM_RM_ADDR_RECEIVED); + WARN_ONCE(1, "Unexpected RM_ADDR status in userspace PM mode"); + } + if (pm->status & BIT(MPTCP_PM_ESTABLISHED)) { + pm->status &=3D ~BIT(MPTCP_PM_ESTABLISHED); + WARN_ONCE(1, "Unexpected established status in userspace PM mode"); + } + if (pm->status & BIT(MPTCP_PM_SUBFLOW_ESTABLISHED)) { + pm->status &=3D ~BIT(MPTCP_PM_SUBFLOW_ESTABLISHED); + WARN_ONCE(1, "Unexpected subflow established status in userspace PM mode= "); + } +} + +void mptcp_pm_nl_work(struct mptcp_sock *msk) +{ + msk_owned_by_me(msk); + + spin_lock_bh(&msk->pm.lock); + + if (READ_ONCE(msk->pm.userspace)) + mptcp_pm_userspace_work(msk); + else + mptcp_pm_kernel_work(msk); =20 spin_unlock_bh(&msk->pm.lock); } --=20 2.33.0