On Tue, 21 Feb 2012, Rolf vandeVaart wrote:
I think I am OK with this. Alternatively, you could have done something like is done in the TCP BTL where the payload and header are added together for the frag size? To state more clearly, I was trying to say you could do something similar to what is done at line 1015 in btl_tcp_component.c and ended up with the same results?
That will more or less work for my current use case (I found those examples this morning). I would have to pad my fragments to ensure cache line alignment (if that ends up being faster for SMSG).
This is just making the payload buffer a different chunk of memory than the headers?
Yes.
I am just trying to understand the motivation for the change.
The motivation is to allow the payload to be aligned separately from the header. Currently, if I want payload alignment I have to pad the header to get the correct alignment on the data.
I think the way you have it is more correct so we can support the case where someone specifies the header size and the payload size differently and expects the free list code to do the right thing.
This is one of my motivations. When writing the uGNI BTL I expected the free list to do the "right thing" and allocate a payload buffer even if I didn't specify an mpool. -Nathan