forked from M-Labs/artiq-zynq
ddma/subkernel: fix wrong destination reported
This commit is contained in:
parent
616c40429e
commit
29cc0a6e28
|
@ -47,99 +47,6 @@ pub struct RPCException {
|
||||||
pub function: u32,
|
pub function: u32,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(has_drtio)]
|
|
||||||
#[derive(Debug, Clone)]
|
|
||||||
pub enum SubkernelStatus {
|
|
||||||
NoError,
|
|
||||||
Timeout,
|
|
||||||
IncorrectState,
|
|
||||||
CommLost,
|
|
||||||
OtherError,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Debug, Clone)]
|
|
||||||
pub enum Message {
|
|
||||||
LoadRequest(Vec<u8>),
|
|
||||||
LoadCompleted,
|
|
||||||
LoadFailed,
|
|
||||||
StartRequest,
|
|
||||||
KernelFinished(u8),
|
|
||||||
KernelException(
|
|
||||||
&'static [Option<eh_artiq::Exception<'static>>],
|
|
||||||
&'static [eh_artiq::StackPointerBacktrace],
|
|
||||||
&'static [(usize, usize)],
|
|
||||||
u8,
|
|
||||||
),
|
|
||||||
RpcSend {
|
|
||||||
is_async: bool,
|
|
||||||
data: Vec<u8>,
|
|
||||||
},
|
|
||||||
RpcRecvRequest(*mut ()),
|
|
||||||
RpcRecvReply(Result<usize, RPCException>),
|
|
||||||
|
|
||||||
CacheGetRequest(String),
|
|
||||||
CacheGetReply(Vec<i32>),
|
|
||||||
CachePutRequest(String, Vec<i32>),
|
|
||||||
|
|
||||||
DmaPutRequest(DmaRecorder),
|
|
||||||
DmaEraseRequest(String),
|
|
||||||
DmaGetRequest(String),
|
|
||||||
DmaGetReply(Option<(i32, i64, bool)>),
|
|
||||||
#[cfg(has_drtio)]
|
|
||||||
DmaStartRemoteRequest {
|
|
||||||
id: i32,
|
|
||||||
timestamp: i64,
|
|
||||||
},
|
|
||||||
#[cfg(has_drtio)]
|
|
||||||
DmaAwaitRemoteRequest(i32),
|
|
||||||
#[cfg(has_drtio)]
|
|
||||||
DmaAwaitRemoteReply {
|
|
||||||
timeout: bool,
|
|
||||||
error: u8,
|
|
||||||
channel: u32,
|
|
||||||
timestamp: u64,
|
|
||||||
},
|
|
||||||
|
|
||||||
#[cfg(has_drtio)]
|
|
||||||
UpDestinationsRequest(i32),
|
|
||||||
#[cfg(has_drtio)]
|
|
||||||
UpDestinationsReply(bool),
|
|
||||||
|
|
||||||
#[cfg(has_drtio)]
|
|
||||||
SubkernelLoadRunRequest {
|
|
||||||
id: u32,
|
|
||||||
run: bool,
|
|
||||||
},
|
|
||||||
#[cfg(has_drtio)]
|
|
||||||
SubkernelLoadRunReply {
|
|
||||||
succeeded: bool,
|
|
||||||
},
|
|
||||||
#[cfg(has_drtio)]
|
|
||||||
SubkernelAwaitFinishRequest {
|
|
||||||
id: u32,
|
|
||||||
timeout: u64,
|
|
||||||
},
|
|
||||||
#[cfg(has_drtio)]
|
|
||||||
SubkernelAwaitFinishReply {
|
|
||||||
status: SubkernelStatus,
|
|
||||||
},
|
|
||||||
#[cfg(has_drtio)]
|
|
||||||
SubkernelMsgSend {
|
|
||||||
id: u32,
|
|
||||||
data: Vec<u8>,
|
|
||||||
},
|
|
||||||
#[cfg(has_drtio)]
|
|
||||||
SubkernelMsgRecvRequest {
|
|
||||||
id: u32,
|
|
||||||
timeout: u64,
|
|
||||||
},
|
|
||||||
#[cfg(has_drtio)]
|
|
||||||
SubkernelMsgRecvReply {
|
|
||||||
status: SubkernelStatus,
|
|
||||||
count: u8,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
pub static mut SEEN_ASYNC_ERRORS: u8 = 0;
|
pub static mut SEEN_ASYNC_ERRORS: u8 = 0;
|
||||||
|
|
||||||
pub const ASYNC_ERROR_COLLISION: u8 = 1 << 0;
|
pub const ASYNC_ERROR_COLLISION: u8 = 1 << 0;
|
||||||
|
|
|
@ -119,10 +119,10 @@ fn process_aux_packet(
|
||||||
}
|
}
|
||||||
|
|
||||||
drtioaux::Packet::DestinationStatusRequest {
|
drtioaux::Packet::DestinationStatusRequest {
|
||||||
destination: _destination,
|
destination,
|
||||||
} => {
|
} => {
|
||||||
#[cfg(has_drtio_routing)]
|
#[cfg(has_drtio_routing)]
|
||||||
let hop = _routing_table.0[_destination as usize][*_rank as usize];
|
let hop = _routing_table.0[destination as usize][*_rank as usize];
|
||||||
#[cfg(not(has_drtio_routing))]
|
#[cfg(not(has_drtio_routing))]
|
||||||
let hop = 0;
|
let hop = 0;
|
||||||
|
|
||||||
|
@ -135,7 +135,7 @@ fn process_aux_packet(
|
||||||
drtioaux::send(
|
drtioaux::send(
|
||||||
0,
|
0,
|
||||||
&drtioaux::Packet::DmaPlaybackStatus {
|
&drtioaux::Packet::DmaPlaybackStatus {
|
||||||
destination: *_rank,
|
destination: destination,
|
||||||
id: status.id,
|
id: status.id,
|
||||||
error: status.error,
|
error: status.error,
|
||||||
channel: status.channel,
|
channel: status.channel,
|
||||||
|
@ -160,7 +160,7 @@ fn process_aux_packet(
|
||||||
Some(meta) => drtioaux::send(
|
Some(meta) => drtioaux::send(
|
||||||
0,
|
0,
|
||||||
&drtioaux::Packet::SubkernelMessage {
|
&drtioaux::Packet::SubkernelMessage {
|
||||||
destination: *_rank,
|
destination: destination,
|
||||||
id: kernel_manager.get_current_id().unwrap(),
|
id: kernel_manager.get_current_id().unwrap(),
|
||||||
last: meta.last,
|
last: meta.last,
|
||||||
length: meta.len as u16,
|
length: meta.len as u16,
|
||||||
|
@ -209,7 +209,7 @@ fn process_aux_packet(
|
||||||
let repno = hop - 1;
|
let repno = hop - 1;
|
||||||
match _repeaters[repno].aux_forward(
|
match _repeaters[repno].aux_forward(
|
||||||
&drtioaux::Packet::DestinationStatusRequest {
|
&drtioaux::Packet::DestinationStatusRequest {
|
||||||
destination: _destination,
|
destination: destination,
|
||||||
},
|
},
|
||||||
timer,
|
timer,
|
||||||
) {
|
) {
|
||||||
|
|
Loading…
Reference in New Issue