From: Yu Wenjun Date: Tue, 18 Jan 2022 09:18:52 +0000 (+0800) Subject: net/bonding: fix RSS with early configure X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=4986aea2b879fb242ae04880eb0ed958f40d199a;p=dpdk.git net/bonding: fix RSS with early configure RSS don't work when bond_ethdev_configure called before rte_eth_bond_slave_add. This is because internals->rss_key_len is 0 in bond_ethdev_configure(). If internals->rss_key_len is 0, internals->rss_key can not be set properly. e.g.: doesn't work (examples/bond/main.c): rte_eth_bond_create() rte_eth_dev_configure() rte_eth_bond_slave_add() rte_eth_dev_start() works (testpmd): rte_eth_bond_create() rte_eth_bond_slave_add() rte_eth_dev_configure() rte_eth_dev_start() Fixing by using 'default_rss_key' when 'internals->rss_key_len' is 0. Fixes: 6b1a001ec546 ("net/bonding: fix RSS key length") Cc: stable@dpdk.org Signed-off-by: Yu Wenjun Acked-by: Min Hu (Connor) --- diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c b/drivers/net/bonding/rte_eth_bond_pmd.c index 9607141b39..c72fc64806 100644 --- a/drivers/net/bonding/rte_eth_bond_pmd.c +++ b/drivers/net/bonding/rte_eth_bond_pmd.c @@ -3511,6 +3511,11 @@ bond_ethdev_configure(struct rte_eth_dev *dev) if (dev->data->dev_conf.rxmode.mq_mode & RTE_ETH_MQ_RX_RSS) { struct rte_eth_rss_conf *rss_conf = &dev->data->dev_conf.rx_adv_conf.rss_conf; + + if (internals->rss_key_len == 0) { + internals->rss_key_len = sizeof(default_rss_key); + } + if (rss_conf->rss_key != NULL) { if (internals->rss_key_len > rss_conf->rss_key_len) { RTE_BOND_LOG(ERR, "Invalid rss key length(%u)",