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 9553BA052A; Wed, 23 Dec 2020 12:52:59 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 782DEC9EE; Wed, 23 Dec 2020 12:52:58 +0100 (CET) Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by dpdk.org (Postfix) with ESMTP id 6CCA4C9E7 for ; Wed, 23 Dec 2020 12:52:55 +0100 (CET) IronPort-SDR: f+ykE3rMpDyEY4irG28sbxUK/R7iACECwPKzP98RINVG1wyatkGCwrw7u2WhYKBaRZaYharcpl EoOru4a10d9g== X-IronPort-AV: E=McAfee;i="6000,8403,9843"; a="173433776" X-IronPort-AV: E=Sophos;i="5.78,441,1599548400"; d="scan'208";a="173433776" Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Dec 2020 03:52:53 -0800 IronPort-SDR: IjOzoN34RV5+7Dm1fnI/HcDoWKqe6A63XaiGDGxQCPEAbbZcJ1Kh6sbeH9L7HDFW+sB7XyskNx Xbuvyp1ZNxzA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.78,441,1599548400"; d="scan'208";a="563021682" Received: from orsmsx604.amr.corp.intel.com ([10.22.229.17]) by fmsmga006.fm.intel.com with ESMTP; 23 Dec 2020 03:52:53 -0800 Received: from orsmsx611.amr.corp.intel.com (10.22.229.24) by ORSMSX604.amr.corp.intel.com (10.22.229.17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Wed, 23 Dec 2020 03:52:52 -0800 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx611.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5 via Frontend Transport; Wed, 23 Dec 2020 03:52:52 -0800 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (104.47.58.169) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.1713.5; Wed, 23 Dec 2020 03:52:52 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ClEUFOvN4HmCtUdcIjrndHsC2sMk9XdmkZ3EVAq0LMjXaEKJE3Li04uirFyPmPcBtExNSou+R5V1WSyniN1T5VKlZRptYI5pqi2mru23FaVbRV9ZKdvRqanrlK1D1v/RUMa4jwHck7Yx5kIvIS22JkX1hGWRkgVEJjgsp2bJDG8+qOtOQwXg/LfjIfN1NZGKTvoTszkTbszgjXFy2RZX3LUxaVRc8OzjqpFgMxuQPgJvQ0mDSB1sBgdHFV63ircymyrnpJEim+m8F9az+KxgdM4QGVeajFuvn5BZ1cE/2sS6w5ecT7LVG+i/XHHXAF+45hen2kGvPfXshoP2JtEl5Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=vnLIT/gZKqk3+dU6RBE98xFsBCPjiaGxafRaxil8mwM=; b=TW5JPygTsKcrpWhCbPYrkT4Zn4iuQiBdQszUp6MFRq+6ZKB3Lyy0WGlfd2PcFMZGB4pt9yv1vsGj0GJPQ6SIGM2QJ05Mgim6PxwmOpz4LY8+CG1Bs7G3v5MKvTYSjHwmc6Q0p1elG5uGbjTLJk2PyIdOkZ85PB93V4dXGdzxYfK2T/o0aUgZ7pOV3v/STTjn3IW1nM303LPYxTUNT4BQPPcesV4heX8rH9lNBv+ezB+cMA+HQgScG3icLUAVMSqHJFbjL0HzSG2MurnZf1FU6XKCTPQk9S9cWAqN5/L9culwWCfqFAtU14tLSkaxrSNCUaeey4nh3WNWeXt9fseJ+Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=vnLIT/gZKqk3+dU6RBE98xFsBCPjiaGxafRaxil8mwM=; b=fI7YR7msrxNbeXWQwx2glPDnSGXKMknBLFFHYMJAhVL2BA9paNgOrmeYWdpgXyq0sDMJIoL2zNgSe6UX3l2VbuO8tJcCa2IWe1O04CueiVwYAZXLHz/qcKkKL/qXtYwTXEOfUfeP+niLowWIaUYHY4x8cXKwIO1w+3yWnVA3aV4= Received: from SJ0PR11MB5216.namprd11.prod.outlook.com (2603:10b6:a03:2db::23) by BYAPR11MB3237.namprd11.prod.outlook.com (2603:10b6:a03:1e::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3700.27; Wed, 23 Dec 2020 11:52:46 +0000 Received: from SJ0PR11MB5216.namprd11.prod.outlook.com ([fe80::8433:30f4:65ee:3318]) by SJ0PR11MB5216.namprd11.prod.outlook.com ([fe80::8433:30f4:65ee:3318%7]) with mapi id 15.20.3676.033; Wed, 23 Dec 2020 11:52:46 +0000 From: "Ding, Xuan" To: "Zhang, Qi Z" , "Wu, Jingjing" , "Xing, Beilei" CC: "dev@dpdk.org" Thread-Topic: [PATCH] net/iavf: improve default RSS Thread-Index: AQHWySQfPKwI53luLE6TWEhB7k3Yq6oElpoAgAAXa5A= Date: Wed, 23 Dec 2020 11:52:46 +0000 Message-ID: References: <20201203032618.70919-1-xuan.ding@intel.com> <632fdffa2a5844a1b04c5282f1d7ee35@intel.com> In-Reply-To: <632fdffa2a5844a1b04c5282f1d7ee35@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.5.1.3 authentication-results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [192.198.147.220] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 4b988dd9-c474-45a0-7235-08d8a7394394 x-ms-traffictypediagnostic: BYAPR11MB3237: x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:7691; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: X5N+IHLrdHOhPU6bO9sQuTfd7+M/3RuoAnHnh7AxZgwT0rvaL/KhCJeRRwM0GaC1IZGQPKwiBTteEzfDB2ISve42yUbUk61Xfq+dmAarUdFk20d/R1zPj8s8Py7ecYmPnSvGb4dlmyHyXxFBSRGS5XmOp39j8Upz6N94cMv/QvOHTHz5CstbeipZM5OfTmdeyd9VA52KxBHECJdUGjieuz3YgMG4+RqX+u76uZgWTEtHWcYm1DfAxiEgB2m0J3JMXHzGuoNVx0LKz4DzhUu2OR8fjyn4kVT1lbhWEw5w6LYIifFs+arUtK1dq4qcBQBVzE6/FVC9DtlUSZkcOlG0hSHVzEmHLAiGcLC8BZO/ZL0KNNEKEyXr7BBCoKUhPKnOZlHCwVaV8BId9ThJUJuiiw== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR11MB5216.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(376002)(366004)(39860400002)(136003)(396003)(346002)(26005)(110136005)(4326008)(83380400001)(30864003)(55016002)(71200400001)(66446008)(66556008)(33656002)(64756008)(66476007)(186003)(8676002)(52536014)(316002)(86362001)(478600001)(8936002)(5660300002)(9686003)(7696005)(76116006)(66946007)(6636002)(53546011)(6506007)(2906002); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata: =?Windows-1252?Q?IkV5bGcrEW3HMxzz18UrFvH824xkdtR2C3oZ5khyAfITfL26Sw9vMAUG?= =?Windows-1252?Q?QyAV55IMpSWK7UJOgloN2e50RvONHUnAdRQzFCUmXvdW4NLP0TmWSc+/?= =?Windows-1252?Q?+VnbRP5ORA3ta49GRSx634FMftamA6db/unEQH1x4UKHd1CLssuAluwh?= =?Windows-1252?Q?IlLeB+29J15T1W5uGx0Ty0UwNTyEEzRPAJqt5m52sqhNFgm4iysMcZXJ?= =?Windows-1252?Q?ZvraTd38WgpxLjWntxbidt0trGANY3MSm3LKWjcHM0wQAldBOYutIcdo?= =?Windows-1252?Q?BK9QnG/QCTDUyr5nImwQ0bZ8Qew7XqTS3uZKjGbvadS/PzZfGqHwABQ0?= =?Windows-1252?Q?QveP9e1gz2B7c4GSsSEeYNILRkwHhIjY5iEOZVdsra6QerxJikLosHKt?= =?Windows-1252?Q?98EVhBcqaSovlXPHzuuBZD7k3PzA75xXJV4O01WjYczPPFS7KAkJ13Gk?= =?Windows-1252?Q?OTqVhTnRJYNpUibDHrRfl4igoDl5IW6zoG/9km3ZRWgPl2cYJZm69tyn?= =?Windows-1252?Q?IhpV5JJvzzAU3GuzBmKIbWAKgJTacytMrxMD01+AhsxVZCZSgIMJiNOy?= =?Windows-1252?Q?MLZ306XMSlqdZtBJtHUzwu4v7YYvQT4FU09oXHjUw50To03Exy/bNDv8?= =?Windows-1252?Q?BUIIlliZEtYuasU+wsKGgtVHiLsNzByE+pPXNoH3LzlvZJDeadrWqix4?= =?Windows-1252?Q?l8TXy1WRwjIyrYZ4Fch8sVKvzV9F/WzwfoKgTWe1HVQViTP1YyYoggn6?= =?Windows-1252?Q?QtRINLG7k88ftyWsoSBFilaEOinPOONR+2I+OZtAdpHimDj9TKkAzvQK?= =?Windows-1252?Q?zT+W7S1ALaL2UdxFfimgCl7wW07E1tH6gwaaANqoIdEyZMjKgHZwXHFV?= =?Windows-1252?Q?JEDiS8Jpmt4ealhUeznrA2mUw9MEKsN3QC6VEts81PH5k2HH+7u6RIQN?= =?Windows-1252?Q?H9Ht/9SDwDYcjJ+0pT/MHhf1NgEU4+HkoLGEJ3+4G3ZA8liNYF59ncIv?= =?Windows-1252?Q?W8xFtqWHguXwYpCHEeaHHv6QEw5gnteHWNccgCx30rp9oETXnew=3D?= Content-Type: text/plain; charset="Windows-1252" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SJ0PR11MB5216.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4b988dd9-c474-45a0-7235-08d8a7394394 X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Dec 2020 11:52:46.0487 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: eiXVmPZkSd5IENSx1vYofDkkWxE/AyTWjL5zG7HocmjNJv945K1BFRMm4m/Rtn0A/hKCZLXYL8OrGxXVi0HJEg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR11MB3237 X-OriginatorOrg: intel.com Subject: Re: [dpdk-dev] [PATCH] net/iavf: improve default RSS 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" Hi Qi, Thank you for your comments, replies in line. > -----Original Message----- > From: Zhang, Qi Z > Sent: Wednesday, December 23, 2020 6:15 PM > To: Ding, Xuan ; Wu, Jingjing > ; Xing, Beilei > Cc: dev@dpdk.org > Subject: RE: [PATCH] net/iavf: improve default RSS >=20 >=20 >=20 > > -----Original Message----- > > From: Ding, Xuan > > Sent: Thursday, December 3, 2020 11:26 AM > > To: Zhang, Qi Z ; Wu, Jingjing > ; > > Xing, Beilei > > Cc: dev@dpdk.org; Ding, Xuan > > Subject: [PATCH] net/iavf: improve default RSS > > > > This patch adds support to actively configure RSS. Any kernel PF enable= d > > default RSS will be disabled during initialization. Currently supported > default > > rss_type: ipv4[6], ipv4[6]_udp, ipv4[6]_tcp, ipv4[6]_sctp. > > > > Signed-off-by: Xuan Ding > > --- > > drivers/net/iavf/iavf.h | 12 ++++- > > drivers/net/iavf/iavf_ethdev.c | 76 ++++++++++++++++++++++++------- > > drivers/net/iavf/iavf_hash.c | 83 ++++++++++++++++++++++++---------- > > drivers/net/iavf/iavf_vchnl.c | 23 ++++++++++ > > 4 files changed, 153 insertions(+), 41 deletions(-) > > > > diff --git a/drivers/net/iavf/iavf.h b/drivers/net/iavf/iavf.h index > > 6d5912d8c..9754273b2 100644 > > --- a/drivers/net/iavf/iavf.h > > +++ b/drivers/net/iavf/iavf.h > > @@ -46,11 +46,18 @@ > > VIRTCHNL_VF_OFFLOAD_RX_POLLING) > > > > #define IAVF_RSS_OFFLOAD_ALL ( \ > > +ETH_RSS_IPV4 | \ > > ETH_RSS_FRAG_IPV4 | \ > > ETH_RSS_NONFRAG_IPV4_TCP | \ > > ETH_RSS_NONFRAG_IPV4_UDP | \ > > ETH_RSS_NONFRAG_IPV4_SCTP | \ > > -ETH_RSS_NONFRAG_IPV4_OTHER) > > +ETH_RSS_NONFRAG_IPV4_OTHER | \ > > +ETH_RSS_IPV6 | \ > > +ETH_RSS_FRAG_IPV6 | \ > > +ETH_RSS_NONFRAG_IPV6_TCP | \ > > +ETH_RSS_NONFRAG_IPV6_UDP | \ > > +ETH_RSS_NONFRAG_IPV6_SCTP | \ > > +ETH_RSS_NONFRAG_IPV6_OTHER) > > > > #define IAVF_MISC_VEC_ID RTE_INTR_VEC_ZERO_OFFSET > > #define IAVF_RX_VEC_START RTE_INTR_VEC_RXTX_OFFSET > > @@ -153,6 +160,7 @@ struct iavf_info { > > > > uint8_t *rss_lut; > > uint8_t *rss_key; > > +uint64_t rss_hf; > > uint16_t nb_msix; /* number of MSI-X interrupts on Rx */ > > uint16_t msix_base; /* msix vector base from */ > > uint16_t max_rss_qregion; /* max RSS queue region supported by PF */ > > @@ -321,6 +329,8 @@ int iavf_fdir_check(struct iavf_adapter *adapter, > > struct iavf_fdir_conf *filter); > > int iavf_add_del_rss_cfg(struct iavf_adapter *adapter, > > struct virtchnl_rss_cfg *rss_cfg, bool add); > > +int iavf_set_hena(struct iavf_adapter *adapter, uint64_t hena); int > > +iavf_rss_hash_set(struct iavf_adapter *ad, uint64_t rss_hf, bool add); > > int iavf_add_del_mc_addr_list(struct iavf_adapter *adapter, > > struct rte_ether_addr *mc_addrs, > > uint32_t mc_addrs_num, bool add); > > diff --git a/drivers/net/iavf/iavf_ethdev.c b/drivers/net/iavf/iavf_eth= dev.c > index > > 7e3c26a94..d2fa16825 100644 > > --- a/drivers/net/iavf/iavf_ethdev.c > > +++ b/drivers/net/iavf/iavf_ethdev.c > > @@ -267,10 +267,6 @@ iavf_init_rss(struct iavf_adapter *adapter) > > return ret; > > } > > > > -/* In IAVF, RSS enablement is set by PF driver. It is not supported > > - * to set based on rss_conf->rss_hf. > > - */ > > - > > /* configure RSS key */ > > if (!rss_conf->rss_key) { > > /* Calculate the default hash key */ > > @@ -295,6 +291,13 @@ iavf_init_rss(struct iavf_adapter *adapter) > > if (ret) > > return ret; > > > > +/* Set RSS hash configuration based on rss_conf->rss_hf. */ > > +ret =3D iavf_rss_hash_set(adapter, rss_conf->rss_hf, true); > > +if (ret) { > > +PMD_DRV_LOG(ERR, "fail to set default RSS"); > > +return ret; > > +} > > + > > return 0; > > } > > > > @@ -1102,33 +1105,66 @@ iavf_dev_rss_reta_query(struct rte_eth_dev > > *dev, } > > > > static int > > -iavf_dev_rss_hash_update(struct rte_eth_dev *dev, > > -struct rte_eth_rss_conf *rss_conf) > > +iavf_set_rss_key(struct iavf_adapter *adapter, uint8_t *key, uint8_t > > +key_len) > > { > > -struct iavf_adapter *adapter =3D > > -IAVF_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private); > > struct iavf_info *vf =3D IAVF_DEV_PRIVATE_TO_VF(adapter); > > > > -if (!(vf->vf_res->vf_cap_flags & VIRTCHNL_VF_OFFLOAD_RSS_PF)) > > -return -ENOTSUP; > > - > > /* HENA setting, it is enabled by default, no change */ > > -if (!rss_conf->rss_key || rss_conf->rss_key_len =3D=3D 0) { > > +if (!key || key_len =3D=3D 0) { > > PMD_DRV_LOG(DEBUG, "No key to be configured"); > > return 0; > > -} else if (rss_conf->rss_key_len !=3D vf->vf_res->rss_key_size) { > > +} else if (key_len !=3D vf->vf_res->rss_key_size) { > > PMD_DRV_LOG(ERR, "The size of hash key configured " > > "(%d) doesn't match the size of hardware can " > > -"support (%d)", rss_conf->rss_key_len, > > +"support (%d)", key_len, > > vf->vf_res->rss_key_size); > > return -EINVAL; > > } > > > > -rte_memcpy(vf->rss_key, rss_conf->rss_key, rss_conf->rss_key_len); > > +rte_memcpy(vf->rss_key, key, key_len); > > > > return iavf_configure_rss_key(adapter); } > > > > +static int > > +iavf_dev_rss_hash_update(struct rte_eth_dev *dev, > > +struct rte_eth_rss_conf *rss_conf) > > +{ > > +struct iavf_adapter *adapter =3D > > +IAVF_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private); > > +struct iavf_info *vf =3D IAVF_DEV_PRIVATE_TO_VF(adapter); > > +int ret; > > + > > +adapter->eth_dev->data->dev_conf.rx_adv_conf.rss_conf =3D *rss_conf; > > + > > +if (!(vf->vf_res->vf_cap_flags & VIRTCHNL_VF_OFFLOAD_RSS_PF)) > > +return -ENOTSUP; > > + > > +/* Set hash key. */ > > +ret =3D iavf_set_rss_key(adapter, rss_conf->rss_key, > > + rss_conf->rss_key_len); > > +if (ret) > > +return ret; > > + > > +if (rss_conf->rss_hf =3D=3D 0) > > +return 0; > > + > > +/* Overwritten default RSS. */ > > +ret =3D iavf_set_hena(adapter, 0); > > +if (ret) > > +PMD_DRV_LOG(ERR, "%s Remove rss vsi fail %d", > > + __func__, ret); > > + > > +/* Set new RSS configuration. */ > > +ret =3D iavf_rss_hash_set(adapter, rss_conf->rss_hf, true); > > +if (ret) { > > +PMD_DRV_LOG(ERR, "fail to set new RSS"); > > +return ret; > > +} > > + > > +return 0; > > +} > > + > > static int > > iavf_dev_rss_hash_conf_get(struct rte_eth_dev *dev, > > struct rte_eth_rss_conf *rss_conf) @@ -1140,8 +1176,7 @@ > > iavf_dev_rss_hash_conf_get(struct rte_eth_dev *dev, > > if (!(vf->vf_res->vf_cap_flags & VIRTCHNL_VF_OFFLOAD_RSS_PF)) > > return -ENOTSUP; > > > > - /* Just set it to default value now. */ > > -rss_conf->rss_hf =3D IAVF_RSS_OFFLOAD_ALL; > > +rss_conf->rss_hf =3D vf->rss_hf; > > > > if (!rss_conf->rss_key) > > return 0; > > @@ -2029,6 +2064,13 @@ iavf_dev_init(struct rte_eth_dev *eth_dev) > > return ret; > > } > > > > +/* Set hena =3D 0 to ask PF to cleanup all existing RSS. */ > > +ret =3D iavf_set_hena(adapter, 0); > > +if (ret) { > > +PMD_DRV_LOG(ERR, "fail to disable default PF RSS"); > > +return ret; > > +} > > + > > return 0; > > } > > > > diff --git a/drivers/net/iavf/iavf_hash.c b/drivers/net/iavf/iavf_hash.= c > index > > c4c73e664..1f3238dab 100644 > > --- a/drivers/net/iavf/iavf_hash.c > > +++ b/drivers/net/iavf/iavf_hash.c > > @@ -429,17 +429,6 @@ static struct iavf_pattern_match_item > > iavf_hash_pattern_list[] =3D { > > {iavf_pattern_eth_ipv6_gtpc,ETH_RSS_IPV6, > > &ipv6_udp_gtpc_tmplt}, > > }; > > > > -struct virtchnl_proto_hdrs *iavf_hash_default_hdrs[] =3D { > > -&inner_ipv4_tmplt, > > -&inner_ipv4_udp_tmplt, > > -&inner_ipv4_tcp_tmplt, > > -&inner_ipv4_sctp_tmplt, > > -&inner_ipv6_tmplt, > > -&inner_ipv6_udp_tmplt, > > -&inner_ipv6_tcp_tmplt, > > -&inner_ipv6_sctp_tmplt, > > -}; > > - > > static struct iavf_flow_engine iavf_hash_engine =3D { > > .init =3D iavf_hash_init, > > .create =3D iavf_hash_create, > > @@ -458,24 +447,76 @@ static struct iavf_flow_parser iavf_hash_parser = =3D > { > > .stage =3D IAVF_FLOW_STAGE_RSS, > > }; > > > > -static int > > -iavf_hash_default_set(struct iavf_adapter *ad, bool add) > > +int > > +iavf_rss_hash_set(struct iavf_adapter *ad, uint64_t rss_hf, bool add) > > { > > +struct iavf_info *vf =3D IAVF_DEV_PRIVATE_TO_VF(ad); > > struct virtchnl_rss_cfg *rss_cfg; > > -uint16_t i; > > + > > +#define IAVF_RSS_HF_ALL ( \ > > +ETH_RSS_IPV4 | \ > > +ETH_RSS_IPV6 | \ > > +ETH_RSS_NONFRAG_IPV4_UDP | \ > > +ETH_RSS_NONFRAG_IPV6_UDP | \ > > +ETH_RSS_NONFRAG_IPV4_TCP | \ > > +ETH_RSS_NONFRAG_IPV6_TCP | \ > > +ETH_RSS_NONFRAG_IPV4_SCTP | \ > > +ETH_RSS_NONFRAG_IPV6_SCTP) > > > > rss_cfg =3D rte_zmalloc("iavf rss rule", > > sizeof(struct virtchnl_rss_cfg), 0); >=20 > I didn=92t see the rss_cfg has been freed somewhere, can you check if we > need to fix it in v2, though it is not brought by this patch. > I think no need to malloc , "struct virtchnl_rss_cfg rss_cfg" should be f= ine. You are right, the rss_cfg is better only as a local variable here, will re= fine it in v2. >=20 > > if (!rss_cfg) > > return -ENOMEM; > > > > -for (i =3D 0; i < RTE_DIM(iavf_hash_default_hdrs); i++) { > > -rss_cfg->proto_hdrs =3D *iavf_hash_default_hdrs[i]; > > +if (rss_hf & ETH_RSS_IPV4) { > > +rss_cfg->proto_hdrs =3D inner_ipv4_tmplt; > > +rss_cfg->rss_algorithm =3D > > VIRTCHNL_RSS_ALG_TOEPLITZ_ASYMMETRIC; >=20 > Better to assign rss_cfg->rss_algorithm before the if branch, so we can a= void > duplicate code in each if branch. Yes, will refine it in v2, thanks. >=20 > > +iavf_add_del_rss_cfg(ad, rss_cfg, add); > > +} > > + > > +if (rss_hf & ETH_RSS_NONFRAG_IPV4_UDP) { > > +rss_cfg->proto_hdrs =3D inner_ipv4_udp_tmplt; > > +rss_cfg->rss_algorithm =3D > > VIRTCHNL_RSS_ALG_TOEPLITZ_ASYMMETRIC; > > +iavf_add_del_rss_cfg(ad, rss_cfg, add); > > +} > > + > > +if (rss_hf & ETH_RSS_NONFRAG_IPV4_TCP) { > > +rss_cfg->proto_hdrs =3D inner_ipv4_tcp_tmplt; > > +rss_cfg->rss_algorithm =3D > > VIRTCHNL_RSS_ALG_TOEPLITZ_ASYMMETRIC; > > +iavf_add_del_rss_cfg(ad, rss_cfg, add); > > +} > > + > > +if (rss_hf & ETH_RSS_NONFRAG_IPV4_SCTP) { > > +rss_cfg->proto_hdrs =3D inner_ipv4_sctp_tmplt; > > +rss_cfg->rss_algorithm =3D > > VIRTCHNL_RSS_ALG_TOEPLITZ_ASYMMETRIC; > > +iavf_add_del_rss_cfg(ad, rss_cfg, add); > > +} > > + > > +if (rss_hf & ETH_RSS_IPV6) { > > +rss_cfg->proto_hdrs =3D inner_ipv6_tmplt; > > rss_cfg->rss_algorithm =3D > > VIRTCHNL_RSS_ALG_TOEPLITZ_ASYMMETRIC; > > +iavf_add_del_rss_cfg(ad, rss_cfg, add); > > +} > > > > +if (rss_hf & ETH_RSS_NONFRAG_IPV6_UDP) { > > +rss_cfg->proto_hdrs =3D inner_ipv6_udp_tmplt; > > +rss_cfg->rss_algorithm =3D > > VIRTCHNL_RSS_ALG_TOEPLITZ_ASYMMETRIC; > > iavf_add_del_rss_cfg(ad, rss_cfg, add); > > } > > > > +if (rss_hf & ETH_RSS_NONFRAG_IPV6_TCP) { > > +rss_cfg->proto_hdrs =3D inner_ipv6_tcp_tmplt; > > +rss_cfg->rss_algorithm =3D > > VIRTCHNL_RSS_ALG_TOEPLITZ_ASYMMETRIC; > > +iavf_add_del_rss_cfg(ad, rss_cfg, add); > > +} > > + > > +if (rss_hf & ETH_RSS_NONFRAG_IPV6_SCTP) { > > +rss_cfg->proto_hdrs =3D inner_ipv6_sctp_tmplt; > > +rss_cfg->rss_algorithm =3D > > VIRTCHNL_RSS_ALG_TOEPLITZ_ASYMMETRIC; > > +iavf_add_del_rss_cfg(ad, rss_cfg, add); > > +} > > + > > +vf->rss_hf =3D rss_hf & IAVF_RSS_HF_ALL; > > return 0; > > } > > > > @@ -510,12 +551,6 @@ iavf_hash_init(struct iavf_adapter *ad) > > return ret; > > } > > > > -ret =3D iavf_hash_default_set(ad, true); > > -if (ret) { > > -PMD_DRV_LOG(ERR, "fail to set default RSS"); > > -iavf_unregister_parser(parser, ad); > > -} > > - > > return ret; > > } > > > > @@ -1089,6 +1124,7 @@ static void > > iavf_hash_uninit(struct iavf_adapter *ad) { > > struct iavf_info *vf =3D IAVF_DEV_PRIVATE_TO_VF(ad); > > +struct rte_eth_rss_conf *rss_conf; > > > > if (vf->vf_reset) > > return; > > @@ -1099,7 +1135,8 @@ iavf_hash_uninit(struct iavf_adapter *ad) > > if (!(vf->vf_res->vf_cap_flags & VIRTCHNL_VF_OFFLOAD_ADV_RSS_PF)) > > return; > > > > -if (iavf_hash_default_set(ad, false)) > > +rss_conf =3D &ad->eth_dev->data->dev_conf.rx_adv_conf.rss_conf; > > +if (iavf_rss_hash_set(ad, rss_conf->rss_hf, false)) > > PMD_DRV_LOG(ERR, "fail to delete default RSS"); > > > > iavf_unregister_parser(&iavf_hash_parser, ad); diff --git > > a/drivers/net/iavf/iavf_vchnl.c b/drivers/net/iavf/iavf_vchnl.c index > > 33d03af65..c718a75c4 100644 > > --- a/drivers/net/iavf/iavf_vchnl.c > > +++ b/drivers/net/iavf/iavf_vchnl.c > > @@ -1341,6 +1341,29 @@ iavf_add_del_rss_cfg(struct iavf_adapter > *adapter, > > return err; > > } > > > > +int > > +iavf_set_hena(struct iavf_adapter *adapter, uint64_t hena) { > > +struct iavf_info *vf =3D IAVF_DEV_PRIVATE_TO_VF(adapter); > > +struct virtchnl_rss_hena vrh; > > +struct iavf_cmd_info args; > > +int err; > > + > > +vrh.hena =3D hena; > > +args.ops =3D VIRTCHNL_OP_SET_RSS_HENA; > > +args.in_args =3D (u8 *)&vrh; > > +args.in_args_size =3D sizeof(vrh); > > +args.out_buffer =3D vf->aq_resp; > > +args.out_size =3D IAVF_AQ_BUF_SZ; > > + > > +err =3D iavf_execute_vf_cmd(adapter, &args); > > +if (err) > > +PMD_DRV_LOG(ERR, > > + "Failed to execute command of OP_SET_RSS_HENA"); > > + > > +return err; > > +} > > + > > int > > iavf_add_del_mc_addr_list(struct iavf_adapter *adapter, > > struct rte_ether_addr *mc_addrs, > > -- > > 2.17.1 >=20