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 5C72FA057B; Thu, 2 Apr 2020 10:45:26 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id ACE751BEA8; Thu, 2 Apr 2020 10:45:25 +0200 (CEST) Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by dpdk.org (Postfix) with ESMTP id 6142D1BE95 for ; Thu, 2 Apr 2020 10:45:23 +0200 (CEST) IronPort-SDR: lSdXpW85FVSEG1cETDj5yGULingqWpTw31XXVtyJL2gZzvfRoPT6PAfqPIRGvZa8ZTa4HrTppL +TWDg8CyroaA== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Apr 2020 01:45:22 -0700 IronPort-SDR: HbRd0CnN+jTGkNIypVxGrxclJzWLMFVex8rojlu2vlTaRL9FsBXfJJqGcbnS0YYT+5RJyDF4Kb chJ8mf3wLNCA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.72,335,1580803200"; d="scan'208";a="243003364" Received: from fmsmsx106.amr.corp.intel.com ([10.18.124.204]) by orsmga008.jf.intel.com with ESMTP; 02 Apr 2020 01:45:21 -0700 Received: from fmsmsx601.amr.corp.intel.com (10.18.126.81) by FMSMSX106.amr.corp.intel.com (10.18.124.204) with Microsoft SMTP Server (TLS) id 14.3.439.0; Thu, 2 Apr 2020 01:45:21 -0700 Received: from fmsmsx601.amr.corp.intel.com (10.18.126.81) 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; Thu, 2 Apr 2020 01:45:20 -0700 Received: from shsmsx152.ccr.corp.intel.com (10.239.6.52) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.1.1713.5 via Frontend Transport; Thu, 2 Apr 2020 01:45:20 -0700 Received: from shsmsx103.ccr.corp.intel.com ([169.254.4.146]) by SHSMSX152.ccr.corp.intel.com ([169.254.6.209]) with mapi id 14.03.0439.000; Thu, 2 Apr 2020 16:45:17 +0800 From: "Zhang, Qi Z" To: "Zhao1, Wei" , "dev@dpdk.org" CC: "Peng, Yuan" , "Lu, Nannan" , "Fu, Qi" , "Wang, Haiyue" Thread-Topic: [PATCH v2 09/13] net/ice: add support for NAT-T Thread-Index: AQHWCL1wiiHe+BM1vkKzSJRVO6F4x6hlhFQA Date: Thu, 2 Apr 2020 08:45:17 +0000 Message-ID: <039ED4275CED7440929022BC67E70611547F1D3D@SHSMSX103.ccr.corp.intel.com> References: <20200313020806.21654-1-wei.zhao1@intel.com> <20200402064620.47668-1-wei.zhao1@intel.com> <20200402064620.47668-10-wei.zhao1@intel.com> In-Reply-To: <20200402064620.47668-10-wei.zhao1@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.2.0.6 dlp-reaction: no-action x-originating-ip: [10.239.127.40] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH v2 09/13] net/ice: add support for NAT-T 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" > -----Original Message----- > From: Zhao1, Wei > Sent: Thursday, April 2, 2020 2:46 PM > To: dev@dpdk.org > Cc: Zhang, Qi Z ; Peng, Yuan ; > Lu, Nannan ; Fu, Qi ; Wang, Haiyue > ; Zhao1, Wei > Subject: [PATCH v2 09/13] net/ice: add support for NAT-T Better change to "add support for IPv6 NAT-T", since the patch is only for = IPv6 >=20 > This patch add switch filter support for NAT-T packets, it enable swicth = filter to > direct ipv6 packets with NAT-T payload to specific action. >=20 > Signed-off-by: Wei Zhao > --- > drivers/net/ice/ice_generic_flow.c | 14 ++++++++++++++ > drivers/net/ice/ice_generic_flow.h | 2 ++ > drivers/net/ice/ice_switch_filter.c | 19 +++++++++++++++++-- > 3 files changed, 33 insertions(+), 2 deletions(-) >=20 > diff --git a/drivers/net/ice/ice_generic_flow.c > b/drivers/net/ice/ice_generic_flow.c > index 04dcaba08..3365aeb86 100644 > --- a/drivers/net/ice/ice_generic_flow.c > +++ b/drivers/net/ice/ice_generic_flow.c > @@ -1394,6 +1394,20 @@ enum rte_flow_item_type pattern_eth_ipv6_ah[] =3D > { > RTE_FLOW_ITEM_TYPE_AH, > RTE_FLOW_ITEM_TYPE_END, > }; > +enum rte_flow_item_type pattern_eth_ipv6_udp_esp[] =3D { > + RTE_FLOW_ITEM_TYPE_ETH, > + RTE_FLOW_ITEM_TYPE_IPV6, > + RTE_FLOW_ITEM_TYPE_UDP, > + RTE_FLOW_ITEM_TYPE_ESP, > + RTE_FLOW_ITEM_TYPE_END, > +}; > +enum rte_flow_item_type pattern_eth_ipv6_udp_ah[] =3D { > + RTE_FLOW_ITEM_TYPE_ETH, > + RTE_FLOW_ITEM_TYPE_IPV6, > + RTE_FLOW_ITEM_TYPE_UDP, > + RTE_FLOW_ITEM_TYPE_AH, > + RTE_FLOW_ITEM_TYPE_END, > +}; > enum rte_flow_item_type pattern_eth_ipv6_l2tp[] =3D { > RTE_FLOW_ITEM_TYPE_ETH, > RTE_FLOW_ITEM_TYPE_IPV6, > diff --git a/drivers/net/ice/ice_generic_flow.h > b/drivers/net/ice/ice_generic_flow.h > index 65cd64c7f..25badf192 100644 > --- a/drivers/net/ice/ice_generic_flow.h > +++ b/drivers/net/ice/ice_generic_flow.h > @@ -393,9 +393,11 @@ extern enum rte_flow_item_type > pattern_eth_qinq_pppoes_ipv6_icmp6[]; >=20 > /* ESP */ > extern enum rte_flow_item_type pattern_eth_ipv6_esp[]; > +extern enum rte_flow_item_type pattern_eth_ipv6_udp_esp[]; >=20 > /* AH */ > extern enum rte_flow_item_type pattern_eth_ipv6_ah[]; > +extern enum rte_flow_item_type pattern_eth_ipv6_udp_ah[]; >=20 > /* L2TP */ > extern enum rte_flow_item_type pattern_eth_ipv6_l2tp[]; diff --git > a/drivers/net/ice/ice_switch_filter.c b/drivers/net/ice/ice_switch_filter= .c > index 9b4b9346c..4248b8911 100644 > --- a/drivers/net/ice/ice_switch_filter.c > +++ b/drivers/net/ice/ice_switch_filter.c > @@ -150,8 +150,12 @@ ice_pattern_match_item > ice_switch_pattern_dist_comms[] =3D { > ICE_SW_INSET_MAC_PPPOE_PROTO, ICE_INSET_NONE}, > {pattern_eth_ipv6_esp, > ICE_INSET_NONE, ICE_INSET_NONE}, > + {pattern_eth_ipv6_udp_esp, > + ICE_INSET_NONE, ICE_INSET_NONE}, > {pattern_eth_ipv6_ah, > ICE_INSET_NONE, ICE_INSET_NONE}, > + {pattern_eth_ipv6_udp_ah, > + ICE_INSET_NONE, ICE_INSET_NONE}, > {pattern_eth_ipv6_l2tp, > ICE_INSET_NONE, ICE_INSET_NONE}, > {pattern_eth_ipv4_pfcp, > @@ -224,8 +228,12 @@ ice_pattern_match_item ice_switch_pattern_perm[] > =3D { > ICE_SW_INSET_PERM_TUNNEL_IPV4_TCP, ICE_INSET_NONE}, > {pattern_eth_ipv6_esp, > ICE_INSET_NONE, ICE_INSET_NONE}, > + {pattern_eth_ipv6_udp_esp, > + ICE_INSET_NONE, ICE_INSET_NONE}, > {pattern_eth_ipv6_ah, > ICE_INSET_NONE, ICE_INSET_NONE}, > + {pattern_eth_ipv6_udp_ah, > + ICE_INSET_NONE, ICE_INSET_NONE}, > {pattern_eth_ipv6_l2tp, > ICE_INSET_NONE, ICE_INSET_NONE}, > {pattern_eth_ipv4_pfcp, > @@ -364,6 +372,7 @@ ice_switch_inset_get(const struct rte_flow_item > pattern[], > uint16_t tunnel_valid =3D 0; > uint16_t pppoe_valid =3D 0; > uint16_t ipv6_valiad =3D 0; > + uint16_t udp_valiad =3D 0; >=20 >=20 > for (item =3D pattern; item->type !=3D > @@ -642,6 +651,7 @@ ice_switch_inset_get(const struct rte_flow_item > pattern[], > case RTE_FLOW_ITEM_TYPE_UDP: > udp_spec =3D item->spec; > udp_mask =3D item->mask; > + udp_valiad =3D 1; > if (udp_spec && udp_mask) { > /* Check UDP mask and update input set*/ > if (udp_mask->hdr.dgram_len || > @@ -974,7 +984,9 @@ ice_switch_inset_get(const struct rte_flow_item > pattern[], > "Invalid esp item"); > return -ENOTSUP; > } > - if (ipv6_valiad) > + if (ipv6_valiad && udp_valiad) > + *tun_type =3D ICE_SW_TUN_PROFID_IPV6_NAT_T; > + else if (ipv6_valiad) > *tun_type =3D ICE_SW_TUN_PROFID_IPV6_ESP; > break; >=20 > @@ -988,7 +1000,9 @@ ice_switch_inset_get(const struct rte_flow_item > pattern[], > "Invalid ah item"); > return -ENOTSUP; > } > - if (ipv6_valiad) > + if (ipv6_valiad && udp_valiad) > + *tun_type =3D ICE_SW_TUN_PROFID_IPV6_NAT_T; > + else if (ipv6_valiad) > *tun_type =3D ICE_SW_TUN_PROFID_IPV6_AH; > break; >=20 > @@ -1237,6 +1251,7 @@ ice_is_profile_rule(enum ice_sw_tunnel_type > tun_type) > case ICE_SW_TUN_PROFID_IPV6_ESP: > case ICE_SW_TUN_PROFID_IPV6_AH: > case ICE_SW_TUN_PROFID_MAC_IPV6_L2TPV3: > + case ICE_SW_TUN_PROFID_IPV6_NAT_T: > case ICE_SW_TUN_PROFID_IPV4_PFCP_NODE: > case ICE_SW_TUN_PROFID_IPV4_PFCP_SESSION: > case ICE_SW_TUN_PROFID_IPV6_PFCP_NODE: > -- > 2.19.1