Commit e07e56b3 authored by Antoine Kaufmann's avatar Antoine Kaufmann
Browse files

i40e: fix descriptor writeback

parent 0ceb071a
......@@ -77,8 +77,8 @@ class queue_base {
size_t data_len;
size_t data_capacity;
void prepared();
void processed();
virtual void prepared();
virtual void processed();
protected:
void data_fetch(uint64_t addr, size_t len);
......@@ -133,7 +133,9 @@ class queue_base {
virtual void done();
};
public:
std::string qname;
protected:
desc_ctx *desc_ctxs[MAX_ACTIVE_DESCS];
uint32_t active_first_pos;
uint32_t active_first_idx;
......@@ -298,6 +300,7 @@ class lan_queue_tx : public lan_queue_base {
virtual void prepare();
virtual void process();
virtual void processed();
};
......
......@@ -498,6 +498,13 @@ void lan_queue_tx::tx_desc_ctx::process()
tq.trigger_tx();
}
void lan_queue_tx::tx_desc_ctx::processed()
{
d->cmd_type_offset_bsz = I40E_TX_DESC_DTYPE_DESC_DONE <<
I40E_TXD_QW1_DTYPE_SHIFT;
desc_ctx::processed();
}
lan_queue_tx::dma_hwb::dma_hwb(lan_queue_tx &queue_, uint32_t pos_,
uint32_t cnt_, uint32_t nh_)
: queue(queue_), pos(pos_), cnt(cnt_), next_head(nh_)
......
......@@ -118,8 +118,8 @@ void queue_base::trigger_writeback()
break;
uint32_t cnt = std::min(avail, max_writeback_capacity());
if (active_first_pos + cnt > len)
cnt = len - active_first_pos;
if (active_first_idx + cnt > len)
cnt = len - active_first_idx;
#ifdef DEBUG_QUEUES
std::cerr << qname << ": writing back avail=" << avail << " cnt=" << cnt <<
......
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