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 BC9DDA04EF; Mon, 25 May 2020 08:51:03 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id EBE1F1D688; Mon, 25 May 2020 08:51:02 +0200 (CEST) Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by dpdk.org (Postfix) with ESMTP id 78CD11D678 for ; Mon, 25 May 2020 08:51:00 +0200 (CEST) IronPort-SDR: 3CgGziiGYguUvgFt8L0b4OnvDXHwHvNaKzpqxDF+M85b23jmcckcIRkE2VS/RPT0n1nHh3lHOi adUcRc80RDTA== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga004.jf.intel.com ([10.7.209.38]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 May 2020 23:50:58 -0700 IronPort-SDR: IipX0EQ25OeIeoKe6kICvvgasQH4P1yD7pg+Swu6+XygacH0pm2nDAmluOD2jWx3wTY6iNTD8X j3kE7GkfhUdg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.73,432,1583222400"; d="scan'208";a="413421137" Received: from fmsmsx106.amr.corp.intel.com ([10.18.124.204]) by orsmga004.jf.intel.com with ESMTP; 24 May 2020 23:50:58 -0700 Received: from fmsmsx121.amr.corp.intel.com (10.18.125.36) by FMSMSX106.amr.corp.intel.com (10.18.124.204) with Microsoft SMTP Server (TLS) id 14.3.439.0; Sun, 24 May 2020 23:50:57 -0700 Received: from FMSEDG001.ED.cps.intel.com (10.1.192.133) by fmsmsx121.amr.corp.intel.com (10.18.125.36) with Microsoft SMTP Server (TLS) id 14.3.439.0; Sun, 24 May 2020 23:50:58 -0700 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (104.47.58.173) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (TLS) id 14.3.439.0; Sun, 24 May 2020 23:50:57 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Ed4OmJKH3+H0x0vVFtC+wWgRP+4VCljdGF6ZkJrYenip3L22WdI8Klx33rAp4kxsnbcZF8BwlA3ht55hXpUc/wWAieZQ6A7f4woVnL8j6ePHMsQvjP/oUU6NdsgMBlxZD0gB08DItMRaoxHfHeQE2jVOhIKid7L2u4jPSFpnS/b3yI+ege47z8cPt+D74J7xteAvxxb+UJa8nIfWPvQQPkkTLoYttinWmDAx/kIa++d5gBzKorBcUmJH6Gz5cQbl1SMtr0C2XJHXvS0d1HVxQpcXGK4zo6MCJWwE5mnLuiE7IQ1RhPgRKLBbPXXGqAVzarJ8DVAL+jRpB8Xx0ZF7Vg== 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=aKf0ed8Nw/Zqnp2ElaVdq9zhaGA8zMrY5qbauytfg7g=; b=hfLURjRDUwew4dPkbpnj6iCq8B7WZIqXpAHedC+fb5dPR1BNaEJ3ODLIID1H/v9IkmWNFwbWZcRDkjs2GOmZVFyuOulCrtMRTqa5a5mTJw7lIfGgZWbDvBtDcPgrvu5tb2k5WS3hoWYyBqpaNk2qdTeqchHiLULqGIi/QPUSGyoUcJzm3DBAWmA8I04lJ/nT9VUaYltCybvV/Nx1q360PmfOhnP3AudhxvFzs93LOqXf6b8o79ezpHsf/tTx19JFtOQZCAFe98cU7PAfpXp6SOBlXKIES1eQ4YSQCLix6nWoe325aPTfWXC1N7BCn4K6ZnlnNAw8uIidt/FviwQZZA== 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=aKf0ed8Nw/Zqnp2ElaVdq9zhaGA8zMrY5qbauytfg7g=; b=PIse57JMmhEQgjFkrjcVHjbbLSc4jqf30umwpFhxFtp/EJhzFHKPE75giBFcBZdgphlZCHaD28b8mpWsFtgCN+lNFwxkG6qOPZnoQ9kULfPghTNa8jvwJsrkCn2dgppkp744Bq0mvEZCatEAX2z0sih83PkYoNApkcc1TnJGhx0= Received: from BYAPR11MB2664.namprd11.prod.outlook.com (2603:10b6:a02:c7::14) by BYAPR11MB3846.namprd11.prod.outlook.com (2603:10b6:a03:f5::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3021.27; Mon, 25 May 2020 06:50:54 +0000 Received: from BYAPR11MB2664.namprd11.prod.outlook.com ([fe80::bde5:30a8:7c5e:6be2]) by BYAPR11MB2664.namprd11.prod.outlook.com ([fe80::bde5:30a8:7c5e:6be2%7]) with mapi id 15.20.3021.027; Mon, 25 May 2020 06:50:54 +0000 From: "He, Zhiwei" To: "Guo, Jia" , "Xing, Beilei" , "Zhang, Qi Z" , "Wu, Jingjing" CC: "Ye, Xiaolong" , "dev@dpdk.org" , "Guo, Jia" Thread-Topic: [dpdk-dev] [dpdk-dev v2] net/iavf: fix protocol field selector configure Thread-Index: AQHWMY+pvGBSBnwGME68OIVk2sQh7ai4XfJg Date: Mon, 25 May 2020 06:50:53 +0000 Message-ID: References: <20200522231731.40803-1-jia.guo@intel.com> <20200524055230.49582-1-jia.guo@intel.com> In-Reply-To: <20200524055230.49582-1-jia.guo@intel.com> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: 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.102.204.38] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: d49e2858-af4c-42b0-aba6-08d80077f86c x-ms-traffictypediagnostic: BYAPR11MB3846: 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:2582; x-forefront-prvs: 0414DF926F x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: h+nN9B6zhK6V4vO91lNptJPE8C6Ty8BYG+wRliEg+I4dtfBpPermPLQmHvqiFT58fs/qSH0ainqHHdFkDtArRwfJYlRSwiC7WhcW069bqNTXVaZQ0Ndq9+VxgqXRwnjG0MNkWJaP0rw6hfxeEicI5ljAlc7kFlY9QQO2xehR4fQHskqBmW0iH2k8yX+VLW60pYkor2SK9/N+CyIYbLJhJSAZZhn5WXdulRGxpKSVrf/dL5n4kANp07BWhnG5FAEqWyl33Xog20dFeY4E6mYx1YvBi/SZ3AYeX3MHBUN1gD2iSY1wOgyCMI5FjcI83w7j x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BYAPR11MB2664.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(376002)(136003)(366004)(346002)(396003)(39860400002)(64756008)(76116006)(66556008)(66446008)(478600001)(4326008)(9686003)(6636002)(66476007)(66946007)(55016002)(316002)(8936002)(7696005)(186003)(26005)(53546011)(54906003)(107886003)(110136005)(71200400001)(30864003)(6506007)(52536014)(2906002)(33656002)(5660300002)(86362001)(559001)(579004); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata: CojlLlRHIRnMXjVgNCx1/7Q4x8VKkonGXGJdnrAVTDPfRsGQpgmZym3xJZ8m7p3qtKDYsPc2K+aGmY5yMPfCpDtNH0WGWERKT/TjqB90hrAJo67d2oII3rG/aU+bKv1RfygSpfkwz8ag++7yFdtbPuS9aHHtGXjB+M6VOLDBX+4Ct3yARApRLuyfPvxYw977KxAV4DKmuv8zGWOTUFoXsCGrxW3EVxeBa2cwRcXwCEsofkGHIHHtR1hwJb/yhuXQ2oXN8YQx4hQI4Z3Smruzao0yyDyQHAPxu9inifeEQvj30DGF/wjD5QUq+0M4nsiRtlS5HHF72bylFH7/cXKx94Q4JJ0K2f2gc+CFb8ZkwXA7HMRd6q7+WgTRsLX8MY96Zh//2SLnP5tQi8l5mLCcSsWfXLqxwzcXPx+a8WY6VJ37yOFJLnlFQV8faFUHFsVTPCiG+6B6riLIr8kH955KLKnklrx3XOi3V5QuQ1YmlIMG2wX1Vp4jLKi19XnosRNO Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: d49e2858-af4c-42b0-aba6-08d80077f86c X-MS-Exchange-CrossTenant-originalarrivaltime: 25 May 2020 06:50:53.3899 (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: E1GDlGQ9m5qN4i8Xm6rjtxZw145zW61qoJamKg9XZKRaVlqxcT5ODHVt1tNx+zB+19HeG5EJ4AZVQ2A+eN+heA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR11MB3846 X-OriginatorOrg: intel.com Subject: Re: [dpdk-dev] [dpdk-dev v2] net/iavf: fix protocol field selector configure 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: Zhiwei.He -----Original Message----- From: dev On Behalf Of Jeff Guo Sent: Sunday, May 24, 2020 1:53 PM To: Xing, Beilei ; Zhang, Qi Z ; Wu, Jingjing Cc: Ye, Xiaolong ; dev@dpdk.org; Guo, Jia Subject: [dpdk-dev] [dpdk-dev v2] net/iavf: fix protocol field selector con= figure When VFs configure the rss rule by virtchnl, it need to set bit mask into t= he field selector for the protocol, then PF got the configure massage and p= arse the field selector to the corresponding protocol field. Fixes: 7be10c3004be ("net/iavf: add RSS configuration for VF") Signed-off-by: Jeff Guo --- drivers/net/iavf/iavf_hash.c | 476 +++++++++++++++++++++-------------- 1 file changed, 281 insertions(+), 195 deletions(-) diff --git a/drivers/net/iavf/iavf_hash.c b/drivers/net/iavf/iavf_hash.c in= dex af528863b..a7691ef0c 100644 --- a/drivers/net/iavf/iavf_hash.c +++ b/drivers/net/iavf/iavf_hash.c @@ -35,6 +35,12 @@ enum iavf_pattern_hint_type { IAVF_PATTERN_HINT_IPV6_SCTP, }; =20 +enum iavf_gtpu_hint { + IAVF_GTPU_HINT_DOWNLINK, + IAVF_GTPU_HINT_UPLINK, + IAVF_GTPU_HINT_NONE, +}; + struct iavf_pattern_match_type { enum iavf_pattern_hint_type phint_type; }; @@ -43,6 +49,7 @@ struct iavf= _hash_match_type { enum iavf_pattern_hint_type phint_type; uint64_t hash_type; struct virtchnl_proto_hdrs *proto_hdrs; + enum iavf_gtpu_hint gtpu_hint; }; =20 struct iavf_rss_meta { @@ -147,9 +154,6 @@ static struct iavf_pattern_match_item iavf_hash_pattern= _list[] =3D { {iavf_pattern_empty, IAVF_INSET_NONE, &phint_empty}, }; =20 -#define GTP_EH_PDU_LINK_UP 1 -#define GTP_EH_PDU_LINK_DWN 0 - #define TUNNEL_LEVEL_OUTER 0 #define TUNNEL_LEVEL_FIRST_INNER 1 =20 @@ -160,103 +164,112 @@ static struct iavf_pattern_match_item iavf_hash_pat= tern_list[] =3D { #define BUFF_NOUSED 0 #define FIELD_FOR_PROTO_ONLY 0 =20 +#define FIELD_SELECTOR(proto_hdr_field) \ + (1UL << ((proto_hdr_field) & PROTO_HDR_FIELD_MASK)) + #define proto_hint_eth_src { \ - VIRTCHNL_PROTO_HDR_ETH, VIRTCHNL_PROTO_HDR_ETH_SRC, {BUFF_NOUSED } } + VIRTCHNL_PROTO_HDR_ETH, FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_ETH_SRC), \ + {BUFF_NOUSED } } =20 #define proto_hint_eth_dst { \ - VIRTCHNL_PROTO_HDR_ETH, VIRTCHNL_PROTO_HDR_ETH_DST, {BUFF_NOUSED } } + VIRTCHNL_PROTO_HDR_ETH, FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_ETH_DST), \ + {BUFF_NOUSED } } =20 #define proto_hint_eth_only { \ VIRTCHNL_PROTO_HDR_ETH, FIELD_FOR_PROTO_ONLY, {BUFF_NOUSED } } =20 #define proto_hint_eth { \ VIRTCHNL_PROTO_HDR_ETH, \ - VIRTCHNL_PROTO_HDR_ETH_SRC | VIRTCHNL_PROTO_HDR_ETH_DST, \ - {BUFF_NOUSED } } + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_ETH_SRC) | \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_ETH_DST), {BUFF_NOUSED } } =20 #define proto_hint_svlan { \ - VIRTCHNL_PROTO_HDR_S_VLAN, VIRTCHNL_PROTO_HDR_S_VLAN_ID, \ - {BUFF_NOUSED } } + VIRTCHNL_PROTO_HDR_S_VLAN, \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_S_VLAN_ID), {BUFF_NOUSED } } =20 #define proto_hint_cvlan { \ - VIRTCHNL_PROTO_HDR_C_VLAN, VIRTCHNL_PROTO_HDR_C_VLAN_ID, \ - {BUFF_NOUSED } } + VIRTCHNL_PROTO_HDR_C_VLAN, \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_C_VLAN_ID), {BUFF_NOUSED } } =20 #define proto_hint_ipv4_src { \ - VIRTCHNL_PROTO_HDR_IPV4, VIRTCHNL_PROTO_HDR_IPV4_SRC, {BUFF_NOUSED } } + VIRTCHNL_PROTO_HDR_IPV4, FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV4_SRC), \ + {BUFF_NOUSED } } =20 #define proto_hint_ipv4_dst { \ - VIRTCHNL_PROTO_HDR_IPV4, VIRTCHNL_PROTO_HDR_IPV4_DST, {BUFF_NOUSED } } + VIRTCHNL_PROTO_HDR_IPV4, FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV4_DST), \ + {BUFF_NOUSED } } =20 #define proto_hint_ipv4_only { \ VIRTCHNL_PROTO_HDR_IPV4, FIELD_FOR_PROTO_ONLY, {BUFF_NOUSED } } =20 #define proto_hint_ipv4 { \ VIRTCHNL_PROTO_HDR_IPV4, \ - VIRTCHNL_PROTO_HDR_IPV4_SRC | VIRTCHNL_PROTO_HDR_IPV4_DST, \ - {BUFF_NOUSED } } + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV4_SRC) | \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV4_DST), {BUFF_NOUSED } } =20 #define proto_hint_udp_src_port { \ - VIRTCHNL_PROTO_HDR_UDP, VIRTCHNL_PROTO_HDR_UDP_SRC_PORT, \ - {BUFF_NOUSED } } + VIRTCHNL_PROTO_HDR_UDP, \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_UDP_SRC_PORT), {BUFF_NOUSED } } =20 #define proto_hint_udp_dst_port { \ - VIRTCHNL_PROTO_HDR_UDP, VIRTCHNL_PROTO_HDR_UDP_DST_PORT, \ - {BUFF_NOUSED } } + VIRTCHNL_PROTO_HDR_UDP, \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_UDP_DST_PORT), {BUFF_NOUSED } } =20 #define proto_hint_udp_only { \ VIRTCHNL_PROTO_HDR_UDP, FIELD_FOR_PROTO_ONLY, {BUFF_NOUSED } } =20 #define proto_hint_udp { \ VIRTCHNL_PROTO_HDR_UDP, \ - VIRTCHNL_PROTO_HDR_UDP_SRC_PORT | VIRTCHNL_PROTO_HDR_UDP_DST_PORT, \ - {BUFF_NOUSED } } + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_UDP_SRC_PORT) | \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_UDP_DST_PORT), {BUFF_NOUSED } } =20 #define proto_hint_tcp_src_port { \ - VIRTCHNL_PROTO_HDR_TCP, VIRTCHNL_PROTO_HDR_TCP_SRC_PORT, \ - {BUFF_NOUSED } } + VIRTCHNL_PROTO_HDR_TCP, \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_TCP_SRC_PORT), {BUFF_NOUSED } } =20 #define proto_hint_tcp_dst_port { \ - VIRTCHNL_PROTO_HDR_TCP, VIRTCHNL_PROTO_HDR_TCP_DST_PORT, \ - {BUFF_NOUSED } } + VIRTCHNL_PROTO_HDR_TCP, \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_TCP_DST_PORT), {BUFF_NOUSED } } =20 #define proto_hint_tcp_only { \ VIRTCHNL_PROTO_HDR_TCP, FIELD_FOR_PROTO_ONLY, {BUFF_NOUSED } } =20 #define proto_hint_tcp { \ VIRTCHNL_PROTO_HDR_TCP, \ - VIRTCHNL_PROTO_HDR_TCP_SRC_PORT | VIRTCHNL_PROTO_HDR_TCP_DST_PORT, \ - {BUFF_NOUSED } } + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_TCP_SRC_PORT) | \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_TCP_DST_PORT), {BUFF_NOUSED } } =20 #define proto_hint_sctp_src_port { \ - VIRTCHNL_PROTO_HDR_SCTP, VIRTCHNL_PROTO_HDR_SCTP_SRC_PORT, \ - {BUFF_NOUSED } } + VIRTCHNL_PROTO_HDR_SCTP, \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_SCTP_SRC_PORT), {BUFF_NOUSED } } =20 #define proto_hint_sctp_dst_port { \ - VIRTCHNL_PROTO_HDR_SCTP, VIRTCHNL_PROTO_HDR_SCTP_DST_PORT, \ - {BUFF_NOUSED } } + VIRTCHNL_PROTO_HDR_SCTP, \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_SCTP_DST_PORT), {BUFF_NOUSED } } =20 #define proto_hint_sctp_only { \ VIRTCHNL_PROTO_HDR_SCTP, FIELD_FOR_PROTO_ONLY, {BUFF_NOUSED } } =20 #define proto_hint_sctp { \ VIRTCHNL_PROTO_HDR_SCTP, \ - VIRTCHNL_PROTO_HDR_SCTP_SRC_PORT | VIRTCHNL_PROTO_HDR_SCTP_DST_PORT, \ - {BUFF_NOUSED } } + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_SCTP_SRC_PORT) | \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_SCTP_DST_PORT), {BUFF_NOUSED } } =20 #define proto_hint_ipv6_src { \ - VIRTCHNL_PROTO_HDR_IPV6, VIRTCHNL_PROTO_HDR_IPV6_SRC, {BUFF_NOUSED } } + VIRTCHNL_PROTO_HDR_IPV6, FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV6_SRC), \ + {BUFF_NOUSED } } =20 #define proto_hint_ipv6_dst { \ - VIRTCHNL_PROTO_HDR_IPV6, VIRTCHNL_PROTO_HDR_IPV6_DST, {BUFF_NOUSED } } + VIRTCHNL_PROTO_HDR_IPV6, FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV6_DST), \ + {BUFF_NOUSED } } =20 #define proto_hint_ipv6_only { \ VIRTCHNL_PROTO_HDR_IPV6, FIELD_FOR_PROTO_ONLY, {BUFF_NOUSED } } =20 #define proto_hint_ipv6 { \ VIRTCHNL_PROTO_HDR_IPV6, \ - VIRTCHNL_PROTO_HDR_IPV6_SRC | VIRTCHNL_PROTO_HDR_IPV6_DST, \ - {BUFF_NOUSED } } + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV6_SRC) | \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV6_DST), {BUFF_NOUSED } } =20 #define proto_hint_gtpu_up_only { \ VIRTCHNL_PROTO_HDR_GTPU_EH_PDU_UP, \ @@ -268,18 +281,19 @@ static struct iavf_pattern_match_item iavf_hash_patte= rn_list[] =3D { =20 #define proto_hint_esp { \ VIRTCHNL_PROTO_HDR_ESP, \ - VIRTCHNL_PROTO_HDR_ESP_SPI, {BUFF_NOUSED } } + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_ESP_SPI), {BUFF_NOUSED } } =20 #define proto_hint_ah { \ VIRTCHNL_PROTO_HDR_AH, \ - VIRTCHNL_PROTO_HDR_AH_SPI, {BUFF_NOUSED } } + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_AH_SPI), {BUFF_NOUSED } } =20 #define proto_hint_l2tpv3 { \ VIRTCHNL_PROTO_HDR_L2TPV3, \ - VIRTCHNL_PROTO_HDR_L2TPV3_SESS_ID, {BUFF_NOUSED } } + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_L2TPV3_SESS_ID), {BUFF_NOUSED } } =20 #define proto_hint_pfcp { \ - VIRTCHNL_PROTO_HDR_PFCP, VIRTCHNL_PROTO_HDR_PFCP_SEID, {BUFF_NOUSED } } + VIRTCHNL_PROTO_HDR_PFCP, \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_PFCP_SEID), {BUFF_NOUSED } } =20 struct virtchnl_proto_hdrs hdrs_hint_eth_src =3D { TUNNEL_LEVEL_OUTER, PROTO_COUNT_ONE, {proto_hint_eth_src } @@ -314,6 +328= ,16 @@ struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_gtpu_up =3D { proto_hint_ipv4_src } }; =20 +struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_gtpu_dwn =3D { + TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_dwn_only, + proto_hint_ipv4_src } +}; + +struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_gtpu_up =3D { + TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_up_only, + proto_hint_ipv4_dst } +}; + struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_gtpu_dwn =3D { TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_dwn_only, proto_hint_ipv4_dst } @@ -589,272 +613,333 @@ struct virtchnl_proto_hdrs hdrs_hint_ipv6_sctp =3D = { * The first member is pattern hint type, * the second member is hash type, * the third member is virtchnl protocol hdrs. + * the forth member is downlink/uplink type. */ struct iavf_hash_match_type iavf_hash_type_list[] =3D { /* IPV4 */ - {IAVF_PATTERN_HINT_IPV4, ETH_RSS_L2_SRC_ONLY, &hdrs_hint_eth_src}, - {IAVF_PATTERN_HINT_IPV4, ETH_RSS_L2_DST_ONLY, &hdrs_hint_eth_dst}, + {IAVF_PATTERN_HINT_IPV4, ETH_RSS_L2_SRC_ONLY, &hdrs_hint_eth_src, + IAVF_GTPU_HINT_NONE}, + {IAVF_PATTERN_HINT_IPV4, ETH_RSS_L2_DST_ONLY, &hdrs_hint_eth_dst, + IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV4, ETH_RSS_ETH | ETH_RSS_L2_SRC_ONLY, - &hdrs_hint_eth_src}, + &hdrs_hint_eth_src, IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV4, ETH_RSS_ETH | ETH_RSS_L2_DST_ONLY, - &hdrs_hint_eth_dst}, - {IAVF_PATTERN_HINT_IPV4, ETH_RSS_ETH, &hdrs_hint_eth}, - {IAVF_PATTERN_HINT_IPV4, ETH_RSS_S_VLAN, &hdrs_hint_svlan}, - {IAVF_PATTERN_HINT_IPV4, ETH_RSS_C_VLAN, &hdrs_hint_cvlan}, - {IAVF_PATTERN_HINT_IPV4, ETH_RSS_L3_SRC_ONLY, &hdrs_hint_ipv4_src}, - {IAVF_PATTERN_HINT_IPV4, ETH_RSS_L3_DST_ONLY, &hdrs_hint_ipv4_dst}, + &hdrs_hint_eth_dst, IAVF_GTPU_HINT_NONE}, + {IAVF_PATTERN_HINT_IPV4, ETH_RSS_ETH, &hdrs_hint_eth, + IAVF_GTPU_HINT_NONE}, + {IAVF_PATTERN_HINT_IPV4, ETH_RSS_S_VLAN, &hdrs_hint_svlan, + IAVF_GTPU_HINT_NONE}, + {IAVF_PATTERN_HINT_IPV4, ETH_RSS_C_VLAN, &hdrs_hint_cvlan, + IAVF_GTPU_HINT_NONE}, + {IAVF_PATTERN_HINT_IPV4, ETH_RSS_L3_SRC_ONLY, &hdrs_hint_ipv4_src, + IAVF_GTPU_HINT_NONE}, + {IAVF_PATTERN_HINT_IPV4, ETH_RSS_L3_DST_ONLY, &hdrs_hint_ipv4_dst, + IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV4, ETH_RSS_IPV4 | ETH_RSS_L3_SRC_ONLY, - &hdrs_hint_ipv4_src}, + &hdrs_hint_ipv4_src, IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV4, ETH_RSS_IPV4 | ETH_RSS_L3_DST_ONLY, - &hdrs_hint_ipv4_dst}, - {IAVF_PATTERN_HINT_IPV4, ETH_RSS_ESP, &hdrs_hint_ipv4_esp}, - {IAVF_PATTERN_HINT_IPV4, ETH_RSS_AH, &hdrs_hint_ipv4_ah}, - {IAVF_PATTERN_HINT_IPV4, ETH_RSS_L2TPV3, &hdrs_hint_ipv4_l2tpv3}, - {IAVF_PATTERN_HINT_IPV4, ETH_RSS_IPV4, &hdrs_hint_ipv4}, + &hdrs_hint_ipv4_dst, IAVF_GTPU_HINT_NONE}, + {IAVF_PATTERN_HINT_IPV4, ETH_RSS_ESP, &hdrs_hint_ipv4_esp, + IAVF_GTPU_HINT_NONE}, + {IAVF_PATTERN_HINT_IPV4, ETH_RSS_AH, &hdrs_hint_ipv4_ah, + IAVF_GTPU_HINT_NONE}, + {IAVF_PATTERN_HINT_IPV4, ETH_RSS_L2TPV3, &hdrs_hint_ipv4_l2tpv3, + IAVF_GTPU_HINT_NONE}, + {IAVF_PATTERN_HINT_IPV4, ETH_RSS_IPV4, &hdrs_hint_ipv4, + IAVF_GTPU_HINT_NONE}, /* IPV4 UDP */ {IAVF_PATTERN_HINT_IPV4_UDP, ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY, - &hdrs_hint_ipv4_src_udp_src_port}, + &hdrs_hint_ipv4_src_udp_src_port, IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV4_UDP, ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY, - &hdrs_hint_ipv4_src_udp_dst_port}, + &hdrs_hint_ipv4_src_udp_dst_port, IAVF_GTPU_HINT_NONE}, + {IAVF_PATTERN_HINT_IPV4_UDP, ETH_RSS_L3_SRC_ONLY | ETH_RSS_GTPU, + &hdrs_hint_ipv4_src_gtpu_up, IAVF_GTPU_HINT_UPLINK}, {IAVF_PATTERN_HINT_IPV4_UDP, ETH_RSS_L3_SRC_ONLY | ETH_RSS_GTPU, - &hdrs_hint_ipv4_src_gtpu_up}, + &hdrs_hint_ipv4_src_gtpu_dwn, IAVF_GTPU_HINT_DOWNLINK}, {IAVF_PATTERN_HINT_IPV4_UDP, ETH_RSS_L3_SRC_ONLY, - &hdrs_hint_ipv4_src}, + &hdrs_hint_ipv4_src, IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV4_UDP, ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY, - &hdrs_hint_ipv4_dst_udp_src_port}, + &hdrs_hint_ipv4_dst_udp_src_port, IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV4_UDP, ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY, - &hdrs_hint_ipv4_dst_udp_dst_port}, + &hdrs_hint_ipv4_dst_udp_dst_port, IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV4_UDP, ETH_RSS_L3_DST_ONLY | ETH_RSS_GTPU, - &hdrs_hint_ipv4_dst_gtpu_dwn}, + &hdrs_hint_ipv4_dst_gtpu_up, IAVF_GTPU_HINT_UPLINK}, + {IAVF_PATTERN_HINT_IPV4_UDP, ETH_RSS_L3_DST_ONLY | ETH_RSS_GTPU, + &hdrs_hint_ipv4_dst_gtpu_dwn, IAVF_GTPU_HINT_DOWNLINK}, {IAVF_PATTERN_HINT_IPV4_UDP, ETH_RSS_L3_DST_ONLY, - &hdrs_hint_ipv4_dst}, + &hdrs_hint_ipv4_dst, IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV4_UDP, ETH_RSS_NONFRAG_IPV4_UDP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY, - &hdrs_hint_ipv4_src_udp_src_port}, + &hdrs_hint_ipv4_src_udp_src_port, IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV4_UDP, ETH_RSS_NONFRAG_IPV4_UDP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY, - &hdrs_hint_ipv4_src_udp_dst_port}, + &hdrs_hint_ipv4_src_udp_dst_port, IAVF_GTPU_HINT_NONE}, + {IAVF_PATTERN_HINT_IPV4_UDP, ETH_RSS_NONFRAG_IPV4_UDP | + ETH_RSS_L3_SRC_ONLY | ETH_RSS_GTPU, + &hdrs_hint_ipv4_src_gtpu_up, IAVF_GTPU_HINT_UPLINK}, {IAVF_PATTERN_HINT_IPV4_UDP, ETH_RSS_NONFRAG_IPV4_UDP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_GTPU, - &hdrs_hint_ipv4_src_gtpu_up}, + &hdrs_hint_ipv4_src_gtpu_dwn, IAVF_GTPU_HINT_DOWNLINK}, {IAVF_PATTERN_HINT_IPV4_UDP, ETH_RSS_NONFRAG_IPV4_UDP | - ETH_RSS_L3_SRC_ONLY, &hdrs_hint_ipv4_src}, + ETH_RSS_L3_SRC_ONLY, &hdrs_hint_ipv4_src, + IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV4_UDP, ETH_RSS_NONFRAG_IPV4_UDP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY, - &hdrs_hint_ipv4_dst_udp_src_port}, + &hdrs_hint_ipv4_dst_udp_src_port, IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV4_UDP, ETH_RSS_NONFRAG_IPV4_UDP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY, - &hdrs_hint_ipv4_dst_udp_dst_port}, + &hdrs_hint_ipv4_dst_udp_dst_port, IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV4_UDP, ETH_RSS_NONFRAG_IPV4_UDP | ETH_RSS_L3_DST_ONLY | ETH_RSS_GTPU, - &hdrs_hint_ipv4_dst_gtpu_dwn}, + &hdrs_hint_ipv4_dst_gtpu_up, IAVF_GTPU_HINT_UPLINK}, {IAVF_PATTERN_HINT_IPV4_UDP, ETH_RSS_NONFRAG_IPV4_UDP | - ETH_RSS_L3_DST_ONLY, &hdrs_hint_ipv4_dst}, + ETH_RSS_L3_DST_ONLY | ETH_RSS_GTPU, + &hdrs_hint_ipv4_dst_gtpu_dwn, IAVF_GTPU_HINT_DOWNLINK}, + {IAVF_PATTERN_HINT_IPV4_UDP, ETH_RSS_NONFRAG_IPV4_UDP | + ETH_RSS_L3_DST_ONLY, &hdrs_hint_ipv4_dst, + IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV4_UDP, ETH_RSS_L4_SRC_ONLY, - &hdrs_hint_ipv4_udp_src_port}, + &hdrs_hint_ipv4_udp_src_port, IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV4_UDP, ETH_RSS_L4_DST_ONLY, - &hdrs_hint_ipv4_udp_dst_port}, + &hdrs_hint_ipv4_udp_dst_port, IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV4_UDP, ETH_RSS_PFCP, - &hdrs_hint_ipv4_pfcp}, + &hdrs_hint_ipv4_pfcp, IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV4_UDP, ETH_RSS_NONFRAG_IPV4_UDP, - &hdrs_hint_ipv4_udp}, + &hdrs_hint_ipv4_udp, IAVF_GTPU_HINT_NONE}, /* IPV4 TCP */ {IAVF_PATTERN_HINT_IPV4_TCP, ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY, - &hdrs_hint_ipv4_src_tcp_src_port}, + &hdrs_hint_ipv4_src_tcp_src_port, IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV4_TCP, ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY, - &hdrs_hint_ipv4_src_tcp_dst_port}, + &hdrs_hint_ipv4_src_tcp_dst_port, IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV4_TCP, ETH_RSS_L3_SRC_ONLY, - &hdrs_hint_ipv4_src}, + &hdrs_hint_ipv4_src, IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV4_TCP, ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY, - &hdrs_hint_ipv4_dst_tcp_src_port}, + &hdrs_hint_ipv4_dst_tcp_src_port, IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV4_TCP, ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY, - &hdrs_hint_ipv4_dst_tcp_dst_port}, + &hdrs_hint_ipv4_dst_tcp_dst_port, IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV4_TCP, ETH_RSS_L3_DST_ONLY, - &hdrs_hint_ipv4_dst}, + &hdrs_hint_ipv4_dst, IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV4_TCP, ETH_RSS_NONFRAG_IPV4_TCP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY, - &hdrs_hint_ipv4_src_tcp_src_port}, + &hdrs_hint_ipv4_src_tcp_src_port, IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV4_TCP, ETH_RSS_NONFRAG_IPV4_TCP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY, - &hdrs_hint_ipv4_src_tcp_dst_port}, + &hdrs_hint_ipv4_src_tcp_dst_port, IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV4_TCP, ETH_RSS_NONFRAG_IPV4_TCP | - ETH_RSS_L3_SRC_ONLY, &hdrs_hint_ipv4_src}, + ETH_RSS_L3_SRC_ONLY, &hdrs_hint_ipv4_src, + IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV4_TCP, ETH_RSS_NONFRAG_IPV4_TCP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY, - &hdrs_hint_ipv4_dst_tcp_src_port}, + &hdrs_hint_ipv4_dst_tcp_src_port, IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV4_TCP, ETH_RSS_NONFRAG_IPV4_TCP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY, - &hdrs_hint_ipv4_dst_tcp_dst_port}, + &hdrs_hint_ipv4_dst_tcp_dst_port, IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV4_TCP, ETH_RSS_NONFRAG_IPV4_TCP | - ETH_RSS_L3_DST_ONLY, &hdrs_hint_ipv4_dst}, + ETH_RSS_L3_DST_ONLY, &hdrs_hint_ipv4_dst, + IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV4_TCP, ETH_RSS_L4_SRC_ONLY, - &hdrs_hint_ipv4_tcp_src_port}, + &hdrs_hint_ipv4_tcp_src_port, IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV4_TCP, ETH_RSS_L4_DST_ONLY, - &hdrs_hint_ipv4_tcp_dst_port}, + &hdrs_hint_ipv4_tcp_dst_port, IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV4_TCP, ETH_RSS_NONFRAG_IPV4_TCP, - &hdrs_hint_ipv4_tcp}, + &hdrs_hint_ipv4_tcp, IAVF_GTPU_HINT_NONE}, /* IPV4 SCTP */ - {IAVF_PATTERN_HINT_IPV4_SCTP, ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY, - &hdrs_hint_ipv4_src_sctp_src_port}, - {IAVF_PATTERN_HINT_IPV4_SCTP, ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY, - &hdrs_hint_ipv4_src_sctp_dst_port}, + {IAVF_PATTERN_HINT_IPV4_SCTP, ETH_RSS_L3_SRC_ONLY | + ETH_RSS_L4_SRC_ONLY, &hdrs_hint_ipv4_src_sctp_src_port, + IAVF_GTPU_HINT_NONE}, + {IAVF_PATTERN_HINT_IPV4_SCTP, ETH_RSS_L3_SRC_ONLY | + ETH_RSS_L4_DST_ONLY, &hdrs_hint_ipv4_src_sctp_dst_port, + IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV4_SCTP, ETH_RSS_L3_SRC_ONLY, - &hdrs_hint_ipv4_src}, - {IAVF_PATTERN_HINT_IPV4_SCTP, ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY, - &hdrs_hint_ipv4_dst_sctp_src_port}, - {IAVF_PATTERN_HINT_IPV4_SCTP, ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY, - &hdrs_hint_ipv4_dst_sctp_dst_port}, + &hdrs_hint_ipv4_src, IAVF_GTPU_HINT_NONE}, + {IAVF_PATTERN_HINT_IPV4_SCTP, ETH_RSS_L3_DST_ONLY | + ETH_RSS_L4_SRC_ONLY, &hdrs_hint_ipv4_dst_sctp_src_port, + IAVF_GTPU_HINT_NONE}, + {IAVF_PATTERN_HINT_IPV4_SCTP, ETH_RSS_L3_DST_ONLY | + ETH_RSS_L4_DST_ONLY, &hdrs_hint_ipv4_dst_sctp_dst_port, + IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV4_SCTP, ETH_RSS_L3_DST_ONLY, - &hdrs_hint_ipv4_dst}, + &hdrs_hint_ipv4_dst, IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV4_SCTP, ETH_RSS_NONFRAG_IPV4_SCTP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY, - &hdrs_hint_ipv4_src_sctp_src_port}, + &hdrs_hint_ipv4_src_sctp_src_port, IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV4_SCTP, ETH_RSS_NONFRAG_IPV4_SCTP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY, - &hdrs_hint_ipv4_src_sctp_dst_port}, + &hdrs_hint_ipv4_src_sctp_dst_port, IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV4_SCTP, ETH_RSS_NONFRAG_IPV4_SCTP | - ETH_RSS_L3_SRC_ONLY, &hdrs_hint_ipv4_src}, + ETH_RSS_L3_SRC_ONLY, &hdrs_hint_ipv4_src, + IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV4_SCTP, ETH_RSS_NONFRAG_IPV4_SCTP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY, - &hdrs_hint_ipv4_dst_sctp_src_port}, + &hdrs_hint_ipv4_dst_sctp_src_port, IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV4_SCTP, ETH_RSS_NONFRAG_IPV4_SCTP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY, - &hdrs_hint_ipv4_dst_sctp_dst_port}, + &hdrs_hint_ipv4_dst_sctp_dst_port, IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV4_SCTP, ETH_RSS_NONFRAG_IPV4_SCTP | - ETH_RSS_L3_DST_ONLY, &hdrs_hint_ipv4_dst}, + ETH_RSS_L3_DST_ONLY, &hdrs_hint_ipv4_dst, + IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV4_SCTP, ETH_RSS_L4_SRC_ONLY, - &hdrs_hint_ipv4_sctp_src_port}, + &hdrs_hint_ipv4_sctp_src_port, IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV4_SCTP, ETH_RSS_L4_DST_ONLY, - &hdrs_hint_ipv4_sctp_dst_port}, + &hdrs_hint_ipv4_sctp_dst_port, IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV4_SCTP, ETH_RSS_NONFRAG_IPV4_SCTP, - &hdrs_hint_ipv4_sctp}, + &hdrs_hint_ipv4_sctp, IAVF_GTPU_HINT_NONE}, /* IPV6 */ - {IAVF_PATTERN_HINT_IPV6, ETH_RSS_L2_SRC_ONLY, &hdrs_hint_eth_src}, - {IAVF_PATTERN_HINT_IPV6, ETH_RSS_L2_DST_ONLY, &hdrs_hint_eth_dst}, + {IAVF_PATTERN_HINT_IPV6, ETH_RSS_L2_SRC_ONLY, + &hdrs_hint_eth_src, IAVF_GTPU_HINT_NONE}, + {IAVF_PATTERN_HINT_IPV6, ETH_RSS_L2_DST_ONLY, + &hdrs_hint_eth_dst, IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV6, ETH_RSS_IPV6 | ETH_RSS_L2_SRC_ONLY, - &hdrs_hint_eth_src}, + &hdrs_hint_eth_src, IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV6, ETH_RSS_IPV6 | ETH_RSS_L2_DST_ONLY, - &hdrs_hint_eth_dst}, - {IAVF_PATTERN_HINT_IPV6, ETH_RSS_ETH, &hdrs_hint_eth}, - {IAVF_PATTERN_HINT_IPV6, ETH_RSS_S_VLAN, &hdrs_hint_svlan}, - {IAVF_PATTERN_HINT_IPV4, ETH_RSS_C_VLAN, &hdrs_hint_cvlan}, - {IAVF_PATTERN_HINT_IPV6, ETH_RSS_L3_SRC_ONLY, &hdrs_hint_ipv6_src}, - {IAVF_PATTERN_HINT_IPV6, ETH_RSS_L3_DST_ONLY, &hdrs_hint_ipv6_dst}, + &hdrs_hint_eth_dst, IAVF_GTPU_HINT_NONE}, + {IAVF_PATTERN_HINT_IPV6, ETH_RSS_ETH, + &hdrs_hint_eth, IAVF_GTPU_HINT_NONE}, + {IAVF_PATTERN_HINT_IPV6, ETH_RSS_S_VLAN, + &hdrs_hint_svlan, IAVF_GTPU_HINT_NONE}, + {IAVF_PATTERN_HINT_IPV4, ETH_RSS_C_VLAN, + &hdrs_hint_cvlan, IAVF_GTPU_HINT_NONE}, + {IAVF_PATTERN_HINT_IPV6, ETH_RSS_L3_SRC_ONLY, + &hdrs_hint_ipv6_src, IAVF_GTPU_HINT_NONE}, + {IAVF_PATTERN_HINT_IPV6, ETH_RSS_L3_DST_ONLY, + &hdrs_hint_ipv6_dst, IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV6, ETH_RSS_IPV6 | ETH_RSS_L3_SRC_ONLY, - &hdrs_hint_ipv6_src}, + &hdrs_hint_ipv6_src, IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV6, ETH_RSS_IPV6 | ETH_RSS_L3_DST_ONLY, - &hdrs_hint_ipv6_dst}, - {IAVF_PATTERN_HINT_IPV6, ETH_RSS_ESP, &hdrs_hint_ipv6_esp}, - {IAVF_PATTERN_HINT_IPV6, ETH_RSS_AH, &hdrs_hint_ipv6_ah}, - {IAVF_PATTERN_HINT_IPV6, ETH_RSS_L2TPV3, &hdrs_hint_ipv6_l2tpv3}, - {IAVF_PATTERN_HINT_IPV6, ETH_RSS_IPV6, &hdrs_hint_ipv6}, + &hdrs_hint_ipv6_dst, IAVF_GTPU_HINT_NONE}, + {IAVF_PATTERN_HINT_IPV6, ETH_RSS_ESP, + &hdrs_hint_ipv6_esp, IAVF_GTPU_HINT_NONE}, + {IAVF_PATTERN_HINT_IPV6, ETH_RSS_AH, + &hdrs_hint_ipv6_ah, IAVF_GTPU_HINT_NONE}, + {IAVF_PATTERN_HINT_IPV6, ETH_RSS_L2TPV3, + &hdrs_hint_ipv6_l2tpv3, IAVF_GTPU_HINT_NONE}, + {IAVF_PATTERN_HINT_IPV6, ETH_RSS_IPV6, + &hdrs_hint_ipv6, IAVF_GTPU_HINT_NONE}, /* IPV6 UDP */ - {IAVF_PATTERN_HINT_IPV6_UDP, ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY, - &hdrs_hint_ipv6_src_udp_src_port}, - {IAVF_PATTERN_HINT_IPV6_UDP, ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY, - &hdrs_hint_ipv6_src_udp_dst_port}, + {IAVF_PATTERN_HINT_IPV6_UDP, ETH_RSS_L3_SRC_ONLY | + ETH_RSS_L4_SRC_ONLY, &hdrs_hint_ipv6_src_udp_src_port, + IAVF_GTPU_HINT_NONE}, + {IAVF_PATTERN_HINT_IPV6_UDP, ETH_RSS_L3_SRC_ONLY | + ETH_RSS_L4_DST_ONLY, &hdrs_hint_ipv6_src_udp_dst_port, + IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV6_UDP, ETH_RSS_L3_SRC_ONLY, - &hdrs_hint_ipv6_src}, - {IAVF_PATTERN_HINT_IPV6_UDP, ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY, - &hdrs_hint_ipv6_dst_udp_src_port}, - {IAVF_PATTERN_HINT_IPV6_UDP, ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY, - &hdrs_hint_ipv6_dst_udp_dst_port}, + &hdrs_hint_ipv6_src, IAVF_GTPU_HINT_NONE}, + {IAVF_PATTERN_HINT_IPV6_UDP, ETH_RSS_L3_DST_ONLY | + ETH_RSS_L4_SRC_ONLY, &hdrs_hint_ipv6_dst_udp_src_port, + IAVF_GTPU_HINT_NONE}, + {IAVF_PATTERN_HINT_IPV6_UDP, ETH_RSS_L3_DST_ONLY | + ETH_RSS_L4_DST_ONLY, &hdrs_hint_ipv6_dst_udp_dst_port, + IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV6_UDP, ETH_RSS_L3_DST_ONLY, - &hdrs_hint_ipv6_dst}, + &hdrs_hint_ipv6_dst, IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV6_UDP, ETH_RSS_NONFRAG_IPV6_UDP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY, - &hdrs_hint_ipv6_src_udp_src_port}, + &hdrs_hint_ipv6_src_udp_src_port, IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV6_UDP, ETH_RSS_NONFRAG_IPV6_UDP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY, - &hdrs_hint_ipv6_src_udp_dst_port}, + &hdrs_hint_ipv6_src_udp_dst_port, IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV6_UDP, ETH_RSS_NONFRAG_IPV6_UDP | - ETH_RSS_L3_SRC_ONLY, &hdrs_hint_ipv6_src}, + ETH_RSS_L3_SRC_ONLY, &hdrs_hint_ipv6_src, + IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV6_UDP, ETH_RSS_NONFRAG_IPV6_UDP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY, - &hdrs_hint_ipv6_dst_udp_src_port}, + &hdrs_hint_ipv6_dst_udp_src_port, IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV6_UDP, ETH_RSS_NONFRAG_IPV6_UDP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY, - &hdrs_hint_ipv6_dst_udp_dst_port}, + &hdrs_hint_ipv6_dst_udp_dst_port, IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV6_UDP, ETH_RSS_NONFRAG_IPV6_UDP | - ETH_RSS_L3_DST_ONLY, &hdrs_hint_ipv6_dst}, + ETH_RSS_L3_DST_ONLY, &hdrs_hint_ipv6_dst, + IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV6_UDP, ETH_RSS_L4_SRC_ONLY, - &hdrs_hint_ipv6_udp_src_port}, + &hdrs_hint_ipv6_udp_src_port, IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV6_UDP, ETH_RSS_L4_DST_ONLY, - &hdrs_hint_ipv6_udp_dst_port}, + &hdrs_hint_ipv6_udp_dst_port, IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV6_UDP, ETH_RSS_PFCP, - &hdrs_hint_ipv6_pfcp}, + &hdrs_hint_ipv6_pfcp, IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV6_UDP, ETH_RSS_NONFRAG_IPV6_UDP, - &hdrs_hint_ipv6_udp}, + &hdrs_hint_ipv6_udp, IAVF_GTPU_HINT_NONE}, /* IPV6 TCP */ - {IAVF_PATTERN_HINT_IPV6_TCP, ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY, - &hdrs_hint_ipv6_src_tcp_src_port}, - {IAVF_PATTERN_HINT_IPV6_TCP, ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY, - &hdrs_hint_ipv6_src_tcp_dst_port}, + {IAVF_PATTERN_HINT_IPV6_TCP, ETH_RSS_L3_SRC_ONLY | + ETH_RSS_L4_SRC_ONLY, &hdrs_hint_ipv6_src_tcp_src_port, + IAVF_GTPU_HINT_NONE}, + {IAVF_PATTERN_HINT_IPV6_TCP, ETH_RSS_L3_SRC_ONLY | + ETH_RSS_L4_DST_ONLY, &hdrs_hint_ipv6_src_tcp_dst_port, + IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV6_TCP, ETH_RSS_L3_SRC_ONLY, - &hdrs_hint_ipv6_src}, - {IAVF_PATTERN_HINT_IPV6_TCP, ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY, - &hdrs_hint_ipv6_dst_tcp_src_port}, - {IAVF_PATTERN_HINT_IPV6_TCP, ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY, - &hdrs_hint_ipv6_dst_tcp_dst_port}, + &hdrs_hint_ipv6_src, IAVF_GTPU_HINT_NONE}, + {IAVF_PATTERN_HINT_IPV6_TCP, ETH_RSS_L3_DST_ONLY | + ETH_RSS_L4_SRC_ONLY, &hdrs_hint_ipv6_dst_tcp_src_port, + IAVF_GTPU_HINT_NONE}, + {IAVF_PATTERN_HINT_IPV6_TCP, ETH_RSS_L3_DST_ONLY | + ETH_RSS_L4_DST_ONLY, &hdrs_hint_ipv6_dst_tcp_dst_port, + IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV6_TCP, ETH_RSS_L3_DST_ONLY, - &hdrs_hint_ipv6_dst}, + &hdrs_hint_ipv6_dst, IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV6_TCP, ETH_RSS_NONFRAG_IPV6_TCP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY, - &hdrs_hint_ipv6_src_tcp_src_port}, + &hdrs_hint_ipv6_src_tcp_src_port, IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV6_TCP, ETH_RSS_NONFRAG_IPV6_TCP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY, - &hdrs_hint_ipv6_src_tcp_dst_port}, + &hdrs_hint_ipv6_src_tcp_dst_port, IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV6_TCP, ETH_RSS_NONFRAG_IPV6_TCP | - ETH_RSS_L3_SRC_ONLY, &hdrs_hint_ipv6_src}, + ETH_RSS_L3_SRC_ONLY, &hdrs_hint_ipv6_src, + IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV6_TCP, ETH_RSS_NONFRAG_IPV6_TCP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY, - &hdrs_hint_ipv6_dst_tcp_src_port}, + &hdrs_hint_ipv6_dst_tcp_src_port, IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV6_TCP, ETH_RSS_NONFRAG_IPV6_TCP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY, - &hdrs_hint_ipv6_dst_tcp_dst_port}, + &hdrs_hint_ipv6_dst_tcp_dst_port, IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV6_TCP, ETH_RSS_NONFRAG_IPV6_TCP | - ETH_RSS_L3_DST_ONLY, &hdrs_hint_ipv6_dst}, + ETH_RSS_L3_DST_ONLY, &hdrs_hint_ipv6_dst, + IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV6_TCP, ETH_RSS_L4_SRC_ONLY, - &hdrs_hint_ipv6_tcp_src_port}, + &hdrs_hint_ipv6_tcp_src_port, IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV6_TCP, ETH_RSS_L4_DST_ONLY, - &hdrs_hint_ipv6_tcp_dst_port}, + &hdrs_hint_ipv6_tcp_dst_port, IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV6_TCP, ETH_RSS_NONFRAG_IPV6_TCP, - &hdrs_hint_ipv6_tcp}, + &hdrs_hint_ipv6_tcp, IAVF_GTPU_HINT_NONE}, /* IPV6 SCTP */ - {IAVF_PATTERN_HINT_IPV6_SCTP, ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY, - &hdrs_hint_ipv6_src_sctp_src_port}, - {IAVF_PATTERN_HINT_IPV6_SCTP, ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY, - &hdrs_hint_ipv6_src_sctp_dst_port}, + {IAVF_PATTERN_HINT_IPV6_SCTP, ETH_RSS_L3_SRC_ONLY | + ETH_RSS_L4_SRC_ONLY, &hdrs_hint_ipv6_src_sctp_src_port, + IAVF_GTPU_HINT_NONE}, + {IAVF_PATTERN_HINT_IPV6_SCTP, ETH_RSS_L3_SRC_ONLY | + ETH_RSS_L4_DST_ONLY, &hdrs_hint_ipv6_src_sctp_dst_port, + IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV6_SCTP, ETH_RSS_L3_SRC_ONLY, - &hdrs_hint_ipv6_src}, - {IAVF_PATTERN_HINT_IPV6_SCTP, ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY, - &hdrs_hint_ipv6_dst_sctp_src_port}, - {IAVF_PATTERN_HINT_IPV6_SCTP, ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY, - &hdrs_hint_ipv6_dst_sctp_dst_port}, + &hdrs_hint_ipv6_src, IAVF_GTPU_HINT_NONE}, + {IAVF_PATTERN_HINT_IPV6_SCTP, ETH_RSS_L3_DST_ONLY | + ETH_RSS_L4_SRC_ONLY, &hdrs_hint_ipv6_dst_sctp_src_port, + IAVF_GTPU_HINT_NONE}, + {IAVF_PATTERN_HINT_IPV6_SCTP, ETH_RSS_L3_DST_ONLY | + ETH_RSS_L4_DST_ONLY, &hdrs_hint_ipv6_dst_sctp_dst_port, + IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV6_SCTP, ETH_RSS_L3_DST_ONLY, - &hdrs_hint_ipv6_dst}, + &hdrs_hint_ipv6_dst, IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV6_SCTP, ETH_RSS_NONFRAG_IPV6_SCTP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY, - &hdrs_hint_ipv6_src_sctp_src_port}, + &hdrs_hint_ipv6_src_sctp_src_port, IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV6_SCTP, ETH_RSS_NONFRAG_IPV6_SCTP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY, - &hdrs_hint_ipv6_src_sctp_dst_port}, + &hdrs_hint_ipv6_src_sctp_dst_port, IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV6_SCTP, ETH_RSS_NONFRAG_IPV6_SCTP | - ETH_RSS_L3_SRC_ONLY, &hdrs_hint_ipv6_src}, + ETH_RSS_L3_SRC_ONLY, &hdrs_hint_ipv6_src, + IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV6_SCTP, ETH_RSS_NONFRAG_IPV6_SCTP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY, - &hdrs_hint_ipv6_dst_sctp_src_port}, + &hdrs_hint_ipv6_dst_sctp_src_port, IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV6_SCTP, ETH_RSS_NONFRAG_IPV6_SCTP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY, - &hdrs_hint_ipv6_dst_sctp_dst_port}, + &hdrs_hint_ipv6_dst_sctp_dst_port, IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV6_SCTP, ETH_RSS_NONFRAG_IPV6_SCTP | - ETH_RSS_L3_DST_ONLY, &hdrs_hint_ipv6_dst}, + ETH_RSS_L3_DST_ONLY, &hdrs_hint_ipv6_dst, + IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV6_SCTP, ETH_RSS_L4_SRC_ONLY, - &hdrs_hint_ipv6_sctp_src_port}, + &hdrs_hint_ipv6_sctp_src_port, IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV6_SCTP, ETH_RSS_L4_DST_ONLY, - &hdrs_hint_ipv6_sctp_dst_port}, + &hdrs_hint_ipv6_sctp_dst_port, IAVF_GTPU_HINT_NONE}, {IAVF_PATTERN_HINT_IPV6_SCTP, ETH_RSS_NONFRAG_IPV6_SCTP, - &hdrs_hint_ipv6_sctp}, + &hdrs_hint_ipv6_sctp, IAVF_GTPU_HINT_NONE}, }; =20 struct virtchnl_proto_hdrs *iavf_hash_default_hdrs[] =3D { @@ -969,8 +1054= ,9 @@ iavf_hash_check_inset(const struct rte_flow_item pattern[], return 0; } =20 -static uint64_t -iavf_hash_refine_type(uint64_t rss_type, const struct rte_flow_item patter= n[]) +static void +iavf_hash_refine_type(uint64_t *rss_type, const struct rte_flow_item patte= rn[], + enum iavf_gtpu_hint *gtpu_hint) { const struct rte_flow_item *item; =20 @@ -978,14 +1064,13 @@ iavf_hash_refine_type(uint64_t rss_type, const struc= t rte_flow_item pattern[]) if (item->type =3D=3D RTE_FLOW_ITEM_TYPE_GTP_PSC) { const struct rte_flow_item_gtp_psc *psc =3D item->spec; =20 - if (psc && (psc->pdu_type =3D=3D GTP_EH_PDU_LINK_UP || - psc->pdu_type =3D=3D GTP_EH_PDU_LINK_DWN)) { - rss_type |=3D ETH_RSS_GTPU; + if (psc && (psc->pdu_type =3D=3D IAVF_GTPU_HINT_UPLINK || + psc->pdu_type =3D=3D IAVF_GTPU_HINT_DOWNLINK)) { + *rss_type |=3D ETH_RSS_GTPU; + *gtpu_hint =3D psc->pdu_type; } } } - - return rss_type; } =20 static int @@ -994,9 +1079,12 @@ iavf_hash_parse_action(struct iavf_pattern_match_item= *pattern_match_item, const struct rte_flow_action actions[], void **meta, struct rte_flow_error *error) { + struct iavf_pattern_match_type *mt =3D (struct iavf_pattern_match_type *) + (pattern_match_item->meta); struct iavf_rss_meta *rss_meta =3D (struct iavf_rss_meta *)*meta; uint32_t type_list_len =3D RTE_DIM(iavf_hash_type_list); struct iavf_hash_match_type *type_match_item; + enum iavf_gtpu_hint gtpu_hint =3D IAVF_GTPU_HINT_NONE; enum rte_flow_action_type action_type; const struct rte_flow_action_rss *rss; const struct rte_flow_action *action; @@ -1004,9 +1092,6 @@ iavf_hash_parse_action(struct iavf_pattern_match_item= *pattern_match_item, uint64_t rss_type; uint16_t i; =20 - struct iavf_pattern_match_type *tt =3D (struct iavf_pattern_match_type *) - (pattern_match_item->meta); - /* Supported action is RSS. */ for (action =3D actions; action->type !=3D RTE_FLOW_ACTION_TYPE_END; action++) { @@ -1026,7 +1111,7 @@ iavf_hash_pa= rse_action(struct iavf_pattern_match_item *pattern_match_item, * Refine the hash type base on some specific item of * the pattern, such as identify the gtpu hash. */ - rss_type =3D iavf_hash_refine_type(rss_type, pattern); + iavf_hash_refine_type(&rss_type, pattern, >pu_hint); =20 /* Check if pattern is empty. */ if (pattern_match_item->pattern_list !=3D @@ -1079,7 +1164,8 @@ iavf_ha= sh_parse_action(struct iavf_pattern_match_item *pattern_match_item, struct iavf_hash_match_type *ht_map =3D &iavf_hash_type_list[i]; if (rss_type =3D=3D ht_map->hash_type && - tt->phint_type =3D=3D ht_map->phint_type) { + mt->phint_type =3D=3D ht_map->phint_type && + gtpu_hint =3D=3D ht_map->gtpu_hint) { type_match_item->hash_type =3D ht_map->hash_type; type_match_item->proto_hdrs =3D -- 2.20.1