sfc: populate the timer reload field
authorBert Kenward <bkenward@solarflare.com>
Mon, 18 Dec 2017 16:57:41 +0000 (16:57 +0000)
committerDavid S. Miller <davem@davemloft.net>
Mon, 18 Dec 2017 18:07:50 +0000 (13:07 -0500)
The timer mode register now has a separate field for the reload value.
Since we always use this timer with the reload (for interrupt moderation)
we set this to the same as the initial value.

Previous hardware ignores this field, so we can safely set these bits
on all hardware that uses this register.

Signed-off-by: Edward Cree <ecree@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/sfc/ef10.c

index 56a6bc60dac1c0f44cd6c351c99491f9c2ab333e..1f64c7f60943ae71828ae69df740e01b3c7c8ef3 100644 (file)
@@ -2010,8 +2010,9 @@ static void efx_ef10_push_irq_moderation(struct efx_channel *channel)
        } else {
                unsigned int ticks = efx_usecs_to_ticks(efx, usecs);
 
-               EFX_POPULATE_DWORD_2(timer_cmd, ERF_DZ_TC_TIMER_MODE, mode,
-                                    ERF_DZ_TC_TIMER_VAL, ticks);
+               EFX_POPULATE_DWORD_3(timer_cmd, ERF_DZ_TC_TIMER_MODE, mode,
+                                    ERF_DZ_TC_TIMER_VAL, ticks,
+                                    ERF_FZ_TC_TMR_REL_VAL, ticks);
                efx_writed_page(efx, &timer_cmd, ER_DZ_EVQ_TMR,
                                channel->channel);
        }