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 DB4BAA04DC; Mon, 19 Oct 2020 10:01:28 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 80233BC0E; Mon, 19 Oct 2020 10:01:26 +0200 (CEST) Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by dpdk.org (Postfix) with ESMTP id 8D35CBC06 for ; Mon, 19 Oct 2020 10:01:24 +0200 (CEST) IronPort-SDR: aXq6HfaqXGabu2uF/BXuCsCogJayuBpsVV/ZurYWRNWDD1jmNFeW87eUVXQRm1oUXxcCj95gXY +n4srZ3dZA8w== X-IronPort-AV: E=McAfee;i="6000,8403,9778"; a="251681221" X-IronPort-AV: E=Sophos;i="5.77,394,1596524400"; d="scan'208";a="251681221" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 19 Oct 2020 01:01:22 -0700 IronPort-SDR: P6Xf4MHr9cAS9Tlc18bwd9PoIxz3XpY8mRq7/tag/LA/P2XAwVruLJWsY4nRJDcbkvNd5HlLuQ F79fFlDUjB6A== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.77,394,1596524400"; d="scan'208";a="352906901" Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82]) by fmsmga002.fm.intel.com with ESMTP; 19 Oct 2020 01:01:22 -0700 Received: from fmsmsx601.amr.corp.intel.com (10.18.126.81) 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.1713.5; Mon, 19 Oct 2020 01:01:22 -0700 Received: from fmsedg601.ED.cps.intel.com (10.1.192.135) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5 via Frontend Transport; Mon, 19 Oct 2020 01:01:22 -0700 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (104.47.55.171) by edgegateway.intel.com (192.55.55.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.1713.5; Mon, 19 Oct 2020 01:01:16 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=VVxDa3I188+4YdZ07+8SHrEKJKYDL4yxW0Aa4yFbOInvsUEMv7S+0bNG16h1dnYOUOqbdy3reJSLq4EvuF6Ez3gA9KWK1Nnj+/K1cLuobmgn547+9fVAIU+h2tUlCvGhrDVer0NGe0t2K8gwHujFKMCg9N5ucyPiJoaOWpPXizqjcK3S6e0SCTEOlEHJNsENT/XtLXa3HltV+ujMyJU55I5XT8RsnAV7zJIdVJ+zjElWWdwbZdLoVxlJKW8mG3iqOZckwwKja2QQHmqqvHdX8tNmUAVdV3XosOUe4KmwCxhCK8JBbvQ7cz2NzxyxiJ54MGcsWM9JhIvOHzEsXOGj0w== 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=A5VKkWW18/Jb8T/jKqM0u9TJfMLR8ElJUJIskEogpjQ=; b=EEOgH3nY/1CixY7yDdQOiu8KNWcRplt0pziFVTmbzXQCbNlzOcbmQ5yRMJAXwb8P3N3y0B6h8hIZSXiDg/2A/1cmJ+fUY0nCUj2sijNRjHNv9eS2guWIBb6ivQQx1K4pE63ksUxJbEOYL6/x57+oovRFDWDqLdQjSTsDnFZS9IJO3IKNsk5arFIqHyO8GSJRiT25od/xb3jqWr/hvpGmHj77/V8j1VR4AC9S7SUwQTNL58FsExIzPChftYRLe+5zAmfQ6h0c6HTdAmlQD5E65Jl7yuHtnQFW4sc827syCHFT3wwEAPTVBuGGAcxxa+Xk7SIOGUGJRdLG0Xpqsfa2ug== 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=A5VKkWW18/Jb8T/jKqM0u9TJfMLR8ElJUJIskEogpjQ=; b=XoA1fjT1U7MgAbIQPyS6DllePTE1ug9A8vursVgfHmCl3Pz7Gtav4bzjNuKC9MjItTmPIkO0jaxL1GwwwhtdJf2d+FbdzAtB3I0SOyCuDHZ1Ut4NiCpJYqM0E8lvV7MVDy6seBG1brZl+AkbWUVd4pXHcdO1NFGrjt5IVTcFo2w= Received: from CY4PR11MB1750.namprd11.prod.outlook.com (2603:10b6:903:126::8) by CY4PR11MB1333.namprd11.prod.outlook.com (2603:10b6:903:24::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3477.22; Mon, 19 Oct 2020 08:01:08 +0000 Received: from CY4PR11MB1750.namprd11.prod.outlook.com ([fe80::5999:7f2b:fc1d:5352]) by CY4PR11MB1750.namprd11.prod.outlook.com ([fe80::5999:7f2b:fc1d:5352%9]) with mapi id 15.20.3477.028; Mon, 19 Oct 2020 08:01:08 +0000 From: "Li, Xiaoyun" To: Andrew Rybchenko , "Lu, Wenzhuo" , "Xing, Beilei" , "Iremonger, Bernard" , Ray Kinsella , "Neil Horman" , Ajit Khaparde , Somnath Kotur , "Guo, Jia" , Rasesh Mody , Shahed Shaikh , Andrew Rybchenko CC: "dev@dpdk.org" Thread-Topic: [PATCH 08/14] ethdev: remove legacy TUNNEL filter type support Thread-Index: AQHWpVhVjcRmXYo04UuwTBsnMDjXLqmekD9g Date: Mon, 19 Oct 2020 08:01:08 +0000 Message-ID: References: <1603030152-13451-1-git-send-email-arybchenko@solarflare.com> <1603030152-13451-9-git-send-email-arybchenko@solarflare.com> In-Reply-To: <1603030152-13451-9-git-send-email-arybchenko@solarflare.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: solarflare.com; dkim=none (message not signed) header.d=none;solarflare.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [192.55.46.36] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 539dc117-e0aa-4709-a1db-08d874052351 x-ms-traffictypediagnostic: CY4PR11MB1333: 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:3276; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: vuGKZ2LowKBTBte/7f2Bqs6Zn8zPAhI/Z4REeJiKHUWreWI9YUhD4lfIGTzyUBQZj/qsb4JdAnN4x40nVw01hceNzgN5nGM3Qs7bIMbWzOim5sfhnnIKRuFiDa3jlng/u7VjZnviBedlDjqrCSebhTq6han6H/CHD8NBSBLn8g/y0NnZ9/cmdzEwVhPk6bGAPuiLSmv3fDYfakYKnG7Ufb4uN2lQTNdv20x0ZMPuAek6MjRoudwz4t46VFDHqv1y9tjp63sqyPUiPEPWzABttScJrJ32VgDB7nLMXkeIwZ2zVSO2qL2Fs+sVl6vD0pznaFz6iG4+ar10Ra2NZJXdHedW1qZ7N6Vd8nM2DBMfj2lCEOVxBBQFcBIDDHBKdLWu x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CY4PR11MB1750.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(376002)(396003)(366004)(136003)(346002)(39860400002)(9686003)(478600001)(33656002)(2906002)(86362001)(316002)(110136005)(26005)(55016002)(5660300002)(8936002)(76116006)(66946007)(7696005)(66476007)(66556008)(83380400001)(64756008)(66446008)(186003)(30864003)(6506007)(53546011)(8676002)(52536014)(71200400001)(4326008)(921003)(579004)(559001); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata: Rld+au/QJvq78Qh3s7ESHKev1qgRZ0tO7Ap+Ur3X7pPYJBMjE1gZZhWlpzUvVDObY0uWsDbkHbsT6OhZujqGK5BUtcxGlG3+xw0Jaa67l/L7OeH6a+PP23Uv09aKB5IkbF7jspS4zmsGzv0JWluhYjEPSygHQfXnIhVSkfl1BvD6K04/Rl5YxjSHUImgRBJV5BM4AepaIokL5Q/ygFK+6qn5+gWa16Os2ds0s/0rRGu5YQ7M1vSYiwaCH23WlsRaMWEmjqr1KF7j3Dta8ghwRuY19way2sNPrpwzVRgWF5/Oa60tFhzS7LNsCBGG3ScShC04MzQUyhV9g0AyBS6TdM8KqLVhPQP5X+1Dc7eW+TBpzBaIADuF5jJ5828+MHZEwx/kl/S26R1QwOUMUbLbHkqduig6lZPT2tfLzuXKhe1GXR5h9KogRgIltt8o2N1skokhkc+HSR9yXckDMmvhckw7j+2gau1MWCkKIPHyqR9aNQL4vytQ/L1T+bAKusTJ+Rulf3cXQwjEmR0fl1eA+af0yQtQysW4z3hkkokMAY5gesjGSZf26NjtnCPrnNUry3JtYb9ac6VidLA/qAGpTYAtuFdLFAjX6Xc9Uj5RnInZcCUyc5G2Ojj+7kB2nlYW5uDmBaNqT0DMRjrA3WDDuA== 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: CY4PR11MB1750.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 539dc117-e0aa-4709-a1db-08d874052351 X-MS-Exchange-CrossTenant-originalarrivaltime: 19 Oct 2020 08:01:08.7057 (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: vEyoaiVwSoAGWLKLSj9cqVB45QtCcFsjghb2nWIqtJ1rQNGAVowm4VdBQ6IbXaNvKameb5nsYpFvzl4hiXvw6g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR11MB1333 X-OriginatorOrg: intel.com Subject: Re: [dpdk-dev] [PATCH 08/14] ethdev: remove legacy TUNNEL filter type support 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 Thanks for the work and notice. Actually, the tep_termination example has not been used for a long time. An= d the cases it want to test can already be covered by rte_flow_create tunne= l test cases. So it makes sense to just deprecate this example. I'll do that soon and cc = to you. So don't worry about that example. BRs Xiaoyun > -----Original Message----- > From: Andrew Rybchenko > Sent: Sunday, October 18, 2020 22:09 > To: Lu, Wenzhuo ; Xing, Beilei ; > Iremonger, Bernard ; Ray Kinsella > ; Neil Horman ; Ajit Khaparde > ; Somnath Kotur > ; Guo, Jia ; Rasesh Mody > ; Shahed Shaikh ; Andrew > Rybchenko > Cc: dev@dpdk.org; Li, Xiaoyun > Subject: [PATCH 08/14] ethdev: remove legacy TUNNEL filter type support >=20 > RTE flow API should be used for filtering. >=20 > Preserve struct rte_eth_ntuple_filter in ethdev API since the structure a= nd > related defines are used in flow classify library and a number of drivers= . >=20 > Preserve RTE_ETH_FILTER_TUNNEL because of usage in drivers. >=20 > What to do with examples/tep_termination? >=20 > Signed-off-by: Andrew Rybchenko > --- > app/test-pmd/cmdline.c | 162 ----------------- > doc/guides/rel_notes/deprecation.rst | 2 +- > drivers/net/bnxt/bnxt_ethdev.c | 4 - > drivers/net/i40e/i40e_ethdev.c | 210 ---------------------- > drivers/net/qede/qede_filter.c | 257 --------------------------- > drivers/net/sfc/sfc_ethdev.c | 3 - > 6 files changed, 1 insertion(+), 637 deletions(-) >=20 > diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c index > 1fdab5f026..f7169c7b9e 100644 > --- a/app/test-pmd/cmdline.c > +++ b/app/test-pmd/cmdline.c > @@ -408,16 +408,6 @@ static void cmd_help_long_parsed(void *parsed_result= , > " Remove a vlan_id, to the set of VLAN identifiers" > "filtered for VF(s) from port_id.\n\n" >=20 > - "tunnel_filter add (port_id) (outer_mac) (inner_mac) > (ip_addr) " > - "(inner_vlan) (vxlan|nvgre|ipingre|vxlan-gpe) (imac- > ivlan|imac-ivlan-tenid|" > - "imac-tenid|imac|omac-imac-tenid|oip|iip) (tenant_id) > (queue_id)\n" > - " add a tunnel filter of a port.\n\n" > - > - "tunnel_filter rm (port_id) (outer_mac) (inner_mac) > (ip_addr) " > - "(inner_vlan) (vxlan|nvgre|ipingre|vxlan-gpe) (imac- > ivlan|imac-ivlan-tenid|" > - "imac-tenid|imac|omac-imac-tenid|oip|iip) (tenant_id) > (queue_id)\n" > - " remove a tunnel filter of a port.\n\n" > - > "rx_vxlan_port add (udp_port) (port_id)\n" > " Add an UDP port for VXLAN packet filter on a > port\n\n" >=20 > @@ -9195,157 +9185,6 @@ cmdline_parse_inst_t cmd_vf_rate_limit =3D { > }, > }; >=20 > -/* *** ADD TUNNEL FILTER OF A PORT *** */ -struct cmd_tunnel_filter_resu= lt { > - cmdline_fixed_string_t cmd; > - cmdline_fixed_string_t what; > - portid_t port_id; > - struct rte_ether_addr outer_mac; > - struct rte_ether_addr inner_mac; > - cmdline_ipaddr_t ip_value; > - uint16_t inner_vlan; > - cmdline_fixed_string_t tunnel_type; > - cmdline_fixed_string_t filter_type; > - uint32_t tenant_id; > - uint16_t queue_num; > -}; > - > -static void > -cmd_tunnel_filter_parsed(void *parsed_result, > - __rte_unused struct cmdline *cl, > - __rte_unused void *data) > -{ > - struct cmd_tunnel_filter_result *res =3D parsed_result; > - struct rte_eth_tunnel_filter_conf tunnel_filter_conf; > - int ret =3D 0; > - > - memset(&tunnel_filter_conf, 0, sizeof(tunnel_filter_conf)); > - > - rte_ether_addr_copy(&res->outer_mac, > &tunnel_filter_conf.outer_mac); > - rte_ether_addr_copy(&res->inner_mac, &tunnel_filter_conf.inner_mac); > - tunnel_filter_conf.inner_vlan =3D res->inner_vlan; > - > - if (res->ip_value.family =3D=3D AF_INET) { > - tunnel_filter_conf.ip_addr.ipv4_addr =3D > - res->ip_value.addr.ipv4.s_addr; > - tunnel_filter_conf.ip_type =3D RTE_TUNNEL_IPTYPE_IPV4; > - } else { > - memcpy(&(tunnel_filter_conf.ip_addr.ipv6_addr), > - &(res->ip_value.addr.ipv6), > - sizeof(struct in6_addr)); > - tunnel_filter_conf.ip_type =3D RTE_TUNNEL_IPTYPE_IPV6; > - } > - > - if (!strcmp(res->filter_type, "imac-ivlan")) > - tunnel_filter_conf.filter_type =3D > RTE_TUNNEL_FILTER_IMAC_IVLAN; > - else if (!strcmp(res->filter_type, "imac-ivlan-tenid")) > - tunnel_filter_conf.filter_type =3D > - RTE_TUNNEL_FILTER_IMAC_IVLAN_TENID; > - else if (!strcmp(res->filter_type, "imac-tenid")) > - tunnel_filter_conf.filter_type =3D > RTE_TUNNEL_FILTER_IMAC_TENID; > - else if (!strcmp(res->filter_type, "imac")) > - tunnel_filter_conf.filter_type =3D ETH_TUNNEL_FILTER_IMAC; > - else if (!strcmp(res->filter_type, "omac-imac-tenid")) > - tunnel_filter_conf.filter_type =3D > - RTE_TUNNEL_FILTER_OMAC_TENID_IMAC; > - else if (!strcmp(res->filter_type, "oip")) > - tunnel_filter_conf.filter_type =3D ETH_TUNNEL_FILTER_OIP; > - else if (!strcmp(res->filter_type, "iip")) > - tunnel_filter_conf.filter_type =3D ETH_TUNNEL_FILTER_IIP; > - else { > - printf("The filter type is not supported"); > - return; > - } > - > - if (!strcmp(res->tunnel_type, "vxlan")) > - tunnel_filter_conf.tunnel_type =3D RTE_TUNNEL_TYPE_VXLAN; > - else if (!strcmp(res->tunnel_type, "vxlan-gpe")) > - tunnel_filter_conf.tunnel_type =3D > RTE_TUNNEL_TYPE_VXLAN_GPE; > - else if (!strcmp(res->tunnel_type, "nvgre")) > - tunnel_filter_conf.tunnel_type =3D RTE_TUNNEL_TYPE_NVGRE; > - else if (!strcmp(res->tunnel_type, "ipingre")) > - tunnel_filter_conf.tunnel_type =3D > RTE_TUNNEL_TYPE_IP_IN_GRE; > - else { > - printf("The tunnel type %s not supported.\n", res->tunnel_type); > - return; > - } > - > - tunnel_filter_conf.tenant_id =3D res->tenant_id; > - tunnel_filter_conf.queue_id =3D res->queue_num; > - if (!strcmp(res->what, "add")) > - ret =3D rte_eth_dev_filter_ctrl(res->port_id, > - RTE_ETH_FILTER_TUNNEL, > - RTE_ETH_FILTER_ADD, > - &tunnel_filter_conf); > - else > - ret =3D rte_eth_dev_filter_ctrl(res->port_id, > - RTE_ETH_FILTER_TUNNEL, > - RTE_ETH_FILTER_DELETE, > - &tunnel_filter_conf); > - if (ret < 0) > - printf("cmd_tunnel_filter_parsed error: (%s)\n", > - strerror(-ret)); > - > -} > -cmdline_parse_token_string_t cmd_tunnel_filter_cmd =3D > - TOKEN_STRING_INITIALIZER(struct cmd_tunnel_filter_result, > - cmd, "tunnel_filter"); > -cmdline_parse_token_string_t cmd_tunnel_filter_what =3D > - TOKEN_STRING_INITIALIZER(struct cmd_tunnel_filter_result, > - what, "add#rm"); > -cmdline_parse_token_num_t cmd_tunnel_filter_port_id =3D > - TOKEN_NUM_INITIALIZER(struct cmd_tunnel_filter_result, > - port_id, UINT16); > -cmdline_parse_token_etheraddr_t cmd_tunnel_filter_outer_mac =3D > - TOKEN_ETHERADDR_INITIALIZER(struct cmd_tunnel_filter_result, > - outer_mac); > -cmdline_parse_token_etheraddr_t cmd_tunnel_filter_inner_mac =3D > - TOKEN_ETHERADDR_INITIALIZER(struct cmd_tunnel_filter_result, > - inner_mac); > -cmdline_parse_token_num_t cmd_tunnel_filter_innner_vlan =3D > - TOKEN_NUM_INITIALIZER(struct cmd_tunnel_filter_result, > - inner_vlan, UINT16); > -cmdline_parse_token_ipaddr_t cmd_tunnel_filter_ip_value =3D > - TOKEN_IPADDR_INITIALIZER(struct cmd_tunnel_filter_result, > - ip_value); > -cmdline_parse_token_string_t cmd_tunnel_filter_tunnel_type =3D > - TOKEN_STRING_INITIALIZER(struct cmd_tunnel_filter_result, > - tunnel_type, "vxlan#nvgre#ipingre#vxlan-gpe"); > - > -cmdline_parse_token_string_t cmd_tunnel_filter_filter_type =3D > - TOKEN_STRING_INITIALIZER(struct cmd_tunnel_filter_result, > - filter_type, "oip#iip#imac-ivlan#imac-ivlan-tenid#imac-tenid#" > - "imac#omac-imac-tenid"); > -cmdline_parse_token_num_t cmd_tunnel_filter_tenant_id =3D > - TOKEN_NUM_INITIALIZER(struct cmd_tunnel_filter_result, > - tenant_id, UINT32); > -cmdline_parse_token_num_t cmd_tunnel_filter_queue_num =3D > - TOKEN_NUM_INITIALIZER(struct cmd_tunnel_filter_result, > - queue_num, UINT16); > - > -cmdline_parse_inst_t cmd_tunnel_filter =3D { > - .f =3D cmd_tunnel_filter_parsed, > - .data =3D (void *)0, > - .help_str =3D "tunnel_filter add|rm " > - " vxlan|nvgre|ipingre oip|iip|imac-ivlan|" > - "imac-ivlan-tenid|imac-tenid|imac|omac-imac-tenid > " > - ": Add/Rm tunnel filter of a port", > - .tokens =3D { > - (void *)&cmd_tunnel_filter_cmd, > - (void *)&cmd_tunnel_filter_what, > - (void *)&cmd_tunnel_filter_port_id, > - (void *)&cmd_tunnel_filter_outer_mac, > - (void *)&cmd_tunnel_filter_inner_mac, > - (void *)&cmd_tunnel_filter_ip_value, > - (void *)&cmd_tunnel_filter_innner_vlan, > - (void *)&cmd_tunnel_filter_tunnel_type, > - (void *)&cmd_tunnel_filter_filter_type, > - (void *)&cmd_tunnel_filter_tenant_id, > - (void *)&cmd_tunnel_filter_queue_num, > - NULL, > - }, > -}; > - > /* *** CONFIGURE TUNNEL UDP PORT *** */ struct cmd_tunnel_udp_config { > cmdline_fixed_string_t cmd; > @@ -19164,7 +19003,6 @@ cmdline_parse_ctx_t main_ctx[] =3D { > (cmdline_parse_inst_t *)&cmd_set_uc_all_hash_filter, > (cmdline_parse_inst_t *)&cmd_vf_mac_addr_filter, > (cmdline_parse_inst_t *)&cmd_queue_rate_limit, > - (cmdline_parse_inst_t *)&cmd_tunnel_filter, > (cmdline_parse_inst_t *)&cmd_tunnel_udp_config, > (cmdline_parse_inst_t *)&cmd_global_config, > (cmdline_parse_inst_t *)&cmd_set_mirror_mask, diff --git > a/doc/guides/rel_notes/deprecation.rst b/doc/guides/rel_notes/deprecation= .rst > index a531edc88c..a807cb9ad9 100644 > --- a/doc/guides/rel_notes/deprecation.rst > +++ b/doc/guides/rel_notes/deprecation.rst > @@ -108,7 +108,7 @@ Deprecation Notices >=20 > * ethdev: the legacy filter API, including > ``rte_eth_dev_filter_supported()``, ``rte_eth_dev_filter_ctrl()`` as w= ell > - as filter types TUNNEL, FDIR, > + as filter types FDIR, > HASH and L2_TUNNEL, is superseded by the generic flow API (rte_flow) i= n > PMDs that implement the latter. > The legacy API will be removed in DPDK 20.11. > diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethde= v.c > index 2de8d003d2..8b68b5fe76 100644 > --- a/drivers/net/bnxt/bnxt_ethdev.c > +++ b/drivers/net/bnxt/bnxt_ethdev.c > @@ -3409,10 +3409,6 @@ bnxt_filter_ctrl_op(struct rte_eth_dev *dev, > return ret; >=20 > switch (filter_type) { > - case RTE_ETH_FILTER_TUNNEL: > - PMD_DRV_LOG(ERR, > - "filter type: %d: To be implemented\n", filter_type); > - break; > case RTE_ETH_FILTER_FDIR: > ret =3D bnxt_fdir_filter(dev, filter_op, arg); > break; > diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethde= v.c > index aa87ad8dd5..2badd024f1 100644 > --- a/drivers/net/i40e/i40e_ethdev.c > +++ b/drivers/net/i40e/i40e_ethdev.c > @@ -7863,145 +7863,6 @@ i40e_sw_tunnel_filter_del(struct i40e_pf *pf, > return 0; > } >=20 > -int > -i40e_dev_tunnel_filter_set(struct i40e_pf *pf, > - struct rte_eth_tunnel_filter_conf *tunnel_filter, > - uint8_t add) > -{ > - uint16_t ip_type; > - uint32_t ipv4_addr, ipv4_addr_le; > - uint8_t i, tun_type =3D 0; > - /* internal varialbe to convert ipv6 byte order */ > - uint32_t convert_ipv6[4]; > - int val, ret =3D 0; > - struct i40e_hw *hw =3D I40E_PF_TO_HW(pf); > - struct i40e_vsi *vsi =3D pf->main_vsi; > - struct i40e_aqc_cloud_filters_element_bb *cld_filter; > - struct i40e_aqc_cloud_filters_element_bb *pfilter; > - struct i40e_tunnel_rule *tunnel_rule =3D &pf->tunnel; > - struct i40e_tunnel_filter *tunnel, *node; > - struct i40e_tunnel_filter check_filter; /* Check if filter exists */ > - > - cld_filter =3D rte_zmalloc("tunnel_filter", > - sizeof(struct i40e_aqc_add_rm_cloud_filt_elem_ext), > - 0); > - > - if (NULL =3D=3D cld_filter) { > - PMD_DRV_LOG(ERR, "Failed to alloc memory."); > - return -ENOMEM; > - } > - pfilter =3D cld_filter; > - > - rte_ether_addr_copy(&tunnel_filter->outer_mac, > - (struct rte_ether_addr *)&pfilter->element.outer_mac); > - rte_ether_addr_copy(&tunnel_filter->inner_mac, > - (struct rte_ether_addr *)&pfilter->element.inner_mac); > - > - pfilter->element.inner_vlan =3D > - rte_cpu_to_le_16(tunnel_filter->inner_vlan); > - if (tunnel_filter->ip_type =3D=3D RTE_TUNNEL_IPTYPE_IPV4) { > - ip_type =3D I40E_AQC_ADD_CLOUD_FLAGS_IPV4; > - ipv4_addr =3D rte_be_to_cpu_32(tunnel_filter- > >ip_addr.ipv4_addr); > - ipv4_addr_le =3D rte_cpu_to_le_32(ipv4_addr); > - rte_memcpy(&pfilter->element.ipaddr.v4.data, > - &ipv4_addr_le, > - sizeof(pfilter->element.ipaddr.v4.data)); > - } else { > - ip_type =3D I40E_AQC_ADD_CLOUD_FLAGS_IPV6; > - for (i =3D 0; i < 4; i++) { > - convert_ipv6[i] =3D > - rte_cpu_to_le_32(rte_be_to_cpu_32(tunnel_filter- > >ip_addr.ipv6_addr[i])); > - } > - rte_memcpy(&pfilter->element.ipaddr.v6.data, > - &convert_ipv6, > - sizeof(pfilter->element.ipaddr.v6.data)); > - } > - > - /* check tunneled type */ > - switch (tunnel_filter->tunnel_type) { > - case RTE_TUNNEL_TYPE_VXLAN: > - tun_type =3D I40E_AQC_ADD_CLOUD_TNL_TYPE_VXLAN; > - break; > - case RTE_TUNNEL_TYPE_NVGRE: > - tun_type =3D I40E_AQC_ADD_CLOUD_TNL_TYPE_NVGRE_OMAC; > - break; > - case RTE_TUNNEL_TYPE_IP_IN_GRE: > - tun_type =3D I40E_AQC_ADD_CLOUD_TNL_TYPE_IP; > - break; > - case RTE_TUNNEL_TYPE_VXLAN_GPE: > - tun_type =3D I40E_AQC_ADD_CLOUD_TNL_TYPE_VXLAN_GPE; > - break; > - default: > - /* Other tunnel types is not supported. */ > - PMD_DRV_LOG(ERR, "tunnel type is not supported."); > - rte_free(cld_filter); > - return -EINVAL; > - } > - > - val =3D i40e_dev_get_filter_type(tunnel_filter->filter_type, > - &pfilter->element.flags); > - if (val < 0) { > - rte_free(cld_filter); > - return -EINVAL; > - } > - > - pfilter->element.flags |=3D rte_cpu_to_le_16( > - I40E_AQC_ADD_CLOUD_FLAGS_TO_QUEUE | > - ip_type | (tun_type << > I40E_AQC_ADD_CLOUD_TNL_TYPE_SHIFT)); > - pfilter->element.tenant_id =3D rte_cpu_to_le_32(tunnel_filter->tenant_i= d); > - pfilter->element.queue_number =3D > - rte_cpu_to_le_16(tunnel_filter->queue_id); > - > - /* Check if there is the filter in SW list */ > - memset(&check_filter, 0, sizeof(check_filter)); > - i40e_tunnel_filter_convert(cld_filter, &check_filter); > - node =3D i40e_sw_tunnel_filter_lookup(tunnel_rule, &check_filter.input)= ; > - if (add && node) { > - PMD_DRV_LOG(ERR, "Conflict with existing tunnel rules!"); > - rte_free(cld_filter); > - return -EINVAL; > - } > - > - if (!add && !node) { > - PMD_DRV_LOG(ERR, "There's no corresponding tunnel filter!"); > - rte_free(cld_filter); > - return -EINVAL; > - } > - > - if (add) { > - ret =3D i40e_aq_add_cloud_filters(hw, > - vsi->seid, &cld_filter->element, 1); > - if (ret < 0) { > - PMD_DRV_LOG(ERR, "Failed to add a tunnel filter."); > - rte_free(cld_filter); > - return -ENOTSUP; > - } > - tunnel =3D rte_zmalloc("tunnel_filter", sizeof(*tunnel), 0); > - if (tunnel =3D=3D NULL) { > - PMD_DRV_LOG(ERR, "Failed to alloc memory."); > - rte_free(cld_filter); > - return -ENOMEM; > - } > - > - rte_memcpy(tunnel, &check_filter, sizeof(check_filter)); > - ret =3D i40e_sw_tunnel_filter_insert(pf, tunnel); > - if (ret < 0) > - rte_free(tunnel); > - } else { > - ret =3D i40e_aq_rem_cloud_filters(hw, vsi->seid, > - &cld_filter->element, 1); > - if (ret < 0) { > - PMD_DRV_LOG(ERR, "Failed to delete a tunnel filter."); > - rte_free(cld_filter); > - return -ENOTSUP; > - } > - ret =3D i40e_sw_tunnel_filter_del(pf, &node->input); > - } > - > - rte_free(cld_filter); > - return ret; > -} > - > #define I40E_AQC_REPLACE_CLOUD_CMD_INPUT_TR_WORD0 0x48 > #define I40E_TR_VXLAN_GRE_KEY_MASK 0x4 > #define I40E_TR_GENEVE_KEY_MASK 0x8 > @@ -9004,40 +8865,6 @@ i40e_pf_config_rss(struct i40e_pf *pf) > return i40e_hw_rss_hash_set(pf, &rss_conf); } >=20 > -static int > -i40e_tunnel_filter_param_check(struct i40e_pf *pf, > - struct rte_eth_tunnel_filter_conf *filter) > -{ > - if (pf =3D=3D NULL || filter =3D=3D NULL) { > - PMD_DRV_LOG(ERR, "Invalid parameter"); > - return -EINVAL; > - } > - > - if (filter->queue_id >=3D pf->dev_data->nb_rx_queues) { > - PMD_DRV_LOG(ERR, "Invalid queue ID"); > - return -EINVAL; > - } > - > - if (filter->inner_vlan > RTE_ETHER_MAX_VLAN_ID) { > - PMD_DRV_LOG(ERR, "Invalid inner VLAN ID"); > - return -EINVAL; > - } > - > - if ((filter->filter_type & ETH_TUNNEL_FILTER_OMAC) && > - (rte_is_zero_ether_addr(&filter->outer_mac))) { > - PMD_DRV_LOG(ERR, "Cannot add NULL outer MAC address"); > - return -EINVAL; > - } > - > - if ((filter->filter_type & ETH_TUNNEL_FILTER_IMAC) && > - (rte_is_zero_ether_addr(&filter->inner_mac))) { > - PMD_DRV_LOG(ERR, "Cannot add NULL inner MAC address"); > - return -EINVAL; > - } > - > - return 0; > -} > - > #define I40E_GL_PRS_FVBM_MSK_ENA 0x80000000 > #define I40E_GL_PRS_FVBM(_i) (0x00269760 + ((_i) * 4)) > int > @@ -9123,40 +8950,6 @@ i40e_filter_ctrl_global_config(struct rte_eth_dev > *dev, > return ret; > } >=20 > -static int > -i40e_tunnel_filter_handle(struct rte_eth_dev *dev, > - enum rte_filter_op filter_op, > - void *arg) > -{ > - struct rte_eth_tunnel_filter_conf *filter; > - struct i40e_pf *pf =3D I40E_DEV_PRIVATE_TO_PF(dev->data- > >dev_private); > - int ret =3D I40E_SUCCESS; > - > - filter =3D (struct rte_eth_tunnel_filter_conf *)(arg); > - > - if (i40e_tunnel_filter_param_check(pf, filter) < 0) > - return I40E_ERR_PARAM; > - > - switch (filter_op) { > - case RTE_ETH_FILTER_NOP: > - if (!(pf->flags & I40E_FLAG_VXLAN)) > - ret =3D I40E_NOT_SUPPORTED; > - break; > - case RTE_ETH_FILTER_ADD: > - ret =3D i40e_dev_tunnel_filter_set(pf, filter, 1); > - break; > - case RTE_ETH_FILTER_DELETE: > - ret =3D i40e_dev_tunnel_filter_set(pf, filter, 0); > - break; > - default: > - PMD_DRV_LOG(ERR, "unknown operation %u", filter_op); > - ret =3D I40E_ERR_PARAM; > - break; > - } > - > - return ret; > -} > - > /* Get the symmetric hash enable configurations per port */ static void > i40e_get_symmetric_hash_enable_per_port(struct i40e_hw *hw, uint8_t > *enable) @@ -10465,9 +10258,6 @@ i40e_dev_filter_ctrl(struct rte_eth_dev > *dev, > case RTE_ETH_FILTER_HASH: > ret =3D i40e_hash_filter_ctrl(dev, filter_op, arg); > break; > - case RTE_ETH_FILTER_TUNNEL: > - ret =3D i40e_tunnel_filter_handle(dev, filter_op, arg); > - break; > case RTE_ETH_FILTER_FDIR: > ret =3D i40e_fdir_ctrl_func(dev, filter_op, arg); > break; > diff --git a/drivers/net/qede/qede_filter.c b/drivers/net/qede/qede_filte= r.c > index 0c47407edd..ba4e4d9e16 100644 > --- a/drivers/net/qede/qede_filter.c > +++ b/drivers/net/qede/qede_filter.c > @@ -696,36 +696,6 @@ qede_geneve_enable(struct rte_eth_dev *eth_dev, > uint8_t clss, > return rc; > } >=20 > -static int > -qede_ipgre_enable(struct rte_eth_dev *eth_dev, uint8_t clss, > - bool enable) > -{ > - struct qede_dev *qdev =3D QEDE_INIT_QDEV(eth_dev); > - struct ecore_dev *edev =3D QEDE_INIT_EDEV(qdev); > - enum _ecore_status_t rc =3D ECORE_INVAL; > - struct ecore_tunnel_info tunn; > - > - memset(&tunn, 0, sizeof(struct ecore_tunnel_info)); > - tunn.ip_gre.b_update_mode =3D true; > - tunn.ip_gre.b_mode_enabled =3D enable; > - tunn.ip_gre.tun_cls =3D clss; > - tunn.ip_gre.tun_cls =3D clss; > - tunn.b_update_rx_cls =3D true; > - tunn.b_update_tx_cls =3D true; > - > - rc =3D qede_tunnel_update(qdev, &tunn); > - if (rc =3D=3D ECORE_SUCCESS) { > - qdev->ipgre.enable =3D enable; > - DP_INFO(edev, "IPGRE is %s\n", > - enable ? "enabled" : "disabled"); > - } else { > - DP_ERR(edev, "Failed to update tunn_clss %u\n", > - clss); > - } > - > - return rc; > -} > - > int > qede_udp_dst_port_del(struct rte_eth_dev *eth_dev, > struct rte_eth_udp_tunnel *tunnel_udp) @@ -902,210 > +872,6 @@ qede_udp_dst_port_add(struct rte_eth_dev *eth_dev, > return 0; > } >=20 > -static void qede_get_ecore_tunn_params(uint32_t filter, uint32_t *type, > - uint32_t *clss, char *str) > -{ > - uint16_t j; > - *clss =3D MAX_ECORE_TUNN_CLSS; > - > - for (j =3D 0; j < RTE_DIM(qede_tunn_types); j++) { > - if (filter =3D=3D qede_tunn_types[j].rte_filter_type) { > - *type =3D qede_tunn_types[j].qede_type; > - *clss =3D qede_tunn_types[j].qede_tunn_clss; > - strcpy(str, qede_tunn_types[j].string); > - return; > - } > - } > -} > - > -static int > -qede_set_ucast_tunn_cmn_param(struct ecore_filter_ucast *ucast, > - const struct rte_eth_tunnel_filter_conf *conf, > - uint32_t type) > -{ > - /* Init commmon ucast params first */ > - qede_set_ucast_cmn_params(ucast); > - > - /* Copy out the required fields based on classification type */ > - ucast->type =3D type; > - > - switch (type) { > - case ECORE_FILTER_VNI: > - ucast->vni =3D conf->tenant_id; > - break; > - case ECORE_FILTER_INNER_VLAN: > - ucast->vlan =3D conf->inner_vlan; > - break; > - case ECORE_FILTER_MAC: > - memcpy(ucast->mac, conf->outer_mac.addr_bytes, > - RTE_ETHER_ADDR_LEN); > - break; > - case ECORE_FILTER_INNER_MAC: > - memcpy(ucast->mac, conf->inner_mac.addr_bytes, > - RTE_ETHER_ADDR_LEN); > - break; > - case ECORE_FILTER_MAC_VNI_PAIR: > - memcpy(ucast->mac, conf->outer_mac.addr_bytes, > - RTE_ETHER_ADDR_LEN); > - ucast->vni =3D conf->tenant_id; > - break; > - case ECORE_FILTER_INNER_MAC_VNI_PAIR: > - memcpy(ucast->mac, conf->inner_mac.addr_bytes, > - RTE_ETHER_ADDR_LEN); > - ucast->vni =3D conf->tenant_id; > - break; > - case ECORE_FILTER_INNER_PAIR: > - memcpy(ucast->mac, conf->inner_mac.addr_bytes, > - RTE_ETHER_ADDR_LEN); > - ucast->vlan =3D conf->inner_vlan; > - break; > - default: > - return -EINVAL; > - } > - > - return ECORE_SUCCESS; > -} > - > -static int > -_qede_tunn_filter_config(struct rte_eth_dev *eth_dev, > - const struct rte_eth_tunnel_filter_conf *conf, > - __rte_unused enum rte_filter_op filter_op, > - enum ecore_tunn_clss *clss, > - bool add) > -{ > - struct qede_dev *qdev =3D QEDE_INIT_QDEV(eth_dev); > - struct ecore_dev *edev =3D QEDE_INIT_EDEV(qdev); > - struct ecore_filter_ucast ucast =3D {0}; > - enum ecore_filter_ucast_type type; > - uint16_t filter_type =3D 0; > - char str[80]; > - int rc; > - > - filter_type =3D conf->filter_type; > - /* Determine if the given filter classification is supported */ > - qede_get_ecore_tunn_params(filter_type, &type, clss, str); > - if (*clss =3D=3D MAX_ECORE_TUNN_CLSS) { > - DP_ERR(edev, "Unsupported filter type\n"); > - return -EINVAL; > - } > - /* Init tunnel ucast params */ > - rc =3D qede_set_ucast_tunn_cmn_param(&ucast, conf, type); > - if (rc !=3D ECORE_SUCCESS) { > - DP_ERR(edev, "Unsupported Tunnel filter type 0x%x\n", > - conf->filter_type); > - return rc; > - } > - DP_INFO(edev, "Rule: \"%s\", op %d, type 0x%x\n", > - str, filter_op, ucast.type); > - > - ucast.opcode =3D add ? ECORE_FILTER_ADD : ECORE_FILTER_REMOVE; > - > - /* Skip MAC/VLAN if filter is based on VNI */ > - if (!(filter_type & ETH_TUNNEL_FILTER_TENID)) { > - rc =3D qede_mac_int_ops(eth_dev, &ucast, add); > - if (rc =3D=3D 0 && add) { > - /* Enable accept anyvlan */ > - qede_config_accept_any_vlan(qdev, true); > - } > - } else { > - rc =3D qede_ucast_filter(eth_dev, &ucast, add); > - if (rc =3D=3D 0) > - rc =3D ecore_filter_ucast_cmd(edev, &ucast, > - ECORE_SPQ_MODE_CB, NULL); > - } > - > - return rc; > -} > - > -static int > -qede_tunn_enable(struct rte_eth_dev *eth_dev, uint8_t clss, > - enum rte_eth_tunnel_type tunn_type, bool enable) > -{ > - int rc =3D -EINVAL; > - > - switch (tunn_type) { > - case RTE_TUNNEL_TYPE_VXLAN: > - rc =3D qede_vxlan_enable(eth_dev, clss, enable); > - break; > - case RTE_TUNNEL_TYPE_GENEVE: > - rc =3D qede_geneve_enable(eth_dev, clss, enable); > - break; > - case RTE_TUNNEL_TYPE_IP_IN_GRE: > - rc =3D qede_ipgre_enable(eth_dev, clss, enable); > - break; > - default: > - rc =3D -EINVAL; > - break; > - } > - > - return rc; > -} > - > -static int > -qede_tunn_filter_config(struct rte_eth_dev *eth_dev, > - enum rte_filter_op filter_op, > - const struct rte_eth_tunnel_filter_conf *conf) > -{ > - struct qede_dev *qdev =3D QEDE_INIT_QDEV(eth_dev); > - struct ecore_dev *edev =3D QEDE_INIT_EDEV(qdev); > - enum ecore_tunn_clss clss =3D MAX_ECORE_TUNN_CLSS; > - bool add; > - int rc; > - > - PMD_INIT_FUNC_TRACE(edev); > - > - switch (filter_op) { > - case RTE_ETH_FILTER_ADD: > - add =3D true; > - break; > - case RTE_ETH_FILTER_DELETE: > - add =3D false; > - break; > - default: > - DP_ERR(edev, "Unsupported operation %d\n", filter_op); > - return -EINVAL; > - } > - > - if (IS_VF(edev)) > - return qede_tunn_enable(eth_dev, > - ECORE_TUNN_CLSS_MAC_VLAN, > - conf->tunnel_type, add); > - > - rc =3D _qede_tunn_filter_config(eth_dev, conf, filter_op, &clss, add); > - if (rc !=3D ECORE_SUCCESS) > - return rc; > - > - if (add) { > - if (conf->tunnel_type =3D=3D RTE_TUNNEL_TYPE_VXLAN) { > - qdev->vxlan.num_filters++; > - qdev->vxlan.filter_type =3D conf->filter_type; > - } else { /* GENEVE */ > - qdev->geneve.num_filters++; > - qdev->geneve.filter_type =3D conf->filter_type; > - } > - > - if (!qdev->vxlan.enable || !qdev->geneve.enable || > - !qdev->ipgre.enable) > - return qede_tunn_enable(eth_dev, clss, > - conf->tunnel_type, > - true); > - } else { > - if (conf->tunnel_type =3D=3D RTE_TUNNEL_TYPE_VXLAN) > - qdev->vxlan.num_filters--; > - else /*GENEVE*/ > - qdev->geneve.num_filters--; > - > - /* Disable VXLAN if VXLAN filters become 0 */ > - if (qdev->vxlan.num_filters =3D=3D 0 || > - qdev->geneve.num_filters =3D=3D 0) > - return qede_tunn_enable(eth_dev, clss, > - conf->tunnel_type, > - false); > - } > - > - return 0; > -} > - > static int > qede_flow_validate_attr(__rte_unused struct rte_eth_dev *dev, > const struct rte_flow_attr *attr, > @@ -1460,31 +1226,8 @@ int qede_dev_filter_ctrl(struct rte_eth_dev *eth_d= ev, > { > struct qede_dev *qdev =3D QEDE_INIT_QDEV(eth_dev); > struct ecore_dev *edev =3D QEDE_INIT_EDEV(qdev); > - struct rte_eth_tunnel_filter_conf *filter_conf =3D > - (struct rte_eth_tunnel_filter_conf *)arg; >=20 > switch (filter_type) { > - case RTE_ETH_FILTER_TUNNEL: > - switch (filter_conf->tunnel_type) { > - case RTE_TUNNEL_TYPE_VXLAN: > - case RTE_TUNNEL_TYPE_GENEVE: > - case RTE_TUNNEL_TYPE_IP_IN_GRE: > - DP_INFO(edev, > - "Packet steering to the specified Rx queue" > - " is not supported with UDP tunneling"); > - return(qede_tunn_filter_config(eth_dev, filter_op, > - filter_conf)); > - case RTE_TUNNEL_TYPE_TEREDO: > - case RTE_TUNNEL_TYPE_NVGRE: > - case RTE_L2_TUNNEL_TYPE_E_TAG: > - DP_ERR(edev, "Unsupported tunnel type %d\n", > - filter_conf->tunnel_type); > - return -EINVAL; > - case RTE_TUNNEL_TYPE_NONE: > - default: > - return 0; > - } > - break; > case RTE_ETH_FILTER_FDIR: > return qede_fdir_filter_conf(eth_dev, filter_op, arg); > case RTE_ETH_FILTER_GENERIC: > diff --git a/drivers/net/sfc/sfc_ethdev.c b/drivers/net/sfc/sfc_ethdev.c = index > 4291a932e8..51d33f3710 100644 > --- a/drivers/net/sfc/sfc_ethdev.c > +++ b/drivers/net/sfc/sfc_ethdev.c > @@ -1748,9 +1748,6 @@ sfc_dev_filter_ctrl(struct rte_eth_dev *dev, enum > rte_filter_type filter_type, > case RTE_ETH_FILTER_NONE: > sfc_err(sa, "Global filters configuration not supported"); > break; > - case RTE_ETH_FILTER_TUNNEL: > - sfc_err(sa, "Tunnel filters not supported"); > - break; > case RTE_ETH_FILTER_FDIR: > sfc_err(sa, "Flow Director filters not supported"); > break; > -- > 2.17.1