minor captures inline Otherwise Acked-by: Qi Zhang <qi.z.zh...@intel.com>
> -----Original Message----- > From: Li, Xiaoyun > Sent: Monday, December 3, 2018 2:59 PM > To: Zhang, Qi Z <qi.z.zh...@intel.com> > Cc: dev@dpdk.org; Li, Xiaoyun <xiaoyun...@intel.com> > Subject: [PATCH v2] net/i40e: adjust the RSS table > > When starting the device, the RSS table is initialized. So the RSS update > before > device_start would be overwitten. This patch allows users to update the RSS s/ overwitten /overwritten > reta table before device_start and adjusts the order to set entries > sequentially. > > Signed-off-by: Xiaoyun Li <xiaoyun...@intel.com> > --- > v2: > * Adds support to update RSS table before device_start. > * Simplify the codes with rte_bswap32. > * Polish the commit log. > --- > drivers/net/i40e/i40e_ethdev.c | 21 ++++++++++++++------- > drivers/net/i40e/i40e_ethdev.h | 3 +++ > 2 files changed, 17 insertions(+), 7 deletions(-) > > diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c > index 552a7a5..fea42b0 100644 > --- a/drivers/net/i40e/i40e_ethdev.c > +++ b/drivers/net/i40e/i40e_ethdev.c > @@ -2444,6 +2444,8 @@ i40e_dev_stop(struct rte_eth_dev *dev) > pf->tm_conf.committed = false; > > hw->adapter_stopped = 1; > + > + pf->adapter->is_rss_reta_update = 0; How about rename to rss_reta_updated? > } > > static void > @@ -4255,6 +4257,8 @@ i40e_dev_rss_reta_update(struct rte_eth_dev *dev, > } > ret = i40e_set_rss_lut(pf->main_vsi, lut, reta_size); > > + pf->adapter->is_rss_reta_update = 1; > + > out: > rte_free(lut); > > @@ -8492,13 +8496,16 @@ i40e_pf_config_rss(struct i40e_pf *pf) > return -ENOTSUP; > } > > - for (i = 0, j = 0; i < hw->func_caps.rss_table_size; i++, j++) { > - if (j == num) > - j = 0; > - lut = (lut << 8) | (j & ((0x1 << > - hw->func_caps.rss_table_entry_width) - 1)); > - if ((i & 3) == 3) > - I40E_WRITE_REG(hw, I40E_PFQF_HLUT(i >> 2), lut); > + if (pf->adapter->is_rss_reta_update == 0) { > + for (i = 0, j = 0; i < hw->func_caps.rss_table_size; i++, j++) { > + if (j == num) > + j = 0; > + lut = (lut << 8) | (j & ((0x1 << > + hw->func_caps.rss_table_entry_width) - 1)); > + if ((i & 3) == 3) > + I40E_WRITE_REG(hw, I40E_PFQF_HLUT(i >> 2), > + rte_bswap32(lut)); > + } > } > > rss_conf = pf->dev_data->dev_conf.rx_adv_conf.rss_conf; > diff --git a/drivers/net/i40e/i40e_ethdev.h b/drivers/net/i40e/i40e_ethdev.h > index 11ecfc3..854aada 100644 > --- a/drivers/net/i40e/i40e_ethdev.h > +++ b/drivers/net/i40e/i40e_ethdev.h > @@ -1081,6 +1081,9 @@ struct i40e_adapter { > > /* For devargs */ > uint8_t use_latest_vec; > + > + /* For RSS reta table update */ > + uint8_t is_rss_reta_update; > }; > > /** > -- > 2.7.4