mirror of
https://github.com/DragonOS-Community/DragonOS.git
synced 2025-06-21 13:46:36 +00:00
将smoltcp升级到0.11.0版本 (#740)
This commit is contained in:
@ -1,6 +1,7 @@
|
||||
//这个文件的绝大部分内容是copy virtio_net.rs的,考虑到所有的驱动都要用操作系统提供的协议栈,我觉得可以把这些内容抽象出来
|
||||
|
||||
use crate::{
|
||||
arch::rand::rand,
|
||||
driver::{
|
||||
base::{
|
||||
device::{bus::Bus, driver::Driver, Device, IdTable},
|
||||
@ -22,7 +23,10 @@ use core::{
|
||||
fmt::Debug,
|
||||
ops::{Deref, DerefMut},
|
||||
};
|
||||
use smoltcp::{phy, wire};
|
||||
use smoltcp::{
|
||||
phy,
|
||||
wire::{self, HardwareAddress},
|
||||
};
|
||||
use system_error::SystemError;
|
||||
|
||||
use super::e1000e::{E1000EBuffer, E1000EDevice};
|
||||
@ -102,16 +106,12 @@ impl phy::TxToken for E1000ETxToken {
|
||||
impl E1000EDriver {
|
||||
#[allow(clippy::arc_with_non_send_sync)]
|
||||
pub fn new(device: E1000EDevice) -> Self {
|
||||
let mut iface_config = smoltcp::iface::Config::new();
|
||||
|
||||
// todo: 随机设定这个值。
|
||||
// 参见 https://docs.rs/smoltcp/latest/smoltcp/iface/struct.Config.html#structfield.random_seed
|
||||
iface_config.random_seed = 12345;
|
||||
|
||||
iface_config.hardware_addr = Some(wire::HardwareAddress::Ethernet(
|
||||
let mut iface_config = smoltcp::iface::Config::new(HardwareAddress::Ethernet(
|
||||
smoltcp::wire::EthernetAddress(device.mac_address()),
|
||||
));
|
||||
|
||||
iface_config.random_seed = rand() as u64;
|
||||
|
||||
let inner: Arc<SpinLock<E1000EDevice>> = Arc::new(SpinLock::new(device));
|
||||
let result = E1000EDriver { inner };
|
||||
return result;
|
||||
@ -175,16 +175,13 @@ impl phy::Device for E1000EDriver {
|
||||
impl E1000EInterface {
|
||||
pub fn new(mut driver: E1000EDriver) -> Arc<Self> {
|
||||
let iface_id = generate_iface_id();
|
||||
let mut iface_config = smoltcp::iface::Config::new();
|
||||
|
||||
// todo: 随机设定这个值。
|
||||
// 参见 https://docs.rs/smoltcp/latest/smoltcp/iface/struct.Config.html#structfield.random_seed
|
||||
iface_config.random_seed = 12345;
|
||||
|
||||
iface_config.hardware_addr = Some(wire::HardwareAddress::Ethernet(
|
||||
let mut iface_config = smoltcp::iface::Config::new(HardwareAddress::Ethernet(
|
||||
smoltcp::wire::EthernetAddress(driver.inner.lock().mac_address()),
|
||||
));
|
||||
let iface = smoltcp::iface::Interface::new(iface_config, &mut driver);
|
||||
iface_config.random_seed = rand() as u64;
|
||||
|
||||
let iface =
|
||||
smoltcp::iface::Interface::new(iface_config, &mut driver, Instant::now().into());
|
||||
|
||||
let driver: E1000EDriverWrapper = E1000EDriverWrapper(UnsafeCell::new(driver));
|
||||
let result = Arc::new(E1000EInterface {
|
||||
|
Reference in New Issue
Block a user