ena module for Driver Update Program
CentOS Sources
2019-01-09 fc384122a7a805dde4dbbf3c4c4ef94a5ca0f2fe
commit | author | age
fc3841 1 Date: Tue, 30 Oct 2018 13:25:37 -0400
CS 2 From: linville@redhat.com
3 To: rhkernel-list@redhat.com
4 Cc: Lin Liu <linl@redhat.com>
5 Subject: [RHEL7 22/28] net: ena: limit refill Rx threshold to 256 to avoid
6  latency issues
7
8 From: "John W. Linville" <linville@redhat.com>
9
10 BZ: https://bugzilla.redhat.com/show_bug.cgi?id=1633418
11 Brew: https://brewweb.engineering.redhat.com/brew/taskinfo?taskID=18850510
12
13 Currently Rx refill is done when the number of required descriptors is
14 above 1/8 queue size. With a default of 1024 entries per queue the
15 threshold is 128 descriptors.
16 There is intention to increase the queue size to 8196 entries.
17 In this case threshold of 1024 descriptors is too large and can hurt
18 latency.
19 Add another limitation to Rx threshold to be at most 256 descriptors.
20
21 Signed-off-by: Arthur Kiyanovski <akiyano@amazon.com>
22 Signed-off-by: David S. Miller <davem@davemloft.net>
23 (cherry picked from commit 0574bb806dad29a3dada0ee42b01645477d48282)
24 Signed-off-by: John W. Linville <linville@redhat.com>
25 ---
26  drivers/net/ethernet/amazon/ena/ena_netdev.c | 4 +++-
27  drivers/net/ethernet/amazon/ena/ena_netdev.h | 5 +++--
28  2 files changed, 6 insertions(+), 3 deletions(-)
29
30 diff --git a/drivers/net/ethernet/amazon/ena/ena_netdev.c b/drivers/net/ethernet/amazon/ena/ena_netdev.c
31 index b11bb6f52d16..203047d24d5b 100644
32 --- a/drivers/net/ethernet/amazon/ena/ena_netdev.c
33 +++ b/drivers/net/ethernet/amazon/ena/ena_netdev.c
34 @@ -1124,7 +1124,9 @@ static int ena_clean_rx_irq(struct ena_ring *rx_ring, struct napi_struct *napi,
35      rx_ring->next_to_clean = next_to_clean;
36  
37      refill_required = ena_com_free_desc(rx_ring->ena_com_io_sq);
38 -    refill_threshold = rx_ring->ring_size / ENA_RX_REFILL_THRESH_DIVIDER;
39 +    refill_threshold =
40 +        min_t(int, rx_ring->ring_size / ENA_RX_REFILL_THRESH_DIVIDER,
41 +              ENA_RX_REFILL_THRESH_PACKET);
42  
43      /* Optimization, try to batch new rx buffers */
44      if (refill_required > refill_threshold) {
45 diff --git a/drivers/net/ethernet/amazon/ena/ena_netdev.h b/drivers/net/ethernet/amazon/ena/ena_netdev.h
46 index 727d62cdfa90..0d792d76d2a2 100644
47 --- a/drivers/net/ethernet/amazon/ena/ena_netdev.h
48 +++ b/drivers/net/ethernet/amazon/ena/ena_netdev.h
49 @@ -106,10 +106,11 @@
50   */
51  #define ENA_TX_POLL_BUDGET_DIVIDER    4
52  
53 -/* Refill Rx queue when number of available descriptors is below
54 - * QUEUE_SIZE / ENA_RX_REFILL_THRESH_DIVIDER
55 +/* Refill Rx queue when number of required descriptors is above
56 + * QUEUE_SIZE / ENA_RX_REFILL_THRESH_DIVIDER or ENA_RX_REFILL_THRESH_PACKET
57   */
58  #define ENA_RX_REFILL_THRESH_DIVIDER    8
59 +#define ENA_RX_REFILL_THRESH_PACKET    256
60  
61  /* Number of queues to check for missing queues per timer service */
62  #define ENA_MONITORED_TX_QUEUES    4
63 -- 
64 2.17.1
65
66