From 7e12dea0fe3fcebe1cfc2d3ebf1f63d4a689a44e Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 22 Oct 2016 19:13:57 -0600 Subject: [PATCH] Set mac address on boot --- drivers/e1000d/Cargo.toml | 2 +- drivers/e1000d/src/device.rs | 2 ++ drivers/e1000d/src/main.rs | 1 + drivers/rtl8168d/Cargo.toml | 2 +- drivers/rtl8168d/src/device.rs | 2 ++ drivers/rtl8168d/src/main.rs | 1 + 6 files changed, 8 insertions(+), 2 deletions(-) diff --git a/drivers/e1000d/Cargo.toml b/drivers/e1000d/Cargo.toml index 6261f65..9a9f2ab 100644 --- a/drivers/e1000d/Cargo.toml +++ b/drivers/e1000d/Cargo.toml @@ -7,5 +7,5 @@ bitflags = "*" dma = { path = "../../crates/dma/" } event = { path = "../../crates/event/" } io = { path = "../../crates/io/" } -spin = "*" +netutils = { path = "../../programs/netutils/" } syscall = { path = "../../syscall/" } diff --git a/drivers/e1000d/src/device.rs b/drivers/e1000d/src/device.rs index 257369c..d8c518b 100644 --- a/drivers/e1000d/src/device.rs +++ b/drivers/e1000d/src/device.rs @@ -1,6 +1,7 @@ use std::{cmp, mem, ptr, slice}; use dma::Dma; +use netutils::setcfg; use syscall::error::{Error, EACCES, EWOULDBLOCK, Result}; use syscall::scheme::Scheme; @@ -272,6 +273,7 @@ impl Intel8254x { mac_high as u8, (mac_high >> 8) as u8]; println!(" - MAC: {:>02X}:{:>02X}:{:>02X}:{:>02X}:{:>02X}:{:>02X}", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); + let _ = setcfg("mac", &format!("{:>02X}.{:>02X}.{:>02X}.{:>02X}.{:>02X}.{:>02X}", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5])); // // MTA => 0; diff --git a/drivers/e1000d/src/main.rs b/drivers/e1000d/src/main.rs index fbec102..9dbcf79 100644 --- a/drivers/e1000d/src/main.rs +++ b/drivers/e1000d/src/main.rs @@ -2,6 +2,7 @@ extern crate dma; extern crate event; +extern crate netutils; extern crate syscall; use std::cell::RefCell; diff --git a/drivers/rtl8168d/Cargo.toml b/drivers/rtl8168d/Cargo.toml index 394f156..a4243e7 100644 --- a/drivers/rtl8168d/Cargo.toml +++ b/drivers/rtl8168d/Cargo.toml @@ -7,5 +7,5 @@ bitflags = "*" dma = { path = "../../crates/dma/" } event = { path = "../../crates/event/" } io = { path = "../../crates/io/" } -spin = "*" +netutils = { path = "../../programs/netutils/" } syscall = { path = "../../syscall/" } diff --git a/drivers/rtl8168d/src/device.rs b/drivers/rtl8168d/src/device.rs index 4e8f53c..e0b8998 100644 --- a/drivers/rtl8168d/src/device.rs +++ b/drivers/rtl8168d/src/device.rs @@ -2,6 +2,7 @@ use std::mem; use dma::Dma; use io::{Mmio, Io, ReadOnly}; +use netutils::setcfg; use syscall::error::{Error, EACCES, EWOULDBLOCK, Result}; use syscall::scheme::SchemeMut; @@ -221,6 +222,7 @@ impl Rtl8168 { mac_high as u8, (mac_high >> 8) as u8]; println!(" - MAC: {:>02X}:{:>02X}:{:>02X}:{:>02X}:{:>02X}:{:>02X}", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); + let _ = setcfg("mac", &format!("{:>02X}.{:>02X}.{:>02X}.{:>02X}.{:>02X}.{:>02X}", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5])); // Reset - this will disable tx and rx, reinitialize FIFOs, and set the system buffer pointer to the initial value self.regs.cmd.writef(1 << 4, true); diff --git a/drivers/rtl8168d/src/main.rs b/drivers/rtl8168d/src/main.rs index 4460903..ddfa9e0 100644 --- a/drivers/rtl8168d/src/main.rs +++ b/drivers/rtl8168d/src/main.rs @@ -3,6 +3,7 @@ extern crate dma; extern crate event; extern crate io; +extern crate netutils; extern crate syscall; use std::cell::RefCell;