[dpdk-dev] [PATCH v2 1/2] ethdev: replace callback getting filter operations

Andrew Rybchenko andrew.rybchenko at oktetlabs.ru
Mon Mar 15 09:43:01 CET 2021


On 3/15/21 10:54 AM, Thomas Monjalon wrote:
> 15/03/2021 08:18, Andrew Rybchenko:
>> On 3/12/21 8:46 PM, Thomas Monjalon wrote:
>>> --- a/lib/librte_ethdev/rte_flow.c
>>> +++ b/lib/librte_ethdev/rte_flow.c
>>> @@ -255,18 +255,19 @@ rte_flow_ops_get(uint16_t port_id, struct rte_flow_error *error)
>>>  
>>>  	if (unlikely(!rte_eth_dev_is_valid_port(port_id)))
>>>  		code = ENODEV;
>>> -	else if (unlikely(!dev->dev_ops->filter_ctrl ||
>>> -			  dev->dev_ops->filter_ctrl(dev,
>>> -						    RTE_ETH_FILTER_GENERIC,
>>> -						    RTE_ETH_FILTER_GET,
>>> -						    &ops) ||
>>> -			  !ops))
>>> -		code = ENOSYS;
>>> +	else if (unlikely(dev->dev_ops->flow_ops_get == NULL))
>>> +		code = ENOTSUP;
>>>  	else
>>> -		return ops;
>>> -	rte_flow_error_set(error, code, RTE_FLOW_ERROR_TYPE_UNSPECIFIED,
>>> -			   NULL, rte_strerror(code));
>>> -	return NULL;
>>> +		code = dev->dev_ops->flow_ops_get(dev, &ops);
>>> +	if (code == 0 && ops == NULL)
>>> +		code = EACCES;
>> It looks something new. I think it should be mentioned in flow_ops_get
>> type documentation (similar to eth_promiscuous_enable_t) and
>> rte_flow_validate() etc functions
>> return values description.
> It is an internal function used only in rte_flow.c.
> The real consequence is to set rte_errno in a lot of rte_flow API.
> Not sure there is a good way to document the code details.
> Other codes are not documented in rte_flow.h

First of all it is a behaviour of the flow_ops_get callback and
driver developers should know that it is a legal to return 0 and
ops==NULL and know what it means.

Second, it is visible as rte_flow_validate() (and other functions
which use rte_flow_ops_get()) return value value which has
special meaning. So, should be documented.



More information about the dev mailing list