[dpdk-dev] [PATCH 2/2] lpm: hide internal data
Kevin Traynor
ktraynor at redhat.com
Wed Sep 30 10:45:33 CEST 2020
On 16/09/2020 04:17, Ruifeng Wang wrote:
>
>> -----Original Message-----
>> From: Medvedkin, Vladimir <vladimir.medvedkin at intel.com>
>> Sent: Wednesday, September 16, 2020 12:28 AM
>> To: Bruce Richardson <bruce.richardson at intel.com>; Ruifeng Wang
>> <Ruifeng.Wang at arm.com>
>> Cc: dev at dpdk.org; Honnappa Nagarahalli
>> <Honnappa.Nagarahalli at arm.com>; nd <nd at arm.com>
>> Subject: Re: [PATCH 2/2] lpm: hide internal data
>>
>> Hi Ruifeng,
>>
>> On 15/09/2020 17:02, Bruce Richardson wrote:
>>> On Mon, Sep 07, 2020 at 04:15:17PM +0800, Ruifeng Wang wrote:
>>>> Fields except tbl24 and tbl8 in rte_lpm structure have no need to be
>>>> exposed to the user.
>>>> Hide the unneeded exposure of structure fields for better ABI
>>>> maintainability.
>>>>
>>>> Suggested-by: David Marchand <david.marchand at redhat.com>
>>>> Signed-off-by: Ruifeng Wang <ruifeng.wang at arm.com>
>>>> Reviewed-by: Phil Yang <phil.yang at arm.com>
>>>> ---
>>>> lib/librte_lpm/rte_lpm.c | 152 +++++++++++++++++++++++---------------
>> -
>>>> lib/librte_lpm/rte_lpm.h | 7 --
>>>> 2 files changed, 91 insertions(+), 68 deletions(-)
>>>>
>>> <snip>
>>>> diff --git a/lib/librte_lpm/rte_lpm.h b/lib/librte_lpm/rte_lpm.h
>>>> index 03da2d37e..112d96f37 100644
>>>> --- a/lib/librte_lpm/rte_lpm.h
>>>> +++ b/lib/librte_lpm/rte_lpm.h
>>>> @@ -132,17 +132,10 @@ struct rte_lpm_rule_info {
>>>>
>>>> /** @internal LPM structure. */
>>>> struct rte_lpm {
>>>> - /* LPM metadata. */
>>>> - char name[RTE_LPM_NAMESIZE]; /**< Name of the lpm. */
>>>> - uint32_t max_rules; /**< Max. balanced rules per lpm. */
>>>> - uint32_t number_tbl8s; /**< Number of tbl8s. */
>>>> - struct rte_lpm_rule_info rule_info[RTE_LPM_MAX_DEPTH]; /**<
>> Rule info table. */
>>>> -
>>>> /* LPM Tables. */
>>>> struct rte_lpm_tbl_entry tbl24[RTE_LPM_TBL24_NUM_ENTRIES]
>>>> __rte_cache_aligned; /**< LPM tbl24 table. */
>>>> struct rte_lpm_tbl_entry *tbl8; /**< LPM tbl8 table. */
>>>> - struct rte_lpm_rule *rules_tbl; /**< LPM rules. */
>>>> };
>>>>
>>>
>>> Since this changes the ABI, does it not need advance notice?
>>>
>>> [Basically the return value point from rte_lpm_create() will be
>>> different, and that return value could be used by rte_lpm_lookup()
>>> which as a static inline function will be in the binary and using the
>>> old structure offsets.]
>>>
>>
>> Agree with Bruce, this patch breaks ABI, so it can't be accepted without prior
>> notice.
>>
> So if the change wants to happen in 20.11, a deprecation notice should have been
> added in 20.08.
> I should have added a deprecation notice. This change will have to wait for next ABI update window.
>
Do you plan to extend? or is this just speculative?
A quick scan and there seems to be several projects using some of these
members that you are proposing to hide. e.g. BESS, NFF-Go, DPVS,
gatekeeper. I didn't look at the details to see if they are really needed.
Not sure how much notice they'd need or if they update DPDK much, but I
think it's worth having a closer look as to how they use lpm and what
the impact to them is.
> Thanks.
> Ruifeng
>>>> /** LPM RCU QSBR configuration structure. */
>>>> --
>>>> 2.17.1
>>>>
>>
>> --
>> Regards,
>> Vladimir
More information about the dev
mailing list