forked from M-Labs/artiq
drtio: receive and print unsolicited aux packets
Helps with debugging and prevents the aux channel from getting stuck after packets arrive after the timeout.
This commit is contained in:
parent
0befec7d26
commit
5a9cc004f2
|
@ -172,6 +172,14 @@ pub mod drtio {
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn process_unsolicited_aux(linkno: u8) {
|
||||||
|
match drtioaux::recv_link(linkno) {
|
||||||
|
Ok(Some(packet)) => warn!("[LINK#{}] unsolicited aux packet: {:?}", linkno, packet),
|
||||||
|
Ok(None) => (),
|
||||||
|
Err(_) => warn!("[LINK#{}] aux packet error", linkno)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fn process_local_errors(linkno: u8) {
|
fn process_local_errors(linkno: u8) {
|
||||||
let errors;
|
let errors;
|
||||||
let linkidx = linkno as usize;
|
let linkidx = linkno as usize;
|
||||||
|
@ -215,6 +223,7 @@ pub mod drtio {
|
||||||
if link_up(linkno) {
|
if link_up(linkno) {
|
||||||
/* link was previously up */
|
/* link was previously up */
|
||||||
if link_rx_up(linkno) {
|
if link_rx_up(linkno) {
|
||||||
|
process_unsolicited_aux(linkno);
|
||||||
process_local_errors(linkno);
|
process_local_errors(linkno);
|
||||||
process_aux_errors(&io, linkno);
|
process_aux_errors(&io, linkno);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -40,7 +40,7 @@ impl Repeater {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn service(&mut self, routing_table: &drtio_routing::RoutingTable, rank: u8) {
|
pub fn service(&mut self, routing_table: &drtio_routing::RoutingTable, rank: u8) {
|
||||||
self.process_errors();
|
self.process_local_errors();
|
||||||
|
|
||||||
match self.state {
|
match self.state {
|
||||||
RepeaterState::Down => {
|
RepeaterState::Down => {
|
||||||
|
@ -97,6 +97,7 @@ impl Repeater {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
RepeaterState::Up => {
|
RepeaterState::Up => {
|
||||||
|
self.process_unsolicited_aux();
|
||||||
if !rep_link_rx_up(self.repno) {
|
if !rep_link_rx_up(self.repno) {
|
||||||
info!("[REP#{}] link is down", self.repno);
|
info!("[REP#{}] link is down", self.repno);
|
||||||
self.state = RepeaterState::Down;
|
self.state = RepeaterState::Down;
|
||||||
|
@ -111,7 +112,15 @@ impl Repeater {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn process_errors(&self) {
|
fn process_unsolicited_aux(&self) {
|
||||||
|
match drtioaux::recv_link(self.auxno) {
|
||||||
|
Ok(Some(packet)) => warn!("[REP#{}] unsolicited aux packet: {:?}", self.repno, packet),
|
||||||
|
Ok(None) => (),
|
||||||
|
Err(_) => warn!("[REP#{}] aux packet error", self.repno)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn process_local_errors(&self) {
|
||||||
let repno = self.repno as usize;
|
let repno = self.repno as usize;
|
||||||
let errors;
|
let errors;
|
||||||
unsafe {
|
unsafe {
|
||||||
|
|
Loading…
Reference in New Issue