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
2acf9f76
Commit
2acf9f76
authored
Sep 02, 2021
by
Antoine Kaufmann
Browse files
i40e_bm: remove global runner variable, use member
parent
07b3aa54
Changes
7
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
35 additions
and
43 deletions
+35
-43
sims/nic/i40e_bm/i40e_adminq.cc
sims/nic/i40e_bm/i40e_adminq.cc
+2
-5
sims/nic/i40e_bm/i40e_bm.cc
sims/nic/i40e_bm/i40e_bm.cc
+11
-13
sims/nic/i40e_bm/i40e_bm.h
sims/nic/i40e_bm/i40e_bm.h
+4
-3
sims/nic/i40e_bm/i40e_hmc.cc
sims/nic/i40e_bm/i40e_hmc.cc
+1
-3
sims/nic/i40e_bm/i40e_lan.cc
sims/nic/i40e_bm/i40e_lan.cc
+7
-7
sims/nic/i40e_bm/i40e_queues.cc
sims/nic/i40e_bm/i40e_queues.cc
+8
-9
sims/nic/i40e_bm/logger.cc
sims/nic/i40e_bm/logger.cc
+2
-3
No files found.
sims/nic/i40e_bm/i40e_adminq.cc
View file @
2acf9f76
...
...
@@ -33,13 +33,10 @@
namespace
i40e
{
extern
nicbm
::
Runner
*
runner
;
queue_admin_tx
::
queue_admin_tx
(
i40e_bm
&
dev_
,
uint64_t
&
reg_base_
,
uint32_t
&
reg_len_
,
uint32_t
&
reg_head_
,
uint32_t
&
reg_tail_
)
:
queue_base
(
"atx"
,
reg_head_
,
reg_tail_
),
dev
(
dev_
),
:
queue_base
(
"atx"
,
reg_head_
,
reg_tail_
,
dev_
),
reg_base
(
reg_base_
),
reg_len
(
reg_len_
)
{
desc_len
=
32
;
...
...
@@ -226,7 +223,7 @@ void queue_admin_tx::admin_desc_ctx::process() {
reinterpret_cast
<
struct
i40e_aqc_mac_address_read
*>
(
d
->
params
.
raw
);
struct
i40e_aqc_mac_address_read_data
ard
;
uint64_t
mac
=
runner
->
GetMacAddr
();
uint64_t
mac
=
dev
.
runner
_
->
GetMacAddr
();
#ifdef DEBUG_ADMINQ
queue
.
log
<<
" mac = "
<<
mac
<<
logger
::
endl
;
#endif
...
...
sims/nic/i40e_bm/i40e_bm.cc
View file @
2acf9f76
...
...
@@ -34,10 +34,8 @@
namespace
i40e
{
nicbm
::
Runner
*
runner
;
i40e_bm
::
i40e_bm
()
:
log
(
"i40e"
),
:
log
(
"i40e"
,
runner_
),
pf_atq
(
*
this
,
regs
.
pf_atqba
,
regs
.
pf_atqlen
,
regs
.
pf_atqh
,
regs
.
pf_atqt
),
hmc
(
*
this
),
shram
(
*
this
),
...
...
@@ -246,7 +244,7 @@ uint32_t i40e_bm::reg_mem_read32(uint64_t addr) {
break
;
case
I40E_GLVFGEN_TIMER
:
val
=
runner
->
TimePs
()
/
1000000
;
val
=
runner
_
->
TimePs
()
/
1000000
;
break
;
case
I40E_PFINT_LNKLST0
:
...
...
@@ -660,12 +658,12 @@ void i40e_bm::Timed(nicbm::TimedEvent &ev) {
iev
.
armed
=
false
;
if
(
int_msix_en_
)
{
runner
->
MsiXIssue
(
iev
.
vec
);
runner
_
->
MsiXIssue
(
iev
.
vec
);
}
else
if
(
iev
.
vec
>
0
)
{
log
<<
"timed_event: MSI-X disabled, but vec != 0"
<<
logger
::
endl
;
abort
();
}
else
{
runner
->
MsiIssue
(
0
);
runner
_
->
MsiIssue
(
0
);
}
}
...
...
@@ -688,7 +686,7 @@ void i40e_bm::SignalInterrupt(uint16_t vec, uint8_t itr) {
abort
();
}
uint64_t
curtime
=
runner
->
TimePs
();
uint64_t
curtime
=
runner
_
->
TimePs
();
uint64_t
newtime
=
curtime
+
mindelay
;
if
(
iev
.
armed
&&
iev
.
time_
<=
newtime
)
{
// already armed and this is not scheduled sooner
...
...
@@ -699,7 +697,7 @@ void i40e_bm::SignalInterrupt(uint16_t vec, uint8_t itr) {
return
;
}
else
if
(
iev
.
armed
)
{
// need to reschedule
runner
->
EventCancel
(
iev
);
runner
_
->
EventCancel
(
iev
);
}
iev
.
armed
=
true
;
...
...
@@ -710,7 +708,7 @@ void i40e_bm::SignalInterrupt(uint16_t vec, uint8_t itr) {
<<
" (itr "
<<
itr
<<
")"
<<
logger
::
endl
;
#endif
runner
->
EventSchedule
(
iev
);
runner
_
->
EventSchedule
(
iev
);
}
void
i40e_bm
::
reset
(
bool
indicate_done
)
{
...
...
@@ -729,7 +727,7 @@ void i40e_bm::reset(bool indicate_done) {
for
(
uint16_t
i
=
0
;
i
<
NUM_PFINTS
;
i
++
)
{
intevs
[
i
].
vec
=
i
;
if
(
intevs
[
i
].
armed
)
{
runner
->
EventCancel
(
intevs
[
i
]);
runner
_
->
EventCancel
(
intevs
[
i
]);
intevs
[
i
].
armed
=
false
;
}
intevs
[
i
].
time_
=
0
;
...
...
@@ -755,7 +753,7 @@ void i40e_bm::reset(bool indicate_done) {
regs
.
glrpb_plw
=
0x0846
;
}
shadow_ram
::
shadow_ram
(
i40e_bm
&
dev_
)
:
dev
(
dev_
),
log
(
"sram"
)
{
shadow_ram
::
shadow_ram
(
i40e_bm
&
dev_
)
:
dev
(
dev_
),
log
(
"sram"
,
dev_
.
runner_
)
{
}
void
shadow_ram
::
reg_updated
()
{
...
...
@@ -828,6 +826,6 @@ int_ev::int_ev() {
int
main
(
int
argc
,
char
*
argv
[])
{
i40e
::
i40e_bm
dev
;
i40e
::
runner
=
new
nicbm
::
Runner
(
dev
);
return
i40e
::
runner
->
RunMain
(
argc
,
argv
);
nicbm
::
Runner
r
(
dev
);
return
r
.
RunMain
(
argc
,
argv
);
}
sims/nic/i40e_bm/i40e_bm.h
View file @
2acf9f76
...
...
@@ -68,10 +68,11 @@ class logger : public std::ostream {
protected:
std
::
string
label
;
nicbm
::
Runner
*
runner
;
std
::
stringstream
ss
;
public:
explicit
logger
(
const
std
::
string
&
label_
);
explicit
logger
(
const
std
::
string
&
label_
,
nicbm
::
Runner
*
runner_
);
logger
&
operator
<<
(
char
c
);
logger
&
operator
<<
(
int32_t
c
);
logger
&
operator
<<
(
uint8_t
i
);
...
...
@@ -203,6 +204,7 @@ class queue_base {
logger
log
;
protected:
i40e_bm
&
dev
;
desc_ctx
*
desc_ctxs
[
MAX_ACTIVE_DESCS
];
uint32_t
active_first_pos
;
uint32_t
active_first_idx
;
...
...
@@ -243,7 +245,7 @@ class queue_base {
public:
queue_base
(
const
std
::
string
&
qname_
,
uint32_t
&
reg_head_
,
uint32_t
&
reg_tail_
);
uint32_t
&
reg_tail_
,
i40e_bm
&
dev_
);
virtual
void
reset
();
void
reg_updated
();
bool
is_enabled
();
...
...
@@ -275,7 +277,6 @@ class queue_admin_tx : public queue_base {
virtual
void
process
();
};
i40e_bm
&
dev
;
uint64_t
&
reg_base
;
uint32_t
&
reg_len
;
...
...
sims/nic/i40e_bm/i40e_hmc.cc
View file @
2acf9f76
...
...
@@ -33,8 +33,6 @@
namespace
i40e
{
extern
nicbm
::
Runner
*
runner
;
host_mem_cache
::
host_mem_cache
(
i40e_bm
&
dev_
)
:
dev
(
dev_
)
{
reset
();
}
...
...
@@ -137,6 +135,6 @@ void host_mem_cache::issue_mem_op(mem_op &op) {
std
::
cerr
<<
"hmc issue_mem_op: hmc_addr="
<<
addr
<<
" dma_addr="
<<
op
.
dma_addr_
<<
" len="
<<
op
.
len_
<<
std
::
endl
;
#endif
runner
->
IssueDma
(
op
);
dev
.
runner
_
->
IssueDma
(
op
);
}
}
// namespace i40e
sims/nic/i40e_bm/i40e_lan.cc
View file @
2acf9f76
...
...
@@ -35,10 +35,9 @@
namespace
i40e
{
extern
nicbm
::
Runner
*
runner
;
lan
::
lan
(
i40e_bm
&
dev_
,
size_t
num_qs_
)
:
dev
(
dev_
),
log
(
"lan"
),
rss_kc
(
dev_
.
regs
.
pfqf_hkey
),
num_qs
(
num_qs_
)
{
:
dev
(
dev_
),
log
(
"lan"
,
dev_
.
runner_
),
rss_kc
(
dev_
.
regs
.
pfqf_hkey
),
num_qs
(
num_qs_
)
{
rxqs
=
new
lan_queue_rx
*
[
num_qs
];
txqs
=
new
lan_queue_tx
*
[
num_qs
];
...
...
@@ -141,7 +140,8 @@ lan_queue_base::lan_queue_base(lan &lanmgr_, const std::string &qtype,
uint32_t
&
reg_tail_
,
size_t
idx_
,
uint32_t
&
reg_ena_
,
uint32_t
&
fpm_basereg_
,
uint32_t
&
reg_intqctl_
,
uint16_t
ctx_size_
)
:
queue_base
(
qtype
+
std
::
to_string
(
idx_
),
reg_dummy_head
,
reg_tail_
),
:
queue_base
(
qtype
+
std
::
to_string
(
idx_
),
reg_dummy_head
,
reg_tail_
,
lanmgr_
.
dev
),
lanmgr
(
lanmgr_
),
enabling
(
false
),
idx
(
idx_
),
...
...
@@ -432,7 +432,7 @@ void lan_queue_tx::do_writeback(uint32_t first_idx, uint32_t first_pos,
#ifdef DEBUG_LAN
log
<<
" hwb="
<<
*
((
uint32_t
*
)
dma
->
data_
)
<<
logger
::
endl
;
#endif
runner
->
IssueDma
(
*
dma
);
dev
.
runner
_
->
IssueDma
(
*
dma
);
}
}
...
...
@@ -596,7 +596,7 @@ bool lan_queue_tx::trigger_tx_packet() {
xsum_udp
(
pktbuf
+
udp_off
,
tso_len
-
udp_off
);
}
runner
->
EthSend
(
pktbuf
,
tso_len
);
dev
.
runner
_
->
EthSend
(
pktbuf
,
tso_len
);
}
else
{
#ifdef DEBUG_LAN
log
<<
" tso packet off="
<<
tso_off
<<
" len="
<<
tso_len
...
...
@@ -613,7 +613,7 @@ bool lan_queue_tx::trigger_tx_packet() {
xsum_tcpip_tso
(
pktbuf
+
maclen
,
iplen
,
l4len
,
tso_paylen
);
runner
->
EthSend
(
pktbuf
,
tso_len
);
dev
.
runner
_
->
EthSend
(
pktbuf
,
tso_len
);
tso_postupdate_header
(
pktbuf
+
maclen
,
iplen
,
l4len
,
tso_paylen
);
...
...
sims/nic/i40e_bm/i40e_queues.cc
View file @
2acf9f76
...
...
@@ -34,12 +34,11 @@
namespace
i40e
{
extern
nicbm
::
Runner
*
runner
;
queue_base
::
queue_base
(
const
std
::
string
&
qname_
,
uint32_t
&
reg_head_
,
uint32_t
&
reg_tail_
)
uint32_t
&
reg_tail_
,
i40e_bm
&
dev_
)
:
qname
(
qname_
),
log
(
qname_
),
log
(
qname_
,
dev_
.
runner_
),
dev
(
dev_
),
active_first_pos
(
0
),
active_first_idx
(
0
),
active_cnt
(
0
),
...
...
@@ -104,7 +103,7 @@ void queue_base::trigger_fetch() {
#ifdef DEBUG_QUEUES
log
<<
" dma = "
<<
dma
<<
logger
::
endl
;
#endif
runner
->
IssueDma
(
*
dma
);
dev
.
runner
_
->
IssueDma
(
*
dma
);
}
void
queue_base
::
trigger_process
()
{
...
...
@@ -230,7 +229,7 @@ void queue_base::do_writeback(uint32_t first_idx, uint32_t first_pos,
memcpy
(
buf
+
i
*
desc_len
,
ctx
.
desc
,
desc_len
);
}
runner
->
IssueDma
(
*
dma
);
dev
.
runner
_
->
IssueDma
(
*
dma
);
}
void
queue_base
::
writeback_done
(
uint32_t
first_pos
,
uint32_t
cnt
)
{
...
...
@@ -335,7 +334,7 @@ void queue_base::desc_ctx::data_fetch(uint64_t addr, size_t data_len) {
<<
" len="
<<
data_len
<<
logger
::
endl
;
queue
.
log
<<
" dma = "
<<
dma
<<
" data="
<<
data
<<
logger
::
endl
;
#endif
runner
->
IssueDma
(
*
dma
);
queue
.
dev
.
runner
_
->
IssueDma
(
*
dma
);
}
void
queue_base
::
desc_ctx
::
data_fetched
(
uint64_t
addr
,
size_t
len
)
{
...
...
@@ -353,7 +352,7 @@ void queue_base::desc_ctx::data_write(uint64_t addr, size_t data_len,
data_dma
->
dma_addr_
=
addr
;
memcpy
(
data_dma
->
data_
,
buf
,
data_len
);
runner
->
IssueDma
(
*
data_dma
);
queue
.
dev
.
runner
_
->
IssueDma
(
*
data_dma
);
}
void
queue_base
::
desc_ctx
::
data_written
(
uint64_t
addr
,
size_t
len
)
{
...
...
@@ -410,7 +409,7 @@ void queue_base::dma_data_fetch::done() {
ctx
.
queue
.
log
<<
" dma_fetch: next part of multi part dma"
<<
logger
::
endl
;
#endif
len_
=
std
::
min
(
total_len
-
part_offset
,
MAX_DMA_SIZE
);
runner
->
IssueDma
(
*
this
);
ctx
.
queue
.
dev
.
runner
_
->
IssueDma
(
*
this
);
return
;
}
ctx
.
data_fetched
(
dma_addr_
-
part_offset
,
total_len
);
...
...
sims/nic/i40e_bm/logger.cc
View file @
2acf9f76
...
...
@@ -28,9 +28,8 @@
namespace
i40e
{
extern
nicbm
::
Runner
*
runner
;
logger
::
logger
(
const
std
::
string
&
label_
)
:
label
(
label_
)
{
logger
::
logger
(
const
std
::
string
&
label_
,
nicbm
::
Runner
*
runner_
)
:
label
(
label_
),
runner
(
runner_
)
{
ss
<<
std
::
hex
;
}
...
...
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