diff options
| author | Michael Brown | 2012-07-08 18:14:08 +0200 |
|---|---|---|
| committer | Michael Brown | 2012-07-08 18:54:53 +0200 |
| commit | 4a8a7bd91a6911779e3972a6d00d5a25bd7c0367 (patch) | |
| tree | d793f7afd35e41b7a05df35ef272ba8a6717f344 /src/net | |
| parent | [netdevice] Process all received packets in net_poll() (diff) | |
| download | ipxe-4a8a7bd91a6911779e3972a6d00d5a25bd7c0367.tar.gz ipxe-4a8a7bd91a6911779e3972a6d00d5a25bd7c0367.tar.xz ipxe-4a8a7bd91a6911779e3972a6d00d5a25bd7c0367.zip | |
[iobuf] Allocate I/O buffer descriptor separately to conserve aligned memory
I/O buffers are allocated on aligned boundaries. The I/O buffer
descriptor (the struct io_buffer) is currently attached to the end of
the I/O buffer. When the size of the buffer is close to its
alignment, this can waste large amounts of aligned memory.
For example, a network card using 2048-byte receive buffers will end
up allocating 2072 bytes on a 2048-byte boundary. This effectively
wastes 50% of the available memory.
Improve the situation by allocating the descriptor separately from the
main I/O buffer if inline allocation would cause the total allocated
size to cross the alignment boundary.
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/net')
0 files changed, 0 insertions, 0 deletions
