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?


Fixes: 2efb58cbab ("bond: new link bonding library")
Cc: sta...@dpdk.org

Signed-off-by: Hari Kumar Vemula <hari.kumarx.vem...@intel.com>
---
  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

Reply via email to