Hi, Shougang This version looks better, only two small questions. Once somebody gave comments to your patch, you should reply the comments and CC when you send patch next version. You don't include me in this version, don't forget this next time.
Qiming > -----Original Message----- > From: dev <dev-boun...@dpdk.org> On Behalf Of Shougang Wang > Sent: Friday, July 24, 2020 10:47 > To: dev@dpdk.org > Cc: Xing, Beilei <beilei.x...@intel.com>; Guo, Jia <jia....@intel.com>; Wang, > ShougangX <shougangx.w...@intel.com>; sta...@dpdk.org > Subject: [dpdk-dev] [PATCH v4] net/i40e: fix incorrect hash look up table > > The hash look up table (LUT) is managed by global register but it is not > initialized when RSS is disabled. Once user wants to enable RSS during > runtime, the LUT will not be initialized. > This patch fixes the issue by initializing the LUT whether RSS enabled or not. > > Fixes: feaae285b342 ("net/i40e: support hash configuration in RSS flow") > Cc: sta...@dpdk.org > > Signed-off-by: Shougang Wang <shougangx.w...@intel.com> > --- > v4: > -Updated code. > --- > drivers/net/i40e/i40e_ethdev.c | 15 ++++----------- > 1 file changed, 4 insertions(+), 11 deletions(-) > > diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c > index 05d5f2861..0a3f5e3c1 100644 > --- a/drivers/net/i40e/i40e_ethdev.c > +++ b/drivers/net/i40e/i40e_ethdev.c > @@ -8985,6 +8985,7 @@ static int > i40e_pf_config_rss(struct i40e_pf *pf) > { > struct i40e_hw *hw = I40E_PF_TO_HW(pf); > + enum rte_eth_rx_mq_mode mq_mode = > +pf->dev_data->dev_conf.rxmode.mq_mode; No tab? > struct rte_eth_rss_conf rss_conf; > uint32_t i, lut = 0; > uint16_t j, num; > @@ -9022,7 +9023,8 @@ i40e_pf_config_rss(struct i40e_pf *pf) > } > > rss_conf = pf->dev_data->dev_conf.rx_adv_conf.rss_conf; > - if ((rss_conf.rss_hf & pf->adapter->flow_types_mask) == 0) { > + if ((rss_conf.rss_hf & pf->adapter->flow_types_mask) == 0 || > + !(mq_mode & ETH_MQ_RX_RSS_FLAG)) { > i40e_pf_disable_rss(pf); > return 0; > } > @@ -9198,16 +9200,7 @@ i40e_tunnel_filter_handle(struct rte_eth_dev > *dev, static int i40e_pf_config_mq_rx(struct i40e_pf *pf) { > - int ret = 0; > - enum rte_eth_rx_mq_mode mq_mode = pf->dev_data- > >dev_conf.rxmode.mq_mode; > - > - /* RSS setup */ > - if (mq_mode & ETH_MQ_RX_RSS_FLAG) > - ret = i40e_pf_config_rss(pf); > - else > - i40e_pf_disable_rss(pf); > - > - return ret; > + return i40e_pf_config_rss(pf); If only have one function call in this function, we can delete it, and just use i40e_pf_config_rss(pf) instead of i40e_pf_config_mq_rx. > } > > /* Get the symmetric hash enable configurations per port */ > -- > 2.17.1