58 lines
2.3 KiB
Diff
58 lines
2.3 KiB
Diff
From: Arthur Kiyanovski <akiyano@amazon.com>
|
|
Date: Thu, 11 Oct 2018 11:26:23 +0300
|
|
Subject: [PATCH 09/19] net: ena: limit refill Rx threshold to 256 to avoid
|
|
latency issues
|
|
Origin: 0574bb806dad29a3dada0ee42b01645477d48282
|
|
|
|
Currently Rx refill is done when the number of required descriptors is
|
|
above 1/8 queue size. With a default of 1024 entries per queue the
|
|
threshold is 128 descriptors.
|
|
There is intention to increase the queue size to 8196 entries.
|
|
In this case threshold of 1024 descriptors is too large and can hurt
|
|
latency.
|
|
Add another limitation to Rx threshold to be at most 256 descriptors.
|
|
|
|
Signed-off-by: Arthur Kiyanovski <akiyano@amazon.com>
|
|
Signed-off-by: David S. Miller <davem@davemloft.net>
|
|
---
|
|
drivers/net/ethernet/amazon/ena/ena_netdev.c | 4 +++-
|
|
drivers/net/ethernet/amazon/ena/ena_netdev.h | 5 +++--
|
|
2 files changed, 6 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/drivers/net/ethernet/amazon/ena/ena_netdev.c b/drivers/net/ethernet/amazon/ena/ena_netdev.c
|
|
index e345220b4d9a..c4c33b174e17 100644
|
|
--- a/drivers/net/ethernet/amazon/ena/ena_netdev.c
|
|
+++ b/drivers/net/ethernet/amazon/ena/ena_netdev.c
|
|
@@ -1122,7 +1122,9 @@ static int ena_clean_rx_irq(struct ena_ring *rx_ring, struct napi_struct *napi,
|
|
rx_ring->next_to_clean = next_to_clean;
|
|
|
|
refill_required = ena_com_free_desc(rx_ring->ena_com_io_sq);
|
|
- refill_threshold = rx_ring->ring_size / ENA_RX_REFILL_THRESH_DIVIDER;
|
|
+ refill_threshold =
|
|
+ min_t(int, rx_ring->ring_size / ENA_RX_REFILL_THRESH_DIVIDER,
|
|
+ ENA_RX_REFILL_THRESH_PACKET);
|
|
|
|
/* Optimization, try to batch new rx buffers */
|
|
if (refill_required > refill_threshold) {
|
|
diff --git a/drivers/net/ethernet/amazon/ena/ena_netdev.h b/drivers/net/ethernet/amazon/ena/ena_netdev.h
|
|
index a16baf0124d5..0cf35ae77884 100644
|
|
--- a/drivers/net/ethernet/amazon/ena/ena_netdev.h
|
|
+++ b/drivers/net/ethernet/amazon/ena/ena_netdev.h
|
|
@@ -106,10 +106,11 @@
|
|
*/
|
|
#define ENA_TX_POLL_BUDGET_DIVIDER 4
|
|
|
|
-/* Refill Rx queue when number of available descriptors is below
|
|
- * QUEUE_SIZE / ENA_RX_REFILL_THRESH_DIVIDER
|
|
+/* Refill Rx queue when number of required descriptors is above
|
|
+ * QUEUE_SIZE / ENA_RX_REFILL_THRESH_DIVIDER or ENA_RX_REFILL_THRESH_PACKET
|
|
*/
|
|
#define ENA_RX_REFILL_THRESH_DIVIDER 8
|
|
+#define ENA_RX_REFILL_THRESH_PACKET 256
|
|
|
|
/* Number of queues to check for missing queues per timer service */
|
|
#define ENA_MONITORED_TX_QUEUES 4
|
|
--
|
|
2.19.2
|
|
|