pub struct DmaRegion {
pub cpu_ptr: *mut u8,
pub bus_addr: u64,
pub size: usize,
}Expand description
DMA-capable memory region.
Contains both the CPU-accessible pointer and the device-visible bus address.
Fields§
§cpu_ptr: *mut u8CPU-accessible pointer to the region.
bus_addr: u64Device-visible bus address.
size: usizeTotal size of the region in bytes.
Implementations§
Source§impl DmaRegion
impl DmaRegion
Sourcepub const DEFAULT_QUEUE_SIZE: usize = 32usize
pub const DEFAULT_QUEUE_SIZE: usize = 32usize
Default queue size (number of descriptors).
Sourcepub const DEFAULT_BUFFER_SIZE: usize = 2_048usize
pub const DEFAULT_BUFFER_SIZE: usize = 2_048usize
Default buffer size (2KB each).
Sourcepub const RX_DESC_OFFSET: usize = 0usize
pub const RX_DESC_OFFSET: usize = 0usize
RX descriptor table offset.
Sourcepub const RX_AVAIL_OFFSET: usize = 512usize
pub const RX_AVAIL_OFFSET: usize = 512usize
RX available ring offset.
Sourcepub const RX_USED_OFFSET: usize = 1_024usize
pub const RX_USED_OFFSET: usize = 1_024usize
RX used ring offset.
Sourcepub const TX_DESC_OFFSET: usize = 2_048usize
pub const TX_DESC_OFFSET: usize = 2_048usize
TX descriptor table offset.
Sourcepub const TX_AVAIL_OFFSET: usize = 2_560usize
pub const TX_AVAIL_OFFSET: usize = 2_560usize
TX available ring offset.
Sourcepub const TX_USED_OFFSET: usize = 3_072usize
pub const TX_USED_OFFSET: usize = 3_072usize
TX used ring offset.
Sourcepub const RX_BUFFERS_OFFSET: usize = 4_096usize
pub const RX_BUFFERS_OFFSET: usize = 4_096usize
RX buffers offset.
Sourcepub const TX_BUFFERS_OFFSET: usize = 69_632usize
pub const TX_BUFFERS_OFFSET: usize = 69_632usize
TX buffers offset.
Sourcepub unsafe fn new(cpu_ptr: *mut u8, bus_addr: u64, size: usize) -> Self
pub unsafe fn new(cpu_ptr: *mut u8, bus_addr: u64, size: usize) -> Self
Create a new DMA region.
§Safety
cpu_ptrmust point to valid DMA-capable memorybus_addrmust be the corresponding device-visible address- Region must be properly aligned (page-aligned preferred)
Sourcepub fn rx_desc_cpu(&self) -> *mut u8
pub fn rx_desc_cpu(&self) -> *mut u8
Get CPU pointer for RX descriptor table.
Sourcepub fn rx_desc_bus(&self) -> u64
pub fn rx_desc_bus(&self) -> u64
Get bus address for RX descriptor table.
Sourcepub fn rx_avail_cpu(&self) -> *mut u8
pub fn rx_avail_cpu(&self) -> *mut u8
Get CPU pointer for RX available ring.
Sourcepub fn rx_avail_bus(&self) -> u64
pub fn rx_avail_bus(&self) -> u64
Get bus address for RX available ring.
Sourcepub fn rx_used_cpu(&self) -> *mut u8
pub fn rx_used_cpu(&self) -> *mut u8
Get CPU pointer for RX used ring.
Sourcepub fn rx_used_bus(&self) -> u64
pub fn rx_used_bus(&self) -> u64
Get bus address for RX used ring.
Sourcepub fn tx_desc_cpu(&self) -> *mut u8
pub fn tx_desc_cpu(&self) -> *mut u8
Get CPU pointer for TX descriptor table.
Sourcepub fn tx_desc_bus(&self) -> u64
pub fn tx_desc_bus(&self) -> u64
Get bus address for TX descriptor table.
Sourcepub fn tx_avail_cpu(&self) -> *mut u8
pub fn tx_avail_cpu(&self) -> *mut u8
Get CPU pointer for TX available ring.
Sourcepub fn tx_avail_bus(&self) -> u64
pub fn tx_avail_bus(&self) -> u64
Get bus address for TX available ring.
Sourcepub fn tx_used_cpu(&self) -> *mut u8
pub fn tx_used_cpu(&self) -> *mut u8
Get CPU pointer for TX used ring.
Sourcepub fn tx_used_bus(&self) -> u64
pub fn tx_used_bus(&self) -> u64
Get bus address for TX used ring.
Sourcepub fn rx_buffers_cpu(&self) -> *mut u8
pub fn rx_buffers_cpu(&self) -> *mut u8
Get CPU pointer for RX buffers.
Sourcepub fn rx_buffers_bus(&self) -> u64
pub fn rx_buffers_bus(&self) -> u64
Get bus address for RX buffers.
Sourcepub fn tx_buffers_cpu(&self) -> *mut u8
pub fn tx_buffers_cpu(&self) -> *mut u8
Get CPU pointer for TX buffers.
Sourcepub fn tx_buffers_bus(&self) -> u64
pub fn tx_buffers_bus(&self) -> u64
Get bus address for TX buffers.