From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ferruh Yigit Subject: Re: [dpdk-stable] [PATCH] net/bonding: fix create bonded device test failure Date: Tue, 8 Jan 2019 10:27:00 +0000 Message-ID: References: <1546866064-11929-1-git-send-email-hari.kumarx.vemula@intel.com> <69a66875-ec6c-f284-a5bc-78c10e987f68@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Cc: reshma.pattan@intel.com, declan.doherty@intel.com, jananeex.m.parthasarathy@intel.com, stable@dpdk.org To: Chas Williams <3chas3@gmail.com>, Hari Kumar Vemula , dev@dpdk.org Return-path: In-Reply-To: <69a66875-ec6c-f284-a5bc-78c10e987f68@gmail.com> Content-Language: en-US List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On 1/7/2019 6:44 PM, Chas Williams wrote: > > > On 1/7/19 8:01 AM, Hari Kumar Vemula wrote: >> Create bonded device test 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. > > The default values for the bond device aren't known until the first > slave is added. Can you explain your setup? What PMD are you > using for testing? As far as I understand, 'rte_eth_rx_queue_setup()' is failing with bond eth device since 'nb_rx_desc' should be less than 'dev_info.rx_desc_lim.nb_max' but bonding sets 0 to 'nb_max'. But not sure how to handle this from bonding point of view, this patch gives most permissive values, but should bonding get these values from its slaves? > >> >> Fixes: 2efb58cbab ("bond: new link bonding library") >> Cc: stable@dpdk.org >> >> Signed-off-by: Hari Kumar Vemula >> --- >> drivers/net/bonding/rte_eth_bond_pmd.c | 11 +++++++---- >> 1 file changed, 7 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..e0888e960 100644 >> --- a/drivers/net/bonding/rte_eth_bond_pmd.c >> +++ b/drivers/net/bonding/rte_eth_bond_pmd.c >> @@ -2225,6 +2225,11 @@ static void >> bond_ethdev_info(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info) >> { >> struct bond_dev_private *internals = dev->data->dev_private; >> + struct rte_eth_desc_lim bond_lim = { >> + .nb_max = UINT16_MAX, >> + .nb_min = 0, >> + .nb_align = 1, >> + }; >> >> uint16_t max_nb_rx_queues = UINT16_MAX; >> uint16_t max_nb_tx_queues = UINT16_MAX; >> @@ -2263,10 +2268,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 = bond_lim; >> + dev_info->tx_desc_lim = bond_lim; >> >> /** >> * If dedicated hw queues enabled for link bonding device in LACP mode >>