net/mlx4: remove Tx completion elements counter
This counter saved the descriptor elements which are waiting to be completed and was used to know if completion function should be called. This completion check can be done by other elements management variables and we can prevent this counter management. Remove this counter and replace the completion check easily by other elements management variables. Signed-off-by: Matan Azrad <matan@mellanox.com> Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
This commit is contained in:
parent
50163aec51
commit
ec82dddad0
@ -367,7 +367,6 @@ mlx4_txq_complete(struct txq *txq, const unsigned int elts_m,
|
||||
/* Update CQ consumer index. */
|
||||
cq->cons_index = cons_index;
|
||||
*cq->set_ci_db = rte_cpu_to_be_32(cons_index & MLX4_CQ_DB_CI_MASK);
|
||||
txq->elts_comp -= completed;
|
||||
txq->elts_tail = elts_tail;
|
||||
}
|
||||
|
||||
@ -585,15 +584,15 @@ mlx4_tx_burst(void *dpdk_txq, struct rte_mbuf **pkts, uint16_t pkts_n)
|
||||
const unsigned int elts_m = elts_n - 1;
|
||||
unsigned int bytes_sent = 0;
|
||||
unsigned int i;
|
||||
unsigned int max;
|
||||
unsigned int max = elts_head - txq->elts_tail;
|
||||
struct mlx4_sq *sq = &txq->msq;
|
||||
volatile struct mlx4_wqe_ctrl_seg *ctrl;
|
||||
struct txq_elt *elt;
|
||||
|
||||
assert(txq->elts_comp_cd != 0);
|
||||
if (likely(txq->elts_comp != 0))
|
||||
if (likely(max >= txq->elts_comp_cd_init))
|
||||
mlx4_txq_complete(txq, elts_m, sq);
|
||||
max = (elts_n - (elts_head - txq->elts_tail));
|
||||
max = elts_n - max;
|
||||
assert(max >= 1);
|
||||
assert(max <= elts_n);
|
||||
/* Always leave one free entry in the ring. */
|
||||
@ -740,7 +739,6 @@ mlx4_tx_burst(void *dpdk_txq, struct rte_mbuf **pkts, uint16_t pkts_n)
|
||||
/* Ring QP doorbell. */
|
||||
rte_write32(txq->msq.doorbell_qpn, txq->msq.db);
|
||||
txq->elts_head += i;
|
||||
txq->elts_comp += i;
|
||||
return i;
|
||||
}
|
||||
|
||||
|
@ -125,7 +125,6 @@ struct txq {
|
||||
struct mlx4_cq mcq; /**< Info for directly manipulating the CQ. */
|
||||
unsigned int elts_head; /**< Current index in (*elts)[]. */
|
||||
unsigned int elts_tail; /**< First element awaiting completion. */
|
||||
unsigned int elts_comp; /**< Number of packets awaiting completion. */
|
||||
int elts_comp_cd; /**< Countdown for next completion. */
|
||||
unsigned int elts_comp_cd_init; /**< Initial value for countdown. */
|
||||
unsigned int elts_n; /**< (*elts)[] length. */
|
||||
|
@ -273,7 +273,6 @@ mlx4_tx_queue_setup(struct rte_eth_dev *dev, uint16_t idx, uint16_t desc,
|
||||
.elts = elts,
|
||||
.elts_head = 0,
|
||||
.elts_tail = 0,
|
||||
.elts_comp = 0,
|
||||
/*
|
||||
* Request send completion every MLX4_PMD_TX_PER_COMP_REQ
|
||||
* packets or at least 4 times per ring.
|
||||
|
Loading…
x
Reference in New Issue
Block a user