From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 52CC4A0518 for ; Fri, 24 Jul 2020 14:10:49 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 493621C20A; Fri, 24 Jul 2020 14:10:49 +0200 (CEST) Received: from mail-wm1-f66.google.com (mail-wm1-f66.google.com [209.85.128.66]) by dpdk.org (Postfix) with ESMTP id ABF251C231 for ; Fri, 24 Jul 2020 14:10:48 +0200 (CEST) Received: by mail-wm1-f66.google.com with SMTP id 9so7743375wmj.5 for ; Fri, 24 Jul 2020 05:10:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=uNnp2uIZhRkppTAzTugRKWwvLqqvdWY1viJMwnkwg/Y=; b=VPuU2EHIpJreSKVjqKfKewbnKZOf/MeIfdPycaB8et8+uMpsAxTt33ztMyqa47HgGy +P/+/x3BfjWURJj4gzDC+IMjuyJxYGP++HDTan2855VMSmo12fxd1Onf7uunFPmhkQgH gmGhVLScPZustgWc0aZCtO3QxNoLT8tlzFzgQYizcu6Dr5KmIhnNQzLp7noi/60ERCan bIIfDItwNIshYoORMnPPs+74SCuLbTvNTuBxxcFdcX4ecOJ7xZ0eVFLAF+TjKpqs/FAG Wr88nTXzYgkQiZhAfQD8iiZGscJKRtsuuYx4E54lJEF/PvzVxSp8wJST3sAhsa1cHTZI JYcA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=uNnp2uIZhRkppTAzTugRKWwvLqqvdWY1viJMwnkwg/Y=; b=ruAfAHoFBiPJrDF92ypxv4OzDeGZHfl3oQip6WfZY/b0BBV22AMiUsV/VOQLoqKk5s tmCrYyhus0IbhPWzMw//5TLg//14N0T7QOXGVA0CQRTXflt6v01LSYO86g99M88G3Wsz oOuYr/IEluGIFt5jjS+RLCmcYn0/JkbWthrRCpk6JoB/PZaaTbotxVHS8JJEME6sNRHJ e/3Y2Hj5PxlHHk4Hd6yZYieT8GQlFraSp+x/GzKaXToaTiJXsU7YtcoqsNgwwxpKSVw+ P4rSL2ziyBzhki9MLzFTj3yngF89e/TBEHU2tHr+BMmOlZ+sE1SX7+P+fPiJ5wn0N1bD tbWQ== X-Gm-Message-State: AOAM533hJMOQ5iH5AEacDgKWQfi/RUFmZ+3RpJh8r2yllL6Z3RTyHqFe SzBlEZ3hNYaaXJPwvss/YfE= X-Google-Smtp-Source: ABdhPJxC0ryX/qjg7EqFX4i/s51k0lSL7YpaGX+D18dWqrSV2NP+CrKeDMQ26B830lgiDOMUgFh54g== X-Received: by 2002:a7b:c208:: with SMTP id x8mr8579921wmi.49.1595592648445; Fri, 24 Jul 2020 05:10:48 -0700 (PDT) Received: from localhost ([88.98.246.218]) by smtp.gmail.com with ESMTPSA id k204sm6743667wma.21.2020.07.24.05.10.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 24 Jul 2020 05:10:47 -0700 (PDT) From: luca.boccassi@gmail.com To: "Wei Hu (Xavier)" Cc: Chunsong Feng , dpdk stable Date: Fri, 24 Jul 2020 12:59:56 +0100 Message-Id: <20200724120030.1863487-158-luca.boccassi@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200724120030.1863487-1-luca.boccassi@gmail.com> References: <20200724120030.1863487-1-luca.boccassi@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [dpdk-stable] patch 'net/bonding: fix MAC address when switching active port' has been queued to stable release 19.11.4 X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org Sender: "stable" Hi, FYI, your patch has been queued to stable release 19.11.4 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 07/26/20. So please shout if anyone has objections. Also note that after the patch there's a diff of the upstream commit vs the patch applied to the branch. This will indicate if there was any rebasing needed to apply to the stable branch. If there were code changes for rebasing (ie: not only metadata diffs), please double check that the rebase was correctly done. Thanks. Luca Boccassi --- >From 87753bad04b0047b6321d59a0a422c48ae8de715 Mon Sep 17 00:00:00 2001 From: "Wei Hu (Xavier)" Date: Fri, 17 Apr 2020 16:19:17 +0800 Subject: [PATCH] net/bonding: fix MAC address when switching active port [ upstream commit edf6489ea43ec9c27d54dbe9e94adcdc43b70e04 ] Currently, based on a active-backup bond device, when the link status of the primary port changes from up to down, one slave port changes to the primary port, but the new primary port's MAC address cannot change to the bond device's MAC address. And we can't continue receive packets whose destination MAC addresses are the same as the bond devices's MAC address. The current bonding PMD driver call mac_address_slaves_update function to modify the MAC address of all slaves devices: the primary port using bond device's MAC address, and other slaves devices using the respective MAC address. We found that one error using primary_port instead of current_primary_port in mac_address_slaves_update function. On the other hand, The current bonding PMD driver sets slave devices's MAC address according to the variable named current_primary_port. The variable named current_primary_port changes in the following scenario: 1. Add the slave devices to bond, the first slave port will be regarded as the current_primary_port. If changing the order of adding the slave devices, the value of the variable named current_primary_port will be different. 2. The upper application specifies primary_port via calling the rte_eth_bond_primary_set API function. 3. Delete the primary slave device. 4. The link status of the primary port changes from up to down. We have tested the above 4 cases and found that there are problems that the new primary port's MAC address didn't change to the bond device's MAC address when running case 3 and 4. When current_primary_port changes, the new primary port's MAC address should change at the same time. We also need to call mac_address_slaves_update function to update MAC addresses in case 3 and 4. Bugzilla ID: 256 Fixes: 2efb58cbab6e ("bond: new link bonding library") Signed-off-by: Chunsong Feng Signed-off-by: Wei Hu (Xavier) --- drivers/net/bonding/rte_eth_bond_api.c | 1 + drivers/net/bonding/rte_eth_bond_pmd.c | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/net/bonding/rte_eth_bond_api.c b/drivers/net/bonding/rte_eth_bond_api.c index d77dc4096..97c667e00 100644 --- a/drivers/net/bonding/rte_eth_bond_api.c +++ b/drivers/net/bonding/rte_eth_bond_api.c @@ -698,6 +698,7 @@ __eth_bond_slave_remove_lock_free(uint16_t bonded_port_id, internals->current_primary_port = internals->slaves[0].port_id; else internals->primary_port = 0; + mac_address_slaves_update(bonded_eth_dev); } if (internals->active_slave_count < 1) { diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c b/drivers/net/bonding/rte_eth_bond_pmd.c index 707a0f3cd..ddae3518c 100644 --- a/drivers/net/bonding/rte_eth_bond_pmd.c +++ b/drivers/net/bonding/rte_eth_bond_pmd.c @@ -1533,7 +1533,7 @@ mac_address_slaves_update(struct rte_eth_dev *bonded_eth_dev) if (internals->slaves[i].port_id == internals->current_primary_port) { if (rte_eth_dev_default_mac_addr_set( - internals->primary_port, + internals->current_primary_port, bonded_eth_dev->data->mac_addrs)) { RTE_BOND_LOG(ERR, "Failed to update port Id %d MAC address", internals->current_primary_port); @@ -2873,6 +2873,7 @@ bond_ethdev_lsc_event_callback(uint16_t port_id, enum rte_eth_event_type type, internals->active_slaves[0]); else internals->current_primary_port = internals->primary_port; + mac_address_slaves_update(bonded_eth_dev); } } -- 2.20.1 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2020-07-24 12:53:54.642905218 +0100 +++ 0158-net-bonding-fix-MAC-address-when-switching-active-po.patch 2020-07-24 12:53:48.523010857 +0100 @@ -1,8 +1,10 @@ -From edf6489ea43ec9c27d54dbe9e94adcdc43b70e04 Mon Sep 17 00:00:00 2001 +From 87753bad04b0047b6321d59a0a422c48ae8de715 Mon Sep 17 00:00:00 2001 From: "Wei Hu (Xavier)" Date: Fri, 17 Apr 2020 16:19:17 +0800 Subject: [PATCH] net/bonding: fix MAC address when switching active port +[ upstream commit edf6489ea43ec9c27d54dbe9e94adcdc43b70e04 ] + Currently, based on a active-backup bond device, when the link status of the primary port changes from up to down, one slave port changes to the primary port, but the new primary port's MAC address cannot change to @@ -38,7 +40,6 @@ Bugzilla ID: 256 Fixes: 2efb58cbab6e ("bond: new link bonding library") -Cc: stable@dpdk.org Signed-off-by: Chunsong Feng Signed-off-by: Wei Hu (Xavier) @@ -60,7 +61,7 @@ if (internals->active_slave_count < 1) { diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c b/drivers/net/bonding/rte_eth_bond_pmd.c -index 044a1cfbc..6f361c7b2 100644 +index 707a0f3cd..ddae3518c 100644 --- a/drivers/net/bonding/rte_eth_bond_pmd.c +++ b/drivers/net/bonding/rte_eth_bond_pmd.c @@ -1533,7 +1533,7 @@ mac_address_slaves_update(struct rte_eth_dev *bonded_eth_dev)