Hi All,

I am using odp-dpdk(odp-0.2 tag). I am testing odp-ipsec application.
To add ESP and AH header in case of encryption, I am moving header
into HEADROOM instead of moving the payload and put header. I am able
to make it successful. But once in a while i am facing header
corruption issue because sometime the offset of mb.buf_addr from mb is
not equal to sizeof(odp_packet_hdr_t).

odp_packet_hdr_t | HEADROOM | packet data

Here, First part should be sizeof(odp_packet_hdr_t ), But i am getting
it sometime 64 instead of 192(which is cache line round up of
sizeof(odp_packet_hdr_t )).

But only mb.buf_addr offset from mb is 64, actual data(odp packet
header) is till 192 byte from mb.
So according to calculation, When i am moving data to HEADROOM, i am
corrupting some part of odp_packet_hdr_t and then application crashes.

This corruption happens because odp_packet_hdr_t is till 192 byte from
mb, but application is receiving like,

mb=0
mb->buf_addr = 64,
mb->pkt.data = 192(Complition of headroom).

So in actual odp_packet_hdr_t part continues in HEADROOM also, and
once i move anything in headroom, I am corrupting odp packet header.

I have observed that when buffer is allocated from mempool in dpdk,
mb->buf_addr from mb is not proper.

Once application starts receiving buffer of wrong offsets, then
subsequent all buffer will with same problem. If we do not do anything
with headroom then everything works fine because odp packet header is
safe even 128 byte of it is in headroom section.

Has anybody faced this issue?
Is this issue known, any pointers?
Thanks
_______________________________________________
lng-odp mailing list
lng-odp@lists.linaro.org
https://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to