From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-eopbgr60073.outbound.protection.outlook.com [40.107.6.73]) by dpdk.org (Postfix) with ESMTP id 0916DA69 for ; Wed, 16 Jan 2019 08:00:01 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=fwabUem+9o8VxWothxx6QVm1RRL5LsAcniqzbJXm7BM=; b=cXg6eHcgCMsf6qTlypzCa8qTZWmtE0vvqNBG3HdiOoDTFuYLQiBFV6NKK6oLrh34dlMwxcs7TqjTyVkYTs4Me8lmi7PKW6HqWBuLNFVCFVQ9/JtEzEA3W+rs2RdZiavQkGB4pRtCYkgt1FKXCSJ5kbNNqf/DJZEYn5eXkAdT4tw= Received: from AM4PR05MB3425.eurprd05.prod.outlook.com (10.171.187.142) by AM4PR05MB3508.eurprd05.prod.outlook.com (10.171.188.13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1516.18; Wed, 16 Jan 2019 06:59:59 +0000 Received: from AM4PR05MB3425.eurprd05.prod.outlook.com ([fe80::f44e:1b2:9075:b7a9]) by AM4PR05MB3425.eurprd05.prod.outlook.com ([fe80::f44e:1b2:9075:b7a9%4]) with mapi id 15.20.1537.018; Wed, 16 Jan 2019 06:59:59 +0000 From: Ori Kam To: "Iremonger, Bernard" , Shahaf Shuler , Slava Ovsiienko , "shahaf@mellanox.com" , "Yigit, Ferruh" , "Lu, Wenzhuo" , "Wu, Jingjing" , Adrien Mazarguil CC: "dev@dpdk.org" Thread-Topic: [dpdk-dev] [PATCH v2] app/testpmd: add tos and ttl field to vxlan encapsulation Thread-Index: AQHUq/ETURMI1tqItkS2v0We3v1rDKWxeXSw Date: Wed, 16 Jan 2019 06:59:58 +0000 Message-ID: References: <1546109501-24865-1-git-send-email-viacheslavo@mellanox.com> <1547390409-3530-1-git-send-email-viacheslavo@mellanox.com> <8CEF83825BEC744B83065625E567D7C260D4E3F5@IRSMSX108.ger.corp.intel.com> In-Reply-To: <8CEF83825BEC744B83065625E567D7C260D4E3F5@IRSMSX108.ger.corp.intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=orika@mellanox.com; x-originating-ip: [193.47.165.251] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; AM4PR05MB3508; 6:NdfO0ZyWzm1y5t9iLwCsTiZvn1mosdBMchpsWMT7ThjA/BHF42YWZWv8qyAoIpLOaP2ad0WNF5VOSXo8dO2exOJwfjX2owQCdMfeImEVBRZRWobcoMYpIUbSeuecJn1EOBumyiZd4xKtmfMp0HA8eqv80eRvaVkOr4vx1Tqz3N3Rv7kRnNTb0WQUcVc2+amr6wAxkinCEpDzHLmuNCWBAmGhB9a4QGew0Q3x8NbxYpabknlRgcxWcBGWXi9OnZ5ChXvOz5uq5h4qSTjwClFvxF1UkDeXePDzHOQpMWG3DGCs9pNOjC+XM41KwzeoYeFue4QqDRv42P0DWBDPIUHSHXCqHX4YHbremLuDb94D2spgiLQP43fIPMzD0TtRPhiNt8Y1qX0z8QZuds4MCrwB8EljDghAfYyKpV8bSSyP2FBRaSBp2cXEP9THT9F02OmDrgYttuIeaGsO5lDsF7Amkw==; 5:+dt4qd9b6SZC8qkKf/xtiBsNX625KeCNkHiuFVPMGJvPFz46gsTpCAH2BQeJprcuax1owwjxKtkWHhkWkjPvIfuwojLPkZ9DYcvC86eG1oayDpb6spQBl17W9MydQr0RIrHd2vFrPwszkA5KYS46Pf1efVxq2p0P+DscnevDnLyo1X9ST2Xwi3NtA+rD5vO66veFDAveR+PILskURUFUbA==; 7:IT9BOozTJTmC9wrJOFYjcvo/oPrQ/bRbPuPHypGcYj4QAi0Mz+x++qpcgDn+baFobXcrbdVC5Rhe7xgLA8JKuw+JeQ8wd2Ee48paG8pAXf2wLAUnYtud+SPq5BGJ/B24LoPEPzS2z/MDrMjmnIQMyg== x-ms-exchange-antispam-srfa-diagnostics: SOS; x-ms-office365-filtering-correlation-id: 03277333-21f0-442c-7259-08d67b803ad1 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600109)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:AM4PR05MB3508; x-ms-traffictypediagnostic: AM4PR05MB3508: x-ld-processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr x-microsoft-antispam-prvs: x-forefront-prvs: 091949432C x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(376002)(366004)(346002)(136003)(396003)(39860400002)(13464003)(199004)(189003)(14454004)(55016002)(71190400001)(71200400001)(8936002)(105586002)(256004)(86362001)(6436002)(14444005)(229853002)(6116002)(3846002)(6306002)(97736004)(486006)(81166006)(81156014)(33656002)(106356001)(25786009)(9686003)(2501003)(66066001)(93886005)(7736002)(11346002)(476003)(186003)(446003)(966005)(74316002)(316002)(53946003)(45080400002)(26005)(110136005)(99286004)(53936002)(30864003)(6246003)(4326008)(76176011)(5660300001)(7696005)(102836004)(478600001)(68736007)(6506007)(2906002)(305945005)(53546011)(921003)(1121003); DIR:OUT; SFP:1101; SCL:1; SRVR:AM4PR05MB3508; H:AM4PR05MB3425.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: m4/kvfJGW1wzyAUS0a5qKtbyJcEvLTf82l8eRGtCCR8pCM1B8Skm3eiqgnFijPFoW0Mqa6ZhwGnQt6/spF562To7wiUMBUiS2KcQdfXnIGK17Xq6V/KY4+xCIx+UL7TojbNFrZJFeXzyBxQey3iEm4TqgzCVBefd8cEUJ5BXX4bkbOA2f07gN9R3Uf6bRixtWik+Jl+Tsuvs4IMLAlbcOIDs320/fay0/UdQgFx1p4kcoFLO8LxI2Y4LtIUbcXyZ3jBprm8Z4Fx41j6MblzJogg77mz8R0koPLu1h77aIk3wyzQVV0YXSlCNLuKri868iHw+l/7Kcm8j8AV/LXWiTlOnPNaXYVRNAxjZgsfGQ240uMrCjPW52KXqBKpj9Mels9iPnwEaq7b94gqCkzF1liVYozuGWB4/9hD5ThLT00U= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 03277333-21f0-442c-7259-08d67b803ad1 X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Jan 2019 06:59:59.0267 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM4PR05MB3508 Subject: Re: [dpdk-dev] [PATCH v2] app/testpmd: add tos and ttl field to vxlan encapsulation 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: , X-List-Received-Date: Wed, 16 Jan 2019 07:00:02 -0000 Hi, Just a small nit. Best, Ori > -----Original Message----- > From: Iremonger, Bernard > Sent: Monday, January 14, 2019 12:08 PM > To: Shahaf Shuler ; Slava Ovsiienko > ; shahaf@mellanox.com; Yigit, Ferruh > ; Lu, Wenzhuo ; Wu, Jingjin= g > ; Ori Kam ; Adrien Mazarguil > > Cc: dev@dpdk.org > Subject: RE: [dpdk-dev] [PATCH v2] app/testpmd: add tos and ttl field to = vxlan > encapsulation >=20 > +Ori, Adrien >=20 > > -----Original Message----- > > From: Shahaf Shuler [mailto:shahafs@mellanox.com] > > Sent: Monday, January 14, 2019 6:04 AM > > To: Slava Ovsiienko ; shahaf@mellanox.com; > > Yigit, Ferruh ; Lu, Wenzhuo > ; > > Wu, Jingjing ; Iremonger, Bernard > > > > Cc: dev@dpdk.org > > Subject: RE: [dpdk-dev] [PATCH v2] app/testpmd: add tos and ttl field t= o vxlan > > encapsulation > > > > Adding some relevant folks. > > > > Any comments or concerns on this patch? > > > > Sunday, January 13, 2019 4:40 PM, Viacheslav Ovsiienko: > > > Subject: [dpdk-dev] [PATCH v2] app/testpmd: add tos and ttl field to > > > vxlan encapsulation > > > > > > The new testpmd set vxlan-tos-ttl command is added. It allows to > > > specify tos and tll fields for encapsulation IP header. > > > > > > IPv4 VXLAN outer header: > > > > > > testpmd> set vxlan-tos-ttl ip-version ipv4 vni 4 udp-src 4 > > > udp-dst 4 ip-tos 0 ip-ttl 255 ip-src 127.0.0.1 > > > ip-dst 128.0.0.1 eth-src 11:11:11:11:11:11 > > > eth-dst 22:22:22:22:22:22 > > > > > > IPv6 VXLAN outer header: > > > testpmd> set vxlan-tos-ttl ip-version ipv6 vni 4 udp-src 4 > > > udp-dst 4 ip-tos 0 ip-ttl 255 ::1 ip-dst ::2222 > > > eth-src 11:11:11:11:11:11 eth-dst > > > 22:22:22:22:22:22 > > > > > > Note: ip-ttl parameter corresponds the nop_limits field for IPv6. > > > > > > Signed-off-by: Viacheslav Ovsiienko > > > --- > > > > > > v2: > > > The patchset is splitted into two parts, one is related to mlx5 PMD= , and > > > another is update for testpmd, these parts are going to be merged i= nto > > > different next branches. > > > > > > v1: > > > Original patchset: > > > https://emea01.safelinks.protection.outlook.com/?url=3Dhttps%3A%2F%2F= pat > > > ches.dpdk.org%2Fproject%2Fdpdk%2Flist%2F%3Fseries%3D2974&data > > > > =3D02%7C01%7Cshahafs%40mellanox.com%7C8d911e89ae384e23a1f908d6796 > > > > > > 50b0f%7Ca652971c7d2e4d9ba6a4d149256f461b%7C0%7C0%7C636829872232 > > 5 > > > > 87143&sdata=3DEMLbTbGYyxdYdEdZ4IFsvaKoDRD4oQrmWThJD9Xqsr8%3 > > > D&reserved=3D0 > > > > > > app/test-pmd/cmdline.c | 63 > > > +++++++++++++++++++++++++++++ > > > app/test-pmd/cmdline_flow.c | 32 +++++++++++++++ > > > app/test-pmd/testpmd.c | 3 ++ > > > app/test-pmd/testpmd.h | 3 ++ > > > doc/guides/testpmd_app_ug/testpmd_funcs.rst | 16 ++++++++ > > > 5 files changed, 117 insertions(+) > > > > > > diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c index > > > 3ddc3e0..9e9e898 100644 > > > --- a/app/test-pmd/cmdline.c > > > +++ b/app/test-pmd/cmdline.c > > > @@ -794,6 +794,12 @@ static void cmd_help_long_parsed(void > > > *parsed_result, > > > " eth-dst (eth-dst)\n" > > > " Configure the VXLAN encapsulation for > > > flows.\n\n" > > > > > > + "vxlan-tos-ttl ip-version (ipv4|ipv6) vni (vni) udp-src" > > > + " (udp-src) udp-dst (udp-dst) ip-tos (ip-tos) ip-ttl (ip- > > > ttl)" > > > + " ip-src (ip-src) ip-dst (ip-dst) eth-src (eth-src)" > > > + " eth-dst (eth-dst)\n" > > > + " Configure the VXLAN encapsulation for > > > flows.\n\n" > > > + > > > "nvgre ip-version (ipv4|ipv6) tni (tni) ip-src" > > > " (ip-src) ip-dst (ip-dst) eth-src (eth-src) eth-dst" > > > " (eth-dst)\n" > > > @@ -15034,6 +15040,8 @@ struct cmd_set_vxlan_result { > > > cmdline_ipaddr_t ip_src; > > > cmdline_ipaddr_t ip_dst; > > > uint16_t tci; > > > + uint8_t tos; > > > + uint8_t ttl; > > > struct ether_addr eth_src; > > > struct ether_addr eth_dst; > > > }; > > > @@ -15042,6 +15050,9 @@ struct cmd_set_vxlan_result { > > > TOKEN_STRING_INITIALIZER(struct cmd_set_vxlan_result, set, "set"); > > > cmdline_parse_token_string_t cmd_set_vxlan_vxlan =3D > > > TOKEN_STRING_INITIALIZER(struct cmd_set_vxlan_result, vxlan, > > > "vxlan"); > > > +cmdline_parse_token_string_t cmd_set_vxlan_vxlan_tos_ttl =3D > > > + TOKEN_STRING_INITIALIZER(struct cmd_set_vxlan_result, vxlan, > > > + "vxlan-tos-ttl"); > > > cmdline_parse_token_string_t cmd_set_vxlan_vxlan_with_vlan =3D > > > TOKEN_STRING_INITIALIZER(struct cmd_set_vxlan_result, vxlan, > > > "vxlan-with-vlan"); > > > @@ -15066,6 +15077,16 @@ struct cmd_set_vxlan_result { > > > "udp-dst"); > > > cmdline_parse_token_num_t cmd_set_vxlan_udp_dst_value =3D > > > TOKEN_NUM_INITIALIZER(struct cmd_set_vxlan_result, udp_dst, > > UINT16); > > > +cmdline_parse_token_string_t cmd_set_vxlan_ip_tos =3D > > > + TOKEN_STRING_INITIALIZER(struct cmd_set_vxlan_result, > > > pos_token, > > > + "ip-tos"); > > > +cmdline_parse_token_num_t cmd_set_vxlan_ip_tos_value =3D > > > + TOKEN_NUM_INITIALIZER(struct cmd_set_vxlan_result, tos, UINT8); > > > +cmdline_parse_token_string_t cmd_set_vxlan_ip_ttl =3D > > > + TOKEN_STRING_INITIALIZER(struct cmd_set_vxlan_result, > > > pos_token, > > > + "ip-ttl"); > > > +cmdline_parse_token_num_t cmd_set_vxlan_ip_ttl_value =3D > > > + TOKEN_NUM_INITIALIZER(struct cmd_set_vxlan_result, ttl, UINT8); > > > cmdline_parse_token_string_t cmd_set_vxlan_ip_src =3D > > > TOKEN_STRING_INITIALIZER(struct cmd_set_vxlan_result, pos_token, > > > "ip-src"); > > > @@ -15104,10 +15125,15 @@ static void cmd_set_vxlan_parsed(void > > > *parsed_result, > > > .vxlan_id =3D rte_cpu_to_be_32(res->vni) & > RTE_BE32(0x00ffffff), > > > }; > > > > > > + vxlan_encap_conf.select_tos =3D 0; > > > if (strcmp(res->vxlan, "vxlan") =3D=3D 0) > > > vxlan_encap_conf.select_vlan =3D 0; > > > else if (strcmp(res->vxlan, "vxlan-with-vlan") =3D=3D 0) > > > vxlan_encap_conf.select_vlan =3D 1; > > > + else if (strcmp(res->vxlan, "vxlan-tos-ttl") =3D=3D 0) { > > > + vxlan_encap_conf.select_vlan =3D 0; > > > + vxlan_encap_conf.select_tos =3D 1; > > > + } > > > if (strcmp(res->ip_version, "ipv4") =3D=3D 0) > > > vxlan_encap_conf.select_ipv4 =3D 1; > > > else if (strcmp(res->ip_version, "ipv6") =3D=3D 0) @@ -15117,6 +151= 43,8 > > > @@ static void cmd_set_vxlan_parsed(void *parsed_result, > > > rte_memcpy(vxlan_encap_conf.vni, &id.vni[1], 3); > > > vxlan_encap_conf.udp_src =3D rte_cpu_to_be_16(res->udp_src); > > > vxlan_encap_conf.udp_dst =3D rte_cpu_to_be_16(res->udp_dst); > > > + vxlan_encap_conf.ip_tos =3D res->tos; > > > + vxlan_encap_conf.ip_ttl =3D res->ttl; > > > if (vxlan_encap_conf.select_ipv4) { > > > IPV4_ADDR_TO_UINT(res->ip_src, > > > vxlan_encap_conf.ipv4_src); > > > IPV4_ADDR_TO_UINT(res->ip_dst, > > > vxlan_encap_conf.ipv4_dst); @@ -15161,6 +15189,40 @@ static void > > > cmd_set_vxlan_parsed(void *parsed_result, > > > }, > > > }; > > > > > > +cmdline_parse_inst_t cmd_set_vxlan_tos_ttl =3D { > > > + .f =3D cmd_set_vxlan_parsed, > > > + .data =3D NULL, > > > + .help_str =3D "set vxlan-tos-ttl ip-version ipv4|ipv6 vni udp= -src" > > > + " udp-dst ip-tos ip-ttl " > > > + " ip-src ip-dst eth-src " > > > + " eth-dst ", > > > + .tokens =3D { > > > + (void *)&cmd_set_vxlan_set, > > > + (void *)&cmd_set_vxlan_vxlan_tos_ttl, > > > + (void *)&cmd_set_vxlan_ip_version, > > > + (void *)&cmd_set_vxlan_ip_version_value, > > > + (void *)&cmd_set_vxlan_vni, > > > + (void *)&cmd_set_vxlan_vni_value, > > > + (void *)&cmd_set_vxlan_udp_src, > > > + (void *)&cmd_set_vxlan_udp_src_value, > > > + (void *)&cmd_set_vxlan_udp_dst, > > > + (void *)&cmd_set_vxlan_udp_dst_value, > > > + (void *)&cmd_set_vxlan_ip_tos, > > > + (void *)&cmd_set_vxlan_ip_tos_value, > > > + (void *)&cmd_set_vxlan_ip_ttl, > > > + (void *)&cmd_set_vxlan_ip_ttl_value, > > > + (void *)&cmd_set_vxlan_ip_src, > > > + (void *)&cmd_set_vxlan_ip_src_value, > > > + (void *)&cmd_set_vxlan_ip_dst, > > > + (void *)&cmd_set_vxlan_ip_dst_value, > > > + (void *)&cmd_set_vxlan_eth_src, > > > + (void *)&cmd_set_vxlan_eth_src_value, > > > + (void *)&cmd_set_vxlan_eth_dst, > > > + (void *)&cmd_set_vxlan_eth_dst_value, > > > + NULL, > > > + }, > > > +}; > > > + > > > cmdline_parse_inst_t cmd_set_vxlan_with_vlan =3D { > > > .f =3D cmd_set_vxlan_parsed, > > > .data =3D NULL, > > > @@ -18696,6 +18758,7 @@ struct cmd_show_tx_metadata_result { > > > (cmdline_parse_inst_t *)&cmd_set_port_tm_hierarchy_default, > > > #endif > > > (cmdline_parse_inst_t *)&cmd_set_vxlan, > > > + (cmdline_parse_inst_t *)&cmd_set_vxlan_tos_ttl, > > > (cmdline_parse_inst_t *)&cmd_set_vxlan_with_vlan, > > > (cmdline_parse_inst_t *)&cmd_set_nvgre, > > > (cmdline_parse_inst_t *)&cmd_set_nvgre_with_vlan, diff --git > > > a/app/test-pmd/cmdline_flow.c b/app/test-pmd/cmdline_flow.c index > > > 659908f..97ecc8a 100644 > > > --- a/app/test-pmd/cmdline_flow.c > > > +++ b/app/test-pmd/cmdline_flow.c > > > @@ -3501,6 +3501,38 @@ static int comp_vc_action_rss_queue(struct > > > context *, const struct token *, > > > if (!vxlan_encap_conf.select_vlan) > > > action_vxlan_encap_data->items[1].type =3D > > > RTE_FLOW_ITEM_TYPE_VOID; > > > + if (vxlan_encap_conf.select_tos) { > > > + if (vxlan_encap_conf.select_ipv4) { > > > + static struct rte_flow_item_ipv4 ipv4_mask_tos; > > > + > > > + memcpy(&ipv4_mask_tos, > > > &rte_flow_item_ipv4_mask, > > > + sizeof(ipv4_mask_tos)); > > > + ipv4_mask_tos.hdr.type_of_service =3D 0xff; > > > + ipv4_mask_tos.hdr.time_to_live =3D 0xff; > > > + action_vxlan_encap_data- > > > >item_ipv4.hdr.type_of_service =3D > > > + vxlan_encap_conf.ip_tos; > > > + action_vxlan_encap_data- > > > >item_ipv4.hdr.time_to_live =3D > > > + vxlan_encap_conf.ip_ttl; > > > + action_vxlan_encap_data->items[2].mask =3D > > > + &ipv4_mask_tos; > > > + } else { > > > + static struct rte_flow_item_ipv6 ipv6_mask_tos; > > > + > > > + memcpy(&ipv6_mask_tos, > > > &rte_flow_item_ipv6_mask, > > > + sizeof(ipv6_mask_tos)); > > > + ipv6_mask_tos.hdr.vtc_flow |=3D > > > + RTE_BE32(0xfful << IPV6_HDR_TC_SHIFT); > > > + ipv6_mask_tos.hdr.hop_limits =3D 0xff; > > > + action_vxlan_encap_data->item_ipv6.hdr.vtc_flow > > > |=3D > > > + rte_cpu_to_be_32 > > > + ((uint32_t)vxlan_encap_conf.ip_tos > > > << > > > + IPV6_HDR_TC_SHIFT); > > > + action_vxlan_encap_data->item_ipv6.hdr.hop_limits > > > =3D > > > + vxlan_encap_conf.ip_ttl; > > > + action_vxlan_encap_data->items[2].mask =3D > > > + &ipv6_mask_tos; > > > + } > > > + } > > > memcpy(action_vxlan_encap_data->item_vxlan.vni, > > > vxlan_encap_conf.vni, > > > RTE_DIM(vxlan_encap_conf.vni)); > > > action->conf =3D &action_vxlan_encap_data->conf; diff --git > > > a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c index > > > 15a9488..2638d06 100644 > > > --- a/app/test-pmd/testpmd.c > > > +++ b/app/test-pmd/testpmd.c > > > @@ -469,6 +469,7 @@ struct rte_fdir_conf fdir_conf =3D { struct > > > vxlan_encap_conf vxlan_encap_conf =3D { > > > .select_ipv4 =3D 1, > > > .select_vlan =3D 0, > > > + .select_tos =3D 0, > > > .vni =3D "\x00\x00\x00", > > > .udp_src =3D 0, > > > .udp_dst =3D RTE_BE16(4789), > > > @@ -479,6 +480,8 @@ struct vxlan_encap_conf vxlan_encap_conf =3D { > > > .ipv6_dst =3D "\x00\x00\x00\x00\x00\x00\x00\x00" > > > "\x00\x00\x00\x00\x00\x00\x11\x11", > > > .vlan_tci =3D 0, > > > + .ip_tos =3D 0, > > > + .ip_ttl =3D 255, > > > .eth_src =3D "\x00\x00\x00\x00\x00\x00", > > > .eth_dst =3D "\xff\xff\xff\xff\xff\xff", }; diff --git a/app/test- > > > pmd/testpmd.h b/app/test-pmd/testpmd.h index 3ff11e6..559f2aa 100644 > > > --- a/app/test-pmd/testpmd.h > > > +++ b/app/test-pmd/testpmd.h > > > @@ -488,6 +488,7 @@ struct gso_status { struct vxlan_encap_conf { > > > uint32_t select_ipv4:1; > > > uint32_t select_vlan:1; > > > + uint32_t select_tos:1; I think the name tos in this case also apply to the ttl, if so I think it s= hould be modified. > > > uint8_t vni[3]; > > > rte_be16_t udp_src; > > > rte_be16_t udp_dst; > > > @@ -496,6 +497,8 @@ struct vxlan_encap_conf { > > > uint8_t ipv6_src[16]; > > > uint8_t ipv6_dst[16]; > > > rte_be16_t vlan_tci; > > > + uint8_t ip_tos; > > > + uint8_t ip_ttl; > > > uint8_t eth_src[ETHER_ADDR_LEN]; > > > uint8_t eth_dst[ETHER_ADDR_LEN]; > > > }; > > > diff --git a/doc/guides/testpmd_app_ug/testpmd_funcs.rst > > > b/doc/guides/testpmd_app_ug/testpmd_funcs.rst > > > index 854af2d..0291480 100644 > > > --- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst > > > +++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst > > > @@ -1583,6 +1583,10 @@ Configure the outer layer to encapsulate a > > > packet inside a VXLAN tunnel:: > > > udp-dst (udp-dst) ip-src (ip-src) ip-dst (ip-dst) vlan-tci (vlan-tc= i) \ > > > eth-src (eth-src) eth-dst (eth-dst) > > > > > > + set vxlan-tos-ttl ip-version (ipv4|ipv6) vni (vni) udp-src (udp-src= ) > > > + \ udp-dst (udp-dst) ip-tos (ip-tos) ip-ttl (ip-ttl) ip-src (ip-src) > > > + \ ip-dst (ip-dst) eth-src (eth-src) eth-dst (eth-dst) > > > + > > > Those command will set an internal configuration inside testpmd, any > > > following flow rule using the action vxlan_encap will use the last > > > configuration set. > > > To have a different encapsulation header, one of those commands must > > > be called @@ -4241,6 +4245,12 @@ IPv4 VXLAN outer header:: > > > testpmd> flow create 0 ingress pattern end actions vxlan_encap / > > > queue index 0 / end > > > > > > + testpmd> set vxlan-tos-ttl ip-version ipv4 vni 4 udp-src 4 udp-dst = 4 > > > + testpmd> ip-tos 0 > > > + ip-ttl 255 ip-src 127.0.0.1 ip-dst 128.0.0.1 eth-src 11:11:= 11:11:11:11 > > > + eth-dst 22:22:22:22:22:22 > > > + testpmd> flow create 0 ingress pattern end actions vxlan_encap / > > > + queue index 0 / end > > > + > > > IPv6 VXLAN outer header:: > > > > > > testpmd> set vxlan ip-version ipv6 vni 4 udp-src 4 udp-dst 4 ip-src > > > ::1 @@ - > > > 4254,6 +4264,12 @@ IPv6 VXLAN outer header:: > > > testpmd> flow create 0 ingress pattern end actions vxlan_encap / > > > queue index 0 / end > > > > > > + testpmd> set vxlan-tos-ttl ip-version ipv6 vni 4 udp-src 4 udp-dst = 4 > > > + ip-tos 0 ip-ttl 255 ::1 ip-dst ::2222 eth-src 11:11:11:11:1= 1:11 > > > + eth-dst 22:22:22:22:22:22 > > > + testpmd> flow create 0 ingress pattern end actions vxlan_encap / > > > + queue index 0 / end > > > + > > > Sample NVGRE encapsulation rule > > > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > > > > > -- > > > 1.8.3.1