[PATCH] app/testpmd: fix tunnel offload validation

Ferruh Yigit ferruh.yigit at intel.com
Wed Nov 17 11:09:53 CET 2021


On 11/17/2021 8:57 AM, Gregory Etelson wrote:
> Hello Ferruh,
> 
> Can you estimate when this patch will be merged into 21.11 ?
> 

Hi Gregory,

It is not merged because it is missing review.

Ori, Slava, can you please help with the review?


> Thank you.
> 
> Regards,
> Gregory
> 
>> -----Original Message-----
>> From: Gregory Etelson <getelson at nvidia.com>
>> Sent: Tuesday, November 2, 2021 14:24
>> To: dev at dpdk.org; Gregory Etelson
>> <getelson at nvidia.com>
>> Cc: Matan Azrad <matan at nvidia.com>; Raslan
>> Darawsheh <rasland at nvidia.com>;
>> stable at dpdk.org; Xiaoyun Li
>> <xiaoyun.li at intel.com>
>> Subject: [PATCH] app/testpmd: fix tunnel offload
>> validation
>>
>> Tunnel offload API allows application to restore
>> packet to
>> its original form if chain of flows missed after
>> DECAP action.
>> The main idea of the tunnel offload API was to
>> query port PMD
>> to provide flow elements - actions or items.
>> Flow elements supplied by PMD are merged with
>> original flow rule
>> elements provided by testpmd operator to
>> create a new flow rule,
>> optimal for PMD, to implement the tunnel
>> offload API.
>> That flow rule transformation is hidden form
>> testpmd operator and uses
>> internal testpmd resources.
>>
>> Current testpmd did not release tunnel offload
>> resources if flow rule
>> validation failed.
>>
>> The patch always releases tunnel offload
>> resources after flow rule
>> validation returns.
>>
>> Cc: stable at dpdk.org
>>
>> Fixes: 1b9f274623b8 ("app/testpmd: add
>> commands for tunnel offload")
>>
>> Signed-off-by: Gregory Etelson
>> <getelson at nvidia.com>
>> ---
>>   app/test-pmd/config.c | 6 ++++--
>>   1 file changed, 4 insertions(+), 2 deletions(-)
>>
>> diff --git a/app/test-pmd/config.c b/app/test-
>> pmd/config.c
>> index a18871d461..4870aaeba6 100644
>> --- a/app/test-pmd/config.c
>> +++ b/app/test-pmd/config.c
>> @@ -2011,6 +2011,7 @@
>> port_flow_validate(portid_t port_id,
>>   	struct rte_flow_error error;
>>   	struct port_flow_tunnel *pft = NULL;
>>   	struct rte_port *port;
>> +	int ret;
>>
>>   	if (port_id_is_invalid(port_id,
>> ENABLED_WARN) ||
>>   	    port_id == (portid_t)RTE_PORT_ALL)
>> @@ -2037,10 +2038,11 @@
>> port_flow_validate(portid_t port_id,
>>   		if (pft->actions)
>>   			actions = pft->actions;
>>   	}
>> -	if (rte_flow_validate(port_id, attr,
>> pattern, actions, &error))
>> -		return
>> port_flow_complain(&error);
>> +	ret = rte_flow_validate(port_id, attr,
>> pattern, actions, &error);
>>   	if (tunnel_ops->enabled)
>>
>> 	port_flow_tunnel_offload_cmd_release(
>> port_id, tunnel_ops, pft);
>> +	if (ret)
>> +		return
>> port_flow_complain(&error);
>>   	printf("Flow rule validated\n");
>>   	return 0;
>>   }
>> --
>> 2.33.1
> 



More information about the dev mailing list