From patchwork Thu May 27 20:00:51 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jarod Wilson X-Patchwork-Id: 449313 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=-16.1 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER, INCLUDES_PATCH, MAILING_LIST_MULTI, SPF_HELO_NONE, SPF_PASS, URIBL_BLOCKED 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 94DFDC4708A for ; Thu, 27 May 2021 20:01:23 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 689E1613C9 for ; Thu, 27 May 2021 20:01:23 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235576AbhE0UCz (ORCPT ); Thu, 27 May 2021 16:02:55 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]:50529 "EHLO us-smtp-delivery-124.mimecast.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235375AbhE0UCw (ORCPT ); Thu, 27 May 2021 16:02:52 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1622145679; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Dz20AfCWgeLAO4NbvOpubSMj2g/ofA/Cn2n4K5BjF+s=; b=HuSeiAmSBi0ovlSUatJzFMez5BWErC3ocn5Sqa6FwB4SIGJEiSbPAWxEtGRAQwBNUnVR7v eMyM8GRsltLrq7aKBuowogZQbPwM1cQ+SxpXuyHZnlZPZUyRyhFdB8LetslLPY53UzfJKb BfvaaHCF+ItLQRdQ8a2EVwi3sVep404= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-254-koOhf0XPOSGMnINW40eZyQ-1; Thu, 27 May 2021 16:01:12 -0400 X-MC-Unique: koOhf0XPOSGMnINW40eZyQ-1 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 3EC98A92A3; Thu, 27 May 2021 20:01:11 +0000 (UTC) Received: from f33vm.wilsonet.com (dhcp-17-185.bos.redhat.com [10.18.17.185]) by smtp.corp.redhat.com (Postfix) with ESMTP id 063D75C5B5; Thu, 27 May 2021 20:01:09 +0000 (UTC) From: Jarod Wilson To: linux-kernel@vger.kernel.org Cc: Jarod Wilson , Jay Vosburgh , Veaceslav Falico , Andy Gospodarek , "David S. Miller" , Jakub Kicinski , Thomas Davis , netdev@vger.kernel.org Subject: [PATCH net-next v3 2/2] bonding/balance-alb: put all slaves into promisc Date: Thu, 27 May 2021 16:00:51 -0400 Message-Id: <20210527200051.1871092-3-jarod@redhat.com> In-Reply-To: <20210527200051.1871092-1-jarod@redhat.com> References: <20210527200051.1871092-1-jarod@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Unlike most other modes with a primary interface, ALB mode bonding can receive on all slaves. That includes traffic destined for a non-local MAC behind a bridge on top of the bond. In such setups, the bridge driver puts all ports (including the bond) into promiscuous mode, but we're not propagating that change down to the non-primary slaves in ALB mode. As a result, incoming traffic to those interfaces gets dropped. Since ALB can receive on all slaves, all slaves should get promiscuity changes propagated to them. Cc: Jay Vosburgh Cc: Veaceslav Falico Cc: Andy Gospodarek Cc: "David S. Miller" Cc: Jakub Kicinski Cc: Thomas Davis Cc: netdev@vger.kernel.org Signed-off-by: Jarod Wilson --- drivers/net/bonding/bond_main.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c index 666051f91d70..3933219ae773 100644 --- a/drivers/net/bonding/bond_main.c +++ b/drivers/net/bonding/bond_main.c @@ -647,9 +647,10 @@ static int bond_check_dev_link(struct bonding *bond, static int bond_set_promiscuity(struct bonding *bond, int inc) { struct list_head *iter; - int err = 0; + int mode, err = 0; - if (bond_uses_primary(bond)) { + mode = BOND_MODE(bond); + if (mode == BOND_MODE_ACTIVEBACKUP || mode == BOND_MODE_TLB) { struct slave *curr_active = rtnl_dereference(bond->curr_active_slave); if (curr_active)