How would calling an API be better than referencing the stored data
yourself? A cache line reference is a cache line reference, and presumably
the VLIB buffer is already in L1 since it's your active data.

On Thu, Dec 7, 2017 at 10:45 AM, Michal Mazur <michal.ma...@linaro.org>
wrote:

> Hi,
>
> For odp4vpp plugin we need a new API function which, given user area
> pointer, will return a pointer to ODP packet buffer. It is needed when
> packets processed by VPP are sent back to ODP and only a pointer to VLIB
> buffer data (stored inside user area) is known.
>
> I have tried to store the ODP buffer pointer in VLIB data but reading it
> for every packet lowers performance by 800kpps.
>
> For odp-dpdk implementation it can look like:
> /** @internal Inline function @param uarea @return */
> static inline odp_packet_t _odp_packet_from_user_area(void *uarea)
> {
>        return (odp_packet_t)((uintptr_t)uarea - _odp_packet_inline.udata);
> }
>
> Please let me know what you think.
>
> Thanks,
> Michal
>

Reply via email to