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 89E8D42B7F for ; Wed, 24 May 2023 03:19:10 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 7C3594282D; Wed, 24 May 2023 03:19:10 +0200 (CEST) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by mails.dpdk.org (Postfix) with ESMTP id 00ADD4067E; Wed, 24 May 2023 03:19:06 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1684891147; x=1716427147; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=4cUAjZjUvlo2qX30QOCbyG+Yw3+/j2SSIScilG5A5+8=; b=ZjF/QK1WLoNZE+xN3+0txYGLiOLxVeEm8eYgsXF3ksL/Ey/K+Q7m9JpP l3GgarDzElNxK62vH7TNj3ApNvT5bhHf2tYs/mHsCvAH79Ejx+18SC9Aw M3nHDJOgLVgJE0ZFKjL1gKton8G2dEhQcXpt2m4vccz2RG1pjVT6jSWUX 5BdobmB2ROLNB6qJeOSD5hURzjvA9eca69gWJ4bSnidFB9xIONiOLXFOQ jzYB+eM6NuYUHDEsHXChE2zokMRu/GDztjIoeSfrfUkWHAirFRhDhatUL LoUiEfbrEw5gvlMhfwO2/kmZbN+ddFfBn8GOM+1xizxLK4kS3p1+vZgoL g==; X-IronPort-AV: E=McAfee;i="6600,9927,10719"; a="350923326" X-IronPort-AV: E=Sophos;i="6.00,187,1681196400"; d="scan'208";a="350923326" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 May 2023 18:19:05 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10719"; a="704113162" X-IronPort-AV: E=Sophos;i="6.00,187,1681196400"; d="scan'208";a="704113162" Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82]) by orsmga002.jf.intel.com with ESMTP; 23 May 2023 18:19:04 -0700 Received: from fmsmsx602.amr.corp.intel.com (10.18.126.82) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Tue, 23 May 2023 18:19:05 -0700 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23 via Frontend Transport; Tue, 23 May 2023 18:19:05 -0700 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (104.47.70.105) by edgegateway.intel.com (192.55.55.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.23; Tue, 23 May 2023 18:19:04 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FJ4LGhKJJMQ/Tta/ZUvmXTRWnuLiK+roFdbiOQebRYHgJSFjS9xjJZGiLox5GO+Membf+TSlyFUaGQw7cTBmYJ5fD7+RC2jf7FghXGSfK/1NLzxkW4vQcDTEZtxV2HrxPBGzcOrWgoYFJlQzwMszIgq58IQa1wiJJNZ2l0KaOWkrrLpIsAjfBj/3FfQ9xU5pZBHRGLLrgZ0AQMtVfsa4GIhurGl9RTOwvL8E7DfJVI7CV8+dS19kgxsE/V3lk9KsH9wgJ0Vm8WSffgSN4heBLZXWYEDbXuVOB4xSCfo/+/twzSlSArsr/GjYvOut7bN2+nd9MYlpetPMt1cE5hz55w== 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=6+GUWiMbBEVaNYWBn6KQFLp7nmm0xblj5aK7h/K5m/Y=; b=f9JVQf+2M3Eqtml0ORWJcF6eomQ+krDLD8/UNDlcZPLh2VeIkax3TKtXokuQuwGfj78dy1dPm0fM5i9xhz6HE3zzlSEyGr9CwCZQRKrVD2vMl8tR+UyC/ikbabPfF/rjmppNRM5XzgBoPSsZy5TPecuIAa/8botxp8FA75x3DfogMiakZNzHufXLHH46LT0tNV9ZL0fBRo+lL1ve8DXfuBwLNSI3HgbE74CXE5C22VyQ9D+FLHNnP9vNFz2IpwqeqLSgNtfKMQz+dYqwgUDEShQ8EQgK/nD6gvf+JlEpUftEPVpeGp52kMURwzG6RsQxT8TcbaCKIGV4cJR7K5+2Jw== 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 DM4PR11MB5994.namprd11.prod.outlook.com (2603:10b6:8:5d::20) by MW4PR11MB7080.namprd11.prod.outlook.com (2603:10b6:303:21a::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6411.28; Wed, 24 May 2023 01:19:02 +0000 Received: from DM4PR11MB5994.namprd11.prod.outlook.com ([fe80::e570:d9a7:df1b:1589]) by DM4PR11MB5994.namprd11.prod.outlook.com ([fe80::e570:d9a7:df1b:1589%6]) with mapi id 15.20.6433.015; Wed, 24 May 2023 01:19:02 +0000 From: "Zhang, Qi Z" To: "Ye, MingjinX" , "dev@dpdk.org" CC: "Yang, Qiming" , "stable@dpdk.org" , "Zhou, YidingX" Subject: RE: [PATCH] net/ice: DCF adds default RSS Thread-Topic: [PATCH] net/ice: DCF adds default RSS Thread-Index: AQHZh+Gg0Whvx4ESCEeAEwn1C9rl969oqOCA Date: Wed, 24 May 2023 01:19:02 +0000 Message-ID: References: <20230516102510.537143-1-mingjinx.ye@intel.com> In-Reply-To: <20230516102510.537143-1-mingjinx.ye@intel.com> 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: DM4PR11MB5994:EE_|MW4PR11MB7080:EE_ x-ms-office365-filtering-correlation-id: 2584a58b-574a-404d-3f50-08db5bf4dbd7 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 5Bs+8jT38uuR7ghnKUWR6ViD3Zq5iUoabMD7iuofW1qLk8XJ+0IQt2feiUR4JNaG5VbOiYNXL0NDcWO6OtwtDRTi8SoH6C1D/VRUe9iFwWrewPUcvbcmVcYAWFeBhCmEfacepW+ICM0Pxb7i3r5QYAhWqCivhMfrRMAixDoidhwSsO2i3FnFvv+OSht/y9/an16+vPbhmK/OxBjc1fm4FN0Yg9KboGn19L++a01m5MWpEHAVXrEOyAz3egJD6lf7Pomj9iL/KlULJiYcMRFDv92E9F514i1Ssf9b5bH74OpVSday5ND8QEaPpE42CwyPYHsfsacE6N00xBDEaaG96xGmadzENp6zXn5EewPkl4OUw20SioDPGnlmeZ0e1xZnk4lMEPnKZDMRn36TXTCesp/U+t4GeL2KVUjaZWMQNS5fCCxsVLdV/Xh1JKmpgX3FMxyC3WPzmNF/mRAnKEaMt5O73UryIZOObSipdNxixheAEDkX1961SRB3UFD4p7HuER3XVbMoeNnxH3+x9hhMabmy5PUrFQpHbEYW8nd8ffLSVQdQjMBrBWnQPoNR1p6dHvUqyxO4QwLKgPETs0g+iEQNNzZXGI443c3uo1SUVv3sVy+3nWBMUdkX4bSfk6C8 x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM4PR11MB5994.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(396003)(376002)(136003)(39860400002)(346002)(366004)(451199021)(110136005)(54906003)(66946007)(450100002)(66556008)(26005)(9686003)(6506007)(66476007)(66446008)(64756008)(2906002)(76116006)(30864003)(122000001)(316002)(186003)(33656002)(478600001)(4326008)(38100700002)(82960400001)(7696005)(86362001)(41300700001)(71200400001)(53546011)(55016003)(107886003)(8676002)(8936002)(5660300002)(38070700005)(83380400001)(52536014); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?43qS4KN+7cRMAkI8l8xKHYiQ7W0zDHtlUm3kSBqlb1ThW/04/1c7rJ23B+33?= =?us-ascii?Q?dZ1RaW4ArCdAhfvqYDpTnLxZjKECFIHXvBjDTkcvfCAcJqi1Zo69QK1ANvdE?= =?us-ascii?Q?Nw1wFJ+wvNQKcYA14/tyQF054Z+vTupBrkHrbn4WSNjxuBr66Y9MLB6foKCn?= =?us-ascii?Q?9nT3PlgT1AWx/hNUDojlDU3VINMmO4M+n9vbdrAIPn1DGRzcXbV9XGEJDdNF?= =?us-ascii?Q?/d0TQauUQtyGMt/gRRPQVEDAqB/FW+lPcJV2KuU+EYuRGQWh2iuJ79k2goT8?= =?us-ascii?Q?qkUtSzxd39HShR3+95WTqsmcP1NdItp/SU9Gqoydla0EK9uWd+HStst/mvPX?= =?us-ascii?Q?6b7p1QGjBiPOT83dKSNiY1rEnnKsuFWsp1UBcGcQ9hlr3XYnWqUPdxbFQoD9?= =?us-ascii?Q?JOzi+zrPuOiYLhSt1iSjU7a97UdRytb0w9HovmfdNklAIJxlvjjSN33RjnFI?= =?us-ascii?Q?/lxxMvbdCtodw4TMeR6S0dpr/JZXxknjGBMe1ygEKBFuJzAXi71xlTZZpSO4?= =?us-ascii?Q?g2aqTGfQu44+5OXZFgIv3JWc5pUHT/rQ33Rhv4eZpztYsRzUJj7bHZAgkBjf?= =?us-ascii?Q?nPvQDqCFxs9U6SbvwlrWRR9gD6mqYlHBX3Lo1tRXYTqoOzTwkKLG8dhukxG9?= =?us-ascii?Q?a21LJIWVTm2+RFkFQeXhU4BNUO837kxF9g5F+VhPkzkU1SGE5L6rk+3lhXWf?= =?us-ascii?Q?7Ne1JuYfFpw4Q6Dc2rlEI9fxNKN/PlMaNsKucVo57cNptkcMljrcDj+nynB1?= =?us-ascii?Q?7AWTU6wNKgWqb4iE/syZ/P/QMsMH0318MBPQmITp+fDJLupAZuckzbaoWQTx?= =?us-ascii?Q?GB1j6ubAu1V7w9oqLzXSi9sMriaUYSEPCHQOWnDNP6jF+42PaKjWMdrL/Ljt?= =?us-ascii?Q?hBJhV4BKqb8DHbWHOHcdrmX/egEv6Fo9GXwrmvNPFFK/fQxehKQPHqeZMpXZ?= =?us-ascii?Q?bwwCa5efzCUEyI4b9nsgc9AVUtBPludY1Rll/+kyD3MFe3U/3rY+nOMXVzbe?= =?us-ascii?Q?Zyk9BT1VR7bulwaYHDdcraeNUd63kOkGioZsSLichRJ4jkWf1ceCvDi/Ewl1?= =?us-ascii?Q?uyxz/+7WV27UXjDXgObKszbsq+m6jXdk2F9VIABsTTk7oUrNSQWmGnX+Dgn1?= =?us-ascii?Q?EeHTHo4UP1MH5gDpSbNU65cPz7CovdIAvva7nMiPOKd1szYR+l4ubOb3jClF?= =?us-ascii?Q?osMosyywwCsF4/TehChUeB/PxdfqnBDMENshHiJFN+lmCT5EGVoVNM8oyYuV?= =?us-ascii?Q?28FFv16+MVq2nL+4lnZ3oSo0uPEc4FsDQqoTMMdVH/dn8URbIHVOVNEfjbrZ?= =?us-ascii?Q?vw3Fho9p2wSn7Gf77fBO09I3Kr+hWMakot3CXlY+9bCRwRZjnqXtfO+fD7dN?= =?us-ascii?Q?PztKtMGXhpPmG1mGyaD4yrpU0Skn2zlCO9r2aTM1hzq9ZyDkPwBv512UOX33?= =?us-ascii?Q?ws0iUE9CWB0Ed74d2ynqh+0U9n6K+tpumXYuhcbIBPVCvVChRy/VOfuTKJJv?= =?us-ascii?Q?rcArL+gE4vZJy3A4LTJZdnNwZJdXhWlm3CWzBIEAc80c/VLabf565I4+c8ZY?= =?us-ascii?Q?/GfLUAMrCKnTpgU/v7HMGyOrI0IhRQeEQidRrF+i?= 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: DM4PR11MB5994.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2584a58b-574a-404d-3f50-08db5bf4dbd7 X-MS-Exchange-CrossTenant-originalarrivaltime: 24 May 2023 01:19:02.1084 (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: fTFB+5Gpu5iLpkwdICSicpsOXr5UG1tKrAEvYetXfaUtml7py8Rjp2bsa97o0nQX2XNEPBfn/GeWqYta8m7LwA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR11MB7080 X-OriginatorOrg: intel.com X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org > -----Original Message----- > From: Ye, MingjinX > Sent: Tuesday, May 16, 2023 6:25 PM > To: dev@dpdk.org > Cc: Yang, Qiming ; stable@dpdk.org; Zhou, YidingX > ; Ye, MingjinX ; Zhang, Qi > Z > Subject: [PATCH] net/ice: DCF adds default RSS >=20 > When dcf and iavf ports are used together, the default configuration of i= pv4[6] > rss for dcf ports is lost. >=20 > This patch adds RSS configuration to the dcf port. Any kernel PF-enabled > default RSS will be disabled at initialization. >=20 > In addition, the default RSS will be configured based on rte_eth_rss_conf= - > >rss_hf. Currently supported default rss_type: > ipv4[6], ipv4[6]_udp, ipv4[6]_tcp, ipv4[6]_sctp. >=20 > Fixes: 79b1f7ab462d ("net/ice: support RSS RETA configuration in DCF mode= ") > Fixes: 7564d5509611 ("net/ice: add DCF hardware initialization") > Fixes: 3a6bfc37eaf4 ("net/ice: support QoS config VF bandwidth in DCF") > Fixes: 3220d865382c ("net/ice: init RSS during DCF start") > Cc: stable@dpdk.org The patch looks good, but the commit log is a little bit misleading "the RSS for DCF port lost" is not an DPDK PMD issue, I assume something ne= ed to be fixed in kernel driver,=20 And the patch just enable the default RSS configure support and it helps to= work around the kernel driver issue, but it is not going to fix anything in DPDK, please remove the fixlines and= cc stable and refine the commit log. >=20 > Signed-off-by: Mingjin Ye > --- > drivers/net/ice/ice_dcf.c | 259 ++++++++++++++++++++++++++++++- > drivers/net/ice/ice_dcf.h | 4 + > drivers/net/ice/ice_dcf_ethdev.c | 24 ++- > 3 files changed, 285 insertions(+), 2 deletions(-) >=20 > diff --git a/drivers/net/ice/ice_dcf.c b/drivers/net/ice/ice_dcf.c index > 1c3d22ae0f..4575d831e1 100644 > --- a/drivers/net/ice/ice_dcf.c > +++ b/drivers/net/ice/ice_dcf.c > @@ -36,6 +36,130 @@ > (sizeof(struct virtchnl_vf_resource) + \ > IAVF_MAX_VF_VSI * sizeof(struct virtchnl_vsi_resource)) >=20 > +#define FIELD_SELECTOR(proto_hdr_field) \ > + (1UL << ((proto_hdr_field) & PROTO_HDR_FIELD_MASK)) > +#define BUFF_NOUSED 0 > + > +#define proto_hdr_eth { \ > + VIRTCHNL_PROTO_HDR_ETH, \ > + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_ETH_SRC) | \ > + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_ETH_DST), > {BUFF_NOUSED} } > + > +#define proto_hdr_svlan { \ > + VIRTCHNL_PROTO_HDR_S_VLAN, \ > + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_S_VLAN_ID), > {BUFF_NOUSED} } > + > +#define proto_hdr_cvlan { \ > + VIRTCHNL_PROTO_HDR_C_VLAN, \ > + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_C_VLAN_ID), > {BUFF_NOUSED} } > + > +#define proto_hdr_ipv4 { \ > + VIRTCHNL_PROTO_HDR_IPV4, \ > + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV4_SRC) | \ > + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV4_DST), > {BUFF_NOUSED} } > + > +#define proto_hdr_ipv4_with_prot { \ > + VIRTCHNL_PROTO_HDR_IPV4, \ > + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV4_SRC) | \ > + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV4_DST) | \ > + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV4_PROT), > {BUFF_NOUSED} } > + > +#define proto_hdr_ipv6 { \ > + VIRTCHNL_PROTO_HDR_IPV6, \ > + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV6_SRC) | \ > + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV6_DST), > {BUFF_NOUSED} } > + > +#define proto_hdr_ipv6_frag { \ > + VIRTCHNL_PROTO_HDR_IPV6_EH_FRAG, \ > + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV6_EH_FRAG_PKID), > {BUFF_NOUSED} } > + > +#define proto_hdr_ipv6_with_prot { \ > + VIRTCHNL_PROTO_HDR_IPV6, \ > + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV6_SRC) | \ > + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV6_DST) | \ > + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV6_PROT), > {BUFF_NOUSED} } > + > +#define proto_hdr_udp { \ > + VIRTCHNL_PROTO_HDR_UDP, \ > + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_UDP_SRC_PORT) | \ > + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_UDP_DST_PORT), > {BUFF_NOUSED} } > + > +#define proto_hdr_tcp { \ > + VIRTCHNL_PROTO_HDR_TCP, \ > + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_TCP_SRC_PORT) | \ > + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_TCP_DST_PORT), > {BUFF_NOUSED} } > + > +#define proto_hdr_sctp { \ > + VIRTCHNL_PROTO_HDR_SCTP, \ > + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_SCTP_SRC_PORT) | \ > + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_SCTP_DST_PORT), > {BUFF_NOUSED} } > + > +#define proto_hdr_esp { \ > + VIRTCHNL_PROTO_HDR_ESP, \ > + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_ESP_SPI), {BUFF_NOUSED} } > + > +#define proto_hdr_ah { \ > + VIRTCHNL_PROTO_HDR_AH, \ > + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_AH_SPI), {BUFF_NOUSED} } > + > +#define proto_hdr_l2tpv3 { \ > + VIRTCHNL_PROTO_HDR_L2TPV3, \ > + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_L2TPV3_SESS_ID), > {BUFF_NOUSED} } > + > +#define proto_hdr_pfcp { \ > + VIRTCHNL_PROTO_HDR_PFCP, \ > + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_PFCP_SEID), > {BUFF_NOUSED} } > + > +#define proto_hdr_gtpc { \ > + VIRTCHNL_PROTO_HDR_GTPC, 0, {BUFF_NOUSED} } > + > +#define proto_hdr_ecpri { \ > + VIRTCHNL_PROTO_HDR_ECPRI, \ > + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_ECPRI_PC_RTC_ID), > {BUFF_NOUSED} } > + > +#define proto_hdr_l2tpv2 { \ > + VIRTCHNL_PROTO_HDR_L2TPV2, \ > + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_L2TPV2_SESS_ID) | \ > + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_L2TPV2_LEN_SESS_ID), > {BUFF_NOUSED} } > + > +#define proto_hdr_ppp { \ > + VIRTCHNL_PROTO_HDR_PPP, 0, {BUFF_NOUSED} } > + > +#define TUNNEL_LEVEL_OUTER 0 > +#define TUNNEL_LEVEL_INNER 1 > + > +struct virtchnl_proto_hdrs ice_dcf_inner_ipv4_tmplt =3D { > + TUNNEL_LEVEL_INNER, 1, {{proto_hdr_ipv4}} }; > + > +struct virtchnl_proto_hdrs ice_dcf_inner_ipv4_udp_tmplt =3D { > + TUNNEL_LEVEL_INNER, 2, {{proto_hdr_ipv4_with_prot, > proto_hdr_udp}} }; > + > +struct virtchnl_proto_hdrs ice_dcf_inner_ipv4_tcp_tmplt =3D { > + TUNNEL_LEVEL_INNER, 2, {{proto_hdr_ipv4_with_prot, > proto_hdr_tcp}} }; > + > +struct virtchnl_proto_hdrs ice_dcf_inner_ipv4_sctp_tmplt =3D { > + TUNNEL_LEVEL_INNER, 2, {{proto_hdr_ipv4, proto_hdr_sctp}} }; > + > +struct virtchnl_proto_hdrs ice_dcf_inner_ipv6_tmplt =3D { > + TUNNEL_LEVEL_INNER, 1, {{proto_hdr_ipv6}} }; > + > +struct virtchnl_proto_hdrs ice_dcf_inner_ipv6_udp_tmplt =3D { > + TUNNEL_LEVEL_INNER, 2, {{proto_hdr_ipv6_with_prot, > proto_hdr_udp}} }; > + > +struct virtchnl_proto_hdrs ice_dcf_inner_ipv6_tcp_tmplt =3D { > + TUNNEL_LEVEL_INNER, 2, {{proto_hdr_ipv6_with_prot, > proto_hdr_tcp}} }; > + > +struct virtchnl_proto_hdrs ice_dcf_inner_ipv6_sctp_tmplt =3D { > + TUNNEL_LEVEL_INNER, 2, {{proto_hdr_ipv6, proto_hdr_sctp}} }; > + > static __rte_always_inline int > ice_dcf_send_cmd_req_no_irq(struct ice_dcf_hw *hw, enum virtchnl_ops op, > uint8_t *req_msg, uint16_t req_msglen) @@ -236,7 > +360,7 @@ ice_dcf_get_vf_resource(struct ice_dcf_hw *hw) > VIRTCHNL_VF_CAP_ADV_LINK_SPEED | VIRTCHNL_VF_CAP_DCF | > VIRTCHNL_VF_OFFLOAD_VLAN_V2 | > VF_BASE_MODE_OFFLOADS | > VIRTCHNL_VF_OFFLOAD_RX_FLEX_DESC | > - VIRTCHNL_VF_OFFLOAD_QOS; > + VIRTCHNL_VF_OFFLOAD_QOS | > VIRTCHNL_VF_OFFLOAD_ADV_RSS_PF; >=20 > err =3D ice_dcf_send_cmd_req_no_irq(hw, > VIRTCHNL_OP_GET_VF_RESOURCES, > (uint8_t *)&caps, sizeof(caps)); @@ - > 849,6 +973,122 @@ ice_dcf_configure_rss_lut(struct ice_dcf_hw *hw) > return err; > } >=20 > +int > +ice_dcf_add_del_rss_cfg(struct ice_dcf_hw *hw, > + struct virtchnl_rss_cfg *rss_cfg, bool add) { > + struct dcf_virtchnl_cmd args; > + int err; > + > + memset(&args, 0, sizeof(args)); > + > + args.v_op =3D add ? VIRTCHNL_OP_ADD_RSS_CFG : > + VIRTCHNL_OP_DEL_RSS_CFG; > + args.req_msglen =3D sizeof(*rss_cfg); > + args.req_msg =3D (uint8_t *)rss_cfg; > + args.rsp_msglen =3D 0; > + args.rsp_buflen =3D 0; > + args.rsp_msgbuf =3D NULL; > + args.pending =3D 0; > + > + err =3D ice_dcf_execute_virtchnl_cmd(hw, &args); > + if (err) > + PMD_DRV_LOG(ERR, > + "Failed to execute command of %s", > + add ? "OP_ADD_RSS_CFG" : > + "OP_DEL_RSS_INPUT_CFG"); > + > + return err; > +} > + > +int > +ice_dcf_set_hena(struct ice_dcf_hw *hw, uint64_t hena) { > + struct virtchnl_rss_hena vrh; > + struct dcf_virtchnl_cmd args; > + int err; > + > + memset(&args, 0, sizeof(args)); > + > + vrh.hena =3D hena; > + args.v_op =3D VIRTCHNL_OP_SET_RSS_HENA; > + args.req_msglen =3D sizeof(vrh); > + args.req_msg =3D (uint8_t *)&vrh; > + args.rsp_msglen =3D 0; > + args.rsp_buflen =3D 0; > + args.rsp_msgbuf =3D NULL; > + args.pending =3D 0; > + > + err =3D ice_dcf_execute_virtchnl_cmd(hw, &args); > + if (err) > + PMD_INIT_LOG(ERR, "Failed to execute OP_SET_RSS_HENA"); > + > + return err; > +} > + > +int > +ice_dcf_rss_hash_set(struct ice_dcf_hw *hw, uint64_t rss_hf, bool add) > +{ > + struct rte_eth_dev *dev =3D hw->eth_dev; > + struct rte_eth_rss_conf *rss_conf; > + struct virtchnl_rss_cfg rss_cfg; > + > + rss_conf =3D &dev->data->dev_conf.rx_adv_conf.rss_conf; > +#define ICE_DCF_RSS_HF_ALL ( \ > + RTE_ETH_RSS_IPV4 | \ > + RTE_ETH_RSS_IPV6 | \ > + RTE_ETH_RSS_NONFRAG_IPV4_UDP | \ > + RTE_ETH_RSS_NONFRAG_IPV6_UDP | \ > + RTE_ETH_RSS_NONFRAG_IPV4_TCP | \ > + RTE_ETH_RSS_NONFRAG_IPV6_TCP | \ > + RTE_ETH_RSS_NONFRAG_IPV4_SCTP | \ > + RTE_ETH_RSS_NONFRAG_IPV6_SCTP) > + > + rss_cfg.rss_algorithm =3D VIRTCHNL_RSS_ALG_TOEPLITZ_ASYMMETRIC; > + if (rss_hf & RTE_ETH_RSS_IPV4) { > + rss_cfg.proto_hdrs =3D ice_dcf_inner_ipv4_tmplt; > + ice_dcf_add_del_rss_cfg(hw, &rss_cfg, add); > + } > + > + if (rss_hf & RTE_ETH_RSS_NONFRAG_IPV4_UDP) { > + rss_cfg.proto_hdrs =3D ice_dcf_inner_ipv4_udp_tmplt; > + ice_dcf_add_del_rss_cfg(hw, &rss_cfg, add); > + } > + > + if (rss_hf & RTE_ETH_RSS_NONFRAG_IPV4_TCP) { > + rss_cfg.proto_hdrs =3D ice_dcf_inner_ipv4_tcp_tmplt; > + ice_dcf_add_del_rss_cfg(hw, &rss_cfg, add); > + } > + > + if (rss_hf & RTE_ETH_RSS_NONFRAG_IPV4_SCTP) { > + rss_cfg.proto_hdrs =3D ice_dcf_inner_ipv4_sctp_tmplt; > + ice_dcf_add_del_rss_cfg(hw, &rss_cfg, add); > + } > + > + if (rss_hf & RTE_ETH_RSS_IPV6) { > + rss_cfg.proto_hdrs =3D ice_dcf_inner_ipv6_tmplt; > + ice_dcf_add_del_rss_cfg(hw, &rss_cfg, add); > + } > + > + if (rss_hf & RTE_ETH_RSS_NONFRAG_IPV6_UDP) { > + rss_cfg.proto_hdrs =3D ice_dcf_inner_ipv6_udp_tmplt; > + ice_dcf_add_del_rss_cfg(hw, &rss_cfg, add); > + } > + > + if (rss_hf & RTE_ETH_RSS_NONFRAG_IPV6_TCP) { > + rss_cfg.proto_hdrs =3D ice_dcf_inner_ipv6_tcp_tmplt; > + ice_dcf_add_del_rss_cfg(hw, &rss_cfg, add); > + } > + > + if (rss_hf & RTE_ETH_RSS_NONFRAG_IPV6_SCTP) { > + rss_cfg.proto_hdrs =3D ice_dcf_inner_ipv6_sctp_tmplt; > + ice_dcf_add_del_rss_cfg(hw, &rss_cfg, add); > + } > + > + rss_conf->rss_hf =3D rss_hf & ICE_DCF_RSS_HF_ALL; > + return 0; > +} > + > int > ice_dcf_init_rss(struct ice_dcf_hw *hw) { @@ -899,6 +1139,23 @@ > ice_dcf_init_rss(struct ice_dcf_hw *hw) > if (ret) > return ret; >=20 > + /* Clear existing RSS. */ > + ret =3D ice_dcf_set_hena(hw, 0); > + > + /* It is a workaround, temporarily allow error to be returned > + * due to possible lack of PF handling for hena =3D 0. > + */ > + if (ret) > + PMD_DRV_LOG(WARNING, "fail to clean existing RSS," > + "lack PF support"); > + > + /* Set RSS hash configuration based on rss_conf->rss_hf. */ > + ret =3D ice_dcf_rss_hash_set(hw, rss_conf->rss_hf, true); > + if (ret) { > + PMD_DRV_LOG(ERR, "fail to set default RSS"); > + return ret; > + } > + > return 0; > } >=20 > diff --git a/drivers/net/ice/ice_dcf.h b/drivers/net/ice/ice_dcf.h index > 7f42ebabe9..a289e65c56 100644 > --- a/drivers/net/ice/ice_dcf.h > +++ b/drivers/net/ice/ice_dcf.h > @@ -147,6 +147,10 @@ int ice_dcf_init_hw(struct rte_eth_dev *eth_dev, > struct ice_dcf_hw *hw); void ice_dcf_uninit_hw(struct rte_eth_dev *eth_d= ev, > struct ice_dcf_hw *hw); int ice_dcf_configure_rss_key(struct ice_dcf_hw > *hw); int ice_dcf_configure_rss_lut(struct ice_dcf_hw *hw); > +int ice_dcf_add_del_rss_cfg(struct ice_dcf_hw *hw, > + struct virtchnl_rss_cfg *rss_cfg, bool add); int > +ice_dcf_set_hena(struct ice_dcf_hw *hw, uint64_t hena); int > +ice_dcf_rss_hash_set(struct ice_dcf_hw *hw, uint64_t rss_hf, bool add); > int ice_dcf_init_rss(struct ice_dcf_hw *hw); int > ice_dcf_configure_queues(struct ice_dcf_hw *hw); int > ice_dcf_config_irq_map(struct ice_dcf_hw *hw); diff --git > a/drivers/net/ice/ice_dcf_ethdev.c b/drivers/net/ice/ice_dcf_ethdev.c > index dcbf2af5b0..e399bc4eca 100644 > --- a/drivers/net/ice/ice_dcf_ethdev.c > +++ b/drivers/net/ice/ice_dcf_ethdev.c > @@ -1400,6 +1400,7 @@ ice_dcf_dev_rss_hash_update(struct rte_eth_dev > *dev, { > struct ice_dcf_adapter *adapter =3D dev->data->dev_private; > struct ice_dcf_hw *hw =3D &adapter->real_hw; > + int ret; >=20 > if (!(hw->vf_res->vf_cap_flags & VIRTCHNL_VF_OFFLOAD_RSS_PF)) > return -ENOTSUP; > @@ -1418,7 +1419,28 @@ ice_dcf_dev_rss_hash_update(struct rte_eth_dev > *dev, >=20 > rte_memcpy(hw->rss_key, rss_conf->rss_key, rss_conf->rss_key_len); >=20 > - return ice_dcf_configure_rss_key(hw); > + ret =3D ice_dcf_configure_rss_key(hw); > + if (ret) > + return ret; > + > + /* Clear existing RSS. */ > + ret =3D ice_dcf_set_hena(hw, 0); > + > + /* It is a workaround, temporarily allow error to be returned > + * due to possible lack of PF handling for hena =3D 0. > + */ > + if (ret) > + PMD_DRV_LOG(WARNING, "fail to clean existing RSS," > + "lack PF support"); > + > + /* Set new RSS configuration. */ > + ret =3D ice_dcf_rss_hash_set(hw, rss_conf->rss_hf, true); > + if (ret) { > + PMD_DRV_LOG(ERR, "fail to set new RSS"); > + return ret; > + } > + > + return 0; > } >=20 > static int > -- > 2.25.1