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 26B96A0562; Fri, 3 Apr 2020 01:38:06 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 74B2D1C0B4; Fri, 3 Apr 2020 01:38:05 +0200 (CEST) Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by dpdk.org (Postfix) with ESMTP id 538CD1C0B0 for ; Fri, 3 Apr 2020 01:38:03 +0200 (CEST) IronPort-SDR: upfJmucpzH4R8yE4Q4llt13ATTwsQurrAFzrLVLSmY6knkEhGGGbHxt+oaHTIFsXFygZGfHCo9 aS7b3qTV3Y3w== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Apr 2020 16:38:02 -0700 IronPort-SDR: U1E1kT/GErMGI2WXNipS3GZ+jIMACaMkOfbInuAH+i+IsB0cX3sDakqbwalM+DK1QNcp3q/3E3 IZYUSz3wpWsQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.72,337,1580803200"; d="scan'208";a="268188682" Received: from kmsmsx153.gar.corp.intel.com ([172.21.73.88]) by orsmga002.jf.intel.com with ESMTP; 02 Apr 2020 16:38:00 -0700 Received: from pgsmsx103.gar.corp.intel.com ([169.254.2.161]) by KMSMSX153.gar.corp.intel.com ([169.254.5.21]) with mapi id 14.03.0439.000; Fri, 3 Apr 2020 07:37:59 +0800 From: "Zhao1, Wei" To: "Zhang, Qi Z" , "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: AQHWCL1wQir6Hxfl1E+RPcdrkRLo0qhk/nqAgAF/cLA= Date: Thu, 2 Apr 2020 23:37:58 +0000 Message-ID: References: <20200313020806.21654-1-wei.zhao1@intel.com> <20200402064620.47668-1-wei.zhao1@intel.com> <20200402064620.47668-10-wei.zhao1@intel.com> <039ED4275CED7440929022BC67E70611547F1D3D@SHSMSX103.ccr.corp.intel.com> In-Reply-To: <039ED4275CED7440929022BC67E70611547F1D3D@SHSMSX103.ccr.corp.intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiMGJkMmNkZjUtN2RiYy00Y2JlLTkxZDQtNWYyMmQ5NTg4NmMzIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoia2cyOTAxK3NvXC9EZm1yWFNTa1ZWXC9ZbUMzUlpnenQyZWtuaWpxQ0FMSmNqVFkzZ0NUdGpxNXFFczh3RThBZ1NpIn0= x-ctpclassification: CTP_NT dlp-product: dlpe-windows dlp-version: 11.0.600.7 dlp-reaction: no-action x-originating-ip: [172.30.20.206] 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" Ok. > -----Original Message----- > From: Zhang, Qi Z > Sent: Thursday, April 2, 2020 4:45 PM > To: Zhao1, Wei ; dev@dpdk.org > Cc: Peng, Yuan ; Lu, Nannan ; > Fu, Qi ; Wang, Haiyue > Subject: RE: [PATCH v2 09/13] net/ice: add support for NAT-T >=20 >=20 >=20 > > -----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 >=20 > Better change to "add support for IPv6 NAT-T", since the patch is only fo= r 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 act= ion. > > > > 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(-) > > > > 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[]; > > > > /* ESP */ > > extern enum rte_flow_item_type pattern_eth_ipv6_esp[]; > > +extern enum rte_flow_item_type pattern_eth_ipv6_udp_esp[]; > > > > /* AH */ > > extern enum rte_flow_item_type pattern_eth_ipv6_ah[]; > > +extern enum rte_flow_item_type pattern_eth_ipv6_udp_ah[]; > > > > /* 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; > > > > > > 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; > > > > @@ -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; > > > > @@ -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