continue
This commit is contained in:
53
zynq7000-hal/src/eth/tx_descr.rs
Normal file
53
zynq7000-hal/src/eth/tx_descr.rs
Normal file
@ -0,0 +1,53 @@
|
||||
use arbitrary_int::u14;
|
||||
|
||||
pub use super::Ownership;
|
||||
|
||||
/// RX buffer descriptor.
|
||||
///
|
||||
/// The user should declare an array of this structure inside uncached memory.
|
||||
///
|
||||
/// These descriptors are shared between software and hardware and contain information
|
||||
/// related to frame reception.
|
||||
#[repr(C)]
|
||||
pub struct Descriptor {
|
||||
/// The first word of the descriptor which is the byte address of the buffer.
|
||||
pub word0: u32,
|
||||
/// The second word of the descriptor.
|
||||
pub word1: Word1,
|
||||
}
|
||||
|
||||
#[bitbybit::bitenum(u3, exhaustive = true)]
|
||||
#[derive(Debug, PartialEq, Eq)]
|
||||
pub enum TransmitChecksumGenerationStatus {
|
||||
NoError = 0b000,
|
||||
VlanError = 0b001,
|
||||
SnapError = 0b010,
|
||||
IpError = 0b011,
|
||||
NotVlanOrSnapOrIp = 0b100,
|
||||
NonSupportedPacketFragmentation = 0b101,
|
||||
PacketNotTcpUdp = 0b110,
|
||||
PrematureEndOfFrame = 0b111,
|
||||
}
|
||||
|
||||
#[bitbybit::bitfield(u32)]
|
||||
#[derive(Debug, PartialEq, Eq)]
|
||||
pub struct Word1 {
|
||||
#[bit(31, rw)]
|
||||
ownership: Ownership,
|
||||
#[bit(30, rw)]
|
||||
wrap: bool,
|
||||
#[bit(29, rw)]
|
||||
retry_limit_exceeded: bool,
|
||||
#[bit(27, rw)]
|
||||
transmit_frame_corruption_ahb_error: bool,
|
||||
#[bit(26, rw)]
|
||||
late_collision: bool,
|
||||
#[bits(20..=22, rw)]
|
||||
checksum_status: TransmitChecksumGenerationStatus,
|
||||
#[bit(16, rw)]
|
||||
no_crc_generation: bool,
|
||||
#[bit(15, rw)]
|
||||
last_buffer: bool,
|
||||
#[bits(0..=13, rw)]
|
||||
tx_len: u14,
|
||||
}
|
Reference in New Issue
Block a user