sfc: Fix division by zero when using one RX channel and no SR-IOV
authorBen Hutchings <bhutchings@solarflare.com>
Sat, 5 May 2012 01:31:23 +0000 (02:31 +0100)
committerBen Hutchings <bhutchings@solarflare.com>
Tue, 8 May 2012 17:26:40 +0000 (18:26 +0100)
commit3132d2827d92c2ee47fdf4dbec75bba0a2f291cb
tree5664c1ad5ecd6ab7f0bf16354002eeed93619f9c
parent1c430a727fa512500a422ffe4712166c550ea06a
sfc: Fix division by zero when using one RX channel and no SR-IOV

If RSS is disabled on the PF (efx->n_rx_channels == 1) we try to set
up the indirection table so that VFs can use it, setting
efx->rss_spread = efx_vf_size(efx).  But if SR-IOV was disabled at
compile time, this evaluates to 0 and we end up dividing by zero when
initialising the table.

I considered changing the fallback definition of efx_vf_size() to
return 1, but its value is really meaningless if we are not going to
enable VFs.  Therefore add a condition of efx_sriov_wanted(efx) in
efx_probe_interrupts().

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