Received: by 2002:a05:6a10:1287:0:0:0:0 with SMTP id d7csp3718635pxv; Mon, 26 Jul 2021 10:09:39 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxNLYpWW3DAGIaiXxpbh8Pe56FuyaW5qo8P4FuU22hAvy/DrKtkqpd81hNJoNmT31/UvCCW X-Received: by 2002:a05:6e02:170c:: with SMTP id u12mr14217667ill.116.1627319379368; Mon, 26 Jul 2021 10:09:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1627319379; cv=none; d=google.com; s=arc-20160816; b=hOHKyRiVEaIjefAMw5HrjmxZ1KgHf3rEG72kxFZQQjlIhUhjSRAIOfe7o4Pvec/dXm tAERqa1k6TRIzou/OUvNxRfWQOd1SI9sOuCfJjpO0ogbxSkJCDbDGIg4PRT5rdUQRKFT qeSVka0B6bqJu6uwkUqKuxr2BWa3HkQ//ttLHI4HEt8OkQPkENXtwJHjxRXHdOeaYrAp iyJYpFX+6I1DWfqv0fPll1G44MUV37oppA5mWoXAgengG38WmUy1LyqSujKR+ehaG1EJ uVQbZ77uDq6E4NpboWarkSyUhr7aciHbPI+mGIOY/uxzwSs35+heFRcF2gpPRKGCLRHO L+7w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=9MvDJxiVPYpVq+Z15g5Os9nyP3WR3L34JbFf0y9qPy0=; b=HyFE1qAY+l3tcsHpixZ/YDBIgpiRq8QKPUyrtdMPTqkcbg0Mx3IInIgJj3sOn66/tg mQXXXZ4H3Hh364VsHKAr40zp/MI4gFC2TryCJHx04wrKCeWV9yBYbSzFp0scJ26nE6ud PSEo4kLqI3LyX4zaDpsQh13Bl9ykfSerpSpIlKAYdo5yL08ogtVdRwJbevr+95l3igAc mzLoC43OKRThPR1Nk/2lfHf7bwnZvYoCxh6vmHEi74rlPCp5q+jbZoQcaJ5zGT1C4NDl h02TW4SyId473hYLLHFeWmuYTfKLZmzrWdjhsW/Mf8bTGos3WPfX8y9kgFBFUCFdL7Nb hXcw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=Pu5tsbCb; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id f2si389490jat.114.2021.07.26.10.09.27; Mon, 26 Jul 2021 10:09:39 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=Pu5tsbCb; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238858AbhGZPvA (ORCPT + 99 others); Mon, 26 Jul 2021 11:51:00 -0400 Received: from mail.kernel.org ([198.145.29.99]:43296 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237833AbhGZP3Z (ORCPT ); Mon, 26 Jul 2021 11:29:25 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id B13CD6104F; Mon, 26 Jul 2021 16:08:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1627315722; bh=Ci8NwXawURBlAAGaCdbPSoAzx3i3WVpS1UIsf6UIfq4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Pu5tsbCbSQ10ZyT8MrIvXD0LLuphAKjsnr3TDoGv+3khjY2BDVdYXrZIHz3dGz5kS pP9i7cFXn5bQT8pKvRLwfozGK22ef0wFkp6Eo9CO9pmriJEBngAdQz/9wJlmc50m39 EiXax4vHTEMdmD01oswVum7fZFKM2rPV1D5yAWTw= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Vladimir Oltean , "David S. Miller" , Sasha Levin Subject: [PATCH 5.13 041/223] net: ocelot: fix switchdev objects synced for wrong netdev with LAG offload Date: Mon, 26 Jul 2021 17:37:13 +0200 Message-Id: <20210726153847.597069669@linuxfoundation.org> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210726153846.245305071@linuxfoundation.org> References: <20210726153846.245305071@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Vladimir Oltean [ Upstream commit e56c6bbd98dc1cefb6f9c5d795fd29016e4f2fe7 ] The point with a *dev and a *brport_dev is that when we have a LAG net device that is a bridge port, *dev is an ocelot net device and *brport_dev is the bonding/team net device. The ocelot net device beneath the LAG does not exist from the bridge's perspective, so we need to sync the switchdev objects belonging to the brport_dev and not to the dev. Fixes: e4bd44e89dcf ("net: ocelot: replay switchdev events when joining bridge") Signed-off-by: Vladimir Oltean Signed-off-by: David S. Miller Signed-off-by: Sasha Levin --- drivers/net/ethernet/mscc/ocelot_net.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/drivers/net/ethernet/mscc/ocelot_net.c b/drivers/net/ethernet/mscc/ocelot_net.c index aad33d22c33f..3dc577183a40 100644 --- a/drivers/net/ethernet/mscc/ocelot_net.c +++ b/drivers/net/ethernet/mscc/ocelot_net.c @@ -1287,6 +1287,7 @@ static int ocelot_netdevice_lag_leave(struct net_device *dev, } static int ocelot_netdevice_changeupper(struct net_device *dev, + struct net_device *brport_dev, struct netdev_notifier_changeupper_info *info) { struct netlink_ext_ack *extack; @@ -1296,11 +1297,11 @@ static int ocelot_netdevice_changeupper(struct net_device *dev, if (netif_is_bridge_master(info->upper_dev)) { if (info->linking) - err = ocelot_netdevice_bridge_join(dev, dev, + err = ocelot_netdevice_bridge_join(dev, brport_dev, info->upper_dev, extack); else - err = ocelot_netdevice_bridge_leave(dev, dev, + err = ocelot_netdevice_bridge_leave(dev, brport_dev, info->upper_dev); } if (netif_is_lag_master(info->upper_dev)) { @@ -1335,7 +1336,7 @@ ocelot_netdevice_lag_changeupper(struct net_device *dev, if (ocelot_port->bond != dev) return NOTIFY_OK; - err = ocelot_netdevice_changeupper(lower, info); + err = ocelot_netdevice_changeupper(lower, dev, info); if (err) return notifier_from_errno(err); } @@ -1374,7 +1375,7 @@ static int ocelot_netdevice_event(struct notifier_block *unused, struct netdev_notifier_changeupper_info *info = ptr; if (ocelot_netdevice_dev_check(dev)) - return ocelot_netdevice_changeupper(dev, info); + return ocelot_netdevice_changeupper(dev, dev, info); if (netif_is_lag_master(dev)) return ocelot_netdevice_lag_changeupper(dev, info); -- 2.30.2