Commit 2acf9f76 authored by Antoine Kaufmann's avatar Antoine Kaufmann
Browse files

i40e_bm: remove global runner variable, use member

parent 07b3aa54
......@@ -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
......
......@@ -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);
}
......@@ -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;
......
......@@ -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
......@@ -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);
......
......@@ -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);
......
......@@ -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;
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment