diff options
author | Edward Cree <ecree@solarflare.com> | 2020-10-20 17:35:08 +0300 |
---|---|---|
committer | Jakub Kicinski <kuba@kernel.org> | 2020-10-21 07:22:23 +0300 |
commit | 05f90bf3d5df40e1a705527520e5fd56b2b6f09e (patch) | |
tree | f2c04ca112b62d574c7abd054976f9e1a9fb94fa /drivers/net/ethernet/sfc | |
parent | b7c24497baeaf21172b447f7cca36b0e99bd11e3 (diff) | |
download | linux-05f90bf3d5df40e1a705527520e5fd56b2b6f09e.tar.xz |
sfc: move initialisation of efx->filter_sem to efx_init_struct()
efx_probe_filters() has not been called yet when EF100 calls into
efx_mcdi_filter_table_probe(), for which it wants to take the
filter_sem.
Fixes: a9dc3d5612ce ("sfc_ef100: RX filter table management and related gubbins")
Signed-off-by: Edward Cree <ecree@solarflare.com>
Link: https://lore.kernel.org/r/24fad43e-887d-051e-25e3-506f23f63abf@solarflare.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'drivers/net/ethernet/sfc')
-rw-r--r-- | drivers/net/ethernet/sfc/efx_common.c | 1 | ||||
-rw-r--r-- | drivers/net/ethernet/sfc/rx_common.c | 1 |
2 files changed, 1 insertions, 1 deletions
diff --git a/drivers/net/ethernet/sfc/efx_common.c b/drivers/net/ethernet/sfc/efx_common.c index 72a3f0e09f52..de797e1ac5a9 100644 --- a/drivers/net/ethernet/sfc/efx_common.c +++ b/drivers/net/ethernet/sfc/efx_common.c @@ -1014,6 +1014,7 @@ int efx_init_struct(struct efx_nic *efx, efx->num_mac_stats = MC_CMD_MAC_NSTATS; BUILD_BUG_ON(MC_CMD_MAC_NSTATS - 1 != MC_CMD_MAC_GENERATION_END); mutex_init(&efx->mac_lock); + init_rwsem(&efx->filter_sem); #ifdef CONFIG_RFS_ACCEL mutex_init(&efx->rps_mutex); spin_lock_init(&efx->rps_hash_lock); diff --git a/drivers/net/ethernet/sfc/rx_common.c b/drivers/net/ethernet/sfc/rx_common.c index 5e29284c89c9..19cf7cac1e6e 100644 --- a/drivers/net/ethernet/sfc/rx_common.c +++ b/drivers/net/ethernet/sfc/rx_common.c @@ -797,7 +797,6 @@ int efx_probe_filters(struct efx_nic *efx) { int rc; - init_rwsem(&efx->filter_sem); mutex_lock(&efx->mac_lock); down_write(&efx->filter_sem); rc = efx->type->filter_table_probe(efx); |