diff options
Diffstat (limited to '')
-rw-r--r-- | debian/patches/features/all/ena/0009-net-ena-limit-refill-Rx-threshold-to-256-to-avoid-la.patch | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/debian/patches/features/all/ena/0009-net-ena-limit-refill-Rx-threshold-to-256-to-avoid-la.patch b/debian/patches/features/all/ena/0009-net-ena-limit-refill-Rx-threshold-to-256-to-avoid-la.patch new file mode 100644 index 000000000..3eaae9950 --- /dev/null +++ b/debian/patches/features/all/ena/0009-net-ena-limit-refill-Rx-threshold-to-256-to-avoid-la.patch @@ -0,0 +1,54 @@ +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: https://git.kernel.org/linus/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(-) + +Index: linux/drivers/net/ethernet/amazon/ena/ena_netdev.c +=================================================================== +--- linux.orig/drivers/net/ethernet/amazon/ena/ena_netdev.c ++++ linux/drivers/net/ethernet/amazon/ena/ena_netdev.c +@@ -1122,7 +1122,9 @@ static int ena_clean_rx_irq(struct ena_r + 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) { +Index: linux/drivers/net/ethernet/amazon/ena/ena_netdev.h +=================================================================== +--- linux.orig/drivers/net/ethernet/amazon/ena/ena_netdev.h ++++ linux/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 |