diff options
author | Jakub Kicinski <jakub.kicinski@netronome.com> | 2022-03-21 11:42:05 +0100 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2022-03-21 13:21:16 +0000 |
commit | 0dcf7f500b0a56c0c58deeeac7692fe213aa08b1 (patch) | |
tree | 8089529f9a694f7426ba626942261e4cc1f44e85 /drivers/net/ethernet/netronome/nfp/nfp_net_dp.h | |
parent | 07cd69c96bff4edf5edcd17b5a821f63343bf9cc (diff) | |
download | linux-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.h | 8 |
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) |