From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by dpdk.org (Postfix) with ESMTP id 0B06D6833; Tue, 5 Feb 2019 14:40:21 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 05 Feb 2019 05:40:20 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.56,564,1539673200"; d="scan'208";a="115415188" Received: from irvmail001.ir.intel.com ([163.33.26.43]) by orsmga008.jf.intel.com with ESMTP; 05 Feb 2019 05:40:18 -0800 Received: from wgcvswdev001.ir.intel.com (wgcvswdev001.ir.intel.com [10.102.246.100]) by irvmail001.ir.intel.com (8.14.3/8.13.6/MailSET/Hub) with ESMTP id x15DeIjA023779; Tue, 5 Feb 2019 13:40:18 GMT Received: from wgcvswdev001.ir.intel.com (localhost [127.0.0.1]) by wgcvswdev001.ir.intel.com with ESMTP id x15DdhYm032146; Tue, 5 Feb 2019 13:39:43 GMT Received: (from hvemulax@localhost) by wgcvswdev001.ir.intel.com with œ id x15DdhYH032142; Tue, 5 Feb 2019 13:39:43 GMT From: Hari Kumar Vemula To: dev@dpdk.org Cc: declan.doherty@intel.com, reshma.pattan@intel.com, radu.nicolau@intel.com, jananeex.m.parthasarathy@intel.com, Hari Kumar Vemula , stable@dpdk.org Date: Tue, 5 Feb 2019 13:39:39 +0000 Message-Id: <1549373979-31816-1-git-send-email-hari.kumarx.vemula@intel.com> X-Mailer: git-send-email 1.7.0.7 In-Reply-To: <1548660533-8710-1-git-send-email-hari.kumarx.vemula@intel.com> References: <1548660533-8710-1-git-send-email-hari.kumarx.vemula@intel.com> Subject: [dpdk-dev] [PATCH v3] net/bonding: fix create bonded device test failure 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: , X-List-Received-Date: Tue, 05 Feb 2019 13:40:23 -0000 test_create_bonded_device is failing due to improper initialisation in bonded device configuration. Which leads to crash while setting up queues. The value of nb_rx_desc is checked if it is not in range of rx_desc_lim of bonded device which fails. This is due to "rx_desc_lim" is set to 0 as default value of bonded device during bond_alloc(). Hence nb_rx_desc (1024) is > 0 and test fails. Fix is to set the default values of rx_desc_lim of bonded device to appropriate value. Receive the values from slaves configuration like done for other existing slave configuration Fixes: 2efb58cbab6e ("bond: new link bonding library") Cc: stable@dpdk.org Signed-off-by: Hari Kumar Vemula Acked-by: Chas Williams --- v3: Modified commit message v2: Bonded device desc_lim values are received from slave configuration --- drivers/net/bonding/rte_eth_bond_pmd.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c b/drivers/net/bonding/rte_eth_bond_pmd.c index 44deaf119..23cec2549 100644 --- a/drivers/net/bonding/rte_eth_bond_pmd.c +++ b/drivers/net/bonding/rte_eth_bond_pmd.c @@ -2228,6 +2228,8 @@ bond_ethdev_info(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info) uint16_t max_nb_rx_queues = UINT16_MAX; uint16_t max_nb_tx_queues = UINT16_MAX; + uint16_t max_rx_desc_lim = UINT16_MAX; + uint16_t max_tx_desc_lim = UINT16_MAX; dev_info->max_mac_addrs = BOND_MAX_MAC_ADDRS; @@ -2252,6 +2254,12 @@ bond_ethdev_info(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info) if (slave_info.max_tx_queues < max_nb_tx_queues) max_nb_tx_queues = slave_info.max_tx_queues; + + if (slave_info.rx_desc_lim.nb_max < max_rx_desc_lim) + max_rx_desc_lim = slave_info.rx_desc_lim.nb_max; + + if (slave_info.tx_desc_lim.nb_max < max_tx_desc_lim) + max_tx_desc_lim = slave_info.tx_desc_lim.nb_max; } } @@ -2263,10 +2271,8 @@ bond_ethdev_info(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info) memcpy(&dev_info->default_txconf, &internals->default_txconf, sizeof(dev_info->default_txconf)); - memcpy(&dev_info->rx_desc_lim, &internals->rx_desc_lim, - sizeof(dev_info->rx_desc_lim)); - memcpy(&dev_info->tx_desc_lim, &internals->tx_desc_lim, - sizeof(dev_info->tx_desc_lim)); + dev_info->rx_desc_lim.nb_max = max_rx_desc_lim; + dev_info->tx_desc_lim.nb_max = max_tx_desc_lim; /** * If dedicated hw queues enabled for link bonding device in LACP mode -- 2.17.2