]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
net: ena: optimise calculations for CQ doorbell
authorSameeh Jubran <sameehj@amazon.com>
Mon, 3 Jun 2019 14:43:27 +0000 (17:43 +0300)
committerDavid S. Miller <davem@davemloft.net>
Mon, 3 Jun 2019 20:30:38 +0000 (13:30 -0700)
This patch initially checks if CQ doorbell
is needed before proceeding with the calculations.

Signed-off-by: Igor Chauskin <igorch@amazon.com>
Signed-off-by: Sameeh Jubran <sameehj@amazon.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/amazon/ena/ena_eth_com.h

index 0a3d9180e40ed83a7fe5d7deb4e4256a6199dd58..77986c0ea52ca1873e299c54664540dbc30f53a5 100644 (file)
@@ -195,15 +195,17 @@ static inline int ena_com_update_dev_comp_head(struct ena_com_io_cq *io_cq)
        u16 unreported_comp, head;
        bool need_update;
 
-       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) {
-               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;
+       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 (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;