From patchwork Sun Sep 20 01:47:19 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Oltean X-Patchwork-Id: 260546 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=-12.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, MSGID_FROM_MTA_HEADER, SIGNED_OFF_BY, 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 F0CEEC43463 for ; Sun, 20 Sep 2020 01:48:13 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id ADF9120E65 for ; Sun, 20 Sep 2020 01:48:13 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=nxp.com header.i=@nxp.com header.b="Fdw08a2x" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726859AbgITBsK (ORCPT ); Sat, 19 Sep 2020 21:48:10 -0400 Received: from mail-eopbgr80075.outbound.protection.outlook.com ([40.107.8.75]:7847 "EHLO EUR04-VI1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726781AbgITBsK (ORCPT ); Sat, 19 Sep 2020 21:48:10 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Ek5z/Fzi49j8M172FporMHpKFGCq6mtycTSz8HnjVm/i+/CwA89H3c7tG97oA8J4S90XLZ1JcD8aeHC6uaojYZkH+R1jLX0B7/QQvInSCBQIv7k0ogBxDkMhaEGcRix4EZN5iyMHlZ0VW4StTJRhMiumUdmopggykFwiUgCOWt3Duv6SO+EddQNs+QtEMeAGHveThn5i47plvvkAJbe1rYGs4JVvRmZ7h/f4dooiufe5uOPDMHRxlPVGMRyciAPug1Txzgw6taOFLP9Oj8sAdaAWjCJ3AJrf78bf4VFGB4w13w3s2+1qEUQBSmkSscFuFQlThpSKZxB+r/wgAZUFWA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=jb3jajK0rRUqlQVviPdYU4Y5FZCAHRYs6PYJZpafajA=; b=BJ99DtA0bI3bjy8jdZSIslz44shu811tl+T1R3oGHzdvSM45SBs3fXNUI3OXUDprK3dc486jl664LX6O60ojw5SLUIx53Dxtt90sEf6hSix9kURRY7oiYDiF+FcNbyV0fyjK/YUzgETOn9JvR1dSCEByH7Atcno3Ee+E0yo9zbpcgQho/R74zDUgp1wRmDKaOgwpTFJRmkw5EC4owLjdJWEIEHqpRXIh2UeLa8V7P0C/ZZvv8rgrKwefLLuSs3FbK1bHl6UMABCfS/gF0py4058324EYL68imEhIWbHOGZ9JeBRN5bbg2eWIszW/Xw6YL4dtdVLRu6dNKgyaglj+Jw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=jb3jajK0rRUqlQVviPdYU4Y5FZCAHRYs6PYJZpafajA=; b=Fdw08a2xzMIZJa/MOwPuFOEmNiyRJSDJ7fNXdEDfpFdP/bMaXS+lgaw6e4hFn+WjrjPGJZahIo04Lh4OMQJkITgdzxDowFtNLyO/v4dmNztkt4UxztiqwcfWC3T72OBkTtfo9pMkYuGvD6+NbEB7nf2q1UpdnCMeUomeGBgSQR4= Authentication-Results: vger.kernel.org; dkim=none (message not signed) header.d=none; vger.kernel.org; dmarc=none action=none header.from=nxp.com; Received: from VI1PR04MB5696.eurprd04.prod.outlook.com (2603:10a6:803:e7::13) by VI1PR0401MB2686.eurprd04.prod.outlook.com (2603:10a6:800:5b::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3391.15; Sun, 20 Sep 2020 01:48:05 +0000 Received: from VI1PR04MB5696.eurprd04.prod.outlook.com ([fe80::983b:73a7:cc93:e63d]) by VI1PR04MB5696.eurprd04.prod.outlook.com ([fe80::983b:73a7:cc93:e63d%3]) with mapi id 15.20.3391.014; Sun, 20 Sep 2020 01:48:05 +0000 From: Vladimir Oltean To: netdev@vger.kernel.org, davem@davemloft.net Cc: andrew@lunn.ch, f.fainelli@gmail.com, vivien.didelot@gmail.com, idosch@idosch.org, jiri@resnulli.us, kurt.kanzenbach@linutronix.de, kuba@kernel.org Subject: [RFC PATCH 1/9] net: dsa: deny enslaving 802.1Q upper to VLAN-aware bridge from PRECHANGEUPPER Date: Sun, 20 Sep 2020 04:47:19 +0300 Message-Id: <20200920014727.2754928-2-vladimir.oltean@nxp.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200920014727.2754928-1-vladimir.oltean@nxp.com> References: <20200920014727.2754928-1-vladimir.oltean@nxp.com> X-ClientProxiedBy: AM4P190CA0014.EURP190.PROD.OUTLOOK.COM (2603:10a6:200:56::24) To VI1PR04MB5696.eurprd04.prod.outlook.com (2603:10a6:803:e7::13) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from localhost.localdomain (188.25.217.212) by AM4P190CA0014.EURP190.PROD.OUTLOOK.COM (2603:10a6:200:56::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3391.11 via Frontend Transport; Sun, 20 Sep 2020 01:48:03 +0000 X-Mailer: git-send-email 2.25.1 X-Originating-IP: [188.25.217.212] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: f5cb90d6-2eb9-48ea-65bc-08d85d073744 X-MS-TrafficTypeDiagnostic: VI1PR0401MB2686: X-LD-Processed: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635,ExtAddr X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:6108; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: BaKZxoR9hCNp+VLqNHuMkbq6pyWC8n4zrpSvByKB3lckHgzPKr4IB58hpI2fCm1wyP1Ts1gdwgMBWyAjTCaQjemb/qhzqqJx7FFUl+LERWaKX3uQVHbq01HFsVmPkYWKJqW2TLmE4qyB+J2HEnDgBoTehebvM51YFXXxe21SKQVf2CnzZHSuU/THt8lzZ6vE0Sv9jgvFasHbBmxjCdqDyy2lDW3N47634Q1kZSkpj7oF/sYu7qsm47Jr85IgXnasW/aRfaN9I1PY6HREoriy1bV4kwJAfsSY0gbocFqOyAIDP1a4d/cPm1qN9S/hj9vFj6LWUvHpTe/IuM+7oEDfgDLWU4vpFWosnfcLwUjDjy2t5tPNMhYqt0DZ0i4oHfGH X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:VI1PR04MB5696.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(39860400002)(376002)(366004)(136003)(346002)(396003)(4326008)(69590400008)(86362001)(66476007)(66946007)(66556008)(83380400001)(6506007)(2906002)(478600001)(2616005)(956004)(36756003)(6486002)(52116002)(8676002)(44832011)(186003)(16526019)(6512007)(26005)(1076003)(8936002)(6666004)(5660300002)(316002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: JmGoNdTX7ksrUf5lYno0VADSW64KD9MtKWRRGwQC6SvJP9cqw08p4D2MXJoLGCh4J+hC7HTorKP9z+mqbfziApkz4DXuXj9v3bn2xSCB6n2LymhF0k7cEwKkjCb/vKGuKXbz8Brvo+9f968Htfqwkx81ZiP1sHHb1gNYIawaeQ9VgjNbmCJEQ6JoeJH6HFhvJbHg/kv2VRX8CZDLBm+hq7XWvwPX2vhRyYI4Iebv7Wz1ooy8VfDbVYz3Ctr70tOUBfboS0bb9WSqS+EIXSBbjucE1x1iWoe0d93vtxMZzX4gcRo8jYfMBC8MLlezIjLdhb4Ybad9pfZIZ3hmoKqkHVD/LaFYnmplh//UV8MVYR9buBHH/F8znC5pSj3pYinF77ACSYab8NyQEGwQH6uEUwHHwApD+BM1DzMlxGToOdeKoAq6Wqe0xYjmHE/7WVYZYkW1T4xdtg6cgHzdEsIN02Mr3z6DMNcoQblCIrG/SVmnDKL3VuimvtQocktuVoE8DB/joExEc7TotuZSiDhhNM5kdYXr2jfKU+GBm1pRskbZvluTG/PxqsIjM8LqFuUEtqCfG6qHvF1Mr+PNlljFfGfNVLfwKZoUKAztpdRzagfI97QaX6IB/YVwaQWyiqY1MmwW2242Wt3qEhCmggvWAA== X-MS-Exchange-Transport-Forked: True X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: f5cb90d6-2eb9-48ea-65bc-08d85d073744 X-MS-Exchange-CrossTenant-AuthSource: VI1PR04MB5696.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Sep 2020 01:48:04.8677 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: NHb3RNA+UW5RmBHAHn8Wak83H4BiG370A6/cGgiNMIwohdMgpMwu9t9T4G41HP74cUlMrst5QMCr3WQhWwjLvg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0401MB2686 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org There doesn't seem to be any strong technical reason for doing it this way, but we'll be adding more checks for invalid upper device configurations, and it will be easier to have them all grouped under PRECHANGEUPPER. Tested that it still works: ip link set br0 type bridge vlan_filtering 1 ip link add link swp2 name swp2.100 type vlan id 100 ip link set swp2.100 master br0 [ 20.321312] br0: port 5(swp2.100) entered blocking state [ 20.326711] br0: port 5(swp2.100) entered disabled state Error: dsa_core: Cannot enslave VLAN device into VLAN aware bridge. [ 20.346549] br0: port 5(swp2.100) entered blocking state [ 20.351957] br0: port 5(swp2.100) entered disabled state Signed-off-by: Vladimir Oltean Reviewed-by: Florian Fainelli --- net/dsa/slave.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/net/dsa/slave.c b/net/dsa/slave.c index d6616c6f643d..a00275cda05f 100644 --- a/net/dsa/slave.c +++ b/net/dsa/slave.c @@ -1946,9 +1946,14 @@ static int dsa_slave_netdevice_event(struct notifier_block *nb, { struct net_device *dev = netdev_notifier_info_to_dev(ptr); - if (event == NETDEV_CHANGEUPPER) { + switch (event) { + case NETDEV_PRECHANGEUPPER: if (!dsa_slave_dev_check(dev)) return dsa_slave_upper_vlan_check(dev, ptr); + break; + case NETDEV_CHANGEUPPER: + if (!dsa_slave_dev_check(dev)) + return NOTIFY_DONE; return dsa_slave_changeupper(dev, ptr); } From patchwork Sun Sep 20 01:47:21 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Oltean X-Patchwork-Id: 260545 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=-12.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, MSGID_FROM_MTA_HEADER, SIGNED_OFF_BY, 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 B9F68C43464 for ; Sun, 20 Sep 2020 01:48:16 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 7B41E20E65 for ; Sun, 20 Sep 2020 01:48:16 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=nxp.com header.i=@nxp.com header.b="i/Og7D4I" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726884AbgITBsP (ORCPT ); Sat, 19 Sep 2020 21:48:15 -0400 Received: from mail-eopbgr80075.outbound.protection.outlook.com ([40.107.8.75]:7847 "EHLO EUR04-VI1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726781AbgITBsO (ORCPT ); Sat, 19 Sep 2020 21:48:14 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Rgh6NWjAPjUTCQZMBMljOOHoKDBBluDuynSOXInpqUeGXkuB6iZeVgsONOFJ5X+F0qPnAnw6VjBuSs1r8SaFhHVqUrg2vvIp5Xw1guO1wI14MEvUklHTlAlb4FLh6w0PTPHwZz+zdQXh4Ff9ElpB/0XxsS8gq98g1skAKpfS0fskST3jGcYD2XwAEuYAQySjIqCr3RUwtZbZMScRfWdRAnWrls/Pqkqvxhp3PflCUoqvAOmRmuE2UkFiK5NiY+szeLP2tRUixdbAoSLHUA2OaDXEUH0iQJ3ewpF8zObZnPZ22h2LE9U5Lc0iwrJplEPevXIXufQn6Nv52nkVyUm7JQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ObTRSlhlIoMJIDRjsegrZM+MZwJiHD4KUwM5dFoJFGQ=; b=E8J39jqXuMo5po1V5Li740yueryJCZcARqrktBLMXMcM3m+l+tlmv2TCr90192Qtx1FzHASLKU8qyxo2rQ+5mQIfD8iaj1REiC5vB2fsIT8dAKZ0VuvDNNEyD5G6IV41elLwSaguXpHiW2p93qzzNpob15hqtBerfgTqkngUbBwYzNqH1gCIOzIH5gyy6RUOkKB9BSeGeuQVZo+3GUIQ0v9a1H3sjVrAGQDp+hbyRdwh/SeD9Pm2ZpoqSCjQ2xbzMYx49AXDgliOdO6xvL/Cim4sUVJOHX22VYvCkdoKIn5hGbpkek9gHunYep+gQw0J24hf07d6F8nieIApr255+Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ObTRSlhlIoMJIDRjsegrZM+MZwJiHD4KUwM5dFoJFGQ=; b=i/Og7D4Ifp2o0ngTs8bpykiHJHVNJRvNs+XvKkeDyPL2aowtlHlyIO6Xod+OTfmIyaBCSG/VTGVbZ2Psu2i04RmqC16kIpxYt3MENKZDe5gpV0Is6t3ddh4cguv82elMTAV0G8BDAkNmZx6r07E7B3+MluYzEZF8HosY/9OYy4c= Authentication-Results: vger.kernel.org; dkim=none (message not signed) header.d=none; vger.kernel.org; dmarc=none action=none header.from=nxp.com; Received: from VI1PR04MB5696.eurprd04.prod.outlook.com (2603:10a6:803:e7::13) by VI1PR0401MB2686.eurprd04.prod.outlook.com (2603:10a6:800:5b::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3391.15; Sun, 20 Sep 2020 01:48:07 +0000 Received: from VI1PR04MB5696.eurprd04.prod.outlook.com ([fe80::983b:73a7:cc93:e63d]) by VI1PR04MB5696.eurprd04.prod.outlook.com ([fe80::983b:73a7:cc93:e63d%3]) with mapi id 15.20.3391.014; Sun, 20 Sep 2020 01:48:07 +0000 From: Vladimir Oltean To: netdev@vger.kernel.org, davem@davemloft.net Cc: andrew@lunn.ch, f.fainelli@gmail.com, vivien.didelot@gmail.com, idosch@idosch.org, jiri@resnulli.us, kurt.kanzenbach@linutronix.de, kuba@kernel.org Subject: [RFC PATCH 3/9] net: dsa: convert check for 802.1Q upper when bridged into PRECHANGEUPPER Date: Sun, 20 Sep 2020 04:47:21 +0300 Message-Id: <20200920014727.2754928-4-vladimir.oltean@nxp.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200920014727.2754928-1-vladimir.oltean@nxp.com> References: <20200920014727.2754928-1-vladimir.oltean@nxp.com> X-ClientProxiedBy: AM4P190CA0014.EURP190.PROD.OUTLOOK.COM (2603:10a6:200:56::24) To VI1PR04MB5696.eurprd04.prod.outlook.com (2603:10a6:803:e7::13) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from localhost.localdomain (188.25.217.212) by AM4P190CA0014.EURP190.PROD.OUTLOOK.COM (2603:10a6:200:56::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3391.11 via Frontend Transport; Sun, 20 Sep 2020 01:48:06 +0000 X-Mailer: git-send-email 2.25.1 X-Originating-IP: [188.25.217.212] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 4c5db878-ee2e-4c10-a2f6-08d85d0738ba X-MS-TrafficTypeDiagnostic: VI1PR0401MB2686: X-LD-Processed: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635,ExtAddr X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:2803; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: be/hH5THJ+K+11031i9tS+AzmidtI10tMC0KFdcA75fh57NxYUS3hgU9q14J7XweYvpKlhDVs+CrqhXKG6vsg0pTYyeeZTRxcBCAsvgpc7v9DWrYz3DEkbRnBAu91CYBurow1KFrk4DyrX2g4ZKqMwa4mzd/iQ8y/j6cNcnQbPMtAU7A6jBuUYlRAh5yiVFEaDS7TxwRBgtrxSS7N1jq+g71AEdc88n9uotnI94mVTXjlPR5yj6RohHkk9akvF+aZibRQUUdJkwdll5jFDFnKAj558wUSI5YQNxBYelK5ervbbkXQu7DaHCBDy6b2IKOUdhQK3eq2mMfj8sRGkioaGBKIOSaBeuQ0QJshdS6r+mVWgQM+1OukzXj95++9TP/ X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:VI1PR04MB5696.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(39860400002)(376002)(366004)(136003)(346002)(396003)(4326008)(69590400008)(86362001)(66476007)(66946007)(66556008)(83380400001)(6506007)(2906002)(478600001)(2616005)(956004)(36756003)(6486002)(52116002)(8676002)(44832011)(186003)(16526019)(6512007)(26005)(1076003)(8936002)(6666004)(5660300002)(316002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: d1qlRzxmDiFjyZzbBAGukGMleHk7geLD2mzW/ryeDO5c5AI8yL8DPGFZcRzuFT1B2HtcJ7xRHYjKP7laqSNGF8yjN+fhcYHrcl/R1x9S8JbOGyvquw13cUdTiEmEm4hTwv4RLD0QfQyba4a+cVDSp1HQLm7/74OQGe91Hs9lGtY/c8WLAfjLlO2p8UZSNUHBnK1e5GUdY2h61tFDi0xxKed18inrQTwmurTuIhZ4gOlRa5QZUA41GtaziR+bTxBfoa/TXPMqrR1JfAxXU48gd3mhDjYsasisUYEN/HPekYGzI/kKY4fKx0I562YIPHQip3A5iYWuIXsYfLGwv/LXjr6sBKx44719hm6YnrR72P1quONxKqMkJDoPPq2NtO838S9l+4carf0PVL0lD4Vs5A9zitv1ypaLyaIkcUbZpSKmYaFwcq3A2vzSDzLPbkByykoe0MOCAfTUkGaeZdgU6AuSC8DfWESezvdFCi7r9+GynXGj843CW/AnpLb1ZSZtYiuDWdk5roXvjCuwjm9tFzRWoU8QZd8YBANsYiNPdVUBktTtWpjtWJ8UZlh0gwMNDg5E5EKDYvLCu9+YoVSTt+iZpGMMwSLGKBedgH+jKP8KMPE9dKBly143sM9ry6a7+PRpnsbQ2ddImE8khSdxDw== X-MS-Exchange-Transport-Forked: True X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4c5db878-ee2e-4c10-a2f6-08d85d0738ba X-MS-Exchange-CrossTenant-AuthSource: VI1PR04MB5696.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Sep 2020 01:48:07.2663 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: gS3oEpoI3LlyChxTe/C3S1nLIBtwmpTOpHF79T2OAQQGxsYo+9epZKf2UeJqAWNTD6dgwd5LGQVkHuR0dcn6fA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0401MB2686 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org DSA tries to prevent having a VLAN added by a bridge and by an 802.1Q upper at the same time. It does that by checking the VID in .ndo_vlan_rx_add_vid(), since that's something that the 8021q module calls, via vlan_vid_add(). When a VLAN matches in both subsystems, this check returns -EBUSY. However the vlan_vid_add() function isn't specific to the 8021q module in any way at all. It is simply the kernel's way to tell an interface to add a VLAN to its RX filter and not drop that VLAN. So there's no reason to return -EBUSY when somebody tries to call vlan_vid_add() for a VLAN that was installed by the bridge. The proper behavior is to accept that configuration. So what's wrong is how DSA checks that it has an 8021q upper. It should look at the actual uppers for that, not just assume that the 8021q module was somewhere in the call stack of .ndo_vlan_rx_add_vid(). Signed-off-by: Vladimir Oltean Reviewed-by: Florian Fainelli --- net/dsa/slave.c | 74 +++++++++++++++++++++++++------------------------ 1 file changed, 38 insertions(+), 36 deletions(-) diff --git a/net/dsa/slave.c b/net/dsa/slave.c index 1bcba1c1b7cc..1940c2458f0f 100644 --- a/net/dsa/slave.c +++ b/net/dsa/slave.c @@ -1240,26 +1240,9 @@ static int dsa_slave_vlan_rx_add_vid(struct net_device *dev, __be16 proto, /* This API only allows programming tagged, non-PVID VIDs */ .flags = 0, }; - struct bridge_vlan_info info; struct switchdev_trans trans; int ret; - /* Check for a possible bridge VLAN entry now since there is no - * need to emulate the switchdev prepare + commit phase. - */ - if (dp->bridge_dev) { - if (dsa_port_skip_vlan_configuration(dp)) - return 0; - - /* br_vlan_get_info() returns -EINVAL or -ENOENT if the - * device, respectively the VID is not found, returning - * 0 means success, which is a failure for us here. - */ - ret = br_vlan_get_info(dp->bridge_dev, vid, &info); - if (ret == 0) - return -EBUSY; - } - /* User port... */ trans.ph_prepare = true; ret = dsa_port_vlan_add(dp, &vlan, &trans); @@ -1295,24 +1278,6 @@ static int dsa_slave_vlan_rx_kill_vid(struct net_device *dev, __be16 proto, /* This API only allows programming tagged, non-PVID VIDs */ .flags = 0, }; - struct bridge_vlan_info info; - int ret; - - /* Check for a possible bridge VLAN entry now since there is no - * need to emulate the switchdev prepare + commit phase. - */ - if (dp->bridge_dev) { - if (dsa_port_skip_vlan_configuration(dp)) - return 0; - - /* br_vlan_get_info() returns -EINVAL or -ENOENT if the - * device, respectively the VID is not found, returning - * 0 means success, which is a failure for us here. - */ - ret = br_vlan_get_info(dp->bridge_dev, vid, &info); - if (ret == 0) - return -EBUSY; - } /* Do not deprogram the CPU port as it may be shared with other user * ports which can be members of this VLAN as well. @@ -1941,16 +1906,53 @@ dsa_prevent_bridging_8021q_upper(struct net_device *dev, return NOTIFY_DONE; } +static int +dsa_slave_check_8021q_upper(struct net_device *dev, + struct netdev_notifier_changeupper_info *info) +{ + struct dsa_port *dp = dsa_slave_to_port(dev); + struct net_device *br = dp->bridge_dev; + struct bridge_vlan_info br_info; + struct netlink_ext_ack *extack; + int err = NOTIFY_DONE; + u16 vid; + + if (!br) + return NOTIFY_DONE; + + extack = netdev_notifier_info_to_extack(&info->info); + vid = vlan_dev_vlan_id(info->upper_dev); + + /* br_vlan_get_info() returns -EINVAL or -ENOENT if the + * device, respectively the VID is not found, returning + * 0 means success, which is a failure for us here. + */ + err = br_vlan_get_info(br, vid, &br_info); + if (err == 0) { + NL_SET_ERR_MSG_MOD(extack, + "This VLAN is already configured by the bridge"); + return notifier_from_errno(-EBUSY); + } + + return NOTIFY_DONE; +} + static int dsa_slave_netdevice_event(struct notifier_block *nb, unsigned long event, void *ptr) { struct net_device *dev = netdev_notifier_info_to_dev(ptr); switch (event) { - case NETDEV_PRECHANGEUPPER: + case NETDEV_PRECHANGEUPPER: { + struct netdev_notifier_changeupper_info *info = ptr; + if (!dsa_slave_dev_check(dev)) return dsa_prevent_bridging_8021q_upper(dev, ptr); + + if (is_vlan_dev(info->upper_dev)) + return dsa_slave_check_8021q_upper(dev, ptr); break; + } case NETDEV_CHANGEUPPER: if (!dsa_slave_dev_check(dev)) return NOTIFY_DONE; From patchwork Sun Sep 20 01:47:23 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Oltean X-Patchwork-Id: 260544 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=-12.9 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, MSGID_FROM_MTA_HEADER, SIGNED_OFF_BY, SPF_HELO_NONE, SPF_PASS, 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 4F0B6C43464 for ; Sun, 20 Sep 2020 01:48:25 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 07C0D20E65 for ; Sun, 20 Sep 2020 01:48:25 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=nxp.com header.i=@nxp.com header.b="TBUyk2dg" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726899AbgITBsY (ORCPT ); Sat, 19 Sep 2020 21:48:24 -0400 Received: from mail-eopbgr80081.outbound.protection.outlook.com ([40.107.8.81]:45178 "EHLO EUR04-VI1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726876AbgITBsV (ORCPT ); Sat, 19 Sep 2020 21:48:21 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kLMacE8QJA1u0NfwxsqNIkQq4sPENDffL9FHGs97i2P5fl+miRSr4GgDz6rbXXmCC/xgOjSgnRHxSWRkc/BT/Fcp+MEgOzhx5+zieIzziDGAH9OPFj5pgWcoBacSzgVjOTHsep2mgA7P/Uc3opq5TTFhkMhHaV8TJ3sb6jKUwMnijUhO1ukdOw0vO9inpABU031eya3XNjsR8INkrE5g6ngAvhYe9zekP0zEn0mflcDgZrjbF9TiMVcYvWP2wfZF9+6QzxyHoY1+XeSZux5nYgJxHFrKv5+S/+Y7Xg0wFXo2bdcUSYDYE5AjQWlwbwvHBKfwzqogqPy7uKHAhWDieA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=rhXJa2z688flA/EUM8GHfMFlWRmTlJr0O+DR17UsY7g=; b=lZnVe4FvX/L6Z/bsveV1NvJhkkwGgqR8fpTYQ/dnl7o5HhG86OK+VNC1bKPNqhra39KW9AC2FxOhdnEP0HbAJsilwdm+KFTdhMTlHurfJkTsgYHQcA1MopNbycCfsQh01lvgSnJDtP8CN44oKoUKURiKgZnKkQxNissmI50xH2JD9N5Y04zqrYbjEfZih/E7KcuSdGdQjFmvGq40z+8ouNub7uHIY2khSX0gc7xESyYEjzjOyqR4w2nfhwdLkRUMbz7Gqaxq4hKPb0UEpMr+c66uR8hLQ2JrFNC2+RFZmRIQTCT8g3YLxnOC6/hv2DBKKnhK5Lv8vxQgF945KL6P5g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=rhXJa2z688flA/EUM8GHfMFlWRmTlJr0O+DR17UsY7g=; b=TBUyk2dgvF3NLpx9Sr/lu5mkFUDHyWzal62avHfdSk7Jo+oyyydEfqVcCFfrXWbdK+JckNa4aj7VH+aLaxXff0ATp945dvXWFbdC/ONQq2d9pieENEJPKYBi+9jl2KeBDdRmyXDeTijH6jrqqUkl7DStdT5DQ2z2ZUYoB0YtJeI= Authentication-Results: vger.kernel.org; dkim=none (message not signed) header.d=none; vger.kernel.org; dmarc=none action=none header.from=nxp.com; Received: from VI1PR04MB5696.eurprd04.prod.outlook.com (2603:10a6:803:e7::13) by VI1PR0401MB2686.eurprd04.prod.outlook.com (2603:10a6:800:5b::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3391.15; Sun, 20 Sep 2020 01:48:09 +0000 Received: from VI1PR04MB5696.eurprd04.prod.outlook.com ([fe80::983b:73a7:cc93:e63d]) by VI1PR04MB5696.eurprd04.prod.outlook.com ([fe80::983b:73a7:cc93:e63d%3]) with mapi id 15.20.3391.014; Sun, 20 Sep 2020 01:48:09 +0000 From: Vladimir Oltean To: netdev@vger.kernel.org, davem@davemloft.net Cc: andrew@lunn.ch, f.fainelli@gmail.com, vivien.didelot@gmail.com, idosch@idosch.org, jiri@resnulli.us, kurt.kanzenbach@linutronix.de, kuba@kernel.org Subject: [RFC PATCH 5/9] net: dsa: refuse configuration in prepare phase of dsa_port_vlan_filtering() Date: Sun, 20 Sep 2020 04:47:23 +0300 Message-Id: <20200920014727.2754928-6-vladimir.oltean@nxp.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200920014727.2754928-1-vladimir.oltean@nxp.com> References: <20200920014727.2754928-1-vladimir.oltean@nxp.com> X-ClientProxiedBy: AM4P190CA0014.EURP190.PROD.OUTLOOK.COM (2603:10a6:200:56::24) To VI1PR04MB5696.eurprd04.prod.outlook.com (2603:10a6:803:e7::13) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from localhost.localdomain (188.25.217.212) by AM4P190CA0014.EURP190.PROD.OUTLOOK.COM (2603:10a6:200:56::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3391.11 via Frontend Transport; Sun, 20 Sep 2020 01:48:08 +0000 X-Mailer: git-send-email 2.25.1 X-Originating-IP: [188.25.217.212] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 2971fb87-b432-4e7e-f690-08d85d073a26 X-MS-TrafficTypeDiagnostic: VI1PR0401MB2686: X-LD-Processed: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635,ExtAddr X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:2803; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: aXmGxA9LFmq6I9Gs9290Pxb6pJqBeEImJN3u1VPHFRA27IomKvOJFRBmMP/Xb9bQLS5v0/cRRO5kGUGek7Rr3BCcG9RET/Btp2HtMEt1nhyrkbjUHgmGVDWYGaPFCXIE9SzDtOJ5+2f9w8PMtyAr5jhYSB+1CYo3+8K6cTJRNYezS9354xTWsDlHuZaoQeLbzzK/KonYvf9TyeaVajy2vU5HQhxA6qSRJQZ4PvnVJBUeD4ETzS7SUjYx1EiQPLvxWb0LZeIyq1PXsO//cT3il5x+ISU6cB9LAs1OnT1I+rQQNgbKSOwiQSJ45qqvSsGzG1k34VNA2c2x6ffZ8wbnBqvlxLJgvbCIqsfy0JO51eOa7MZdDnDv2iQPBaev+JDV X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:VI1PR04MB5696.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(39860400002)(376002)(366004)(136003)(346002)(396003)(4326008)(69590400008)(86362001)(66476007)(66946007)(66556008)(83380400001)(6506007)(2906002)(478600001)(2616005)(956004)(36756003)(6486002)(52116002)(8676002)(44832011)(186003)(16526019)(6512007)(26005)(1076003)(8936002)(6666004)(5660300002)(316002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: UcJcHv7bwBiKFfYF/g2B6tj32RfWD2g88RlJIvpDzTbq4z9DBNCDR/UfXEQWGkifHSbZg2ZC93K/HG6B1ixzq0MgbkI0ivFBAijIhuU24butuW+BdFs4rRLgaQjkv5YQiTIt1q5++mMlz/uqNeRDTDRyc9O15gLd/+Iy2fDbVi6ej6IQEgYF6fazojJ9RPtO4sZrFbqSmTzfwi2IxOB3VrEwgcSnUXTOKaXbFnftI4c+fFs9R2eSCb63JMOQsP8njy7wrxdfl84z2/SWrRU2pD0kpR9z1qC42P9DEwFFq3jKMYR1e+iUSTqVHFJOeGece3paVeFYI9X7V/qE9F2tF0qpVYRqibW7GqBg9hfeFgPv47TtJFkxMSR9Ya2sV+TZyjoJnQ/sm9xTv7+983dTmn2QfLFn9N5yG/GN4gUp7q8Ht/WGqgC/oiuct568PzK88n+AS5ePvgZm/u9Rh/+JQW0JQUtFCnjhs+cAg1HAC0FkQ8REZaqXVskATF33fP6cFuEA1ARIZZuBpwk6MNU9c3fcWWfdxYGbAq2EDRUGPOjYZm0+AdqaNq3YbIXtp457WDw2ImyesfWKuEAbdpY5D1jts08inNsLUoYeyDyLhX0efJmMHYDLMJ5EvIZFSnp+o9kY+LjD7KldsUQN63Tzcw== X-MS-Exchange-Transport-Forked: True X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2971fb87-b432-4e7e-f690-08d85d073a26 X-MS-Exchange-CrossTenant-AuthSource: VI1PR04MB5696.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Sep 2020 01:48:09.6650 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: T22n7SJX0pN0iHvTvFMbpROme8FHGoAxLa1i+kCVe9va8Y1b6dIOonqz4Wb0BH0DmCAzJ8GqFnP0UsSbTx/MUw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0401MB2686 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org The current logic beats me a little bit. The comment that "bridge skips -EOPNOTSUPP, so skip the prepare phase" was introduced in commit fb2dabad69f0 ("net: dsa: support VLAN filtering switchdev attr"). I'm not sure: (a) ok, the bridge skips -EOPNOTSUPP, but, so what, where are we returning -EOPNOTSUPP? (b) even if we are, and I'm just not seeing it, what is the causality relationship between the bridge skipping -EOPNOTSUPP and DSA skipping the prepare phase, and just returning zero? One thing is certain beyond doubt though, and that is that DSA currently refuses VLAN filtering from the "commit" phase instead of "prepare", and that this is not a good thing: ip link add br0 type bridge ip link add br1 type bridge vlan_filtering 1 ip link set swp2 master br0 ip link set swp3 master br1 [ 3790.379389] 001: sja1105 spi0.1: VLAN filtering is a global setting [ 3790.379399] 001: ------------[ cut here ]------------ [ 3790.379403] 001: WARNING: CPU: 1 PID: 515 at net/switchdev/switchdev.c:157 switchdev_port_attr_set_now+0x9c/0xa4 [ 3790.379420] 001: swp3: Commit of attribute (id=6) failed. [ 3790.379533] 001: [] (switchdev_port_attr_set_now) from [] (nbp_vlan_init+0x84/0x148) [ 3790.379544] 001: [] (nbp_vlan_init) from [] (br_add_if+0x514/0x670) [ 3790.379554] 001: [] (br_add_if) from [] (do_setlink+0x38c/0xab0) [ 3790.379565] 001: [] (do_setlink) from [] (__rtnl_newlink+0x44c/0x748) [ 3790.379573] 001: [] (__rtnl_newlink) from [] (rtnl_newlink+0x44/0x60) [ 3790.379580] 001: [] (rtnl_newlink) from [] (rtnetlink_rcv_msg+0x124/0x2f8) [ 3790.379590] 001: [] (rtnetlink_rcv_msg) from [] (netlink_rcv_skb+0xb8/0x110) [ 3790.379806] 001: ---[ end trace 0000000000000002 ]--- [ 3790.379819] 001: sja1105 spi0.1 swp3: failed to initialize vlan filtering on this port So move the current logic that may fail (except ds->ops->port_vlan_filtering, that is way harder) into the prepare stage of the switchdev transaction. Signed-off-by: Vladimir Oltean Reviewed-by: Florian Fainelli --- net/dsa/port.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/net/dsa/port.c b/net/dsa/port.c index 46c9bf709683..794a03718838 100644 --- a/net/dsa/port.c +++ b/net/dsa/port.c @@ -232,15 +232,15 @@ int dsa_port_vlan_filtering(struct dsa_port *dp, bool vlan_filtering, struct dsa_switch *ds = dp->ds; int err; - /* bridge skips -EOPNOTSUPP, so skip the prepare phase */ - if (switchdev_trans_ph_prepare(trans)) - return 0; + if (switchdev_trans_ph_prepare(trans)) { + if (!ds->ops->port_vlan_filtering) + return -EOPNOTSUPP; - if (!ds->ops->port_vlan_filtering) - return 0; + if (!dsa_port_can_apply_vlan_filtering(dp, vlan_filtering)) + return -EINVAL; - if (!dsa_port_can_apply_vlan_filtering(dp, vlan_filtering)) - return -EINVAL; + return 0; + } if (dsa_port_is_vlan_filtering(dp) == vlan_filtering) return 0; From patchwork Sun Sep 20 01:47:25 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Oltean X-Patchwork-Id: 260542 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=-12.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, MSGID_FROM_MTA_HEADER, SIGNED_OFF_BY, 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 312CDC43464 for ; Sun, 20 Sep 2020 01:48:35 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id DA72621582 for ; Sun, 20 Sep 2020 01:48:34 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=nxp.com header.i=@nxp.com header.b="MYZZlJiw" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726913AbgITBsb (ORCPT ); Sat, 19 Sep 2020 21:48:31 -0400 Received: from mail-eopbgr80081.outbound.protection.outlook.com ([40.107.8.81]:45178 "EHLO EUR04-VI1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726877AbgITBs0 (ORCPT ); Sat, 19 Sep 2020 21:48:26 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BoxCUvd/GW5Nee6yn4GrLy3R752MsbJMyn3PzJE0AWu89Ycj4HslvgvzXxDGVd+kdtPLkirL8JLHbLY+wXN/bKU4vQqh65091PU4J/lZ4x+Pz+7UiynB/hy/0lJZDpJBh8F6QGFbtHAENgehawh0LtPhFAv9Rdja72J46JiF6sd/v/2QjXUAdqGdIUg7E8tLs6M4LeRBK7z9oRP4xXPk6UoKMtBeNqgsKvRXzVOggEWmdKFj2O8GN4X82ZLKO4nj2w28iIesxWsYPwewu7Tr2dSiYXQu+Iobydp9WQ50zt2PrWEjlfxLjpOdbtr06mMmbpx53awPnejcq0NHKJpa+Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=U41Rq8TW12xp+dUPr0ANBXvdkqaoehxRd/24Vo99pN0=; b=CqoGtpswF8m4RX3zgg+RYP7J8zG3hbpPtZYdm1HCcrMLVmAHV1FxvwSKFtlA/a+p4ugf+0bNppBQ+LxmktruCBSZoZ/4GPshdame0gm3jd6M9adu9CFfp9ldd1h9vBNoziRDrFkVS6axQTPL6wE3nV2I2zgu53lhZOV+GzAF2Avi9QroQ9CgOot9iJ/wERGpk12Y6+TeLYifTQ1C4mekmHii1tNFM2p4er4EoNAsjYzG9/fh0LsPIS5GQCD0PNTnYWFKqptOPtj6wq7tJE0/1ULJi/Zz9hGwLGtRkuN4FA0thxA8ANfGtL+VjL2XZGMGk0gkChblrag7nMz4ug51eg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=U41Rq8TW12xp+dUPr0ANBXvdkqaoehxRd/24Vo99pN0=; b=MYZZlJiwyU+n5mHE9zO1kcoZD11np+EgbUzWHTkgOIj3qvUteTArJXyXN0sSWJswcGFPJmpqLZDxta/4X7BQ2PUz9U8M++GJLH2H35ZbPA+dsUy6Kxzb5yKtYzrQj8Oz/kvu3fGb0hY+T+zMqPDn4tFTK6HfpYxixGlhSsxeCLU= Authentication-Results: vger.kernel.org; dkim=none (message not signed) header.d=none; vger.kernel.org; dmarc=none action=none header.from=nxp.com; Received: from VI1PR04MB5696.eurprd04.prod.outlook.com (2603:10a6:803:e7::13) by VI1PR0401MB2686.eurprd04.prod.outlook.com (2603:10a6:800:5b::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3391.15; Sun, 20 Sep 2020 01:48:12 +0000 Received: from VI1PR04MB5696.eurprd04.prod.outlook.com ([fe80::983b:73a7:cc93:e63d]) by VI1PR04MB5696.eurprd04.prod.outlook.com ([fe80::983b:73a7:cc93:e63d%3]) with mapi id 15.20.3391.014; Sun, 20 Sep 2020 01:48:12 +0000 From: Vladimir Oltean To: netdev@vger.kernel.org, davem@davemloft.net Cc: andrew@lunn.ch, f.fainelli@gmail.com, vivien.didelot@gmail.com, idosch@idosch.org, jiri@resnulli.us, kurt.kanzenbach@linutronix.de, kuba@kernel.org Subject: [RFC PATCH 7/9] net: dsa: install VLANs into the master's RX filter too Date: Sun, 20 Sep 2020 04:47:25 +0300 Message-Id: <20200920014727.2754928-8-vladimir.oltean@nxp.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200920014727.2754928-1-vladimir.oltean@nxp.com> References: <20200920014727.2754928-1-vladimir.oltean@nxp.com> X-ClientProxiedBy: AM4P190CA0014.EURP190.PROD.OUTLOOK.COM (2603:10a6:200:56::24) To VI1PR04MB5696.eurprd04.prod.outlook.com (2603:10a6:803:e7::13) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from localhost.localdomain (188.25.217.212) by AM4P190CA0014.EURP190.PROD.OUTLOOK.COM (2603:10a6:200:56::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3391.11 via Frontend Transport; Sun, 20 Sep 2020 01:48:11 +0000 X-Mailer: git-send-email 2.25.1 X-Originating-IP: [188.25.217.212] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 4331a367-91cf-43e3-fc14-08d85d073b92 X-MS-TrafficTypeDiagnostic: VI1PR0401MB2686: X-LD-Processed: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635,ExtAddr X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:9508; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: rczOV80aTwV+tpBSmdIWWe0zCzDD93l3PcSE5dqxEEeVLaEoxop+0o9OCb0yAqgExrLS8RhHkTgTqO0ZeIM7KrgieHifk9bSHN53YUtGWe7NeeSK0VELgC0lYXx4aIabCp9zEhmHzTxA7vWwzipT9imC1mUSGo1sh7c6pYLYeDyHHh0kFbhXhZGj9cdrlajuRYdQ0L8dB9As5fnLQBpji8BxXFcAnQnniH2ho8xnxBceoz3EujZ+9wFWk/nYvHaIwyv2hcr3tv8C4CcVyUwC/3o+Z1VYuutHK2NBGdgf18IfJ9BMhwyC7NdpIIr9sOp5l70v6MgSGyWBT8G0Xry/A+0bCIcOs0RdWDEBvOJFzSS4YvbPtJCn5p+sdvDnK0tq X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:VI1PR04MB5696.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(39860400002)(376002)(366004)(136003)(346002)(396003)(4326008)(69590400008)(86362001)(66476007)(66946007)(66556008)(83380400001)(6506007)(2906002)(478600001)(2616005)(956004)(36756003)(6486002)(52116002)(8676002)(44832011)(186003)(16526019)(6512007)(26005)(1076003)(8936002)(6666004)(5660300002)(316002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: oL6D2+s1W5gSshGIKOiRSbVE8LaYl/QwglyLsOuTNOYM/szeNyy77JasDj4/X1gbuH9x4bnxZV9GNnYHFcNAJ1i4gvutFl21DYLjRG6KbKgNHoEd5diAEgB+tIAHbvUio4SzeRNsDaXmhwYOdWav8Co3DM92GnZpOss+uElW7t3SetpwHh+ezDXxMVdsu4LEgUb2j9UYDuuOzz+hcXGTc+6JkyZyooqVXP08VXkfLVYDJWjwc68wL0Cw4NYeWcGQaH4VhGyTa5uHEqU55yb3u2eM3vENg0NaJAybCQ2q7Q8KvI6eHAO7f04DW02nAYQ5s4sbPxw7rcQ7YrybTP/RXbsNQSSB+1N8aurW1YPUsT0ACDRJFGu6oy7ABw637hkI2vP748PSlaCX7Dh/V1jovJ0XX5fN+8+ML84wlFh4p3xWMYjdO8SUytaAC1f7hJd/M5qcNqN0BVEaqU2YhTs7aca5cwIfttIAx91CAp0/G6V8G3qGtNpezwoeJrlzICJCh9hGOeF/U/h81e835tA3btDadfqTYPTUiegKQ4jpldWqTn85lybm8rBF2gKu+CNS7tfwFvXOz2fV75Oi+FOGQWWXaKXwRK4PQ+dUq2imfHRwobO0jbo4Fagt9SG0BmxcgApf6ndjMDWgIHm5StLP2A== X-MS-Exchange-Transport-Forked: True X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4331a367-91cf-43e3-fc14-08d85d073b92 X-MS-Exchange-CrossTenant-AuthSource: VI1PR04MB5696.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Sep 2020 01:48:12.0396 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: T2oOY+6iV9e6FUa3PX3tkjN3Xc1jjBBUv59GY0tEpslOddtjXqGXpfWac9R8tM88s23/NPhK8prelAQTYWaeCQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0401MB2686 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Most DSA switch tags shift the EtherType to the right, causing the master to not parse the VLAN as VLAN. However, not all switches do that (example: tail tags, tag_8021q etc), and if the DSA master has "rx-vlan-filter: on" in ethtool -k, then we have a problem. Therefore, we could populate the VLAN table of the master, just in case (for some switches it will not make a difference), so that network I/O can work even with a VLAN filtering master. Signed-off-by: Vladimir Oltean Reviewed-by: Florian Fainelli --- net/dsa/slave.c | 36 ++++++++++++++++++++++++++++++++---- 1 file changed, 32 insertions(+), 4 deletions(-) diff --git a/net/dsa/slave.c b/net/dsa/slave.c index 2de0ff18f2f5..0db161178cc0 100644 --- a/net/dsa/slave.c +++ b/net/dsa/slave.c @@ -329,9 +329,10 @@ static int dsa_slave_vlan_add(struct net_device *dev, const struct switchdev_obj *obj, struct switchdev_trans *trans) { + struct net_device *master = dsa_slave_to_master(dev); struct dsa_port *dp = dsa_slave_to_port(dev); struct switchdev_obj_port_vlan vlan; - int err; + int vid, err; if (obj->orig_dev != dev) return -EOPNOTSUPP; @@ -366,6 +367,12 @@ static int dsa_slave_vlan_add(struct net_device *dev, if (err) return err; + for (vid = vlan.vid_begin; vid <= vlan.vid_end; vid++) { + err = vlan_vid_add(master, htons(ETH_P_8021Q), vid); + if (err) + return err; + } + return 0; } @@ -409,7 +416,10 @@ static int dsa_slave_port_obj_add(struct net_device *dev, static int dsa_slave_vlan_del(struct net_device *dev, const struct switchdev_obj *obj) { + struct net_device *master = dsa_slave_to_master(dev); struct dsa_port *dp = dsa_slave_to_port(dev); + struct switchdev_obj_port_vlan *vlan; + int vid, err; if (obj->orig_dev != dev) return -EOPNOTSUPP; @@ -417,10 +427,19 @@ static int dsa_slave_vlan_del(struct net_device *dev, if (dsa_port_skip_vlan_configuration(dp)) return 0; + vlan = SWITCHDEV_OBJ_PORT_VLAN(obj); + /* Do not deprogram the CPU port as it may be shared with other user * ports which can be members of this VLAN as well. */ - return dsa_port_vlan_del(dp, SWITCHDEV_OBJ_PORT_VLAN(obj)); + err = dsa_port_vlan_del(dp, vlan); + if (err) + return err; + + for (vid = vlan->vid_begin; vid <= vlan->vid_end; vid++) + vlan_vid_del(master, htons(ETH_P_8021Q), vid); + + return 0; } static int dsa_slave_port_obj_del(struct net_device *dev, @@ -1265,6 +1284,7 @@ static int dsa_slave_get_ts_info(struct net_device *dev, static int dsa_slave_vlan_rx_add_vid(struct net_device *dev, __be16 proto, u16 vid) { + struct net_device *master = dsa_slave_to_master(dev); struct dsa_port *dp = dsa_slave_to_port(dev); struct switchdev_obj_port_vlan vlan = { .obj.id = SWITCHDEV_OBJ_ID_PORT_VLAN, @@ -1298,12 +1318,13 @@ static int dsa_slave_vlan_rx_add_vid(struct net_device *dev, __be16 proto, if (ret) return ret; - return 0; + return vlan_vid_add(master, proto, vid); } static int dsa_slave_vlan_rx_kill_vid(struct net_device *dev, __be16 proto, u16 vid) { + struct net_device *master = dsa_slave_to_master(dev); struct dsa_port *dp = dsa_slave_to_port(dev); struct switchdev_obj_port_vlan vlan = { .vid_begin = vid, @@ -1311,11 +1332,18 @@ static int dsa_slave_vlan_rx_kill_vid(struct net_device *dev, __be16 proto, /* This API only allows programming tagged, non-PVID VIDs */ .flags = 0, }; + int err; /* Do not deprogram the CPU port as it may be shared with other user * ports which can be members of this VLAN as well. */ - return dsa_port_vlan_del(dp, &vlan); + err = dsa_port_vlan_del(dp, &vlan); + if (err) + return err; + + vlan_vid_del(master, proto, vid); + + return 0; } struct dsa_hw_port { From patchwork Sun Sep 20 01:47:26 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Oltean X-Patchwork-Id: 260543 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=-12.9 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, MSGID_FROM_MTA_HEADER, SIGNED_OFF_BY, SPF_HELO_NONE, SPF_PASS, 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 D3547C43464 for ; Sun, 20 Sep 2020 01:48:32 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 7FF9921582 for ; Sun, 20 Sep 2020 01:48:32 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=nxp.com header.i=@nxp.com header.b="Hhdc12Ck" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726919AbgITBsb (ORCPT ); Sat, 19 Sep 2020 21:48:31 -0400 Received: from mail-eopbgr80075.outbound.protection.outlook.com ([40.107.8.75]:7847 "EHLO EUR04-VI1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726860AbgITBs0 (ORCPT ); Sat, 19 Sep 2020 21:48:26 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=oJNdqvZJzqWL4pb6FbilDWBVCQe3SnZZxoEiGg61OEk9pXs0oHsyzoU+qMCl0oZIxZ51pCIjxDLTUl2OdPQ5v0HlADF+fqqGY7XYaMkLHskjparz4zda1Ff7D5JN2v4xaoODu4ZULUa+OA91IpOFWQ+jjrwqPPEVgdVworbmoNXdmzNY1Fab7URYtwjqNg3heg8go29YMipUdOvl2G+QL9BPiH4LFipqt6Q6CHLYDEjqaILwGER+cABU1XN+2UiPWxreTiKAk0EEiArb1fgkFkbzDPnAD3q49Cg8c4bf4h6DiQydnaWy1q3kKs626xs4CjFoYhoDVdbua4U5amBPtQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=khZNZRUo5+YSUbqIj7jbjPSWkQswW0iWUBEGb0av5pI=; b=h5Dmstr30xP4GFQy3RdP3VVeO4mJXb6S0ewmqbclMGelmwaZa+CDqp4oRnFhjtdP/4587xnJPbEFQ02lGozqA7Eh3cN8XU+KoOuD2q1MK4EQOI4P75eFqvuO9aNqyrz8KzZEqVdDH0x28oRSqPdVTWMyrEkzyG0vgsBy7VzxyVukOQCTITFBbv+lin+1CCOAK9TZ8wTGoqM9VqEL4PsdQeqBbI5ATOgwVmYQqSVdv9eHOL/jXfNCHJtxX2700lPWG+C30aaC6rvVJGTAXyVdycnbHoBMW8vMSbUXrnUCIkCJ4kK5eIurZjvMcOaAhV7wJuwQxvK8Geur2z0PdPRNNw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=khZNZRUo5+YSUbqIj7jbjPSWkQswW0iWUBEGb0av5pI=; b=Hhdc12CkEQ7OszVCORP9VunoGk5bBu7EaCfwntdk+Swj0WLbuUbE6j3yPv9WXYHNfdfrQQNvLUmlxkdZ0UQGJc4sC3xlc5cIhyHm/sxer3Hysr6zE+lxpwuOYbtM6C+cakueC2XoiaAUBiu0ZywhkO4d1gBBtjUBjxfj5DHqIx0= Authentication-Results: vger.kernel.org; dkim=none (message not signed) header.d=none; vger.kernel.org; dmarc=none action=none header.from=nxp.com; Received: from VI1PR04MB5696.eurprd04.prod.outlook.com (2603:10a6:803:e7::13) by VI1PR0401MB2686.eurprd04.prod.outlook.com (2603:10a6:800:5b::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3391.15; Sun, 20 Sep 2020 01:48:13 +0000 Received: from VI1PR04MB5696.eurprd04.prod.outlook.com ([fe80::983b:73a7:cc93:e63d]) by VI1PR04MB5696.eurprd04.prod.outlook.com ([fe80::983b:73a7:cc93:e63d%3]) with mapi id 15.20.3391.014; Sun, 20 Sep 2020 01:48:13 +0000 From: Vladimir Oltean To: netdev@vger.kernel.org, davem@davemloft.net Cc: andrew@lunn.ch, f.fainelli@gmail.com, vivien.didelot@gmail.com, idosch@idosch.org, jiri@resnulli.us, kurt.kanzenbach@linutronix.de, kuba@kernel.org Subject: [RFC PATCH 8/9] net: dsa: tag_8021q: add VLANs to the master interface too Date: Sun, 20 Sep 2020 04:47:26 +0300 Message-Id: <20200920014727.2754928-9-vladimir.oltean@nxp.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200920014727.2754928-1-vladimir.oltean@nxp.com> References: <20200920014727.2754928-1-vladimir.oltean@nxp.com> X-ClientProxiedBy: AM4P190CA0014.EURP190.PROD.OUTLOOK.COM (2603:10a6:200:56::24) To VI1PR04MB5696.eurprd04.prod.outlook.com (2603:10a6:803:e7::13) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from localhost.localdomain (188.25.217.212) by AM4P190CA0014.EURP190.PROD.OUTLOOK.COM (2603:10a6:200:56::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3391.11 via Frontend Transport; Sun, 20 Sep 2020 01:48:12 +0000 X-Mailer: git-send-email 2.25.1 X-Originating-IP: [188.25.217.212] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 8dcf3f0d-311c-415c-606e-08d85d073c49 X-MS-TrafficTypeDiagnostic: VI1PR0401MB2686: X-LD-Processed: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635,ExtAddr X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:10000; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: BVXe2oA8bdCuZmFwXNXBF4wvH997Qw2sFVEoAMntNh3FZWb8kPKG4fNDcNBzljZsiFxFoo3u8OvtJoCY6REPTxxnjQsdL6ikKZshxC5Kf/pnONHix3GubQ199rN8muClSzDK77KiM9m/937w+jI3llhl32U/spnytWLqc8FpmjfDO6LoviT/pb+DKMNNxAy3d/+YwrYAq0g4J0JHArNxPkGGVDFzKRSY2fJGYT69CKmAuUwt3G7dQzpaz38Q9peWGh96uzsXUuCC/NV93BvEAiNmOP+nUHC3flQx6wN1v3AZrMgFu1Ta1xN5qEsBexlKdNrqtsjmnsJnrG2jaCkj6B+8gTfVjRQXuLqUdpptrKWaLPD5jj1kuPlNd1oJwwRr X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:VI1PR04MB5696.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(39860400002)(376002)(366004)(136003)(346002)(396003)(4326008)(69590400008)(86362001)(66476007)(66946007)(66556008)(83380400001)(6506007)(2906002)(478600001)(2616005)(956004)(36756003)(6486002)(52116002)(8676002)(44832011)(186003)(16526019)(6512007)(26005)(1076003)(8936002)(6666004)(5660300002)(316002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: 0Lu60aki5IEC4b2iDjMuB8ClxaIfAHVZCLcKaanetgihV9ykPGU/36aVdqoJzSkAe7hHbiDMrXrxt0OzfdxS9eBijUEreJoV1+VTKk1+k/Yyc5vCWrniAm/DyYrg5zO8xucQwysak2Nfoabc9ffoV6yo/I7RG26GZYEhMV777JYnGepdgEpV3eN994+uZ7zHE2sZ3RHqTsaPMz+QLTg8XEpOv6+iKrKtYmjdZthmllaous9GW7ZVm/N5fWzBOAnKUcMCIC0uh6F5yWnrvO1u64+CYTzVeVUe8rDdC64CV8rPC6PqZZYT3BD9a9XIhyUt6+J+TY8nWDxTNyS5NEzvQFlK6PK8CKk9sUCt+Rv+UulinybGLimthugqLVJXo/nFEdwYbK5qmxNfrELVHnFKPslZyN53Z39eL7tuDx0P20gJTFV4LygrZOoOhfLooOJMVlVlnPYueIHHTIc9n1oll49K8j1bbAyx+gyYu1jtCI+ahylYvk+I5T7Vn8f7GDRc/uLXr1HETWEcDUZoWfXLqosimiGMQKu4AP03ZZUBwwUxLWGLFqK+dgcFwc1upYlG6sq37O8qz8Ae+Nlb5Z6J4QVhgkz6baMCEI3zEj+PzXEI7iGKYDdi4Yj9/Qjdz6NjmzVBeSAGv0UxjBRo+nW1RQ== X-MS-Exchange-Transport-Forked: True X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8dcf3f0d-311c-415c-606e-08d85d073c49 X-MS-Exchange-CrossTenant-AuthSource: VI1PR04MB5696.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Sep 2020 01:48:13.2460 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: jRhgKH3vTiIHKbxwG2jvJCX3qChxYap9Lg+4S++7e0ULBCyuvuEba+1EthGVdPniAEUf61NublOh0mzkmS02KQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0401MB2686 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org The whole purpose of tag_8021q is to send VLAN-tagged traffic to the CPU, from which the driver can decode the source port and switch id. Currently this only works if the VLAN filtering on the master is disabled. Change that by explicitly adding code to tag_8021q.c to add the VLANs corresponding to the tags to the filter of the master interface. Because we now need to call vlan_vid_add, then we also need to hold the RTNL mutex. Propagate that requirement to the callers of dsa_8021q_setup and modify the existing call sites as appropriate. Note that one call path, sja1105_best_effort_vlan_filtering_set -> sja1105_vlan_filtering -> sja1105_setup_8021q_tagging, was already holding this lock. Signed-off-by: Vladimir Oltean Reviewed-by: Florian Fainelli --- drivers/net/dsa/sja1105/sja1105_main.c | 7 ++++++- include/linux/dsa/8021q.h | 2 ++ net/dsa/tag_8021q.c | 20 +++++++++++++++++++- 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/drivers/net/dsa/sja1105/sja1105_main.c b/drivers/net/dsa/sja1105/sja1105_main.c index cb1b0b6a63f3..4892ad4b0e86 100644 --- a/drivers/net/dsa/sja1105/sja1105_main.c +++ b/drivers/net/dsa/sja1105/sja1105_main.c @@ -3038,7 +3038,11 @@ static int sja1105_setup(struct dsa_switch *ds) * default, and that means vlan_filtering is 0 since they're not under * a bridge, so it's safe to set up switch tagging at this time. */ - return sja1105_setup_8021q_tagging(ds, true); + rtnl_lock(); + rc = sja1105_setup_8021q_tagging(ds, true); + rtnl_unlock(); + + return rc; } static void sja1105_teardown(struct dsa_switch *ds) @@ -3539,6 +3543,7 @@ static int sja1105_probe(struct spi_device *spi) return -ENOMEM; priv->dsa_8021q_ctx->ops = &sja1105_dsa_8021q_ops; + priv->dsa_8021q_ctx->proto = htons(ETH_P_8021Q); priv->dsa_8021q_ctx->ds = ds; INIT_LIST_HEAD(&priv->dsa_8021q_ctx->crosschip_links); diff --git a/include/linux/dsa/8021q.h b/include/linux/dsa/8021q.h index 2b003ae9fb38..88cd72dfa4e0 100644 --- a/include/linux/dsa/8021q.h +++ b/include/linux/dsa/8021q.h @@ -31,6 +31,8 @@ struct dsa_8021q_context { const struct dsa_8021q_ops *ops; struct dsa_switch *ds; struct list_head crosschip_links; + /* EtherType of RX VID, used for filtering on master interface */ + __be16 proto; }; #define DSA_8021Q_N_SUBVLAN 8 diff --git a/net/dsa/tag_8021q.c b/net/dsa/tag_8021q.c index 5baeb0893950..8e3e8a5b8559 100644 --- a/net/dsa/tag_8021q.c +++ b/net/dsa/tag_8021q.c @@ -215,7 +215,8 @@ static int dsa_8021q_setup_port(struct dsa_8021q_context *ctx, int port, int upstream = dsa_upstream_port(ctx->ds, port); u16 rx_vid = dsa_8021q_rx_vid(ctx->ds, port); u16 tx_vid = dsa_8021q_tx_vid(ctx->ds, port); - int i, err; + struct net_device *master; + int i, err, subvlan; /* The CPU port is implicitly configured by * configuring the front-panel ports @@ -223,6 +224,8 @@ static int dsa_8021q_setup_port(struct dsa_8021q_context *ctx, int port, if (!dsa_is_user_port(ctx->ds, port)) return 0; + master = dsa_to_port(ctx->ds, port)->cpu_dp->master; + /* Add this user port's RX VID to the membership list of all others * (including itself). This is so that bridging will not be hindered. * L2 forwarding rules still take precedence when there are no VLAN @@ -261,6 +264,19 @@ static int dsa_8021q_setup_port(struct dsa_8021q_context *ctx, int port, return err; } + /* Add to the master's RX filter not only @rx_vid, but in fact + * the entire subvlan range, just in case this DSA switch might + * want to use sub-VLANs. + */ + for (subvlan = 0; subvlan < DSA_8021Q_N_SUBVLAN; subvlan++) { + u16 vid = dsa_8021q_rx_vid_subvlan(ctx->ds, port, subvlan); + + if (enabled) + vlan_vid_add(master, ctx->proto, vid); + else + vlan_vid_del(master, ctx->proto, vid); + } + /* Finally apply the TX VID on this port and on the CPU port */ err = dsa_8021q_vid_apply(ctx, port, tx_vid, BRIDGE_VLAN_INFO_UNTAGGED, enabled); @@ -285,6 +301,8 @@ int dsa_8021q_setup(struct dsa_8021q_context *ctx, bool enabled) { int rc, port; + ASSERT_RTNL(); + for (port = 0; port < ctx->ds->num_ports; port++) { rc = dsa_8021q_setup_port(ctx, port, enabled); if (rc < 0) {