The IP's next protocol will be specified by user when set IP-in-IP tunnel header via set raw decap/encap commands. Currently this field is wrongly set to zero if there is no upper layer. This leads to the encapsulated IP-in-IP tunnel header is not correct. This next protocol field should be leave it as-is if there is no upper layer or value is already set. Fixes: 30626def03d6 ("app/testpmd: support raw encap/decap actions") Cc: stable@dpdk.org Signed-off-by: Xiaoyu Min <jackmin@mellanox.com> --- app/test-pmd/cmdline_flow.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/app/test-pmd/cmdline_flow.c b/app/test-pmd/cmdline_flow.c index 0d0bc0a5b2..d5ad64bc8b 100644 --- a/app/test-pmd/cmdline_flow.c +++ b/app/test-pmd/cmdline_flow.c @@ -5996,11 +5996,13 @@ update_fields(uint8_t *buf, struct rte_flow_item *item, uint16_t next_proto) case RTE_FLOW_ITEM_TYPE_IPV4: ipv4 = (struct rte_flow_item_ipv4 *)buf; ipv4->hdr.version_ihl = 0x45; - ipv4->hdr.next_proto_id = (uint8_t)next_proto; + if (next_proto && ipv4->hdr.next_proto_id == 0) + ipv4->hdr.next_proto_id = (uint8_t)next_proto; break; case RTE_FLOW_ITEM_TYPE_IPV6: ipv6 = (struct rte_flow_item_ipv6 *)buf; - ipv6->hdr.proto = (uint8_t)next_proto; + if (next_proto && ipv6->hdr.proto == 0) + ipv6->hdr.proto = (uint8_t)next_proto; ipv6_vtc_flow = rte_be_to_cpu_32(ipv6->hdr.vtc_flow); ipv6_vtc_flow &= 0x0FFFFFFF; /*< reset version bits. */ ipv6_vtc_flow |= 0x60000000; /*< set ipv6 version. */ @@ -6182,9 +6184,11 @@ cmd_set_raw_parsed(const struct buffer *in) break; case RTE_FLOW_ITEM_TYPE_GRE_KEY: size = sizeof(rte_be32_t); + proto = 0x0; break; case RTE_FLOW_ITEM_TYPE_MPLS: size = sizeof(struct rte_flow_item_mpls); + proto = 0x0; break; case RTE_FLOW_ITEM_TYPE_NVGRE: size = sizeof(struct rte_flow_item_nvgre); -- 2.24.0.rc0.3.g12a4aeaad8
> -----Original Message-----
> From: Xiaoyu Min <jackmin@mellanox.com>
> Sent: Thursday, October 31, 2019 12:11 PM
> To: Ori Kam <orika@mellanox.com>; Adrien Mazarguil
> <adrien.mazarguil@6wind.com>; Wenzhuo Lu <wenzhuo.lu@intel.com>;
> Jingjing Wu <jingjing.wu@intel.com>; Bernard Iremonger
> <bernard.iremonger@intel.com>
> Cc: dev@dpdk.org; stable@dpdk.org
> Subject: [PATCH] app/testpmd: fix IP next proto in set raw decap/encap
>
> The IP's next protocol will be specified by user when set IP-in-IP
> tunnel header via set raw decap/encap commands.
>
> Currently this field is wrongly set to zero if there is no upper layer.
> This leads to the encapsulated IP-in-IP tunnel header is not correct.
>
> This next protocol field should be leave it as-is if there is no upper
> layer or value is already set.
>
> Fixes: 30626def03d6 ("app/testpmd: support raw encap/decap actions")
> Cc: stable@dpdk.org
>
> Signed-off-by: Xiaoyu Min <jackmin@mellanox.com>
Acked-by: Ori Kam <orika@mellanox.com>
Thanks,
Ori
> -----Original Message-----
> From: dev <dev-bounces@dpdk.org> On Behalf Of Xiaoyu Min
> Sent: Thursday, October 31, 2019 12:11
> To: Ori Kam <orika@mellanox.com>; Adrien Mazarguil
> <adrien.mazarguil@6wind.com>; Wenzhuo Lu <wenzhuo.lu@intel.com>;
> Jingjing Wu <jingjing.wu@intel.com>; Bernard Iremonger
> <bernard.iremonger@intel.com>
> Cc: dev@dpdk.org; stable@dpdk.org
> Subject: [dpdk-dev] [PATCH] app/testpmd: fix IP next proto in set raw
> decap/encap
>
> The IP's next protocol will be specified by user when set IP-in-IP tunnel
> header via set raw decap/encap commands.
>
> Currently this field is wrongly set to zero if there is no upper layer.
> This leads to the encapsulated IP-in-IP tunnel header is not correct.
>
> This next protocol field should be leave it as-is if there is no upper layer or
> value is already set.
>
> Fixes: 30626def03d6 ("app/testpmd: support raw encap/decap actions")
> Cc: stable@dpdk.org
>
> Signed-off-by: Xiaoyu Min <jackmin@mellanox.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
On 10/31/2019 6:22 PM, Ori Kam wrote:
>
>
>> -----Original Message-----
>> From: Xiaoyu Min <jackmin@mellanox.com>
>> Sent: Thursday, October 31, 2019 12:11 PM
>> To: Ori Kam <orika@mellanox.com>; Adrien Mazarguil
>> <adrien.mazarguil@6wind.com>; Wenzhuo Lu <wenzhuo.lu@intel.com>;
>> Jingjing Wu <jingjing.wu@intel.com>; Bernard Iremonger
>> <bernard.iremonger@intel.com>
>> Cc: dev@dpdk.org; stable@dpdk.org
>> Subject: [PATCH] app/testpmd: fix IP next proto in set raw decap/encap
>>
>> The IP's next protocol will be specified by user when set IP-in-IP
>> tunnel header via set raw decap/encap commands.
>>
>> Currently this field is wrongly set to zero if there is no upper layer.
>> This leads to the encapsulated IP-in-IP tunnel header is not correct.
>>
>> This next protocol field should be leave it as-is if there is no upper
>> layer or value is already set.
>>
>> Fixes: 30626def03d6 ("app/testpmd: support raw encap/decap actions")
>> Cc: stable@dpdk.org
>>
>> Signed-off-by: Xiaoyu Min <jackmin@mellanox.com>
>
> Acked-by: Ori Kam <orika@mellanox.com>
Applied to dpdk-next-net/master, thanks.