Hi, Qiming > -----Original Message----- > From: Yang, Qiming <qiming.y...@intel.com> > Sent: Friday, July 24, 2020 1:08 PM > To: Wang, ShougangX <shougangx.w...@intel.com>; 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: RE: [dpdk-dev] [PATCH v4] net/i40e: fix incorrect hash look up table > > 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. Got it, I will keep in mind.
> 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? Actually, this line is on the same line as the code above, but it looks like two lines here. I will adjust the position of this definition to follow the "Christmas tree" in next version. > > > 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. Got it. Thanks for your review. Thanks. Shougang