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 >