forked from M-Labs/zynq-rs
eth: latter tuning
This commit is contained in:
parent
7ae8be58cf
commit
8267acfcba
@ -184,10 +184,10 @@ if false {
|
||||
let eth = zynq::eth::Eth::default(HWADDR.clone());
|
||||
println!("Eth on");
|
||||
|
||||
const RX_LEN: usize = 4096;
|
||||
const RX_LEN: usize = 8192;
|
||||
// Number of transmission buffers (minimum is two because with
|
||||
// one, duplicate packet transmission occurs)
|
||||
const TX_LEN: usize = 4096;
|
||||
const TX_LEN: usize = 8192;
|
||||
let eth = eth.start_rx(RX_LEN);
|
||||
let mut eth = eth.start_tx(TX_LEN);
|
||||
|
||||
@ -217,7 +217,7 @@ if false {
|
||||
while let Ok(stream) = TcpStream::accept(TCP_PORT, 0x10_0000, 0x10_0000).await {
|
||||
let stats_tx = stats_tx.clone();
|
||||
task::spawn(async move {
|
||||
let tx_data = (0..=255).take(65536).collect::<alloc::vec::Vec<u8>>();
|
||||
let tx_data = (0..=255).take(8192).collect::<alloc::vec::Vec<u8>>();
|
||||
loop {
|
||||
// const CHUNK_SIZE: usize = 65536;
|
||||
// match stream.send((0..=255).cycle().take(CHUNK_SIZE)).await {
|
||||
|
@ -83,6 +83,8 @@ impl DescList {
|
||||
entry.word1.write(
|
||||
DescWord1::zeroed()
|
||||
);
|
||||
l2cache().invalidate_slice(&mut buffer[..]);
|
||||
dcci_slice(&buffer[..]);
|
||||
}
|
||||
|
||||
DescList {
|
||||
@ -108,9 +110,9 @@ impl DescList {
|
||||
let word1 = entry.word1.read();
|
||||
let len = word1.frame_length_lsbs().into();
|
||||
let buffer = &mut self.buffers[self.next][0..len];
|
||||
// Invalidate caches for packet buffer
|
||||
l2cache().invalidate_slice(&mut buffer[..]);
|
||||
dcci_slice(&buffer[..]);
|
||||
// // Invalidate caches for packet buffer
|
||||
// l2cache().invalidate_slice(&mut buffer[..]);
|
||||
// dcci_slice(&buffer[..]);
|
||||
|
||||
self.next += 1;
|
||||
if self.next >= list_len {
|
||||
@ -139,6 +141,10 @@ pub struct PktRef<'a> {
|
||||
|
||||
impl<'a> Drop for PktRef<'a> {
|
||||
fn drop(&mut self) {
|
||||
// Flush buffer from cache, to be filled by the peripheral
|
||||
// before next read
|
||||
l2cache().invalidate_slice(self.buffer);
|
||||
dcci_slice(self.buffer);
|
||||
|
||||
self.entry.word0.modify(|_, w| w.used(false));
|
||||
dmb();
|
||||
|
Loading…
Reference in New Issue
Block a user