From patchwork Thu Sep 3 10:38:23 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geliang Tang X-Patchwork-Id: 1356477 X-Patchwork-Delegate: matthieu.baerts@tessares.net Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.01.org (client-ip=2001:19d0:306:5::1; helo=ml01.01.org; envelope-from=mptcp-bounces@lists.01.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=aTMzNr+J; dkim-atps=neutral Received: from ml01.01.org (ml01.01.org [IPv6:2001:19d0:306:5::1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4Bhy5L1Jq9z9sTR for ; Thu, 3 Sep 2020 20:40:53 +1000 (AEST) Received: from ml01.vlan13.01.org (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 6AF1F13BEC2D5; Thu, 3 Sep 2020 03:40:50 -0700 (PDT) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=2607:f8b0:4864:20::436; helo=mail-pf1-x436.google.com; envelope-from=geliangtang@gmail.com; receiver= Received: from mail-pf1-x436.google.com (mail-pf1-x436.google.com [IPv6:2607:f8b0:4864:20::436]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 0E66913BE5C10 for ; Thu, 3 Sep 2020 03:40:47 -0700 (PDT) Received: by mail-pf1-x436.google.com with SMTP id t9so1985194pfq.8 for ; Thu, 03 Sep 2020 03:40:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=XW1oDN0/fLsW87rcudCSz7Ao0gu6c4RFUJJhvkDnjSs=; b=aTMzNr+J30eIhqQjBxR/QY1KyOy5/Gv3C590GsFGD6BPD9TAtBW95naOmNpRZgUByE uHLL2V0y1y2J7xHzppFh6fFgsUnerZP9Dmg9MS9yDOTORByhYoTirBH8L2feJ5y+0V6T 0N+Jz2DJjt1I8JtUuzBTbMRjIevIpbd63qtoeMiJAv8F95rjLRUDTZev3YEszqNctZND D3hWegTZWYvMNOpeH9NWrkta82i/s1ya35xLojLY6cEYb3yXf74DuxpqWOVhy6/vP1q5 X+s34t9i+l3BYy74Wt9MuKJGFPawMrUqjTe4ndsH6/7ECvz9zo3e6GqUSv1BUsPIUplD R8bw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=XW1oDN0/fLsW87rcudCSz7Ao0gu6c4RFUJJhvkDnjSs=; b=O3ui9dFUS7/FKc1gon2ow+1dQ9W6RBs9QvAZKifpZZKMeE7Y/3vNnibyDpvMsbsBS2 oMn+9cm05fusVoC5DWg4i4v5d7rpJ65wu20gBLh4f8CoK+iOMmSgkLcl10Q5rNdoBi0e Aizu3Xs3XTvTRhISC7dOu0AeFLI2URiGuouzW2CqrVg2+RHCtKeykzePcvSo68edQhN3 /826mUEvncqEsBFdcdHQT27C7k4Vqwlgtb0UTu9lQ/r2F5WqUTG2i4ij3HMLINV5Nsjk Tnie5aNzUQ+MjnavfmK7kZSga0UCCpUfrgZc4rtWaXL8HmxhaCGLYwDGBHNFS8ZsmsCW pAfw== X-Gm-Message-State: AOAM530QH81PJyloPrZEPDQ5Rqn38IgoOXpi7tRX5uXlF8nzareLONUc B2DI8wxoBIP68ueHn0mIaW2Ki3FPtXCyAI/o X-Google-Smtp-Source: ABdhPJyzaVt6QzhX9Rv2ysLCBK2BLY7PNMPfE/+R0wxUCVoMgGPXJGGZ42InWKLFqm91QRmUL1XADw== X-Received: by 2002:a17:902:b28b:b029:d0:89f1:9e34 with SMTP id u11-20020a170902b28bb02900d089f19e34mr1805368plr.16.1599129646516; Thu, 03 Sep 2020 03:40:46 -0700 (PDT) Received: from localhost ([43.224.245.180]) by smtp.gmail.com with ESMTPSA id d131sm2406734pgc.88.2020.09.03.03.40.45 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 03 Sep 2020 03:40:45 -0700 (PDT) From: Geliang Tang To: mptcp@lists.01.org Date: Thu, 3 Sep 2020 18:38:23 +0800 Message-Id: X-Mailer: git-send-email 2.17.1 Message-ID-Hash: HNJJYQZTJUCLRBN5A2QZFIENJ2MOLBC3 X-Message-ID-Hash: HNJJYQZTJUCLRBN5A2QZFIENJ2MOLBC3 X-MailFrom: geliangtang@gmail.com X-Mailman-Rule-Hits: member-moderation X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address CC: Geliang Tang X-Mailman-Version: 3.1.1 Precedence: list Subject: [MPTCP] [PATCH] Squash-to: "mptcp: add the incoming RM_ADDR support" List-Id: Discussions regarding MPTCP upstreaming Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 This squash-to patch fixed three issues in "mptcp: add the incoming RM_ADDR support": 1. We will use another function mptcp_pm_nl_rm_subflow_received to remove a local subflow, so the mptcp_pm_nl_rm_addr_received function only need to deal with remote address removing. Thus we only need to check subflow->remote_id in mptcp_pm_nl_rm_addr_received. 2. Update PM counters in the right place. 3. Drop the remot_id fixing code here, since another new patch will deal with subflow's remote_id and local_id fixing. Signed-off-by: Geliang Tang --- net/mptcp/pm_netlink.c | 16 ++++++++-------- net/mptcp/subflow.c | 1 - 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index 544adfe66454..b1ce74bc589d 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -173,7 +173,7 @@ static void mptcp_pm_create_subflow_or_signal_addr(struct mptcp_sock *msk) { struct sock *sk = (struct sock *)msk; struct mptcp_pm_addr_entry *local; - struct mptcp_addr_info remote = { 0 }; + struct mptcp_addr_info remote; struct pm_nl_pernet *pernet; pernet = net_generic(sock_net((struct sock *)msk), pm_nl_pernet_id); @@ -266,7 +266,7 @@ void mptcp_pm_nl_rm_addr_received(struct mptcp_sock *msk) struct mptcp_subflow_context *subflow, *tmp; struct sock *sk = (struct sock *)msk; - pr_debug("rm_id %d", msk->pm.rm_id); + pr_debug("address rm_id %d", msk->pm.rm_id); if (!msk->pm.rm_id) return; @@ -274,23 +274,23 @@ void mptcp_pm_nl_rm_addr_received(struct mptcp_sock *msk) if (list_empty(&msk->conn_list)) return; - msk->pm.add_addr_accepted--; - msk->pm.subflows--; - WRITE_ONCE(msk->pm.accept_addr, true); - list_for_each_entry_safe(subflow, tmp, &msk->conn_list, node) { struct sock *ssk = mptcp_subflow_tcp_sock(subflow); int how = RCV_SHUTDOWN | SEND_SHUTDOWN; long timeout = 0; - if (msk->pm.rm_id != subflow->remote_id && - msk->pm.rm_id != subflow->local_id) + if (msk->pm.rm_id != subflow->remote_id) continue; spin_unlock_bh(&msk->pm.lock); mptcp_subflow_shutdown(sk, ssk, how); __mptcp_close_ssk(sk, ssk, subflow, timeout); spin_lock_bh(&msk->pm.lock); + + msk->pm.add_addr_accepted--; + msk->pm.subflows--; + WRITE_ONCE(msk->pm.accept_addr, true); + break; } } diff --git a/net/mptcp/subflow.c b/net/mptcp/subflow.c index 8464170e8dc1..535a3f9f8cfc 100644 --- a/net/mptcp/subflow.c +++ b/net/mptcp/subflow.c @@ -1094,7 +1094,6 @@ int __mptcp_subflow_connect(struct sock *sk, int ifindex, subflow->remote_key = msk->remote_key; subflow->local_key = msk->local_key; subflow->token = msk->token; - subflow->remote_id = remote->id; mptcp_info2sockaddr(loc, &addr); addrlen = sizeof(struct sockaddr_in);