summaryrefslogtreecommitdiff
path: root/drivers/net/ena
diff options
context:
space:
mode:
authorRafal Kozik <rk@semihalf.com>2018-12-14 14:18:34 +0100
committerFerruh Yigit <ferruh.yigit@intel.com>2018-12-21 16:22:40 +0100
commitc7519ea5eb8d6b810aec74b87b60e0689a6c20ce (patch)
tree4df1efc5577a3cc128084fabf02db7743fc4c195 /drivers/net/ena
parent353907507bcddc41048765889380e4e6fa9ca230 (diff)
downloaddpdk-next-eventdev-c7519ea5eb8d6b810aec74b87b60e0689a6c20ce.zip
dpdk-next-eventdev-c7519ea5eb8d6b810aec74b87b60e0689a6c20ce.tar.gz
dpdk-next-eventdev-c7519ea5eb8d6b810aec74b87b60e0689a6c20ce.tar.xz
net/ena: call additional doorbells if needed
Before sending next packet, check if calling doorbell is needed. Signed-off-by: Rafal Kozik <rk@semihalf.com> Acked-by: Michal Krawczyk <mk@semihalf.com>
Diffstat (limited to 'drivers/net/ena')
-rw-r--r--drivers/net/ena/ena_ethdev.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c
index f835523..5f7dec0 100644
--- a/drivers/net/ena/ena_ethdev.c
+++ b/drivers/net/ena/ena_ethdev.c
@@ -2363,7 +2363,16 @@ static uint16_t eth_ena_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts,
ena_tx_ctx.num_bufs = tx_info->num_of_bufs;
- /* Write data to device */
+ if (ena_com_is_doorbell_needed(tx_ring->ena_com_io_sq,
+ &ena_tx_ctx)) {
+ RTE_LOG(DEBUG, PMD, "llq tx max burst size of queue %d"
+ " achieved, writing doorbell to send burst\n",
+ tx_ring->id);
+ rte_wmb();
+ ena_com_write_sq_doorbell(tx_ring->ena_com_io_sq);
+ }
+
+ /* prepare the packet's descriptors to dma engine */
rc = ena_com_prepare_tx(tx_ring->ena_com_io_sq,
&ena_tx_ctx, &nb_hw_desc);
if (unlikely(rc))