OSDN Git Service

sfc: Correct interrupt timer quantum for Siena (normal and turbo mode)
authorBen Hutchings <bhutchings@solarflare.com>
Thu, 8 Dec 2011 19:51:47 +0000 (19:51 +0000)
committerBen Hutchings <bhutchings@solarflare.com>
Fri, 27 Jan 2012 00:10:50 +0000 (00:10 +0000)
commitcc180b69c009ec52f67a56d96b9073b9f774b323
tree2d20225099a9a08d3471aeb3cd8ce4295417e5e6
parent6aa9c7f625e8ce07060467051b68fc068118ee64
sfc: Correct interrupt timer quantum for Siena (normal and turbo mode)

We currently assume that the timer quantum for Siena is 5 us, the same
as for Falcon.  This is not correct; timer ticks are generated on a
rota which takes a minimum of 768 cycles (each event delivery or other
timer change will delay it by 3 cycles).  The timer quantum should be
6.144 or 3.072 us depending on whether turbo mode is active.

Replace EFX_IRQ_MOD_RESOLUTION with a timer_quantum_ns field in struct
efx_nic, initialised by the efx_nic_type::probe function.

While we're at it, replace EFX_IRQ_MOD_MAX with a timer_period_max
field in struct efx_nic_type.

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
drivers/net/ethernet/sfc/efx.c
drivers/net/ethernet/sfc/falcon.c
drivers/net/ethernet/sfc/net_driver.h
drivers/net/ethernet/sfc/nic.h
drivers/net/ethernet/sfc/siena.c