40 lines
1.6 KiB
Diff
40 lines
1.6 KiB
Diff
From: Arthur Kiyanovski <akiyano@amazon.com>
|
|
Date: Mon, 16 Sep 2019 14:31:34 +0300
|
|
Subject: [PATCH] net: ena: fix update of interrupt moderation register
|
|
Origin: https://git.kernel.org/linus/7b8a28787e2ba671eaeb073e3b62fb4786338a09
|
|
Bug-Debian: https://bugs.debian.org/941291
|
|
|
|
Current implementation always updates the interrupt register with
|
|
the smoothed_interval of the rx_ring. However this should be
|
|
done only in case of adaptive interrupt moderation. If non-adaptive
|
|
interrupt moderation is used, the non-adaptive interrupt moderation
|
|
interval should be used. This commit fixes that.
|
|
|
|
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 | 5 ++++-
|
|
1 file changed, 4 insertions(+), 1 deletion(-)
|
|
|
|
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
|
|
@@ -1188,12 +1188,15 @@ static void ena_unmask_interrupt(struct
|
|
struct ena_ring *rx_ring)
|
|
{
|
|
struct ena_eth_io_intr_reg intr_reg;
|
|
+ u32 rx_interval = ena_com_get_adaptive_moderation_enabled(rx_ring->ena_dev) ?
|
|
+ rx_ring->smoothed_interval :
|
|
+ ena_com_get_nonadaptive_moderation_interval_rx(rx_ring->ena_dev);
|
|
|
|
/* Update intr register: rx intr delay,
|
|
* tx intr delay and interrupt unmask
|
|
*/
|
|
ena_com_update_intr_reg(&intr_reg,
|
|
- rx_ring->smoothed_interval,
|
|
+ rx_interval,
|
|
tx_ring->smoothed_interval,
|
|
true);
|
|
|