summaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/netronome/nfp/nfp_net_dp.h
diff options
context:
space:
mode:
authorJakub Kicinski <jakub.kicinski@netronome.com>2022-03-21 11:42:05 +0100
committerDavid S. Miller <davem@davemloft.net>2022-03-21 13:21:16 +0000
commit0dcf7f500b0a56c0c58deeeac7692fe213aa08b1 (patch)
tree8089529f9a694f7426ba626942261e4cc1f44e85 /drivers/net/ethernet/netronome/nfp/nfp_net_dp.h
parent07cd69c96bff4edf5edcd17b5a821f63343bf9cc (diff)
downloadlinux-stable-0dcf7f500b0a56c0c58deeeac7692fe213aa08b1.tar.gz
linux-stable-0dcf7f500b0a56c0c58deeeac7692fe213aa08b1.tar.bz2
linux-stable-0dcf7f500b0a56c0c58deeeac7692fe213aa08b1.zip
nfp: use TX ring pointer write back
Newer versions of the PCIe microcode support writing back the position of the TX pointer back into host memory. This speeds up TX completions, because we avoid a read from device memory (replacing PCIe read with DMA coherent read). Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com> Signed-off-by: Fei Qin <fei.qin@corigine.com> Signed-off-by: Simon Horman <simon.horman@corigine.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/netronome/nfp/nfp_net_dp.h')
-rw-r--r--drivers/net/ethernet/netronome/nfp/nfp_net_dp.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/net/ethernet/netronome/nfp/nfp_net_dp.h b/drivers/net/ethernet/netronome/nfp/nfp_net_dp.h
index 81be8d17fa93..99579722aacf 100644
--- a/drivers/net/ethernet/netronome/nfp/nfp_net_dp.h
+++ b/drivers/net/ethernet/netronome/nfp/nfp_net_dp.h
@@ -60,6 +60,14 @@ static inline void nfp_net_tx_xmit_more_flush(struct nfp_net_tx_ring *tx_ring)
tx_ring->wr_ptr_add = 0;
}
+static inline u32
+nfp_net_read_tx_cmpl(struct nfp_net_tx_ring *tx_ring, struct nfp_net_dp *dp)
+{
+ if (tx_ring->txrwb)
+ return *tx_ring->txrwb;
+ return nfp_qcp_rd_ptr_read(tx_ring->qcp_q);
+}
+
static inline void nfp_net_free_frag(void *frag, bool xdp)
{
if (!xdp)