[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