Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ycai
simbricks
Commits
34295850
Commit
34295850
authored
Apr 29, 2021
by
Hejing Li
Browse files
Merge branch 'master' of github.com:simbricks/simbricks
parents
113c8fbd
15bb217d
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
33 additions
and
7 deletions
+33
-7
lib/simbricks/nicbm/nicbm.cc
lib/simbricks/nicbm/nicbm.cc
+5
-5
sims/nic/corundum_bm/corundum_bm.cc
sims/nic/corundum_bm/corundum_bm.cc
+28
-2
No files found.
lib/simbricks/nicbm/nicbm.cc
View file @
34295850
...
...
@@ -78,13 +78,13 @@ void Runner::IssueDma(DMAOp &op) {
// can directly issue
#ifdef DEBUG_NICBM
printf
(
"nicbm: issuing dma op %p addr %lx len %zu pending %zu
\n
"
,
&
op
,
op
.
dma_addr
,
op
.
len
,
dma_pending
);
op
.
dma_addr
_
,
op
.
len
_
,
dma_pending
_
);
#endif
DmaDo
(
op
);
}
else
{
#ifdef DEBUG_NICBM
printf
(
"nicbm: enqueuing dma op %p addr %lx len %zu pending %zu
\n
"
,
&
op
,
op
.
dma_addr
,
op
.
len
,
dma_pending
);
op
.
dma_addr
_
,
op
.
len
_
,
dma_pending
_
);
#endif
dma_queue_
.
push_back
(
&
op
);
}
...
...
@@ -229,8 +229,8 @@ void Runner::H2DReadcomp(volatile struct SimbricksProtoPcieH2DReadcomp *rc) {
DMAOp
*
op
=
(
DMAOp
*
)(
uintptr_t
)
rc
->
req_id
;
#ifdef DEBUG_NICBM
printf
(
"nicbm: completed dma read op %p addr %lx len %zu
\n
"
,
op
,
op
->
dma_addr
,
op
->
len
);
printf
(
"nicbm: completed dma read op %p addr %lx len %zu
\n
"
,
op
,
op
->
dma_addr
_
,
op
->
len
_
);
#endif
memcpy
(
op
->
data_
,
(
void
*
)
rc
->
data
,
op
->
len_
);
...
...
@@ -245,7 +245,7 @@ void Runner::H2DWritecomp(volatile struct SimbricksProtoPcieH2DWritecomp *wc) {
#ifdef DEBUG_NICBM
printf
(
"nicbm: completed dma write op %p addr %lx len %zu
\n
"
,
op
,
op
->
dma_addr
,
op
->
len
);
op
->
dma_addr
_
,
op
->
len
_
);
#endif
dev_
.
DmaComplete
(
*
op
);
...
...
sims/nic/corundum_bm/corundum_bm.cc
View file @
34295850
...
...
@@ -33,6 +33,8 @@
#include <cassert>
// #define DEBUG 1
static
nicbm
::
Runner
*
runner
;
namespace
corundum
{
...
...
@@ -118,7 +120,7 @@ bool DescRing::empty() {
}
bool
DescRing
::
full
()
{
return
(
this
->
_currHead
-
this
->
_tailPtr
>=
this
->
_size
);
return
(
this
->
_currHead
-
this
->
_tailPtr
>=
(
int
)
this
->
_size
);
}
bool
DescRing
::
updatePtr
(
ptr_t
ptr
,
bool
head
)
{
...
...
@@ -187,6 +189,9 @@ void EventRing::issueEvent(unsigned type, unsigned source) {
memset
(
event
,
0
,
sizeof
(
Event
));
event
->
type
=
type
;
event
->
source
=
source
;
#ifdef DEBUG
printf
(
"corundum_bm: event ring issue dma addr %lx index %lu len %lu
\n
"
,
op
->
dma_addr_
,
op
->
tag
,
op
->
len_
);
#endif
runner
->
IssueDma
(
*
op
);
this
->
_currHead
++
;
this
->
armed
=
false
;
...
...
@@ -253,6 +258,9 @@ TxRing::~TxRing() {
}
void
TxRing
::
setHeadPtr
(
ptr_t
ptr
)
{
#ifdef DEBUG
printf
(
"corundum_bm: tx ring %u
\n
"
,
ptr
);
#endif
DescRing
::
setHeadPtr
(
ptr
);
while
(
this
->
_currTail
!=
this
->
_headPtr
)
{
unsigned
index
=
this
->
_currTail
&
this
->
_sizeMask
;
...
...
@@ -265,6 +273,9 @@ void TxRing::setHeadPtr(ptr_t ptr) {
op
->
ring
=
this
;
op
->
tag
=
this
->
_currTail
;
op
->
write_
=
false
;
#ifdef DEBUG
printf
(
"corundum_bm: tx issue dma addr %lx index %lu len %lu
\n
"
,
op
->
dma_addr_
,
op
->
tag
,
op
->
len_
);
#endif
runner
->
IssueDma
(
*
op
);
this
->
_currTail
++
;
}
...
...
@@ -275,6 +286,9 @@ void TxRing::dmaDone(DMAOp *op) {
case
DMA_TYPE_DESC
:
{
assert
(
!
op
->
write_
);
Desc
*
desc
=
(
Desc
*
)
op
->
data_
;
#ifdef DEBUG
printf
(
"corundum_bm: tx dma desc done addr %lx index %lu len %u
\n
"
,
desc
->
addr
,
op
->
tag
,
desc
->
len
);
#endif
op
->
type
=
DMA_TYPE_MEM
;
op
->
dma_addr_
=
desc
->
addr
;
op
->
len_
=
desc
->
len
;
...
...
@@ -284,13 +298,16 @@ void TxRing::dmaDone(DMAOp *op) {
}
case
DMA_TYPE_MEM
:
assert
(
!
op
->
write_
);
#ifdef DEBUG
printf
(
"corundum_bm: tx dma memory done index %lu len %lu
\n
"
,
op
->
tag
,
op
->
len_
);
#endif
runner
->
EthSend
(
op
->
data_
,
op
->
len_
);
updatePtr
((
ptr_t
)
op
->
tag
,
false
);
this
->
txCplRing
->
complete
(
op
->
tag
,
op
->
len_
,
true
);
delete
op
;
break
;
default:
fprintf
(
stderr
,
"Unknown DMA type %
u
\n
"
,
op
->
type
);
fprintf
(
stderr
,
"Unknown DMA type %
d
\n
"
,
op
->
type
);
abort
();
}
}
...
...
@@ -306,6 +323,9 @@ void RxRing::dmaDone(DMAOp *op) {
case
DMA_TYPE_DESC
:
{
assert
(
!
op
->
write_
);
Desc
*
desc
=
(
Desc
*
)
op
->
data_
;
#ifdef DEBUG
printf
(
"corundum_bm: rx dma desc done addr %lx index %lu len %lu
\n
"
,
desc
->
addr
,
op
->
tag
,
op
->
rx_data
->
len
);
#endif
op
->
type
=
DMA_TYPE_MEM
;
op
->
dma_addr_
=
desc
->
addr
;
op
->
len_
=
op
->
rx_data
->
len
;
...
...
@@ -317,6 +337,9 @@ void RxRing::dmaDone(DMAOp *op) {
}
case
DMA_TYPE_MEM
:
assert
(
op
->
write_
);
#ifdef DEBUG
printf
(
"corundum_bm: rx dma memory done index %lu len %lu
\n
"
,
op
->
tag
,
op
->
len_
);
#endif
updatePtr
((
ptr_t
)
op
->
tag
,
false
);
this
->
rxCplRing
->
complete
(
op
->
tag
,
op
->
len_
,
false
);
delete
op
;
...
...
@@ -343,6 +366,9 @@ void RxRing::rx(RxData *rx_data) {
op
->
rx_data
=
rx_data
;
op
->
tag
=
this
->
_currTail
;
op
->
write_
=
false
;
#ifdef DEBUG
printf
(
"corundum_bm: rx issue dma addr %lx index %lu len %lu
\n
"
,
op
->
dma_addr_
,
op
->
tag
,
op
->
len_
);
#endif
runner
->
IssueDma
(
*
op
);
this
->
_currTail
++
;
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment