diff options
author | Edward Cree <ecree@solarflare.com> | 2018-03-27 17:44:36 +0100 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2018-03-27 13:33:20 -0400 |
commit | e0a65e3c5e3b7b11ec9320524b8fcc210f2026e9 (patch) | |
tree | e82d5fb1d37ef7bff0c1d75a2cbe1f7f0ede3e57 /drivers/net/ethernet/sfc/efx.h | |
parent | 31b842955211f427a099f78a6a63d18a6bbc8d55 (diff) | |
download | lwn-e0a65e3c5e3b7b11ec9320524b8fcc210f2026e9.tar.gz lwn-e0a65e3c5e3b7b11ec9320524b8fcc210f2026e9.zip |
sfc: protect list of RSS contexts under a mutex
Otherwise races are possible between ethtool ops and
efx_ef10_rx_restore_rss_contexts().
Also, don't try to perform the restore on every reset, only after an MC
reboot, otherwise we'll leak RSS contexts on the NIC.
Fixes: 42356d9a137b ("sfc: support RSS spreading of ethtool ntuple filters")
Signed-off-by: Edward Cree <ecree@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/sfc/efx.h')
-rw-r--r-- | drivers/net/ethernet/sfc/efx.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/net/ethernet/sfc/efx.h b/drivers/net/ethernet/sfc/efx.h index 545c2ea1622e..a3140e16fcef 100644 --- a/drivers/net/ethernet/sfc/efx.h +++ b/drivers/net/ethernet/sfc/efx.h @@ -187,8 +187,8 @@ static inline void efx_filter_rfs_expire(struct work_struct *data) {} bool efx_filter_is_mc_recipient(const struct efx_filter_spec *spec); /* RSS contexts */ -struct efx_rss_context *efx_alloc_rss_context_entry(struct list_head *list); -struct efx_rss_context *efx_find_rss_context_entry(u32 id, struct list_head *list); +struct efx_rss_context *efx_alloc_rss_context_entry(struct efx_nic *efx); +struct efx_rss_context *efx_find_rss_context_entry(struct efx_nic *efx, u32 id); void efx_free_rss_context_entry(struct efx_rss_context *ctx); static inline bool efx_rss_active(struct efx_rss_context *ctx) { |