|
|
@ -7,11 +7,12 @@ extern crate rcore_user;
|
|
|
|
|
|
|
|
|
|
|
|
extern crate alloc;
|
|
|
|
extern crate alloc;
|
|
|
|
|
|
|
|
|
|
|
|
use rcore_user::syscall::*;
|
|
|
|
use alloc::boxed::Box;
|
|
|
|
|
|
|
|
use alloc::vec;
|
|
|
|
|
|
|
|
use alloc::vec::Vec;
|
|
|
|
use isomorphic_drivers::net::ethernet::intel::ixgbe;
|
|
|
|
use isomorphic_drivers::net::ethernet::intel::ixgbe;
|
|
|
|
use isomorphic_drivers::provider;
|
|
|
|
use isomorphic_drivers::provider;
|
|
|
|
use alloc::prelude::*;
|
|
|
|
use rcore_user::syscall::*;
|
|
|
|
use alloc::vec;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#[derive(Copy, Clone)]
|
|
|
|
#[derive(Copy, Clone)]
|
|
|
|
pub struct Provider;
|
|
|
|
pub struct Provider;
|
|
|
@ -51,7 +52,6 @@ impl provider::Provider for Provider {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// IMPORTANT: Must define main() like this
|
|
|
|
// IMPORTANT: Must define main() like this
|
|
|
|
#[no_mangle]
|
|
|
|
#[no_mangle]
|
|
|
|
pub fn main() {
|
|
|
|
pub fn main() {
|
|
|
@ -62,14 +62,16 @@ pub fn main() {
|
|
|
|
println!("IXGBE addr at {:#X}", addr);
|
|
|
|
println!("IXGBE addr at {:#X}", addr);
|
|
|
|
let ixgbe = ixgbe::IXGBEDriver::init(Provider::new(), addr as usize, 0x20000);
|
|
|
|
let ixgbe = ixgbe::IXGBEDriver::init(Provider::new(), addr as usize, 0x20000);
|
|
|
|
println!("IXGBE driver up");
|
|
|
|
println!("IXGBE driver up");
|
|
|
|
let data = [0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // mac
|
|
|
|
let data = [
|
|
|
|
|
|
|
|
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // mac
|
|
|
|
0x00, 0x16, 0x31, 0xff, 0xa4, 0x9f, // mac
|
|
|
|
0x00, 0x16, 0x31, 0xff, 0xa4, 0x9f, // mac
|
|
|
|
0x08, 0x06, // arp
|
|
|
|
0x08, 0x06, // arp
|
|
|
|
0x00, 0x01, 0x08, 0x00, 0x06, 0x04, 0x00, 0x01,
|
|
|
|
0x00, 0x01, 0x08, 0x00, 0x06, 0x04, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff,
|
|
|
|
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // mac
|
|
|
|
0xff, // mac
|
|
|
|
0x0a, 0x00, 0x00, 0x02, // ip
|
|
|
|
0x0a, 0x00, 0x00, 0x02, // ip
|
|
|
|
0x00, 0x16, 0x31, 0xff, 0xa4, 0x9f, // mac
|
|
|
|
0x00, 0x16, 0x31, 0xff, 0xa4, 0x9f, // mac
|
|
|
|
0x0a, 0x00, 0x00, 0x01]; // ip
|
|
|
|
0x0a, 0x00, 0x00, 0x01,
|
|
|
|
|
|
|
|
]; // ip
|
|
|
|
let size = 2048;
|
|
|
|
let size = 2048;
|
|
|
|
let tx_batch = vec![&data[..]; size];
|
|
|
|
let tx_batch = vec![&data[..]; size];
|
|
|
|
println!("IXGBE driver waiting for link up");
|
|
|
|
println!("IXGBE driver waiting for link up");
|
|
|
|