net: Reset tcp socks when new eth link is detected
This commit is contained in:
parent
ba30575406
commit
f303ab639a
|
@ -190,7 +190,7 @@ impl ServerHandle {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn update_link_speed(&mut self) {
|
pub fn update_link_speed(&mut self)-> bool {
|
||||||
if !self.link_was_up & self.phy.phy_link_up() {
|
if !self.link_was_up & self.phy.phy_link_up() {
|
||||||
if let Some(speed) = self.phy.speed().map(|s| match s {
|
if let Some(speed) = self.phy.speed().map(|s| match s {
|
||||||
PhySpeed::HalfDuplexBase10T => Speed::HalfDuplexBase10T,
|
PhySpeed::HalfDuplexBase10T => Speed::HalfDuplexBase10T,
|
||||||
|
@ -200,11 +200,14 @@ impl ServerHandle {
|
||||||
}) {
|
}) {
|
||||||
info!("New eth link is up. Setting detected PhySpeed: {:?}", speed);
|
info!("New eth link is up. Setting detected PhySpeed: {:?}", speed);
|
||||||
self.phy.get_miim().set_speed(speed);
|
self.phy.get_miim().set_speed(speed);
|
||||||
|
self.link_was_up = self.phy.phy_link_up();
|
||||||
|
return true;
|
||||||
} else {
|
} else {
|
||||||
debug!("Failed to detect link speed.");
|
debug!("Failed to detect link speed.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
self.link_was_up = self.phy.phy_link_up();
|
self.link_was_up = self.phy.phy_link_up();
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn poll_iface(&mut self) {
|
pub fn poll_iface(&mut self) {
|
||||||
|
@ -355,8 +358,14 @@ impl<M: Miim> EthernetPhy<M> {
|
||||||
pub fn eth_poll_link_status_and_update_link_speed() -> bool {
|
pub fn eth_poll_link_status_and_update_link_speed() -> bool {
|
||||||
unsafe {
|
unsafe {
|
||||||
if let Some(ref mut server_handle ) = SERVER_HANDLE {
|
if let Some(ref mut server_handle ) = SERVER_HANDLE {
|
||||||
server_handle.update_link_speed();
|
let new_link_is_up = server_handle.update_link_speed();
|
||||||
return server_handle.link_was_up;
|
if new_link_is_up {
|
||||||
|
info!("Resetting TCP Sockets");
|
||||||
|
for_each(|socket, _| {
|
||||||
|
eth_close_socket(socket);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return new_link_is_up;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
panic!("eth_poll_link_status_and_update_link_speed is called before init");
|
panic!("eth_poll_link_status_and_update_link_speed is called before init");
|
||||||
|
|
Loading…
Reference in New Issue