From patchwork Fri May 21 13:27:53 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jarod Wilson X-Patchwork-Id: 446202 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 7A470C433B4 for ; Fri, 21 May 2021 13:28:14 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 5F4E0613DD for ; Fri, 21 May 2021 13:28:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235301AbhEUN3g (ORCPT ); Fri, 21 May 2021 09:29:36 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]:48267 "EHLO us-smtp-delivery-124.mimecast.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235021AbhEUN3e (ORCPT ); Fri, 21 May 2021 09:29:34 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1621603691; 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=E3f8qlzbFBDKEGYYa2YZ9L5S9+3TxhT6OOSrMEDma1I=; b=TrDKS3aNS6KS7RxKdmoN7Fv8wB8VsMfpAl8IE7gVkBt/dMXcdgl0vxzsyIgF6EOulrphUm nFx1xjYoBugN21ezxVeSBJ3nS8AIzSud/S/Tkll5QjppRIwswf5oEw8JcUw0ExVzCsDwm0 1fpiqUe/KOqiVb7Bt+WjvAEpVzINkyQ= 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-74-K5CU7H3SMs6y7TIjWyPi4w-1; Fri, 21 May 2021 09:28:09 -0400 X-MC-Unique: K5CU7H3SMs6y7TIjWyPi4w-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 85B4D801B16; Fri, 21 May 2021 13:28:08 +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 E134210AFEB0; Fri, 21 May 2021 13:28:06 +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 , Nikolay Aleksandrov , netdev@vger.kernel.org Subject: [PATCH net-next v2 1/4] bonding: add pure source-mac-based tx hashing option Date: Fri, 21 May 2021 09:27:53 -0400 Message-Id: <20210521132756.1811620-2-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 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org As it turns out, a pure source-mac only tx hash has a place for some VM setups. The previously added vlan+srcmac hash doesn't work as well for a VM with a single MAC and multiple vlans -- these types of setups path traffic more efficiently if the load is split by source mac alone. Enable this by way of an extra module parameter, rather than adding yet another hashing method in the tx fast path. Cc: Jay Vosburgh Cc: Veaceslav Falico Cc: Andy Gospodarek Cc: "David S. Miller" Cc: Jakub Kicinski Cc: Thomas Davis Cc: Nikolay Aleksandrov Cc: netdev@vger.kernel.org Signed-off-by: Jarod Wilson --- Documentation/networking/bonding.rst | 13 +++++++++++++ drivers/net/bonding/bond_main.c | 18 ++++++++++++------ 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/Documentation/networking/bonding.rst b/Documentation/networking/bonding.rst index 62f2aab8eaec..767dbb49018b 100644 --- a/Documentation/networking/bonding.rst +++ b/Documentation/networking/bonding.rst @@ -707,6 +707,13 @@ mode swapped with the new curr_active_slave that was chosen. +novlan_srcmac + + When using the vlan+srcmac xmit_hash_policy, there may be cases where + omitting the vlan from the hash is beneficial. This can be done with + an extra module parameter here. The default value is 0 to include + vlan ID in the transmit hash. + num_grat_arp, num_unsol_na @@ -964,6 +971,12 @@ xmit_hash_policy hash = (vlan ID) XOR (source MAC vendor) XOR (source MAC dev) + Optionally, if the module parameter novlan_srcmac=1 is set, + the vlan ID is omitted from the hash and only the source MAC + address is used, reducing the hash to + + hash = (source MAC vendor) XOR (source MAC dev) + The default value is layer2. This option was added in bonding version 2.6.3. In earlier versions of bonding, this parameter does not exist, and the layer2 policy is the only policy. The diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c index 20bbda1b36e1..32785e9d0295 100644 --- a/drivers/net/bonding/bond_main.c +++ b/drivers/net/bonding/bond_main.c @@ -107,6 +107,7 @@ static char *lacp_rate; static int min_links; static char *ad_select; static char *xmit_hash_policy; +static int novlan_srcmac; static int arp_interval; static char *arp_ip_target[BOND_MAX_ARP_TARGETS]; static char *arp_validate; @@ -168,6 +169,9 @@ MODULE_PARM_DESC(xmit_hash_policy, "balance-alb, balance-tlb, balance-xor, 802.3 "0 for layer 2 (default), 1 for layer 3+4, " "2 for layer 2+3, 3 for encap layer 2+3, " "4 for encap layer 3+4, 5 for vlan+srcmac"); +module_param(novlan_srcmac, int, 0); +MODULE_PARM_DESC(novlan_srcmac, "include vlan ID in vlan+srcmac xmit_hash_policy or not; " + "0 to include it (default), 1 to exclude it"); module_param(arp_interval, int, 0); MODULE_PARM_DESC(arp_interval, "arp interval in milliseconds"); module_param_array(arp_ip_target, charp, NULL, 0); @@ -3523,9 +3527,9 @@ static bool bond_flow_ip(struct sk_buff *skb, struct flow_keys *fk, static u32 bond_vlan_srcmac_hash(struct sk_buff *skb) { - struct ethhdr *mac_hdr = (struct ethhdr *)skb_mac_header(skb); + struct ethhdr *mac_hdr = eth_hdr(skb); u32 srcmac_vendor = 0, srcmac_dev = 0; - u16 vlan; + u32 hash; int i; for (i = 0; i < 3; i++) @@ -3534,12 +3538,14 @@ static u32 bond_vlan_srcmac_hash(struct sk_buff *skb) for (i = 3; i < ETH_ALEN; i++) srcmac_dev = (srcmac_dev << 8) | mac_hdr->h_source[i]; - if (!skb_vlan_tag_present(skb)) - return srcmac_vendor ^ srcmac_dev; + hash = srcmac_vendor ^ srcmac_dev; + + if (novlan_srcmac || !skb_vlan_tag_present(skb)) + return hash; - vlan = skb_vlan_tag_get(skb); + hash ^= skb_vlan_tag_get(skb); - return vlan ^ srcmac_vendor ^ srcmac_dev; + return hash; } /* Extract the appropriate headers based on bond's xmit policy */ From patchwork Fri May 21 13:27:54 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jarod Wilson X-Patchwork-Id: 445127 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 01EC0C433B4 for ; Fri, 21 May 2021 13:28:19 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id DB167613D8 for ; Fri, 21 May 2021 13:28:18 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235021AbhEUN3k (ORCPT ); Fri, 21 May 2021 09:29:40 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]:46323 "EHLO us-smtp-delivery-124.mimecast.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235381AbhEUN3h (ORCPT ); Fri, 21 May 2021 09:29:37 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1621603694; 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=NNa7qEqodhRAjAVhRpjE3XFrfRWQy/rLFkgFPKFgziA=; b=COi8kY0q8cmyQNdQDhyNM3gNAPZ1eQG3rcsROjjDNtIM/YqXCiN3mbBK4KdOrzbDpmalEj LKLDp7uQ1ZKFhQUoGFnH3g6j+oVr+XeVPreq/XqejElscUSZ1QWMuhLQFHGptByPiLxe3N ENQ+9rNNckkjJjT4/5cuYFFJoeubWT0= 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-400-ll-jXCJeNT28KBTesX7a7A-1; Fri, 21 May 2021 09:28:11 -0400 X-MC-Unique: ll-jXCJeNT28KBTesX7a7A-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 2450B801B20; Fri, 21 May 2021 13:28:10 +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 B16DB100AE43; Fri, 21 May 2021 13:28:08 +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 2/4] bonding/balance-lb: don't rewrite bridged non-local MACs Date: Fri, 21 May 2021 09:27:54 -0400 Message-Id: <20210521132756.1811620-3-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 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org With a virtual machine behind a bridge that directly incorporates a balance-alb bond as one of its ports, outgoing traffic should retain the VM's source MAC. That works fine most of the time, until doing a failover, and then the MAC gets rewritten to the bond slave's MAC, and the return traffic gets dropped. If we don't rewrite the MAC there, we don't lose the traffic. 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 | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/drivers/net/bonding/bond_alb.c b/drivers/net/bonding/bond_alb.c index 3455f2cc13f2..c57f62e43328 100644 --- a/drivers/net/bonding/bond_alb.c +++ b/drivers/net/bonding/bond_alb.c @@ -1302,6 +1302,23 @@ void bond_alb_deinitialize(struct bonding *bond) rlb_deinitialize(bond); } +static bool bond_alb_bridged_mac(struct bonding *bond, struct ethhdr *eth_data) +{ + if (BOND_MODE(bond) != BOND_MODE_ALB) + return false; + + /* Don't modify source MACs that do not originate locally + * (e.g.,arrive via a bridge). + */ + if (!netif_is_bridge_port(bond->dev)) + return false; + + if (bond_slave_has_mac_rx(bond, eth_data->h_source)) + return false; + + return true; +} + static netdev_tx_t bond_do_alb_xmit(struct sk_buff *skb, struct bonding *bond, struct slave *tx_slave) { @@ -1316,7 +1333,8 @@ static netdev_tx_t bond_do_alb_xmit(struct sk_buff *skb, struct bonding *bond, } if (tx_slave && bond_slave_can_tx(tx_slave)) { - if (tx_slave != rcu_access_pointer(bond->curr_active_slave)) { + if (tx_slave != rcu_access_pointer(bond->curr_active_slave) && + !bond_alb_bridged_mac(bond, eth_data)) { ether_addr_copy(eth_data->h_source, tx_slave->dev->dev_addr); } From patchwork Fri May 21 13:27:55 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jarod Wilson X-Patchwork-Id: 446201 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 B48F5C433B4 for ; Fri, 21 May 2021 13:28:33 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 962D1613D9 for ; Fri, 21 May 2021 13:28:33 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235690AbhEUN3y (ORCPT ); Fri, 21 May 2021 09:29:54 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]:48376 "EHLO us-smtp-delivery-124.mimecast.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235516AbhEUN3j (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 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 Precedence: bulk List-ID: X-Mailing-List: netdev@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; } From patchwork Fri May 21 13:27:56 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jarod Wilson X-Patchwork-Id: 445126 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=unavailable 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 1DC17C433B4 for ; Fri, 21 May 2021 13:28:36 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id F1318610CB for ; Fri, 21 May 2021 13:28:35 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235705AbhEUN35 (ORCPT ); Fri, 21 May 2021 09:29:57 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]:39514 "EHLO us-smtp-delivery-124.mimecast.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235428AbhEUN3j (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=1621603695; 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=qwvdXWfkvGdDNbwDsLlh0GW23kpfk2LfAOvdZQXaciI=; b=Cp16oTrI855tfTrodzGTDrvOEmsKsVh6dT4McfhuQYCkM+L4knb1dHxHmbxNfpnHLpJihz 4iCxv4gen6pVYhps34FcX2xzGESmTBv2T315j2lle1agV2gvB5Bf8ICvPrtTcepXWnuZ0O 7M9HI3UR9veYmPjtDQMWDFc3vj9Q8YY= 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-104-F32ZlwWJM9a79KpVuHpCEA-1; Fri, 21 May 2021 09:28:14 -0400 X-MC-Unique: F32ZlwWJM9a79KpVuHpCEA-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 F08B66414C; Fri, 21 May 2021 13:28:12 +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 B9E91100AE43; Fri, 21 May 2021 13:28:11 +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 4/4] bonding/balance-alb: put all slaves into promisc Date: Fri, 21 May 2021 09:27:56 -0400 Message-Id: <20210521132756.1811620-5-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 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 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. Such traffic gets dropped if the interface isn't in promiscuous mode. Therefore, it would seem to make sense to put all slaves into promisc. 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 32785e9d0295..6d95f9e46059 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)