Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp1099673pxj; Fri, 21 May 2021 06:30:55 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw0PR1kTfnHvCmmxC2i1piadZKtFcSM8zUnRV6v+56uHo/Mrax13TbDy1rZLs2hJJuBvoF0 X-Received: by 2002:a17:907:16a5:: with SMTP id hc37mr10863556ejc.166.1621603854956; Fri, 21 May 2021 06:30:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621603854; cv=none; d=google.com; s=arc-20160816; b=YojWRMuKfBcKOGbYG+7XgtgPqAoOZeQ12n3XB4UxLhcwMRdOPxNA5ojf46kzLeGZun GshE/5x3yzfEMSDgCTI9L1OxQ1hPNbwDNBISWBnQWbp/Z9Pm/rnPYPwfLc9UJgPBbPC9 ANKEtlOGUBw3pRgozOpk8O98mPt2+bQna8C2ML3pvHkfIPh1gsKix5L8P1oEMqWRJ5+F 9+z/OGK6v5gTNkKMfg20+3LkxJ+wFdSVqh7sifk0r/gW8PjEXXmGq7wlzD5dsALI984C Ii2Wdi5/YAW0byoZcHL7Jvps6YQMmvUHgi95CjWw5Uv3WqNq2GPKm/CVbBa2SVKk2yUe Eq2Q== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=VhNQFxkaQPnrQi8kjdlaaUSwWp56dWqJAcIJv0VkFH0=; b=biEfqmzJ/Zu+r2tPuE2VQUFsRNN/wPuFCi91YHTGD7SjAk5MHdihsQIxZJoS07UZu3 srTT5OoVdlQLm773ET2FEJRLJ1nBi37k+jkv2bwICMs/ftLYs9DYSUAoHc9LewDUidGy DXfE0hmLdUVvD6BMWRp8vxVJnYdvQUl+2kOcIvNmFATJ+7Uw+Mpt1Kob/1h5kIEit8n6 va1llLBrXvdqRXr6+zt3L7MYEOxBzbHX6mP+6rKaB8S8FDyySdGVYcNcIO5ET84YblpY A5u2Nq0hjXlmq/ChSVZWNRzKK/c/UW/fZV49A+1AB5vOfbXfgFFz80T9vbASRbvFb+sm 7UVQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=aCLhWul2; 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=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id p17si5954066edq.129.2021.05.21.06.30.31; Fri, 21 May 2021 06:30:54 -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=@redhat.com header.s=mimecast20190719 header.b=aCLhWul2; 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=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235772AbhEUNaC (ORCPT + 99 others); Fri, 21 May 2021 09:30:02 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]:47240 "EHLO us-smtp-delivery-124.mimecast.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235514AbhEUN3j (ORCPT ); Fri, 21 May 2021 09:29:39 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1621603696; 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=VhNQFxkaQPnrQi8kjdlaaUSwWp56dWqJAcIJv0VkFH0=; b=aCLhWul2UssVl6PI+9zk59XUAqzkkAXhZLH05TGwLWWFHjGYhTpm1SktwrGuiAYen9kgai 02q+ov8dzb+6UAV8dIIjecQ044avlVkyafiDhmX7JFdNri833bcPFeG9n0uj0VQgJb/Xrz AXSU83jKftZWkYktS4f1Ct2qWyBZfUc= 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-588-Jlt78sEENw6Yilvct5FSlw-1; Fri, 21 May 2021 09:28:12 -0400 X-MC-Unique: Jlt78sEENw6Yilvct5FSlw-1 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 8989C107AFA8; Fri, 21 May 2021 13:28:11 +0000 (UTC) Received: from f33vm.wilsonet.com.wilsonet.com (dhcp-17-185.bos.redhat.com [10.18.17.185]) by smtp.corp.redhat.com (Postfix) with ESMTP id 539B0100AE43; Fri, 21 May 2021 13:28:10 +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 v2 3/4] bonding/balance-alb: don't tx balance multicast traffic either Date: Fri, 21 May 2021 09:27:55 -0400 Message-Id: <20210521132756.1811620-4-jarod@redhat.com> In-Reply-To: <20210521132756.1811620-1-jarod@redhat.com> References: <20210518210849.1673577-1-jarod@redhat.com> <20210521132756.1811620-1-jarod@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Multicast traffic going out the non-primary interface can come back in through the primary interface in alb mode. When there's a bridge sitting on top of the bond, with virtual machines behind it, attached to vnetX interfaces also acting as bridge ports, this can cause problems. The looped frame has the source MAC of the VM behind the bridge, and ends up rewriting the bridge forwarding database entries, replacing a vnetX entry in the fdb with the bond instead, at which point, we lose traffic. If we don't tx balance multicast traffic, we don't break connectivity. 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_alb.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/net/bonding/bond_alb.c b/drivers/net/bonding/bond_alb.c index c57f62e43328..cddc4d8b2519 100644 --- a/drivers/net/bonding/bond_alb.c +++ b/drivers/net/bonding/bond_alb.c @@ -1418,7 +1418,7 @@ struct slave *bond_xmit_alb_slave_get(struct bonding *bond, case ETH_P_IP: { const struct iphdr *iph; - if (is_broadcast_ether_addr(eth_data->h_dest) || + if (is_multicast_ether_addr(eth_data->h_dest) || !pskb_network_may_pull(skb, sizeof(*iph))) { do_tx_balance = false; break; @@ -1438,7 +1438,7 @@ struct slave *bond_xmit_alb_slave_get(struct bonding *bond, /* IPv6 doesn't really use broadcast mac address, but leave * that here just in case. */ - if (is_broadcast_ether_addr(eth_data->h_dest)) { + if (is_multicast_ether_addr(eth_data->h_dest)) { do_tx_balance = false; break; } -- 2.30.2