[openib-general] FW: [PATCH 1 of 3] mad: large RMPP support
Sean Hefty
mshefty at ichips.intel.com
Thu Feb 9 09:38:48 PST 2006
Roland Dreier wrote:
> My rule of thumb is that we shouldn't rely on being able to allocate a
> contiguous buffer bigger than 4 KB, but assuming we can allocate 4 KB
> is fine. 4 KB is the lowest page size of any real architecture, and
> if the kernel is out of free pages then any allocation is likely to
> fail. Allocations of larger buffers may fail because of memory
> fragmentation, even with plenty of free memory.
>
> That is: a 4 KB buffer is fine.
Given this, I think that we'll need to go with the linked list then. Maybe
something like:
struct ib_mad_segment {
struct list_head list;
u8 data[0];
};
struct ib_mad_send_buf {
...
void *mad; /* first segment */
struct list_head rmpp_list;
u32 segment_size;
...
};
I'm undecided about whether all MADs should use the rmpp_list, with *mad
referencing the data of the first segment. This keeps the code consistent, but
would result in the first segment being larger (256-bytes) than additional
segments (say 220-bytes).
Users could then walk the list of buffers without calling a routine that needs
to start at the beginning of the list every time.
- Sean
More information about the general
mailing list