From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 82DCAA0518; Fri, 24 Jul 2020 11:00:38 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id CF2F91C010; Fri, 24 Jul 2020 11:00:37 +0200 (CEST) Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by dpdk.org (Postfix) with ESMTP id EFC701BFE7; Fri, 24 Jul 2020 11:00:35 +0200 (CEST) IronPort-SDR: The61luam7l614uF3DTe2YhVh7bb4Pr57IZqXofxlWBjsbVX+aR63wd84WbWebqn0KA0UFlBll fyvLDLzyiVmQ== X-IronPort-AV: E=McAfee;i="6000,8403,9691"; a="215266392" X-IronPort-AV: E=Sophos;i="5.75,390,1589266800"; d="scan'208";a="215266392" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Jul 2020 02:00:30 -0700 IronPort-SDR: sX51eQ64SNwESKCW5cbsqxCZ8M9VM/q4kKzBlJUecxI6mHM2153fiTiNZ01V8liMropmXGSF0W CAqSMlAwRaSQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.75,390,1589266800"; d="scan'208";a="320948255" Received: from fmsmsx105.amr.corp.intel.com ([10.18.124.203]) by fmsmga002.fm.intel.com with ESMTP; 24 Jul 2020 02:00:30 -0700 Received: from cdsmsx151.ccr.corp.intel.com (172.17.4.38) by FMSMSX105.amr.corp.intel.com (10.18.124.203) with Microsoft SMTP Server (TLS) id 14.3.439.0; Fri, 24 Jul 2020 02:00:28 -0700 Received: from cdsmsx102.ccr.corp.intel.com ([169.254.2.201]) by CDSMSX151.ccr.corp.intel.com ([169.254.3.218]) with mapi id 14.03.0439.000; Fri, 24 Jul 2020 17:00:25 +0800 From: "Xie, WeiX" To: "Wang, ShougangX" , "dev@dpdk.org" CC: "Xing, Beilei" , "Guo, Jia" , "Yang, Qiming" , "Wang, ShougangX" , "stable@dpdk.org" Thread-Topic: [dpdk-dev] [PATCH v5] net/i40e: fix incorrect hash look up table Thread-Index: AQHWYZRPtYXV23ePi0SEVjLNk4immqkWbh6g Date: Fri, 24 Jul 2020 09:00:25 +0000 Message-ID: <6FD6A7610D20924F885A4ECF34E8AC910463EB43@CDSMSX102.ccr.corp.intel.com> References: <20200715063515.9262-1-shougangx.wang@intel.com> <20200724081256.47996-1-shougangx.wang@intel.com> In-Reply-To: <20200724081256.47996-1-shougangx.wang@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [172.17.6.105] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH v5] net/i40e: fix incorrect hash look up table X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Tested-by: Zhang, XiX Regards, Xie Wei -----Original Message----- From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Shougang Wang Sent: Friday, July 24, 2020 4:13 PM To: dev@dpdk.org Cc: Xing, Beilei ; Guo, Jia ; Yan= g, Qiming ; Wang, ShougangX ; stable@dpdk.org Subject: [dpdk-dev] [PATCH v5] net/i40e: fix incorrect hash look up table The hash look up table (LUT) is managed by global register but it is not in= itialized when RSS is disabled. Once user wants to enable RSS during runtim= e, the LUT will not be initialized. This patch fixes the issue by initializing the LUT whatever RSS enabled or = not. Fixes: feaae285b342 ("net/i40e: support hash configuration in RSS flow") Cc: stable@dpdk.org Signed-off-by: Shougang Wang --- v5: -Removed useless function --- drivers/net/i40e/i40e_ethdev.c | 25 ++++++------------------- 1 file changed, 6 insertions(+), 19 deletions(-) diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.= c index 05d5f2861..6fa0a5c71 100644 --- a/drivers/net/i40e/i40e_ethdev.c +++ b/drivers/net/i40e/i40e_ethdev.c @@ -302,7 +302,6 @@ static int i40e_dev_init_vlan(struct rte_eth_dev *dev);= static int i40e_veb_release(struct i40e_veb *veb); static struct i40e_ve= b *i40e_veb_setup(struct i40e_pf *pf, struct i40e_vsi *vsi); -static int i40e_pf_config_mq_rx(struct i40e_pf *pf); static int i40e_vsi_= config_double_vlan(struct i40e_vsi *vsi, int on); static inline int i40e_f= ind_all_mac_for_vlan(struct i40e_vsi *vsi, struct i40e_macvlan_filter *mv_f, @@ -398,6 +397,7 @@ static voi= d i40e_ethertype_filter_restore(struct i40e_pf *pf); static void i40e_tunn= el_filter_restore(struct i40e_pf *pf); static void i40e_filter_restore(str= uct i40e_pf *pf); static void i40e_notify_all_vfs_link_status(struct rte_e= th_dev *dev); +static int i40e_pf_config_rss(struct i40e_pf *pf); =20 static const char *const valid_keys[] =3D { ETH_I40E_FLOATING_VEB_ARG, @@ -1954,7 +1954,7 @@ i40e_dev_configure(struct rte_eth_dev *dev) goto err; =20 /* VMDQ setup. - * Needs to move VMDQ setting out of i40e_pf_config_mq_rx() as VMDQ and + * Needs to move VMDQ setting out of i40e_pf_config_rss() as VMDQ and * RSS setting have different requirements. * General PMD driver call sequence are NIC init, configure, * rx/tx_queue_setup and dev_start. In rx/tx_queue_setup() function, it = @@ -6478,7 +6478,7 @@ i40e_dev_rx_init(struct i40e_pf *pf) uint16_t i; struct i40e_rx_queue *rxq; =20 - i40e_pf_config_mq_rx(pf); + i40e_pf_config_rss(pf); for (i =3D 0; i < data->nb_rx_queues; i++) { rxq =3D data->rx_queues[i]; if (!rxq || !rxq->q_set) @@ -8984,6 +8984,7 @@ i40e_pf_calc_configured_queues_num(struct i40e_pf *pf= ) static int i40e_pf_config_rss(struct i40e_pf *pf) { + enum rte_eth_rx_mq_mode mq_mode =3D=20 +pf->dev_data->dev_conf.rxmode.mq_mode; struct i40e_hw *hw =3D I40E_PF_TO_HW(pf); struct rte_eth_rss_conf rss_conf; uint32_t i, lut =3D 0; @@ -9022,7 +9023,8 @@ i40e_pf_config_rss(struct i40e_pf *pf) } =20 rss_conf =3D pf->dev_data->dev_conf.rx_adv_conf.rss_conf; - if ((rss_conf.rss_hf & pf->adapter->flow_types_mask) =3D=3D 0) { + if ((rss_conf.rss_hf & pf->adapter->flow_types_mask) =3D=3D 0 || + !(mq_mode & ETH_MQ_RX_RSS_FLAG)) { i40e_pf_disable_rss(pf); return 0; } @@ -9195,21 +9197,6 @@ i40e_tunnel_filter_handle(struct rte_eth_dev *dev, return ret; } =20 -static int -i40e_pf_config_mq_rx(struct i40e_pf *pf) -{ - int ret =3D 0; - enum rte_eth_rx_mq_mode mq_mode =3D pf->dev_data->dev_conf.rxmode.mq_mode= ; - - /* RSS setup */ - if (mq_mode & ETH_MQ_RX_RSS_FLAG) - ret =3D i40e_pf_config_rss(pf); - else - i40e_pf_disable_rss(pf); - - return ret; -} - /* Get the symmetric hash enable configurations per port */ static void = i40e_get_symmetric_hash_enable_per_port(struct i40e_hw *hw, uint8_t *enable= ) -- 2.17.1