From: Ben Hutchings Date: Wed, 6 Mar 2013 19:39:20 +0000 (+0000) Subject: sfc: Disable RSS when using SR-IOV and only 1 RX queue on the PF X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=634ab72c39b3df78ac7d6ccd4a50133059bae14f;p=GitHub%2Fmoto-9609%2Fandroid_kernel_motorola_exynos9610.git sfc: Disable RSS when using SR-IOV and only 1 RX queue on the PF On Siena, VFs share RSS configuration with the PF. We attempted to support configurations where the PF only uses 1 RX queue and VFs use multiple RX queues, by (1) setting up RSS for the number of RX queues per VF (2) disabling RSS in the PF's RX default filters. Unfortunately commit cd2d5b529cdb ('sfc: Add SR-IOV back-end support for SFC9000 family') only included (1). This is (2). Signed-off-by: Ben Hutchings --- diff --git a/drivers/net/ethernet/sfc/filter.c b/drivers/net/ethernet/sfc/filter.c index 0de8daf01c01..61b4408bbdb8 100644 --- a/drivers/net/ethernet/sfc/filter.c +++ b/drivers/net/ethernet/sfc/filter.c @@ -414,8 +414,12 @@ static void efx_filter_reset_rx_def(struct efx_nic *efx, unsigned filter_idx) struct efx_filter_table *table = &state->table[EFX_FILTER_TABLE_RX_DEF]; struct efx_filter_spec *spec = &table->spec[filter_idx]; + /* If there's only one channel then disable RSS for non VF + * traffic, thereby allowing VFs to use RSS when the PF can't. + */ efx_filter_init_rx(spec, EFX_FILTER_PRI_MANUAL, - EFX_FILTER_FLAG_RX_RSS, 0); + efx->n_rx_channels > 1 ? EFX_FILTER_FLAG_RX_RSS : 0, + 0); spec->type = EFX_FILTER_UC_DEF + filter_idx; table->used_bitmap[0] |= 1 << filter_idx; }