Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d9186098 authored by Sameeh Jubran's avatar Sameeh Jubran Committed by David S. Miller
Browse files

net: ena: optimise calculations for CQ doorbell



This patch initially checks if CQ doorbell
is needed before proceeding with the calculations.

Signed-off-by: default avatarIgor Chauskin <igorch@amazon.com>
Signed-off-by: default avatarSameeh Jubran <sameehj@amazon.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent cdf449ec
Loading
Loading
Loading
Loading
+11 −9
Original line number Diff line number Diff line
@@ -195,16 +195,18 @@ static inline int ena_com_update_dev_comp_head(struct ena_com_io_cq *io_cq)
	u16 unreported_comp, head;
	bool need_update;

	if (unlikely(io_cq->cq_head_db_reg)) {
		head = io_cq->head;
		unreported_comp = head - io_cq->last_head_update;
		need_update = unreported_comp > (io_cq->q_depth / ENA_COMP_HEAD_THRESH);

	if (io_cq->cq_head_db_reg && need_update) {
		if (unlikely(need_update)) {
			pr_debug("Write completion queue doorbell for queue %d: head: %d\n",
				 io_cq->qid, head);
			writel(head, io_cq->cq_head_db_reg);
			io_cq->last_head_update = head;
		}
	}

	return 0;
}