mirror of https://gitee.com/openkylin/linux.git
net: ena: fix update of interrupt moderation register
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>
This commit is contained in:
parent
3ced8cbdf7
commit
7b8a28787e
|
@ -1187,12 +1187,15 @@ static void ena_unmask_interrupt(struct ena_ring *tx_ring,
|
||||||
struct ena_ring *rx_ring)
|
struct ena_ring *rx_ring)
|
||||||
{
|
{
|
||||||
struct ena_eth_io_intr_reg intr_reg;
|
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,
|
/* Update intr register: rx intr delay,
|
||||||
* tx intr delay and interrupt unmask
|
* tx intr delay and interrupt unmask
|
||||||
*/
|
*/
|
||||||
ena_com_update_intr_reg(&intr_reg,
|
ena_com_update_intr_reg(&intr_reg,
|
||||||
rx_ring->smoothed_interval,
|
rx_interval,
|
||||||
tx_ring->smoothed_interval,
|
tx_ring->smoothed_interval,
|
||||||
true);
|
true);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue