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