forked from M-Labs/artiq
Use four ethmac buffers instead of two.
This should address an issue where the host sends a packet burst, the second packet in a burst gets dropped, the rest also gets dropped since smoltcp doesn't do reassembly, and the entire dance is repeated on every retransmit.
This commit is contained in:
parent
3a19a9fb77
commit
b95db4fa4e
|
@ -5,11 +5,17 @@ use smoltcp::phy::Device;
|
||||||
|
|
||||||
const RX0_BASE: usize = mem::ETHMAC_BASE + 0x0000;
|
const RX0_BASE: usize = mem::ETHMAC_BASE + 0x0000;
|
||||||
const RX1_BASE: usize = mem::ETHMAC_BASE + 0x0800;
|
const RX1_BASE: usize = mem::ETHMAC_BASE + 0x0800;
|
||||||
const TX0_BASE: usize = mem::ETHMAC_BASE + 0x1000;
|
const RX2_BASE: usize = mem::ETHMAC_BASE + 0x1000;
|
||||||
const TX1_BASE: usize = mem::ETHMAC_BASE + 0x1800;
|
const RX3_BASE: usize = mem::ETHMAC_BASE + 0x1800;
|
||||||
|
const TX0_BASE: usize = mem::ETHMAC_BASE + 0x2000;
|
||||||
|
const TX1_BASE: usize = mem::ETHMAC_BASE + 0x2800;
|
||||||
|
const TX2_BASE: usize = mem::ETHMAC_BASE + 0x3000;
|
||||||
|
const TX3_BASE: usize = mem::ETHMAC_BASE + 0x3800;
|
||||||
|
|
||||||
const RX_BUFFERS: [*mut u8; 2] = [RX0_BASE as *mut u8, RX1_BASE as *mut u8];
|
const RX_BUFFERS: [*mut u8; 4] = [RX0_BASE as *mut u8, RX1_BASE as *mut u8,
|
||||||
const TX_BUFFERS: [*mut u8; 2] = [TX0_BASE as *mut u8, TX1_BASE as *mut u8];
|
RX2_BASE as *mut u8, RX3_BASE as *mut u8];
|
||||||
|
const TX_BUFFERS: [*mut u8; 4] = [TX0_BASE as *mut u8, TX1_BASE as *mut u8,
|
||||||
|
TX2_BASE as *mut u8, TX3_BASE as *mut u8];
|
||||||
|
|
||||||
pub struct EthernetDevice;
|
pub struct EthernetDevice;
|
||||||
|
|
||||||
|
|
|
@ -112,6 +112,8 @@ class _NIST_Ions(MiniSoC, AMPSoC):
|
||||||
sdram_controller_type="minicon",
|
sdram_controller_type="minicon",
|
||||||
l2_size=128*1024,
|
l2_size=128*1024,
|
||||||
ident=artiq_version,
|
ident=artiq_version,
|
||||||
|
ethmac_nrxslots=4,
|
||||||
|
ethmac_ntxslots=4,
|
||||||
**kwargs)
|
**kwargs)
|
||||||
AMPSoC.__init__(self)
|
AMPSoC.__init__(self)
|
||||||
if isinstance(self.platform.toolchain, XilinxVivadoToolchain):
|
if isinstance(self.platform.toolchain, XilinxVivadoToolchain):
|
||||||
|
|
Loading…
Reference in New Issue