From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 6640041C28; Tue, 7 Feb 2023 04:10:39 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 50E70410F6; Tue, 7 Feb 2023 04:10:39 +0100 (CET) Received: from mga06.intel.com (mga06b.intel.com [134.134.136.31]) by mails.dpdk.org (Postfix) with ESMTP id 8EF9841148 for ; Tue, 7 Feb 2023 04:10:36 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1675739436; x=1707275436; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=n3eyJlyKLptRsZ4RoyNXPFE5ImVuREIHuqGefcXXDDM=; b=dNBraTQyDbuM2ai45cWL7p8BjZLVU73NWLOAj86Sy7G4lnMwDNhMM26w en8pmdyPkVSmDaW9/HjjvSkfeupTJHsXbO2mHGs6IftHD4rfMiJQbt170 XBx4EM9CtlnImbumC9v/QpWVjn8dwRTXW/lYv48GBIYY9rB89Pfa68Cwk 0wU/sQaEhhaJAb2xVPf3laoZK/J/3nYeuJF1OOzioIwbFGU6jJbSaRQUm 2h1MrZBz1ykq06OZmnunkda2iHX5yoPeaHl+neD028L0uQfuIQf2fisST vTfS4bqsL+htdz5QTV2B5v36G33xZwORY1QK0mG4obdVxDSYz/04M9AlA A==; X-IronPort-AV: E=McAfee;i="6500,9779,10613"; a="391786707" X-IronPort-AV: E=Sophos;i="5.97,278,1669104000"; d="scan'208";a="391786707" Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Feb 2023 19:10:35 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10613"; a="790637839" X-IronPort-AV: E=Sophos;i="5.97,278,1669104000"; d="scan'208";a="790637839" Received: from orsmsx602.amr.corp.intel.com ([10.22.229.15]) by orsmga004.jf.intel.com with ESMTP; 06 Feb 2023 19:10:35 -0800 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX602.amr.corp.intel.com (10.22.229.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16; Mon, 6 Feb 2023 19:10:35 -0800 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16 via Frontend Transport; Mon, 6 Feb 2023 19:10:35 -0800 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (104.47.58.101) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.16; Mon, 6 Feb 2023 19:10:34 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GlBJmtNPY3DajlNzsEH/jwW9Cx82UO0/wbaNyylremrHGyKT5ufpnzvgwLbXBFfi0C/0YLrU1TXR8rIzHGOI0+TrS6HypG6/VRZlVyV5reqOuTAHhL+Xa9fdspsr3UvRHm+45QLvVscFjZ2Uh0XjjIvA/4UL7DP6dh9rYbvemq8wFY4KwTRkFXdYslOIixMM8zbCAtIIug66il5LhSrNT6paTVmEwxwsH6itxmOSxrakv3fiyEWo24fwYFg+ajz3M4L/CEfsZrgF5W6KvSkWja9WTr/xsvAbbZwf5op9j0VaxvuQ47WFum/Ldw8gylZV1+ZhrTbLanXPpKK7kgbr4g== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=PeHX6zPRcDZYKCZbMpq9SAI4uz0kJOcC0wWVlK7si9Y=; b=hKEdrs0rSJLkU8Cej931Gph1JVk+kR+tReHjsDd9DeWt0FcmepOS0RimydI2f8n+bv3Q1lSJ6LGfK7uOxyJNUsY83+oUzS/+Vxx9Yj6U9LTOgbDXT/vvq0fFftGTY94wJacQ9LjBgZMQYBPAnj/WgNmerfJDolCpR7qy3ZJ04w6/WBiwlTd+yKP70l+EFnTJOKUbMH9TRr4/NzOS4qGfQwFhSjrvPXIQQvISQmfVP6I5dYENtf5ETfQnSO9YhUTYUmayeoJCWftKmxgN1rznJ2IH7mnkjjM/x1aYvIceTEwMAL/2b/C5D5lpCz4ueo+EsSFD9uwXnBYwdivKKe6o5g== 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 Received: from PH0PR11MB5877.namprd11.prod.outlook.com (2603:10b6:510:141::12) by PH0PR11MB5675.namprd11.prod.outlook.com (2603:10b6:510:d4::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6064.34; Tue, 7 Feb 2023 03:10:28 +0000 Received: from PH0PR11MB5877.namprd11.prod.outlook.com ([fe80::8c1c:6df6:533f:282c]) by PH0PR11MB5877.namprd11.prod.outlook.com ([fe80::8c1c:6df6:533f:282c%8]) with mapi id 15.20.6064.027; Tue, 7 Feb 2023 03:10:27 +0000 From: "Liu, Mingxia" To: "Wu, Jingjing" , "dev@dpdk.org" CC: "Xing, Beilei" Subject: RE: [PATCH v3 2/6] common/idpf: add RSS set/get ops Thread-Topic: [PATCH v3 2/6] common/idpf: add RSS set/get ops Thread-Index: AQHZKxRVfFmAE75c+kCAji1rP8Pl6q67FpqAgAA7v+A= Date: Tue, 7 Feb 2023 03:10:27 +0000 Message-ID: References: <20230111071545.504706-1-mingxia.liu@intel.com> <20230118071440.902155-1-mingxia.liu@intel.com> <20230118071440.902155-3-mingxia.liu@intel.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PH0PR11MB5877:EE_|PH0PR11MB5675:EE_ x-ms-office365-filtering-correlation-id: e24ef567-e36c-498a-ed45-08db08b8dd11 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: fyKIjIzgaDMJXtTM7XKHkUeT4w5NsiYNEd5eJHHo+lJ1j0XnVOX4NMx/pfIn6OhFkg7Mvlq3Y6af01zJ9efFPN5aAqk4wTUTiaxgFW095X+h5A98XSl8DnxxXS0pD1Or+RdZWQkeg6AstjwS8DARII5YmqXp6yzpvMphEdsEYtdhGu781lnXpkLKPm/g+1D9AZHmSaTnc+UgPINPglFF+m3ISgVy79rw4OAzW/kViVj7gSOEa383wbjJ+Qa/SLcK6+U4cxoFPrIbptzAARgA/OiRZ9bMlvFLapnoAWG8E1eIzXs3VIOviQQjDwTuKNTfVDkGeh8VQv7giyuop8OcaQo8fqH+EGZy72xVT9Iy9aKaLDGUNsgqzSmvGDBHulqbu8wIqv+dkZVUH7gsBmkj9ItvCB/rMBw8wKs91FgvNu8Ec0ZlaF3Bi94c0G7+8BSDqvnLFVyITFDuJi8EBJjWy0LnsBpQ81WvcnVEbaN+ptW/ermIJ6bGvB3MhzDqzxZfifvoPNUoBByakH145532GpP6heWVcC7xCM+7kpfpr0udBEMgGfNbK0SqHbYgBnH/ul7bP1pbteQzLJZ7YkkzscmrcmqsMTwiAnKWGXwyTPmJbmskDLcDRegBQ+kILtle/1BukX6fgXA3WObZ3t1dEz1e2aKH9scVxpk4HIP+adu2ErOFIp/G/TqRhFWz6aXSAP6dA3vEjgx9tHPEmGatXQ== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR11MB5877.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230025)(136003)(396003)(346002)(39860400002)(376002)(366004)(451199018)(64756008)(66446008)(107886003)(55016003)(478600001)(53546011)(6506007)(8676002)(26005)(186003)(9686003)(4326008)(66556008)(316002)(76116006)(66476007)(110136005)(66946007)(7696005)(82960400001)(71200400001)(38070700005)(38100700002)(122000001)(86362001)(33656002)(83380400001)(5660300002)(41300700001)(52536014)(8936002)(2906002); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?+xwYHb1t7j3+l4uZ7XIy4e/qzgTPQYoi6x9Ligxfg9ST5KXsokGCRv5k/o2M?= =?us-ascii?Q?ktZV5XRjowFudb8D7W2tKb65pUkAP5tLGEkcyexe9LD6r0cDmU9LLMErY8ZU?= =?us-ascii?Q?1EfWBvWJYnSDGx2EFk1asLYTPEvv0KBxombk/jI4LAfDUB6OnUomIUUpgkKA?= =?us-ascii?Q?Lz9Zj5Wyaq+WcNDWCrLdSxHNUF9/6G4P5Sn1PYu/e8w5iPiOmBpxK2rIUGsg?= =?us-ascii?Q?b8VKbi+SjXsGIZ2NUL4ywUdD/DqDLvxKRWLvWp1QnREPZw3Ur/fEqRdBAMXk?= =?us-ascii?Q?AiGMAempDknhOErsfRCGV2aim5r10UpsUr25VpSDJxQGv01CIHwGI3iiP641?= =?us-ascii?Q?9lIOXkKDjnGHPMsVjKTc7yzUJQwuzEx+HPkoBf36UaEv0pwkW7NUAWVdGFsg?= =?us-ascii?Q?dqa1JdBnlxaXxDPscqDQD7QIGtKiJqQjBw471IKuiQ+ULJo90Pk1SCN4TkRP?= =?us-ascii?Q?Jy0345yvisQ4xTcSSkd3t0EJz6F5fOLZZLVYwDU8jgNpVgVNp6WOtYBt3e5+?= =?us-ascii?Q?28PTWfqWykfzclS0nmDJyo6JP+yVFtwQ8s0EimP+NsaWZYLMKM22bYgZ8cj4?= =?us-ascii?Q?Ti36YY9ySd5ZziOX8c37Bojsj7D2oLSLggFfxPNeH8+XZkjpmz9POOm8t8Yj?= =?us-ascii?Q?osrAU8RvBtFnr8ugZeykS/tQ8Ky3rt86Esa7n3xNpEMmDrGKJr/46AKAzXYK?= =?us-ascii?Q?onBwNI3PXxdwsWkuf51EQcF38Mo51frQdngeCuLBHc30QiCKmqVFMMuSHu6D?= =?us-ascii?Q?6rjXIgHSU6aAaikCyZZ3Jd92LXrSwwibA1ZDsFWZ5UBh/3t1IYcXqAJyRmaw?= =?us-ascii?Q?j2LVCwTbqErcJmgX0+++2Q3l7LidHf/jOcOG+wUeO6GMQfjI2aLXWuVDqQsZ?= =?us-ascii?Q?+jg+5XP4RvhpnpC/QNodrYKx1LJBDTAtFwr0lijVroH/nLyHZtxQajsM6Chi?= =?us-ascii?Q?FzqovkJVK4EZ5GNx/kEieu/6c+AZyYRYiRkXZ512rpsj62YqelVTlpklp3UE?= =?us-ascii?Q?iRtkmDMc+v/qDFomV7/9ranGG1Lt3eeRWDpMSiaM54Ez38YdfsLQa99nfxxR?= =?us-ascii?Q?mhh+jpGDgrZoLk0rPLSHVt+1eiJg06PcVusR6EMCwhyuESwAgrLbnQxzu6kJ?= =?us-ascii?Q?xSHltBq2LsuHFQcpTJSD6oT6LuwoAesjI+767CXY/cfnqjFI3SHZMoKlzsBa?= =?us-ascii?Q?HxOzzswgKSTIPO4kKynwvUTWVXAXHf5xsmk9yWpW3yyPhF5I7ZGixlyzW6Ph?= =?us-ascii?Q?Y3t6Z2yw2iXVzOY77XrTn2gbOph/93V6fcoC67pSAShlnd3a0WerQyXIKeeN?= =?us-ascii?Q?4Ea5jSzTboSIFxHq8g928o7of+Bc9Rc2R8HbyK2mGAcAMaVkQu+hfW2oHKmD?= =?us-ascii?Q?k+H6+mxJ5JH3HcPM06TPb3qpXoQ0lyx4F4YFcn1WU0TQJVF74R9r3wu1aHh/?= =?us-ascii?Q?KTyyFrIUveZbffquct9a5mE+zx/3hYiffto8h554IjuVC3kzOUZN0rRDwRpi?= =?us-ascii?Q?DEvd1e+HmrrzXiCbpQITyk7e9ravSGwUCXQ9pr9HLj04S96Lzl8ISveXO/MK?= =?us-ascii?Q?a/IB7nJlNo9lqyOpg37ahnpnWS9hfKbknuKOJVKI?= Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PH0PR11MB5877.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: e24ef567-e36c-498a-ed45-08db08b8dd11 X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Feb 2023 03:10:27.8533 (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: ldGwE//EnCo14VrvIm7+pWKgGGPPtWxpKCyKwEUSnc7sVyX9WdRvxPFeLqtKmAQOd8lPpA0LhySaVC1RuNQdBA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR11MB5675 X-OriginatorOrg: intel.com X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org > > +static int idpf_config_rss_hf(struct idpf_vport *vport, uint64_t > > +rss_hf) { > > + uint64_t hena =3D 0, valid_rss_hf =3D 0; > According to the coding style, only the last variable on a line should be > initialized. >=20 [Liu, Mingxia] Ok, thank, I'll check if the same issue exist otherwhere. > > + vport->rss_hf =3D hena; > > + > > + ret =3D idpf_vc_set_rss_hash(vport); > > + if (ret !=3D 0) { > > + PMD_DRV_LOG(WARNING, > > + "fail to set RSS offload types, ret: %d", ret); > > + return ret; > > + } > > + > > + if (valid_rss_hf & idpf_ipv4_rss) > > + valid_rss_hf |=3D rss_hf & RTE_ETH_RSS_IPV4; > > + > > + if (valid_rss_hf & idpf_ipv6_rss) > > + valid_rss_hf |=3D rss_hf & RTE_ETH_RSS_IPV6; > > + > > + if (rss_hf & ~valid_rss_hf) > > + PMD_DRV_LOG(WARNING, "Unsupported rss_hf 0x%" > PRIx64, > > + rss_hf & ~valid_rss_hf); > It makes me a bit confused, valid_rss_hf is would be the sub of rss_hf > according above assignment. Would it be possible to go here? > And if it is possible, why not set valid_rss_hf before calling vc command= ? > [Liu, Mingxia] According to cmd_config_rss_parsed(), when the rss_hf set is= not belong to flow_type_rss_offloads, it will be delete by &flow_type_rss_= offloads. What's more, in rte_eth_dev_rss_hash_update(), it will check again if rss_h= f set is belong to flow_type_rss_offloads, if not, will return error. So when entering function idpf_config_rss_hf, it wouldn't be possible that = (rss_hf & ~valid_rss_hf) !=3D 0. Better to delete this piece of code. For the second question, why not set valid_rss_hf before calling vc comman= d? Because if we set rss_hf to RTE_ETH_RSS_IPV4, then the rss hf value on idp= f side mapping to RTE_ETH_RSS_NONFRAG_IPV4_UDP | RTE_ETH_RSS_NONFRAG_IPV4_= TCP | RTE_ETH_RSS_NONFRAG_IPV4_SCTP |RTE_ETH_RSS_NONFRAG_IPV4_OTHER |RTE_E= TH_RSS_FRAG_IPV4 is been set.=20 But there is no rss hf value on idpf side mapping to RTE_ETH_RSS_IPV4. When we get rss_hf from vc, it won't tell us if RTE_ETH_RSS_IPV4 have ever = been configured. So dpdk software should record if RTE_ETH_RSS_IPV4 have ever been set by va= lid_rss_hf |=3D rss_hf & RTE_ETH_RSS_IPV4, and return to user when needed. RTE_ETH_RSS_IPV6 is similar. > > + /* It MUST use the current LUT size to get the RSS lookup table, > > + * otherwise if will fail with -100 error code. > > + */ > > + lut =3D rte_zmalloc(NULL, reta_size * sizeof(uint32_t), 0); > > + if (!lut) { > > + PMD_DRV_LOG(ERR, "No memory can be allocated"); > > + return -ENOMEM; > > + } > > + /* store the old lut table temporarily */ > > + rte_memcpy(lut, vport->rss_lut, reta_size * sizeof(uint32_t)); > Stored the vport->rss_lut to lut? But you overwrite the lut below? >=20 [Liu, Mingxia] Because lut include all redirection table, but we may want t= o update only several value of redirection table, so we first stored the original lut, and update the required table entries. > -----Original Message----- > From: Wu, Jingjing > Sent: Thursday, February 2, 2023 11:28 AM > To: Liu, Mingxia ; dev@dpdk.org > Cc: Xing, Beilei > Subject: RE: [PATCH v3 2/6] common/idpf: add RSS set/get ops >=20 > > +static int idpf_config_rss_hf(struct idpf_vport *vport, uint64_t > > +rss_hf) { > > + uint64_t hena =3D 0, valid_rss_hf =3D 0; > According to the coding style, only the last variable on a line should be > initialized. >=20 > > + int ret =3D 0; > > + uint16_t i; > > + > > + /** > > + * RTE_ETH_RSS_IPV4 and RTE_ETH_RSS_IPV6 can be considered as 2 > > + * generalizations of all other IPv4 and IPv6 RSS types. > > + */ > > + if (rss_hf & RTE_ETH_RSS_IPV4) > > + rss_hf |=3D idpf_ipv4_rss; > > + > > + if (rss_hf & RTE_ETH_RSS_IPV6) > > + rss_hf |=3D idpf_ipv6_rss; > > + > > + for (i =3D 0; i < RTE_DIM(idpf_map_hena_rss); i++) { > > + uint64_t bit =3D BIT_ULL(i); > > + > > + if (idpf_map_hena_rss[i] & rss_hf) { > > + valid_rss_hf |=3D idpf_map_hena_rss[i]; > > + hena |=3D bit; > > + } > > + } > > + > > + vport->rss_hf =3D hena; > > + > > + ret =3D idpf_vc_set_rss_hash(vport); > > + if (ret !=3D 0) { > > + PMD_DRV_LOG(WARNING, > > + "fail to set RSS offload types, ret: %d", ret); > > + return ret; > > + } > > + > > + if (valid_rss_hf & idpf_ipv4_rss) > > + valid_rss_hf |=3D rss_hf & RTE_ETH_RSS_IPV4; > > + > > + if (valid_rss_hf & idpf_ipv6_rss) > > + valid_rss_hf |=3D rss_hf & RTE_ETH_RSS_IPV6; > > + > > + if (rss_hf & ~valid_rss_hf) > > + PMD_DRV_LOG(WARNING, "Unsupported rss_hf 0x%" > PRIx64, > > + rss_hf & ~valid_rss_hf); > It makes me a bit confused, valid_rss_hf is would be the sub of rss_hf > according above assignment. Would it be possible to go here? > And if it is possible, why not set valid_rss_hf before calling vc command= ? >=20 > > + vport->last_general_rss_hf =3D valid_rss_hf; > > + > > + return ret; > > +} > > + > > static int > > idpf_init_rss(struct idpf_vport *vport) { @@ -256,6 +357,204 @@ > > idpf_init_rss(struct idpf_vport *vport) > > return ret; > > } > > > > +static int > > +idpf_rss_reta_update(struct rte_eth_dev *dev, > > + struct rte_eth_rss_reta_entry64 *reta_conf, > > + uint16_t reta_size) > > +{ > > + struct idpf_vport *vport =3D dev->data->dev_private; > > + struct idpf_adapter *adapter =3D vport->adapter; > > + uint16_t idx, shift; > > + uint32_t *lut; > > + int ret =3D 0; > > + uint16_t i; > > + > > + if (adapter->caps.rss_caps =3D=3D 0 || dev->data->nb_rx_queues =3D=3D= 0) { > > + PMD_DRV_LOG(DEBUG, "RSS is not supported"); > > + return -ENOTSUP; > > + } > > + > > + if (reta_size !=3D vport->rss_lut_size) { > > + PMD_DRV_LOG(ERR, "The size of hash lookup table > configured " > > + "(%d) doesn't match the number of > hardware can " > > + "support (%d)", > > + reta_size, vport->rss_lut_size); > > + return -EINVAL; > > + } > > + > > + /* It MUST use the current LUT size to get the RSS lookup table, > > + * otherwise if will fail with -100 error code. > > + */ > > + lut =3D rte_zmalloc(NULL, reta_size * sizeof(uint32_t), 0); > > + if (!lut) { > > + PMD_DRV_LOG(ERR, "No memory can be allocated"); > > + return -ENOMEM; > > + } > > + /* store the old lut table temporarily */ > > + rte_memcpy(lut, vport->rss_lut, reta_size * sizeof(uint32_t)); > Stored the vport->rss_lut to lut? But you overwrite the lut below? >=20 [Liu, Mingxia] Because lut include all redirection table, but we may want t= o update only several value of redirection table, so we first stored the original lut, and update the required table entries. > > + > > + for (i =3D 0; i < reta_size; i++) { > > + idx =3D i / RTE_ETH_RETA_GROUP_SIZE; > > + shift =3D i % RTE_ETH_RETA_GROUP_SIZE; > > + if (reta_conf[idx].mask & (1ULL << shift)) > > + lut[i] =3D reta_conf[idx].reta[shift]; > > + } > > + > > + rte_memcpy(vport->rss_lut, lut, reta_size * sizeof(uint32_t)); > > + /* send virtchnl ops to configure RSS */ > > + ret =3D idpf_vc_set_rss_lut(vport); > > + if (ret) { > > + PMD_INIT_LOG(ERR, "Failed to configure RSS lut"); > > + goto out; > > + } > > +out: > > + rte_free(lut); > > + > > + return ret; > > +}