From patchwork Wed Jan 17 16:44:44 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chas Williams <3chas3@gmail.com> X-Patchwork-Id: 33931 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 9F4631B01C; Wed, 17 Jan 2018 17:44:52 +0100 (CET) Received: from mail-qt0-f196.google.com (mail-qt0-f196.google.com [209.85.216.196]) by dpdk.org (Postfix) with ESMTP id 6C40B1B019 for ; Wed, 17 Jan 2018 17:44:51 +0100 (CET) Received: by mail-qt0-f196.google.com with SMTP id s39so6179786qth.7 for ; Wed, 17 Jan 2018 08:44:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=jFTfAJdrwD2xz8+W0yw8MIqqtdUSmht1EqC23yVTQ2s=; b=TNiY6WA480OXykKMU4p2i3KKzR6S213QsFKdIAPGL6gCqIEnixWsCpNLAn2R2dVZQ8 rHzX5Ai+Slp5igsJSeh1dtY5WJyqA/z9b6kkhmO2ZkL50Yq5q2PVFZnDJc0Osy4XKrTt tZKfLh4cLtGm7iwqC7Ff2QvXAKTYIR1uwUQ3k3lPDTv0ZffO43B+3eLe+LQDvObi6j9f 4v0fuiUuv6j21+AKw7DOsqPJfTEjTW9xA0aBhRHHba0wUXmo/8JpX1O+AxX5J3VnIUsA jVb6jy+cJ/Wi6BlzbuhZMHBEB8StJKF/v98m0DZ1lMyv7KxbUDtK86LM7Kdl0nn3dGy9 ut7g== 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; bh=jFTfAJdrwD2xz8+W0yw8MIqqtdUSmht1EqC23yVTQ2s=; b=qQRhAEHM3yKiyA/7ptneVnfddtsQts26BFysy3WoxDW5M7m0gAzv3rF318/kf75PFR CupmVHAbFemsS38pafn8JhFhbg5pU28f+60AP6wFxPqMs3ZfSaIv7BHHsQoHrMMbnXfF W6O0Ngee1X9J+zYJ6MWUHDpEB6FSx4Am0DSxV7MJqlCi6lvA+DHkUoh/5DnCbB1w67na q1g3olj4qw7NCeio8C0n+atGiBvgtdIVqon2/4+zymMfrJnrdC5bR5zd06/l8GjqsCfx r0P2E12faZ5OmgSrQxlB7UuJcoyjeYGnAaGQolTzhhWIq+1TU4Lp4TfwPrmaeTO/KpkR uDiw== X-Gm-Message-State: AKwxytf7zQXh4YyWnRW1Oz+6HQ1wjdwMB4sxn1CgQwcb4vOUmZibBFqU lEz/uQC2tYjpEUYBzBPDyFAGjw== X-Google-Smtp-Source: ACJfBovPxa1OXWqqjXjENIOo/Gp5eG9vviL6jP8LG2shZ160x6Axd1lZeAjRAPeA8S9DI2BrkN5TXA== X-Received: by 10.237.56.164 with SMTP id k33mr58328306qte.276.1516207490276; Wed, 17 Jan 2018 08:44:50 -0800 (PST) Received: from monolith.home (pool-173-79-224-159.washdc.fios.verizon.net. [173.79.224.159]) by smtp.gmail.com with ESMTPSA id w33sm3377309qtj.10.2018.01.17.08.44.48 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 17 Jan 2018 08:44:48 -0800 (PST) From: Chas Williams <3chas3@gmail.com> To: dev@dpdk.org Cc: declan.doherty@intel.com, "Charles (Chas) Williams" , Chas Williams Date: Wed, 17 Jan 2018 11:44:44 -0500 Message-Id: <20180117164444.4705-1-3chas3@gmail.com> X-Mailer: git-send-email 2.9.5 Subject: [dpdk-dev] [PATCH] net/bonding: don't early mark eth device as bonded X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: "Charles (Chas) Williams" bonding immediately marks the incoming eth device as bonded and doesn't clear this in later error paths. Delay marking the dev until we are certain that we are going to add this eth device to the bond group. Signed-off-by: Chas Williams Acked-by: Radu Nicolau --- drivers/net/bonding/rte_eth_bond_api.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/drivers/net/bonding/rte_eth_bond_api.c b/drivers/net/bonding/rte_eth_bond_api.c index 534a890..e9c446b 100644 --- a/drivers/net/bonding/rte_eth_bond_api.c +++ b/drivers/net/bonding/rte_eth_bond_api.c @@ -242,9 +242,6 @@ __eth_bond_slave_add_lock_free(uint16_t bonded_port_id, uint16_t slave_port_id) return -1; } - /* Add slave details to bonded device */ - slave_eth_dev->data->dev_flags |= RTE_ETH_DEV_BONDED_SLAVE; - rte_eth_dev_info_get(slave_port_id, &dev_info); if (dev_info.max_rx_pktlen < internals->max_rx_pktlen) { RTE_BOND_LOG(ERR, "Slave (port %u) max_rx_pktlen too small", @@ -316,18 +313,21 @@ __eth_bond_slave_add_lock_free(uint16_t bonded_port_id, uint16_t slave_port_id) internals->slave_count++; - /* Update all slave devices MACs*/ - mac_address_slaves_update(bonded_eth_dev); - if (bonded_eth_dev->data->dev_started) { if (slave_configure(bonded_eth_dev, slave_eth_dev) != 0) { - slave_eth_dev->data->dev_flags &= (~RTE_ETH_DEV_BONDED_SLAVE); + internals->slave_count--; RTE_BOND_LOG(ERR, "rte_bond_slaves_configure: port=%d", slave_port_id); return -1; } } + /* Add slave details to bonded device */ + slave_eth_dev->data->dev_flags |= RTE_ETH_DEV_BONDED_SLAVE; + + /* Update all slave devices MACs*/ + mac_address_slaves_update(bonded_eth_dev); + /* Register link status change callback with bonded device pointer as * argument*/ rte_eth_dev_callback_register(slave_port_id, RTE_ETH_EVENT_INTR_LSC,