On 10/4/2021 10:20 AM, Ananyev, Konstantin wrote:
> 
>>>>
>>>>>  static inline int
>>>>>  rte_eth_rx_queue_count(uint16_t port_id, uint16_t queue_id)
>>>>>  {
>>>>> - struct rte_eth_dev *dev;
>>>>> + struct rte_eth_fp_ops *p;
>>>>> + void *qd;
>>>>> +
>>>>> + if (port_id >= RTE_MAX_ETHPORTS ||
>>>>> +                 queue_id >= RTE_MAX_QUEUES_PER_PORT) {
>>>>> +         RTE_ETHDEV_LOG(ERR,
>>>>> +                 "Invalid port_id=%u or queue_id=%u\n",
>>>>> +                 port_id, queue_id);
>>>>> +         return -EINVAL;
>>>>> + }
>>>>
>>>> Should the checkes wrapped with '#ifdef RTE_ETHDEV_DEBUG_RX' like others?
>>>
>>> Original rte_eth_rx_queue_count() always have similar checks enabled,
>>> that's why I also kept them 'always on'.
>>>
>>>>
>>>> <...>
>>>>
>>>>> +++ b/lib/ethdev/version.map
>>>>> @@ -247,11 +247,16 @@ EXPERIMENTAL {
>>>>>   rte_mtr_meter_policy_delete;
>>>>>   rte_mtr_meter_policy_update;
>>>>>   rte_mtr_meter_policy_validate;
>>>>> +
>>>>> + # added in 21.05
>>>>
>>>> s/21.05/21.11/
>>>>
>>>>> + __rte_eth_rx_epilog;
>>>>> + __rte_eth_tx_prolog;
>>>>
>>>> These are directly called by application and must be part of ABI, but 
>>>> marked as
>>>> 'internal' and has '__rte' prefix to highligh it, this may be confusing.
>>>> What about making them proper, non-internal, API?
>>>
>>> Hmm not sure what do you suggest here.
>>> We don't want users to call them explicitly.
>>> They are sort of helpers for rte_eth_rx_burst/rte_eth_tx_burst.
>>> So I did what I thought is our usual policy for such semi-internal thigns:
>>> have '@intenal' in comments, but in version.map put them under 
>>> EXPERIMETAL/global
>>> section.
>>>
>>> What do you think it should be instead?
>>>
>>
>> Make them public API. (Basically just remove '__' prefix and @internal 
>> comment).
>>
>> This way application can use them to run custom callback(s) (not only the
>> registered ones), not sure if this can be dangerous though.
> 
> Hmm, as I said above, I don't want users to call them explicitly.
> Do you have any good reason to allow it?
> 

Just to get rid of this internal APIs that is exposed to application state.

>>
>> We need to trace the ABI for these functions, making them public clarifies 
>> it.
> 
> We do have plenty of semi-internal functions right now,
> why adding that one will be a problem?

As far as I remember existing ones are 'static inline' functions, and we don't
have an ABI concern with them. But these are actual functions called by 
application.

> From other side - if we'll declare it public, we will have obligations to 
> support it
> in future releases, plus it might encourage users to use it on its own.
> To me that sounds like extra headache without any gain in return.
> 

If having those two as public API doesn't make sense, I agree with you.

>> Also comment can be updated to describe intended usage instead of marking 
>> them
>> internal, and applications can use these anyway if we mark them internal or 
>> not.
> 

Reply via email to