From patchwork Wed Sep 7 12:28:10 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ilya Maximets X-Patchwork-Id: 15653 X-Patchwork-Delegate: bruce.richardson@intel.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id 14B808DB1; Wed, 7 Sep 2016 14:28:22 +0200 (CEST) Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com [210.118.77.11]) by dpdk.org (Postfix) with ESMTP id CB3AB8DAB; Wed, 7 Sep 2016 14:28:20 +0200 (CEST) Received: from eucpsbgm2.samsung.com (unknown [203.254.199.245]) by mailout1.w1.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTP id <0OD400DP3VZ6II20@mailout1.w1.samsung.com>; Wed, 07 Sep 2016 13:28:18 +0100 (BST) X-AuditID: cbfec7f5-f792e6d0000013f5-b1-57d007e23b5e Received: from eusync2.samsung.com ( [203.254.199.212]) by eucpsbgm2.samsung.com (EUCPMTA) with SMTP id A6.9D.05109.2E700D75; Wed, 7 Sep 2016 13:28:18 +0100 (BST) Received: from imaximets.rnd.samsung.ru ([106.109.129.180]) by eusync2.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0OD4005Y9VZ2TR10@eusync2.samsung.com>; Wed, 07 Sep 2016 13:28:18 +0100 (BST) From: Ilya Maximets To: dev@dpdk.org, Declan Doherty Cc: Heetae Ahn , Yuanhan Liu , Eric Kinzie , Bernard Iremonger , Ilya Maximets , stable@dpdk.org Date: Wed, 07 Sep 2016 15:28:10 +0300 Message-id: <1473251290-22053-1-git-send-email-i.maximets@samsung.com> X-Mailer: git-send-email 2.7.4 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFmpkluLIzCtJLcpLzFFi42I5/e/4Fd1H7BfCDT5+ULfY3Chs8eZBE4vF u0/bmSzmndrLbjHt8212iyvtP9kt/nX8Ybe4PuECqwOHx68FS1k9ds66y+6xeM9LJo95JwM9 +rasYgxgjeKySUnNySxLLdK3S+DKuNVxjaXghGDFiXdn2RsY7/N1MXJySAiYSOxctoAdwhaT uHBvPVsXIxeHkMBSRonbZzcwQTitTBL/tv8Fq2IT0JE4tfoII4gtImAtcWHtCrAOZoFnjBI3 1kxiAkkIC7hJrO+cDtbAIqAqcaF9EQuIzQsU3775IBvEOjmJm+c6mScwci9gZFjFKJpamlxQ nJSea6RXnJhbXJqXrpecn7uJERIwX3cwLj1mdYhRgINRiYe3Yve5cCHWxLLiytxDjBIczEoi vE7MF8KFeFMSK6tSi/Lji0pzUosPMUpzsCiJ887c9T5ESCA9sSQ1OzW1ILUIJsvEwSnVwFj0 PNFJp3OuL9/9lqdaG5L0PFa/FZJZO009+tAikzfBktOEufU0ma+cXeufKKug1701onHrlweX Ty7dWrVG/0ryCtHoCVfWd6k0HMvm+hn2vcrh36smGxX2f76fFl4535a5e3riDokXx4R3qRzj PJPNFhfdw3Tw4KePK9PlPhf4r0rYWtzeEqzEUpyRaKjFXFScCABgjr4gFAIAAA== Subject: [dpdk-dev] [PATCH] Revert "bonding: use existing enslaved device queues" X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" This reverts commit 5b7bb2bda5519b7800f814df64d4e015282140e5. It is necessary to reconfigure all queues every time because configuration can be changed. For example, if we're reconfiguring bonding device with new memory pool, already configured queues will still use the old one. And if the old mempool be freed, application likely will panic in attempt to use freed mempool. This happens when we use the bonding device with OVS 2.6 while MTU reconfiguration: PANIC in rte_mempool_get_ops(): assert "(ops_index >= 0) && (ops_index < RTE_MEMPOOL_MAX_OPS_IDX)" failed Cc: Signed-off-by: Ilya Maximets Acked-by: Declan Doherty Acked-by: Declan Doherty --- drivers/net/bonding/rte_eth_bond_pmd.c | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c b/drivers/net/bonding/rte_eth_bond_pmd.c index b20a272..eb5b6d1 100644 --- a/drivers/net/bonding/rte_eth_bond_pmd.c +++ b/drivers/net/bonding/rte_eth_bond_pmd.c @@ -1305,8 +1305,6 @@ slave_configure(struct rte_eth_dev *bonded_eth_dev, struct bond_rx_queue *bd_rx_q; struct bond_tx_queue *bd_tx_q; - uint16_t old_nb_tx_queues = slave_eth_dev->data->nb_tx_queues; - uint16_t old_nb_rx_queues = slave_eth_dev->data->nb_rx_queues; int errval; uint16_t q_id; @@ -1347,9 +1345,7 @@ slave_configure(struct rte_eth_dev *bonded_eth_dev, } /* Setup Rx Queues */ - /* Use existing queues, if any */ - for (q_id = old_nb_rx_queues; - q_id < bonded_eth_dev->data->nb_rx_queues; q_id++) { + for (q_id = 0; q_id < bonded_eth_dev->data->nb_rx_queues; q_id++) { bd_rx_q = (struct bond_rx_queue *)bonded_eth_dev->data->rx_queues[q_id]; errval = rte_eth_rx_queue_setup(slave_eth_dev->data->port_id, q_id, @@ -1365,9 +1361,7 @@ slave_configure(struct rte_eth_dev *bonded_eth_dev, } /* Setup Tx Queues */ - /* Use existing queues, if any */ - for (q_id = old_nb_tx_queues; - q_id < bonded_eth_dev->data->nb_tx_queues; q_id++) { + for (q_id = 0; q_id < bonded_eth_dev->data->nb_tx_queues; q_id++) { bd_tx_q = (struct bond_tx_queue *)bonded_eth_dev->data->tx_queues[q_id]; errval = rte_eth_tx_queue_setup(slave_eth_dev->data->port_id, q_id,