pub struct DeviceImplInfo {Show 13 fields
pub device_features: Option<u32>,
pub tx_depth: Option<u16>,
pub rx_depth: Option<u16>,
pub rx_threshold: Option<u16>,
pub max_buffer_parts: Option<u8>,
pub max_buffer_length: Option<u32>,
pub buffer_alignment: Option<u32>,
pub min_rx_buffer_length: Option<u32>,
pub min_tx_buffer_length: Option<u32>,
pub tx_head_length: Option<u16>,
pub tx_tail_length: Option<u16>,
pub rx_accel: Option<Vec<RxAcceleration>>,
pub tx_accel: Option<Vec<TxAcceleration>>,
/* private fields */
}
Expand description
Static device information.
DeviceImplInfo
must not change for the entire lifetime of a device.
Fields§
§device_features: Option<u32>
Device features Required.
tx_depth: Option<u16>
Maximum depth of tx frames in device’s outgoing queue. Required.
rx_depth: Option<u16>
Maximum number of rx frames in a device’s incoming queue. Required.
rx_threshold: Option<u16>
Rx depth threshold at which the device should be fed new rx buffers.
New buffer notifications from [NetworkDeviceIfc
] may be skipped while
the number of rx buffers held by the implementation is larger than
rx_threshold
. It is invalid to provide a value larger than rx_depth
.
rx_threshold = rx_depth
is functionally equivalent to rx_threshold = rx_depth - 1
.
A large value (close to rx_depth
) may cause considerable CPU thrash
for small rx completion transaction sizes, while a small value may cause
the implementation to be starved of buffers. The typical choice of value
is rx_depth / 2
.
Required.
max_buffer_parts: Option<u8>
Maximum virtual discontiguous buffer parts accepted by the device.
Devices that can’t perform scatter-gather operations must set
max_buffer_parts
to 1.
Must be in the range [1, MAX_BUFFER_PARTS
].
Required.
max_buffer_length: Option<u32>
Maximum total length of buffers. May be set to zero for no maximum.
Devices that do not support scatter-gather DMA may set this to a value smaller than a page size to guarantee compatibility. Required.
buffer_alignment: Option<u32>
Alignment requirement for buffers relative to the start of VMOs.
Must be greater than zero. Required.
min_rx_buffer_length: Option<u32>
The minimum rx buffer length for correct operation, in bytes. Required.
min_tx_buffer_length: Option<u32>
The minimum tx buffer length for correct operation, in bytes.
This length accounts only for the buffer’s body, and should not account
for tx_head_length
or tx_tail_length
.
Required.
tx_head_length: Option<u16>
Number of bytes requested as header bytes on tx buffers.
If set to zero, tx buffers will never contain header space. Otherwise, tx buffers will start at the beginning of the header space, and the header region will be informed. Required.
tx_tail_length: Option<u16>
Number of bytes requested as tail bytes on tx buffers.
If set to zero, tx buffers will never contain tail space. Otherwise, tx buffers will end at the end of the tail space, and the tail region will be informed. Required.
rx_accel: Option<Vec<RxAcceleration>>
Available Rx acceleration flags for this device, as defined in
[fuchsia.hardware.network/RxAcceleration
].
rx_accel
maps the RX_ACCEL_*
flags in the frame descriptors with
semantic acceleration features described by RxAcceleration
. Position
n
of rx_accel
conveys the meaning of the RX_ACCEL_n
flag.
Required.
tx_accel: Option<Vec<TxAcceleration>>
Available tx acceleration flags for this device, as defined in
[fuchsia.hardware.network/TxAcceleration
].
tx_accel
maps the TX_ACCEL_*
flags in the frame descriptors with
semantic acceleration features described by TxAcceleration
. Position
n
of tx_accel
conveys the meaning of the TX_ACCEL_n
flag.
Required.
Trait Implementations§
Source§impl Clone for DeviceImplInfo
impl Clone for DeviceImplInfo
Source§fn clone(&self) -> DeviceImplInfo
fn clone(&self) -> DeviceImplInfo
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for DeviceImplInfo
impl Debug for DeviceImplInfo
Source§impl<D: ResourceDialect> Decode<DeviceImplInfo, D> for DeviceImplInfo
impl<D: ResourceDialect> Decode<DeviceImplInfo, D> for DeviceImplInfo
Source§impl Default for DeviceImplInfo
impl Default for DeviceImplInfo
Source§fn default() -> DeviceImplInfo
fn default() -> DeviceImplInfo
Source§impl<D: ResourceDialect> Encode<DeviceImplInfo, D> for &DeviceImplInfo
impl<D: ResourceDialect> Encode<DeviceImplInfo, D> for &DeviceImplInfo
Source§impl PartialEq for DeviceImplInfo
impl PartialEq for DeviceImplInfo
Source§impl TypeMarker for DeviceImplInfo
impl TypeMarker for DeviceImplInfo
Source§type Owned = DeviceImplInfo
type Owned = DeviceImplInfo
Source§fn inline_align(_context: Context) -> usize
fn inline_align(_context: Context) -> usize
Source§fn inline_size(_context: Context) -> usize
fn inline_size(_context: Context) -> usize
inline_align
.§fn encode_is_copy() -> bool
fn encode_is_copy() -> bool
Self::Owned
matches the FIDL wire
format and encoding requires no validation. When true, we can optimize
encoding arrays and vectors of Self::Owned
to a single memcpy. Read more§fn decode_is_copy() -> bool
fn decode_is_copy() -> bool
Self::Owned
matches the FIDL wire
format and decoding requires no validation. When true, we can optimize
decoding arrays and vectors of Self::Owned
to a single memcpy.Source§impl ValueTypeMarker for DeviceImplInfo
impl ValueTypeMarker for DeviceImplInfo
Source§type Borrowed<'a> = &'a DeviceImplInfo
type Borrowed<'a> = &'a DeviceImplInfo
Encode<Self>
type cheaply obtainable from &Self::Owned
. There are three cases: Read more