[dpdk-dev] [PATCH 01/38] eal: add support for 24 40 and 48 bit operations

Wiles, Keith keith.wiles at intel.com
Tue Jun 20 16:34:24 CEST 2017


> On Jun 20, 2017, at 5:43 AM, Hemant Agrawal <hemant.agrawal at nxp.com> wrote:
> 
> On 6/19/2017 7:22 PM, Wiles, Keith wrote:
>> 
>>> On Jun 19, 2017, at 6:00 AM, Shreyansh Jain <shreyansh.jain at nxp.com> wrote:
>>> 
>>> Hello Adrien,
>>> 
>>> On Friday 16 June 2017 04:04 PM, Adrien Mazarguil wrote:
>>>> Hi Shreyansh,
>>>> On Fri, Jun 16, 2017 at 09:21:35AM +0000, Shreyansh Jain wrote:
>>>>> Hi Bruce,
>>>>> 
>>>>>> -----Original Message-----
>>>>>> From: Bruce Richardson [mailto:bruce.richardson at intel.com]
>>>>>> Sent: Friday, June 16, 2017 2:27 PM
>>>>>> To: Shreyansh Jain <shreyansh.jain at nxp.com>
>>>>>> Cc: dev at dpdk.org; ferruh.yigit at intel.com; Hemant Agrawal
>>>>>> <hemant.agrawal at nxp.com>
>>>>>> Subject: Re: [dpdk-dev] [PATCH 01/38] eal: add support for 24 40 and 48 bit
>>>>>> operations
>>>>>> 
>>>>>> On Fri, Jun 16, 2017 at 11:10:31AM +0530, Shreyansh Jain wrote:
>>>>>>> From: Hemant Agrawal <hemant.agrawal at nxp.com>
>>>>>>> 
>>>>>>> Bit Swap and LE<=>BE conversions for 23, 40 and 48 bit width
>>>>>>> 
>>>>>>> Signed-off-by: Hemant Agrawal <hemant.agrawal at nxp.com>
>>>>>>> ---
>>>>>>> .../common/include/generic/rte_byteorder.h         | 78
>>>>>> ++++++++++++++++++++++
>>>>>>> 1 file changed, 78 insertions(+)
>>>>>>> 
>>>>>> Are these really common enough for inclusion in an generic EAL file?
>>>>>> Would they be better being driver specific, so that we don't end up with
>>>>>> lots of extra byte-swap routines for each possible size used by a
>>>>>> driver.
>>>>> Reasoning was to keep all bit/byte swap at a single place and if it is
>>>>> useful for others.
>>>>> 
>>>>> From DPAA perspective, these macro can be anywhere. In case someone else too
>>>>> has use of this (now or in near-future), probably then we can consider this
>>>>> in EAL.
>>>>> Else, if I don't get much responses in a few days, I will shift them to
>>>>> DPAA driver in next version of this series.
>>>> While I'm not against exposing exotic byte swapping functions, they are not
>>>> completely safe and I'm not sure they should be part of public header files
>>>> on that basis.
>>>> Problem is their storage size is larger than the number of bytes they deal
>>>> with, which raises the question: are filler bytes prepended or appended to
>>>> the converted value? How about input values in non-native order? Answering
>>>> that is not so easy as it depends on the use case. We actually had a similar
>>>> issue when defining VXLAN's VNI field for rte_flow, which is 24-bit in
>>>> network order.
>>>> Take rte_constant_bswap48() for instance, assuming input value is
>>>> little-endian, output is supposed to be big-endian. While the shifts are
>>>> correct, filler bytes are not in the right place for a big-endian system,
>>>> and the resulting value stored on uint64_t cannot be used as-is. Again, that
>>>> depends on the use case, it could be correct if the resulting value was to
>>>> be used as is on a little-endian system.
>>> 
>>> I understand what you have stated - the application or any user needs to be context aware about what they are using and the side-effect of such conversions.
>>> 
>>>> I think the only safe way to deal with that is by defining specific types of
>>>> the proper size, e.g.:
>>>> typedef uint8_t uint48_t[6];
>>>> These are cumbersome and cannot be used like normal integers though. With
>>>> such types, byte-swapping functions become meaningless.
>>>> Since these are supposed to be rather simple functions, I'm not sure
>>>> handling/documenting all this complexity in rte_byteorder.h makes sense.
>>> 
>>> I have no issues moving these into DPAA specific code. Hemant added them in generic just in case they would be of use to others.
>>> 
>>> -
>>> Shreyansh
>> 
>> These are all static inline functions, so no real code increase unless used and having them in one spot is the best place IMO.
>> 
>> 
>> Regards,
>> Keith
> 
> Yes! these are simple static inline functions with no core unless used.
> Many hardware accelerators usages 40 bit & 48 bits data. we thought, it can be usable by others as well.
> 
> currently we are seeing a mixed opinion.
> 
> In next revision, We will move them within our driver code. If someone need them in future, we can always bring them to eal.

Is there really a big objection to allowing this patch to be accepted?

> 
> Regards,
> Hemant
> 
>> 
>> 
> 
> 

Regards,
Keith



More information about the dev mailing list