From patchwork Wed Feb 3 16:08:20 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Oltean X-Patchwork-Id: 12064695 X-Patchwork-Delegate: kuba@kernel.org Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-20.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8559CC433E6 for ; Wed, 3 Feb 2021 16:10:03 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 41C0F64E36 for ; Wed, 3 Feb 2021 16:10:03 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234803AbhBCQJm (ORCPT ); Wed, 3 Feb 2021 11:09:42 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48622 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234876AbhBCQJY (ORCPT ); Wed, 3 Feb 2021 11:09:24 -0500 Received: from mail-ej1-x62f.google.com (mail-ej1-x62f.google.com [IPv6:2a00:1450:4864:20::62f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E3FA1C0613D6 for ; Wed, 3 Feb 2021 08:08:42 -0800 (PST) Received: by mail-ej1-x62f.google.com with SMTP id f14so12383460ejc.8 for ; Wed, 03 Feb 2021 08:08:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=8ybgqix3kyeUq3RKDuuhyNef4XyLVRGqFwbLZYyCLiY=; b=JTIr3SLF0R2cjTNmsAOW8bJFEPf1Onk8+6Vw8yU8nHBMlkn/9w54hx9zI7/iRW+0Jn vKybe+3j9SFvHjEaDh8KZxU8zz7ySWa7QqvMrHM6oAu9eNRx74HJTbYqfr0W6x5gfu0u bMZyX60WcoEWZJx9rC/XPD6BZfqjK82NXkIF+n+Fbd9Eqr1qz7Bdvtlq3lyLknU+m2eG eWNJoL22g48NAYjfLkOjdNLwfbSwgbmjrYUZU+7guawkwzcnE/CHSHSsaSIiPrim55yc eMmG9wJ9e9iBmPVKQpFNc0yVzVq1YfX7oWn2umG5Z+7No7LPu7whX8bSMw/i5a+M9f9e 1swA== 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=8ybgqix3kyeUq3RKDuuhyNef4XyLVRGqFwbLZYyCLiY=; b=OC39t8GQC99Nnqk5wt5wVdTD0HZUBogfYwjZJ/c3zkA94wwAqg9MU3cR4EfGxuL/52 CSMpicJIeeI1m3VAB+oR/Qq+Bq3KEHEoUmIJnNloO54OJE4oDVM6SpfNbAo/jxk8SEeh +WzPG3U+O7thw/jpYslErkoeFHQ+41kdqFm4DF/wb0BCmPh4381qm3wY+SqlornzOvRY 2FaqdODck1K1XocLEoV9fncip3bfCzQX6rKU57F7a33l9Cv3T5wti1ILropxUEcKY8YQ 6naldi2ceIFYhmeml/HCcuiC2Zqeyv1fo2zOf8t8PFDCAMi51qAj1bsx1dWJmeKcZNxj wSug== X-Gm-Message-State: AOAM533s8Jn7gb6ropb/Um7vKlAobgnyZw6zkj2FTO0sOoKuM17hS5QV g8N3gN4GrOqbQtw5WzJjaxE= X-Google-Smtp-Source: ABdhPJwwZyfWGdwaiF5fmJ0Fga2tl7ZLYKPYuMKw8+gIGWmPfvVCgE6imDX0k0/pTXqJ5n4nvkPXXw== X-Received: by 2002:a17:906:4442:: with SMTP id i2mr3961838ejp.41.1612368521199; Wed, 03 Feb 2021 08:08:41 -0800 (PST) Received: from localhost.localdomain (5-12-227-87.residential.rdsnet.ro. [5.12.227.87]) by smtp.gmail.com with ESMTPSA id u16sm1085589eds.71.2021.02.03.08.08.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Feb 2021 08:08:40 -0800 (PST) From: Vladimir Oltean To: "David S . Miller" , Jakub Kicinski , netdev@vger.kernel.org Cc: Andrew Lunn , Florian Fainelli , Vivien Didelot , Hideaki YOSHIFUJI Subject: [PATCH v2 net-next 1/4] net: dsa: automatically bring up DSA master when opening user port Date: Wed, 3 Feb 2021 18:08:20 +0200 Message-Id: <20210203160823.2163194-2-olteanv@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210203160823.2163194-1-olteanv@gmail.com> References: <20210203160823.2163194-1-olteanv@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org From: Vladimir Oltean DSA wants the master interface to be open before the user port is due to historical reasons. The promiscuity of interfaces that are down used to have issues, as referenced Lennert Buytenhek in commit df02c6ff2e39 ("dsa: fix master interface allmulti/promisc handling"). The bugfix mentioned there, commit b6c40d68ff64 ("net: only invoke dev->change_rx_flags when device is UP"), was basically a "don't do that" approach to working around the promiscuity while down issue. Further work done by Vlad Yasevich in commit d2615bf45069 ("net: core: Always propagate flag changes to interfaces") has resolved the underlying issue, and it is strictly up to the DSA and 8021q drivers now, it is no longer mandated by the networking core that the master interface must be up when changing its promiscuity. From DSA's point of view, deciding to error out in dsa_slave_open because the master isn't up is (a) a bad user experience and (b) missing the forest for the trees. Even if there still was an issue with promiscuity while down, DSA could still do this and avoid it: open the DSA master manually, then do whatever. Voila, the DSA master is now up, no need to error out. Doing it this way has the additional benefit that user space can now remove DSA-specific workarounds, like systemd-networkd with BindCarrier: https://github.com/systemd/systemd/issues/7478 And we can finally remove one of the 2 bullets in the "Common pitfalls using DSA setups" chapter. Signed-off-by: Vladimir Oltean Reviewed-by: Andrew Lunn Reviewed-by: Florian Fainelli --- Changes in v2: None. Documentation/networking/dsa/dsa.rst | 4 ---- net/dsa/slave.c | 10 ++++++++-- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/Documentation/networking/dsa/dsa.rst b/Documentation/networking/dsa/dsa.rst index a8d15dd2b42b..e9517af5fe02 100644 --- a/Documentation/networking/dsa/dsa.rst +++ b/Documentation/networking/dsa/dsa.rst @@ -273,10 +273,6 @@ will not make us go through the switch tagging protocol transmit function, so the Ethernet switch on the other end, expecting a tag will typically drop this frame. -Slave network devices check that the master network device is UP before allowing -you to administratively bring UP these slave network devices. A common -configuration mistake is forgetting to bring UP the master network device first. - Interactions with other subsystems ================================== diff --git a/net/dsa/slave.c b/net/dsa/slave.c index b0571ab4e5a7..4616bd7c8684 100644 --- a/net/dsa/slave.c +++ b/net/dsa/slave.c @@ -68,8 +68,14 @@ static int dsa_slave_open(struct net_device *dev) struct dsa_port *dp = dsa_slave_to_port(dev); int err; - if (!(master->flags & IFF_UP)) - return -ENETDOWN; + if (!(master->flags & IFF_UP)) { + err = dev_change_flags(master, master->flags | IFF_UP, NULL); + if (err < 0) { + netdev_err(dev, "failed to open master %s\n", + master->name); + goto out; + } + } if (!ether_addr_equal(dev->dev_addr, master->dev_addr)) { err = dev_uc_add(master, dev->dev_addr); From patchwork Wed Feb 3 16:08:21 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Oltean X-Patchwork-Id: 12064697 X-Patchwork-Delegate: kuba@kernel.org Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8D6F2C433E9 for ; Wed, 3 Feb 2021 16:10:04 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 3F70964E2E for ; Wed, 3 Feb 2021 16:10:04 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234936AbhBCQJr (ORCPT ); Wed, 3 Feb 2021 11:09:47 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48626 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234878AbhBCQJY (ORCPT ); Wed, 3 Feb 2021 11:09:24 -0500 Received: from mail-ej1-x630.google.com (mail-ej1-x630.google.com [IPv6:2a00:1450:4864:20::630]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 00CAEC0613ED for ; Wed, 3 Feb 2021 08:08:43 -0800 (PST) Received: by mail-ej1-x630.google.com with SMTP id i8so20186648ejc.7 for ; Wed, 03 Feb 2021 08:08:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=3h1HvVXUe44/bCSp1i3L8ntFtq89XkBSubKh6RThU44=; b=K9VdfFebuoBpuPsCyMvpRurxxEMq5Fj2aVvjfQFWS5RPneVCr3jrEEc2lioAwuiU6s N2E42oxrSctbEoEf5OhlRYqGqkWWzzKnpdpaA59Ww3Nf3giqzicVYNRx3A9AtvP/yHMR QgqegdlhDWvwvvQFltCqEYilnh70fQLWFa89Ni+RlhHI+3onO4h78UaR/nOkGj/skXIH h7BJ2fTFfu5yB2vxyMEepqJUvVF6EyPcy0179LZxa1UWOWw8dX9H+SaoSgoS/bEYMV6Z iloN6TOvvI9cEwesVqKa/DjeAkDiUiq8LWxhIpM8RpQyeQOIKOOzyT8nDyHnUEvHWXxW gJAg== 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=3h1HvVXUe44/bCSp1i3L8ntFtq89XkBSubKh6RThU44=; b=eJndPxGQQrttrOTdpLCJuxwkGmsNGAlFpFKS7sD8oPueMIVbd5cLQ5e8z1QhB5GgpR xM4ZA+/6vc4+hgRkonEAu2wrwEa+DhvsKtSX2jfvaFi+FksNLRtTVDU+t8O/G0rIuXPC e5iiY/Jt0Q4R7otmp2qBTfAfBouaEG167yDnUivsMaqWYJo/IcRL1GHe61JkdeitKNL0 qhRmHtbJXy4YxCpOUOYwGGm3f0ZuOiRLZCDNNWK1QQR14CFVrgKChhDN+Fp5Bfe/Y7jY KbO8Yb4qXWO/m5H8ZvByRFOVlrlneS3APLJ58jD0BWJDYud7uGTMCRN4tvJL4FYJ7WFd c50g== X-Gm-Message-State: AOAM532elnepzFNI6a4i8Dd4QSOUvsWG77CAlN8Zm1e6GRGnw3UQUo04 qproZ3OL6SUMvcDYB9vjAw0= X-Google-Smtp-Source: ABdhPJzFpoqRBUoC+K5MEiTOxz0PFbfYXqcwdkkD79YlQIebi6kvRLlnW0/9kdqWoLELGeT7V88nqA== X-Received: by 2002:a17:906:80b:: with SMTP id e11mr3856802ejd.269.1612368522680; Wed, 03 Feb 2021 08:08:42 -0800 (PST) Received: from localhost.localdomain (5-12-227-87.residential.rdsnet.ro. [5.12.227.87]) by smtp.gmail.com with ESMTPSA id u16sm1085589eds.71.2021.02.03.08.08.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Feb 2021 08:08:41 -0800 (PST) From: Vladimir Oltean To: "David S . Miller" , Jakub Kicinski , netdev@vger.kernel.org Cc: Andrew Lunn , Florian Fainelli , Vivien Didelot , Hideaki YOSHIFUJI Subject: [PATCH v2 net-next 2/4] net: dsa: automatically bring user ports down when master goes down Date: Wed, 3 Feb 2021 18:08:21 +0200 Message-Id: <20210203160823.2163194-3-olteanv@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210203160823.2163194-1-olteanv@gmail.com> References: <20210203160823.2163194-1-olteanv@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org From: Vladimir Oltean This is not fixing any actual bug that I know of, but having a DSA interface that is up even when its lower (master) interface is down is one of those things that just do not sound right. Yes, DSA checks if the master is up before actually bringing the user interface up, but nobody prevents bringing the master interface down immediately afterwards... Then the user ports would attempt dev_queue_xmit on an interface that is down, and wonder what's wrong. This patch prevents that from happening. NETDEV_GOING_DOWN is the notification emitted _before_ the master actually goes down, and we are protected by the rtnl_mutex, so all is well. $ ip link set eno2 down [ 763.672211] mscc_felix 0000:00:00.5 swp0: Link is Down [ 763.880137] mscc_felix 0000:00:00.5 swp1: Link is Down [ 764.078773] mscc_felix 0000:00:00.5 swp2: Link is Down [ 764.197106] mscc_felix 0000:00:00.5 swp3: Link is Down [ 764.299384] fsl_enetc 0000:00:00.2 eno2: Link is Down For those of you reading this because you were doing switch testing such as latency measurements for autonomously forwarded traffic, and you needed a controlled environment with no extra packets sent by the network stack, this patch breaks that, because now the user ports go down too, which may shut down the PHY etc. But please don't do it like that, just do instead: tc qdisc add dev eno2 clsact tc filter add dev eno2 egress flower action drop Signed-off-by: Vladimir Oltean Reviewed-by: Andrew Lunn Reviewed-by: Florian Fainelli --- Changes in v2: Fix typo: !dsa_is_user_port -> dsa_is_user_port. net/dsa/slave.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/net/dsa/slave.c b/net/dsa/slave.c index 4616bd7c8684..aa7bd223073c 100644 --- a/net/dsa/slave.c +++ b/net/dsa/slave.c @@ -2084,6 +2084,36 @@ static int dsa_slave_netdevice_event(struct notifier_block *nb, err = dsa_port_lag_change(dp, info->lower_state_info); return notifier_from_errno(err); } + case NETDEV_GOING_DOWN: { + struct dsa_port *dp, *cpu_dp; + struct dsa_switch_tree *dst; + int err = 0; + + if (!netdev_uses_dsa(dev)) + return NOTIFY_DONE; + + cpu_dp = dev->dsa_ptr; + dst = cpu_dp->ds->dst; + + list_for_each_entry(dp, &dst->ports, list) { + if (dsa_is_user_port(dp->ds, dp->index)) { + struct net_device *slave = dp->slave; + + if (!(slave->flags & IFF_UP)) + continue; + + err = dev_change_flags(slave, + slave->flags & ~IFF_UP, + NULL); + if (err) + break; + } + } + + return notifier_from_errno(err); + } + default: + break; } return NOTIFY_DONE; From patchwork Wed Feb 3 16:08:22 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Oltean X-Patchwork-Id: 12064703 X-Patchwork-Delegate: kuba@kernel.org Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A58BDC433E6 for ; Wed, 3 Feb 2021 16:14:15 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 6618464F8C for ; Wed, 3 Feb 2021 16:14:15 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234880AbhBCQNW (ORCPT ); Wed, 3 Feb 2021 11:13:22 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48634 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234879AbhBCQJ0 (ORCPT ); Wed, 3 Feb 2021 11:09:26 -0500 Received: from mail-ed1-x533.google.com (mail-ed1-x533.google.com [IPv6:2a00:1450:4864:20::533]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 578F2C061786 for ; Wed, 3 Feb 2021 08:08:45 -0800 (PST) Received: by mail-ed1-x533.google.com with SMTP id g10so229938eds.2 for ; Wed, 03 Feb 2021 08:08:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=FpuCBq/7DiSsEhWNIONqM13jSE9QTeYueBLIAYCFw5o=; b=U8xQd39cwSBqDDZmSljpwDzHzL0mgdltco+F+ta2S+pHDhHnznTbAtY4ne6M5xXKQg 5GurRI5yeA16G7EoB5A5TVfz+FLCQfm1WYpa7dsGU+Wa5xb5pBVzgdovZYgZ8a3OLXpN 6xwH/Goz7qnaMOPCCAhXC4/Uzeo42G56tcyMvT7+8LWAXTDH6SdQf7iRId3d711a5bxl LfFH9+Wv4TWoUF6Gc3cMVZPZ56VxAOx1Ac6/XR2SMp9aQ+1TyRfMIvpJ+WqQQmvt0NIj VHDOk3RF7DXRsSgAaFKc1hEhEstdWR10Hv6j+fYvYtDhhO7FfU/H540nlLn2S28YF/JM meMQ== 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=FpuCBq/7DiSsEhWNIONqM13jSE9QTeYueBLIAYCFw5o=; b=A2sEiZKMS2NHwQXn7O1ys1prHamYONBb8Lu5hWc8wbjfV5rkhbqSvoiWM/h46s806s soHHNhMKA5/41RBV4RENMQA0FBNVBLN80XeCRs7ePT07lyaFr/SmVBa8iBilyTAFG//p omZ6Sa7kyy6z0AT0pecILvftQqDgSdBDUQVykWPjIsi6x74EKtP+ruxxQRnplK1s9Iph YU41teUb/aUNhXqw65SderxXhUxvUdcuaaMWxAsA57h/GkpWjNIXSZZ42UhcbQyebnYq o+h17aATaU8CQZC+EzpR3jY3LdOqAUMioFrYSwuW3HR9gaM5PHGSXK/f3LOjuLZe0Cdx vKkA== X-Gm-Message-State: AOAM533qRjLeELbE0hURMFBwuGELiFGs3Kk75RN3VCYMM3LZrevz/tG/ ORu11yDrifrlJ1ChGlxOuq9sxhigIyw= X-Google-Smtp-Source: ABdhPJwirLtUJsCOLPkzauMNoOY63SoavJSBm2hm2QxwcUVSxrhn0g9byKoGRqUODmWrwtPfivlOfA== X-Received: by 2002:aa7:d399:: with SMTP id x25mr3691976edq.237.1612368524148; Wed, 03 Feb 2021 08:08:44 -0800 (PST) Received: from localhost.localdomain (5-12-227-87.residential.rdsnet.ro. [5.12.227.87]) by smtp.gmail.com with ESMTPSA id u16sm1085589eds.71.2021.02.03.08.08.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Feb 2021 08:08:43 -0800 (PST) From: Vladimir Oltean To: "David S . Miller" , Jakub Kicinski , netdev@vger.kernel.org Cc: Andrew Lunn , Florian Fainelli , Vivien Didelot , Hideaki YOSHIFUJI Subject: [PATCH v2 net-next 3/4] Revert "net: Have netpoll bring-up DSA management interface" Date: Wed, 3 Feb 2021 18:08:22 +0200 Message-Id: <20210203160823.2163194-4-olteanv@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210203160823.2163194-1-olteanv@gmail.com> References: <20210203160823.2163194-1-olteanv@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org From: Vladimir Oltean This reverts commit 1532b9778478577152201adbafa7738b1e844868. The above commit is good and it works, however it was meant as a bugfix for stable kernels and now we have more self-contained ways in DSA to handle the situation where the DSA master must be brought up. Signed-off-by: Vladimir Oltean Reviewed-by: Andrew Lunn Reviewed-by: Florian Fainelli --- Changes in v2: None. net/core/netpoll.c | 22 ++++------------------ 1 file changed, 4 insertions(+), 18 deletions(-) diff --git a/net/core/netpoll.c b/net/core/netpoll.c index 960948290001..c310c7c1cef7 100644 --- a/net/core/netpoll.c +++ b/net/core/netpoll.c @@ -29,7 +29,6 @@ #include #include #include -#include #include #include #include @@ -658,15 +657,15 @@ EXPORT_SYMBOL_GPL(__netpoll_setup); int netpoll_setup(struct netpoll *np) { - struct net_device *ndev = NULL, *dev = NULL; - struct net *net = current->nsproxy->net_ns; + struct net_device *ndev = NULL; struct in_device *in_dev; int err; rtnl_lock(); - if (np->dev_name[0]) + if (np->dev_name[0]) { + struct net *net = current->nsproxy->net_ns; ndev = __dev_get_by_name(net, np->dev_name); - + } if (!ndev) { np_err(np, "%s doesn't exist, aborting\n", np->dev_name); err = -ENODEV; @@ -674,19 +673,6 @@ int netpoll_setup(struct netpoll *np) } dev_hold(ndev); - /* bring up DSA management network devices up first */ - for_each_netdev(net, dev) { - if (!netdev_uses_dsa(dev)) - continue; - - err = dev_change_flags(dev, dev->flags | IFF_UP, NULL); - if (err < 0) { - np_err(np, "%s failed to open %s\n", - np->dev_name, dev->name); - goto put; - } - } - if (netdev_master_upper_dev_get(ndev)) { np_err(np, "%s is a slave device, aborting\n", np->dev_name); err = -EBUSY; From patchwork Wed Feb 3 16:08:23 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Oltean X-Patchwork-Id: 12064699 X-Patchwork-Delegate: kuba@kernel.org Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A7FFCC433DB for ; Wed, 3 Feb 2021 16:13:34 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 5162A64F74 for ; Wed, 3 Feb 2021 16:13:34 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234721AbhBCQNR (ORCPT ); Wed, 3 Feb 2021 11:13:17 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48642 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234867AbhBCQJ1 (ORCPT ); Wed, 3 Feb 2021 11:09:27 -0500 Received: from mail-ed1-x52d.google.com (mail-ed1-x52d.google.com [IPv6:2a00:1450:4864:20::52d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C1BA0C061788 for ; Wed, 3 Feb 2021 08:08:46 -0800 (PST) Received: by mail-ed1-x52d.google.com with SMTP id s3so181966edi.7 for ; Wed, 03 Feb 2021 08:08:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=yVEV5yA64KZmsVdfewbWP3ONZJXynUGtQcE4N5nGklE=; b=uy0FIy33iXo8HyTsOf9ptA+t/vYKFPGYTIvhzfMfBSc6pHSkNKbZBS3JawPLXBSteq c0gmh8+A97f0SWGe4ZSFbTpFolR7wMnUlZGHp+/xDkLoLwDxjmdk0pnjYc6g4QeIxlE9 JPJTruE4bqKks70dz/bia0Uy5s2zrb/OHEhwtVaM1Y6ulH8C/fi0/u11H5Y8vwTPFYCh JdnA17CdNwO59MOCuNLMVAX2dEY0/ixglIwmwXh4lAt+bvgesG6PZmbqziJdbFRt98ZA VcFX/DXk2Lm7Zv+Rf3pnypTDtzVBxy/0eAgqu+f2W1UsjYLjIsaKDfGgBVUvQX505fIm 9QRA== 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=yVEV5yA64KZmsVdfewbWP3ONZJXynUGtQcE4N5nGklE=; b=pBsk8soFiWMBIsJs9s9mtI12MroSxZ6H78A8ohx1C2INCftWWnqLnlAHJhEak6B0l+ bUfMEPJMoksMPGoHs9KFGAlMT087F73NhFLNbH6fhKW2gVc/eIyd5+zZOXa29x/z0YNw q+GpTNIrpJnlS9yocKocZyskZ8TfTTflDgF+IiGVW7hLkUv+DAcEfXTYSPTUOg6h5zvm wr8BfPkkzgTrdqEWDdcxG37lUAr8MyBVWCt5nrWuHjqKL+W2UksIoz+QJrvZLos4ThL0 vAJ8bNB7xUJZMinocxBQ8xLJe/9GG00TwLs3mcx5Nv9+FHcD7tKVpsoQCEo7ptNafaf1 5LAA== X-Gm-Message-State: AOAM532HuPR44dmcc92HUsBUuv1Rv5l1ep14a1Tp5iW7lcb1yueoRpvF D6FyVdBbuwX/RII5xgQnNbQ= X-Google-Smtp-Source: ABdhPJyUBikQdgsBW4Zs2HJeKtSGpN/BNNhSuCzrHeCmMQUeX2SAEMqTqVHFEZq/opl3Kg6eAyTeZA== X-Received: by 2002:aa7:c7d8:: with SMTP id o24mr3730822eds.121.1612368525495; Wed, 03 Feb 2021 08:08:45 -0800 (PST) Received: from localhost.localdomain (5-12-227-87.residential.rdsnet.ro. [5.12.227.87]) by smtp.gmail.com with ESMTPSA id u16sm1085589eds.71.2021.02.03.08.08.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Feb 2021 08:08:44 -0800 (PST) From: Vladimir Oltean To: "David S . Miller" , Jakub Kicinski , netdev@vger.kernel.org Cc: Andrew Lunn , Florian Fainelli , Vivien Didelot , Hideaki YOSHIFUJI Subject: [PATCH v2 net-next 4/4] Revert "net: ipv4: handle DSA enabled master network devices" Date: Wed, 3 Feb 2021 18:08:23 +0200 Message-Id: <20210203160823.2163194-5-olteanv@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210203160823.2163194-1-olteanv@gmail.com> References: <20210203160823.2163194-1-olteanv@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org From: Vladimir Oltean This reverts commit 728c02089a0e3eefb02e9927bfae50490f40e72e. Since 2015 DSA has gained more integration with the network stack, we can now have the same functionality without explicitly open-coding for it: - It now opens the DSA master netdevice automatically whenever a user netdevice is opened. - The master and switch interfaces are coupled in an upper/lower hierarchy using the netdev adjacency lists. In the nfsroot example below, the interface chosen by autoconfig was swp3, and every interface except that and the DSA master, eth1, was brought down afterwards: [ 8.714215] mscc_felix 0000:00:00.5 swp0 (uninitialized): PHY [0000:00:00.3:10] driver [Microsemi GE VSC8514 SyncE] (irq=POLL) [ 8.978041] mscc_felix 0000:00:00.5 swp1 (uninitialized): PHY [0000:00:00.3:11] driver [Microsemi GE VSC8514 SyncE] (irq=POLL) [ 9.246134] mscc_felix 0000:00:00.5 swp2 (uninitialized): PHY [0000:00:00.3:12] driver [Microsemi GE VSC8514 SyncE] (irq=POLL) [ 9.486203] mscc_felix 0000:00:00.5 swp3 (uninitialized): PHY [0000:00:00.3:13] driver [Microsemi GE VSC8514 SyncE] (irq=POLL) [ 9.512827] mscc_felix 0000:00:00.5: configuring for fixed/internal link mode [ 9.521047] mscc_felix 0000:00:00.5: Link is Up - 2.5Gbps/Full - flow control off [ 9.530382] device eth1 entered promiscuous mode [ 9.535452] DSA: tree 0 setup [ 9.539777] printk: console [netcon0] enabled [ 9.544504] netconsole: network logging started [ 9.555047] fsl_enetc 0000:00:00.2 eth1: configuring for fixed/internal link mode [ 9.562790] fsl_enetc 0000:00:00.2 eth1: Link is Up - 1Gbps/Full - flow control off [ 9.564661] 8021q: adding VLAN 0 to HW filter on device bond0 [ 9.637681] fsl_enetc 0000:00:00.0 eth0: PHY [0000:00:00.0:02] driver [Qualcomm Atheros AR8031/AR8033] (irq=POLL) [ 9.655679] fsl_enetc 0000:00:00.0 eth0: configuring for inband/sgmii link mode [ 9.666611] mscc_felix 0000:00:00.5 swp0: configuring for inband/qsgmii link mode [ 9.676216] 8021q: adding VLAN 0 to HW filter on device swp0 [ 9.682086] mscc_felix 0000:00:00.5 swp1: configuring for inband/qsgmii link mode [ 9.690700] 8021q: adding VLAN 0 to HW filter on device swp1 [ 9.696538] mscc_felix 0000:00:00.5 swp2: configuring for inband/qsgmii link mode [ 9.705131] 8021q: adding VLAN 0 to HW filter on device swp2 [ 9.710964] mscc_felix 0000:00:00.5 swp3: configuring for inband/qsgmii link mode [ 9.719548] 8021q: adding VLAN 0 to HW filter on device swp3 [ 9.747811] Sending DHCP requests .. [ 12.742899] mscc_felix 0000:00:00.5 swp1: Link is Up - 1Gbps/Full - flow control rx/tx [ 12.743828] mscc_felix 0000:00:00.5 swp0: Link is Up - 1Gbps/Full - flow control off [ 12.747062] IPv6: ADDRCONF(NETDEV_CHANGE): swp1: link becomes ready [ 12.755216] fsl_enetc 0000:00:00.0 eth0: Link is Up - 1Gbps/Full - flow control rx/tx [ 12.766603] IPv6: ADDRCONF(NETDEV_CHANGE): swp0: link becomes ready [ 12.783188] mscc_felix 0000:00:00.5 swp2: Link is Up - 1Gbps/Full - flow control rx/tx [ 12.785354] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready [ 12.799535] IPv6: ADDRCONF(NETDEV_CHANGE): swp2: link becomes ready [ 13.803141] mscc_felix 0000:00:00.5 swp3: Link is Up - 1Gbps/Full - flow control rx/tx [ 13.811646] IPv6: ADDRCONF(NETDEV_CHANGE): swp3: link becomes ready [ 15.452018] ., OK [ 15.470336] IP-Config: Got DHCP answer from 10.0.0.1, my address is 10.0.0.39 [ 15.477887] IP-Config: Complete: [ 15.481330] device=swp3, hwaddr=00:04:9f:05:de:0a, ipaddr=10.0.0.39, mask=255.255.255.0, gw=10.0.0.1 [ 15.491846] host=10.0.0.39, domain=(none), nis-domain=(none) [ 15.498429] bootserver=10.0.0.1, rootserver=10.0.0.1, rootpath= [ 15.498481] nameserver0=8.8.8.8 [ 15.627542] fsl_enetc 0000:00:00.0 eth0: Link is Down [ 15.690903] mscc_felix 0000:00:00.5 swp0: Link is Down [ 15.745216] mscc_felix 0000:00:00.5 swp1: Link is Down [ 15.800498] mscc_felix 0000:00:00.5 swp2: Link is Down Signed-off-by: Vladimir Oltean Reviewed-by: Andrew Lunn Reviewed-by: Florian Fainelli --- Changes in v2: None. net/ipv4/ipconfig.c | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/net/ipv4/ipconfig.c b/net/ipv4/ipconfig.c index 3cd13e1bc6a7..f9ab1fb219ec 100644 --- a/net/ipv4/ipconfig.c +++ b/net/ipv4/ipconfig.c @@ -61,7 +61,6 @@ #include #include #include -#include #include #include #include @@ -218,9 +217,9 @@ static int __init ic_open_devs(void) last = &ic_first_dev; rtnl_lock(); - /* bring loopback and DSA master network devices up first */ + /* bring loopback device up first */ for_each_netdev(&init_net, dev) { - if (!(dev->flags & IFF_LOOPBACK) && !netdev_uses_dsa(dev)) + if (!(dev->flags & IFF_LOOPBACK)) continue; if (dev_change_flags(dev, dev->flags | IFF_UP, NULL) < 0) pr_err("IP-Config: Failed to open %s\n", dev->name); @@ -305,6 +304,9 @@ static int __init ic_open_devs(void) return 0; } +/* Close all network interfaces except the one we've autoconfigured, and its + * lowers, in case it's a stacked virtual interface. + */ static void __init ic_close_devs(void) { struct ic_device *d, *next; @@ -313,9 +315,20 @@ static void __init ic_close_devs(void) rtnl_lock(); next = ic_first_dev; while ((d = next)) { + bool bring_down = (d != ic_dev); + struct net_device *lower_dev; + struct list_head *iter; + next = d->next; dev = d->dev; - if (d != ic_dev && !netdev_uses_dsa(dev)) { + + netdev_for_each_lower_dev(ic_dev->dev, lower_dev, iter) { + if (dev == lower_dev) { + bring_down = false; + break; + } + } + if (bring_down) { pr_debug("IP-Config: Downing %s\n", dev->name); dev_change_flags(dev, d->flags, NULL); }