#[non_exhaustive]pub enum FlitTlpType {
Show 13 variants
Nop,
MemRead32,
UioMemRead,
MsgToRc,
MemWrite32,
IoWrite,
CfgWrite0,
FetchAdd32,
CompareSwap32,
DeferrableMemWrite32,
UioMemWrite,
MsgDToRc,
LocalTlpPrefix,
}Expand description
TLP type codes used in Flit Mode DW0 byte 0.
These are completely different from the non-flit TlpType encoding.
In flit mode, DW0[7:0] is a flat 8-bit type code rather than the
non-flit Fmt[2:0] | Type[4:0] split.
#[non_exhaustive] — future type codes will be added without breaking
downstream match arms.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Nop
NOP — smallest flit object, 1 DW base header, no payload.
MemRead32
32-bit Memory Read Request (3 DW base header, no payload despite Length field).
UioMemRead
UIO Memory Read — 64-bit address, 4 DW base header (PCIe 6.1+ UIO).
MsgToRc
Message routed to Root Complex, no data.
MemWrite32
32-bit Memory Write Request (3 DW base header + payload).
IoWrite
I/O Write Request — requires mandatory OHC-A2.
CfgWrite0
Type 0 Configuration Write Request — requires mandatory OHC-A3.
FetchAdd32
32-bit FetchAdd AtomicOp Request.
CompareSwap32
32-bit Compare-and-Swap AtomicOp Request (2 DW payload).
DeferrableMemWrite32
32-bit Deferrable Memory Write Request.
UioMemWrite
UIO Memory Write — 64-bit address, 4 DW base header (PCIe 6.1+ UIO).
MsgDToRc
Message with Data routed to Root Complex.
LocalTlpPrefix
Local TLP Prefix token (1 DW base header).
Implementations§
Source§impl FlitTlpType
impl FlitTlpType
Sourcepub fn base_header_dw(&self) -> u8
pub fn base_header_dw(&self) -> u8
Base header size in DW, not counting OHC extension words.
- NOP and LocalTlpPrefix: 1 DW
- UIO types (64-bit address): 4 DW
- All other types: 3 DW
Sourcepub fn is_read_request(&self) -> bool
pub fn is_read_request(&self) -> bool
Returns true for read requests that carry no payload even when
the Length field is non-zero.
Sourcepub fn has_data_payload(&self) -> bool
pub fn has_data_payload(&self) -> bool
Returns true for TLP types that carry a data payload in the wire packet.
When false, total_bytes() ignores the Length field and contributes
zero payload bytes regardless of its value. This covers:
- Read requests (payload is in the completion, not the request)
- NOP and Local TLP Prefix (management objects with no data)
- Message-without-data variants (
MsgToRc)
Trait Implementations§
Source§impl Clone for FlitTlpType
impl Clone for FlitTlpType
Source§fn clone(&self) -> FlitTlpType
fn clone(&self) -> FlitTlpType
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more