]> git.ipfire.org Git - thirdparty/ipxe.git/commit
[gve] Add support for raw DMA addressing
authorMichael Brown <mcb30@ipxe.org>
Fri, 26 Sep 2025 11:33:19 +0000 (12:33 +0100)
committerMichael Brown <mcb30@ipxe.org>
Mon, 29 Sep 2025 14:13:55 +0000 (15:13 +0100)
commitb8dd3c384baeeab14c0455e4f1ce704c6e097c96
tree0db3f2759cf71fe7dc4e51d7e1850bed68f85bc1
parent9f554ec9d07db63e3132b31df5f5ae68a0debe07
[gve] Add support for raw DMA addressing

Raw DMA addressing allows the transmit and receive descriptors to
provide the DMA address of the data buffer directly, without requiring
the use of a pre-registered queue page list.  It is modelled in the
device as a magic "raw DMA" queue page list (with QPL ID 0xffffffff)
covering the whole of the DMA address space.

When using raw DMA addressing, the transmit and receive datapaths
could use the normal pattern of mapping I/O buffers directly, and
avoid copying packet data into and out of the fixed queue page list
ring buffer.  However, since we must retain support for queue page
list addressing (which requires this additional copying), we choose to
minimise code size by continuing to use the fixed ring buffer even
when using raw DMA addressing.

Add support for using raw DMA addressing by setting the queue page
list base device address appropriately, omitting the commands to
register and unregister the queue page lists, and specifying the raw
DMA QPL ID when creating the TX and RX queues.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/drivers/net/gve.c
src/drivers/net/gve.h