<p>From 85c4ffffe32996fc262dd6f69d0ce272ae8e8350 Mon Sep 17 00:00:00 2001</p><p>From: Yu Wenjun <yuwenjun_yewu@cmss.chinamobile.com></p><p>Date: Wed, 12 Jan 2022 15:01:10 +0800</p><p>Subject: [PATCH] net/bonding: fix RSS not work for bonding</p><p><br/></p><p>RSS don't work when upgrade to DPDK21.11.</p><p><br/></p><p>e.g.:</p><p>examples/bond/main.c:</p><p>conf:</p><p>static struct rte_eth_conf port_conf = {</p><p><span style="white-space:pre">       </span>.rxmode = {</p><p><span style="white-space:pre">               </span>.mq_mode = RTE_ETH_MQ_RX_NONE,</p><p><span style="white-space:pre">            </span>.split_hdr_size = 0,</p><p><span style="white-space:pre">      </span>},</p><p><span style="white-space:pre">        </span>.rx_adv_conf = {</p><p><span style="white-space:pre">          </span>.rss_conf = {</p><p><span style="white-space:pre">                     </span>.rss_key = NULL,</p><p><span style="white-space:pre">                  </span>.rss_hf = RTE_ETH_RSS_IP,</p><p><span style="white-space:pre">         </span>},</p><p><span style="white-space:pre">        </span>},</p><p><span style="white-space:pre">        </span>.txmode = {</p><p><span style="white-space:pre">               </span>.mq_mode = RTE_ETH_MQ_TX_NONE,</p><p><span style="white-space:pre">    </span>},</p><p>};</p><p><br/></p><p>call chain:</p><p>rte_eth_bond_create()->rte_eth_dev_configure()->rte_eth_bond_slave_add()->rte_eth_dev_start()</p><p><br/></p><p>Signed-off-by: Yu Wenjun <yuwenjun_yewu@cmss.chinamobile.com></p><p>---</p><p> drivers/net/bonding/rte_eth_bond_pmd.c | 5 +++++</p><p> 1 file changed, 5 insertions(+)</p><p><br/></p><p>diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c b/drivers/net/bonding/rte_eth_bond_pmd.c</p><p>index 84f4900ee5..31bcee15cf 100644</p><p>--- a/drivers/net/bonding/rte_eth_bond_pmd.c</p><p>+++ b/drivers/net/bonding/rte_eth_bond_pmd.c</p><p>@@ -3504,6 +3504,11 @@ bond_ethdev_configure(struct rte_eth_dev *dev)</p><p> <span style="white-space:pre">    </span>if (dev->data->dev_conf.rxmode.mq_mode & RTE_ETH_MQ_RX_RSS) {</p><p> <span style="white-space:pre">             </span>struct rte_eth_rss_conf *rss_conf =</p><p> <span style="white-space:pre">                 </span>&dev->data->dev_conf.rx_adv_conf.rss_conf;</p><p>+</p><p>+<span style="white-space:pre">         </span>if (internals->rss_key_len == 0) {</p><p>+<span style="white-space:pre">                    </span>internals->rss_key_len = sizeof(default_rss_key);</p><p>+<span style="white-space:pre">             </span>}</p><p>+</p><p> <span style="white-space:pre">               </span>if (rss_conf->rss_key != NULL) {</p><p> <span style="white-space:pre">                 </span>if (internals->rss_key_len > rss_conf->rss_key_len) {</p><p> <span style="white-space:pre">                              </span>RTE_BOND_LOG(ERR, "Invalid rss key length(%u)",</p><p>-- </p><p>2.32.0.windows.1</p><p><br/></p>