]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
bnxt_en: Optimize doorbell write operations for newer chips (reapply).
authorMichael Chan <michael.chan@broadcom.com>
Mon, 29 May 2017 23:06:08 +0000 (19:06 -0400)
committerBrian Maly <brian.maly@oracle.com>
Mon, 8 Oct 2018 16:20:58 +0000 (12:20 -0400)
Older chips require the doorbells to be written twice, but newer chips
do not.  Add a new common function bnxt_db_write() to write all
doorbells appropriately depending on the chip.  Eliminating the extra
doorbell on newer chips has a significant performance improvement
on pktgen.

Signed-off-by: Michael Chan <michael.chan@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
(cherry picked from commit 434c975a8fe2f70b70ac09ea5ddd008e0528adfa)
Orabug: 27988326

Signed-off-by: Somasundaram Krishnasamy <somasundaram.krishnasamy@oracle.com>
Reviewed-by: Brian Maly <brian.maly@oracle.com>
Signed-off-by: Brian Maly <brian.maly@oracle.com>
Conflicts:
drivers/net/ethernet/broadcom/bnxt/bnxt.c

Signed-off-by: Brian Maly <brian.maly@oracle.com>
drivers/net/ethernet/broadcom/bnxt/bnxt.c
drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c

index a9c9f99d711ed561274b6f31053d8025f6a892ff..c5526cfb997d912152eedaf163a489a0c6252c6c 100644 (file)
@@ -1906,8 +1906,7 @@ static int bnxt_poll_work(struct bnxt *bp, struct bnxt_napi *bnapi, int budget)
                /* Sync BD data before updating doorbell */
                wmb();
 
-               writel(DB_KEY_TX | prod, db);
-               writel(DB_KEY_TX | prod, db);
+               bnxt_db_write(bp, db, DB_KEY_TX | prod);
        }
 
        cpr->cp_raw_cons = raw_cons;
index bfd58cbcb4a34e81758075ebc4d9d6c998667363..6daacf57f8d2363c15ac1b8d65c94b537ba1ddfc 100644 (file)
@@ -68,7 +68,7 @@ void bnxt_tx_int_xdp(struct bnxt *bp, struct bnxt_napi *bnapi, int nr_pkts)
                tx_buf = &txr->tx_buf_ring[last_tx_cons];
                rx_prod = tx_buf->rx_prod;
        }
-       writel(DB_KEY_RX | rx_prod, rxr->rx_doorbell);
+       bnxt_db_write(bp, rxr->rx_doorbell, DB_KEY_RX | rx_prod);
 }
 
 /* returns the following: