diff options
Diffstat (limited to 'drivers/net/ethernet/sfc/ef10.c')
-rw-r--r-- | drivers/net/ethernet/sfc/ef10.c | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/drivers/net/ethernet/sfc/ef10.c b/drivers/net/ethernet/sfc/ef10.c index bc6d21b471be..e6a084a6be12 100644 --- a/drivers/net/ethernet/sfc/ef10.c +++ b/drivers/net/ethernet/sfc/ef10.c | |||
@@ -3299,7 +3299,8 @@ static int efx_ef10_filter_remove_internal(struct efx_nic *efx, | |||
3299 | 3299 | ||
3300 | new_spec.priority = EFX_FILTER_PRI_AUTO; | 3300 | new_spec.priority = EFX_FILTER_PRI_AUTO; |
3301 | new_spec.flags = (EFX_FILTER_FLAG_RX | | 3301 | new_spec.flags = (EFX_FILTER_FLAG_RX | |
3302 | EFX_FILTER_FLAG_RX_RSS); | 3302 | (efx_rss_enabled(efx) ? |
3303 | EFX_FILTER_FLAG_RX_RSS : 0)); | ||
3303 | new_spec.dmaq_id = 0; | 3304 | new_spec.dmaq_id = 0; |
3304 | new_spec.rss_context = EFX_FILTER_RSS_CONTEXT_DEFAULT; | 3305 | new_spec.rss_context = EFX_FILTER_RSS_CONTEXT_DEFAULT; |
3305 | rc = efx_ef10_filter_push(efx, &new_spec, | 3306 | rc = efx_ef10_filter_push(efx, &new_spec, |
@@ -3921,6 +3922,7 @@ static int efx_ef10_filter_insert_addr_list(struct efx_nic *efx, | |||
3921 | { | 3922 | { |
3922 | struct efx_ef10_filter_table *table = efx->filter_state; | 3923 | struct efx_ef10_filter_table *table = efx->filter_state; |
3923 | struct efx_ef10_dev_addr *addr_list; | 3924 | struct efx_ef10_dev_addr *addr_list; |
3925 | enum efx_filter_flags filter_flags; | ||
3924 | struct efx_filter_spec spec; | 3926 | struct efx_filter_spec spec; |
3925 | u8 baddr[ETH_ALEN]; | 3927 | u8 baddr[ETH_ALEN]; |
3926 | unsigned int i, j; | 3928 | unsigned int i, j; |
@@ -3935,11 +3937,11 @@ static int efx_ef10_filter_insert_addr_list(struct efx_nic *efx, | |||
3935 | addr_count = table->dev_uc_count; | 3937 | addr_count = table->dev_uc_count; |
3936 | } | 3938 | } |
3937 | 3939 | ||
3940 | filter_flags = efx_rss_enabled(efx) ? EFX_FILTER_FLAG_RX_RSS : 0; | ||
3941 | |||
3938 | /* Insert/renew filters */ | 3942 | /* Insert/renew filters */ |
3939 | for (i = 0; i < addr_count; i++) { | 3943 | for (i = 0; i < addr_count; i++) { |
3940 | efx_filter_init_rx(&spec, EFX_FILTER_PRI_AUTO, | 3944 | efx_filter_init_rx(&spec, EFX_FILTER_PRI_AUTO, filter_flags, 0); |
3941 | EFX_FILTER_FLAG_RX_RSS, | ||
3942 | 0); | ||
3943 | efx_filter_set_eth_local(&spec, EFX_FILTER_VID_UNSPEC, | 3945 | efx_filter_set_eth_local(&spec, EFX_FILTER_VID_UNSPEC, |
3944 | addr_list[i].addr); | 3946 | addr_list[i].addr); |
3945 | rc = efx_ef10_filter_insert(efx, &spec, true); | 3947 | rc = efx_ef10_filter_insert(efx, &spec, true); |
@@ -3968,9 +3970,7 @@ static int efx_ef10_filter_insert_addr_list(struct efx_nic *efx, | |||
3968 | 3970 | ||
3969 | if (multicast && rollback) { | 3971 | if (multicast && rollback) { |
3970 | /* Also need an Ethernet broadcast filter */ | 3972 | /* Also need an Ethernet broadcast filter */ |
3971 | efx_filter_init_rx(&spec, EFX_FILTER_PRI_AUTO, | 3973 | efx_filter_init_rx(&spec, EFX_FILTER_PRI_AUTO, filter_flags, 0); |
3972 | EFX_FILTER_FLAG_RX_RSS, | ||
3973 | 0); | ||
3974 | eth_broadcast_addr(baddr); | 3974 | eth_broadcast_addr(baddr); |
3975 | efx_filter_set_eth_local(&spec, EFX_FILTER_VID_UNSPEC, baddr); | 3975 | efx_filter_set_eth_local(&spec, EFX_FILTER_VID_UNSPEC, baddr); |
3976 | rc = efx_ef10_filter_insert(efx, &spec, true); | 3976 | rc = efx_ef10_filter_insert(efx, &spec, true); |
@@ -4000,13 +4000,14 @@ static int efx_ef10_filter_insert_def(struct efx_nic *efx, bool multicast, | |||
4000 | { | 4000 | { |
4001 | struct efx_ef10_filter_table *table = efx->filter_state; | 4001 | struct efx_ef10_filter_table *table = efx->filter_state; |
4002 | struct efx_ef10_nic_data *nic_data = efx->nic_data; | 4002 | struct efx_ef10_nic_data *nic_data = efx->nic_data; |
4003 | enum efx_filter_flags filter_flags; | ||
4003 | struct efx_filter_spec spec; | 4004 | struct efx_filter_spec spec; |
4004 | u8 baddr[ETH_ALEN]; | 4005 | u8 baddr[ETH_ALEN]; |
4005 | int rc; | 4006 | int rc; |
4006 | 4007 | ||
4007 | efx_filter_init_rx(&spec, EFX_FILTER_PRI_AUTO, | 4008 | filter_flags = efx_rss_enabled(efx) ? EFX_FILTER_FLAG_RX_RSS : 0; |
4008 | EFX_FILTER_FLAG_RX_RSS, | 4009 | |
4009 | 0); | 4010 | efx_filter_init_rx(&spec, EFX_FILTER_PRI_AUTO, filter_flags, 0); |
4010 | 4011 | ||
4011 | if (multicast) | 4012 | if (multicast) |
4012 | efx_filter_set_mc_def(&spec); | 4013 | efx_filter_set_mc_def(&spec); |
@@ -4023,8 +4024,7 @@ static int efx_ef10_filter_insert_def(struct efx_nic *efx, bool multicast, | |||
4023 | if (!nic_data->workaround_26807) { | 4024 | if (!nic_data->workaround_26807) { |
4024 | /* Also need an Ethernet broadcast filter */ | 4025 | /* Also need an Ethernet broadcast filter */ |
4025 | efx_filter_init_rx(&spec, EFX_FILTER_PRI_AUTO, | 4026 | efx_filter_init_rx(&spec, EFX_FILTER_PRI_AUTO, |
4026 | EFX_FILTER_FLAG_RX_RSS, | 4027 | filter_flags, 0); |
4027 | 0); | ||
4028 | eth_broadcast_addr(baddr); | 4028 | eth_broadcast_addr(baddr); |
4029 | efx_filter_set_eth_local(&spec, EFX_FILTER_VID_UNSPEC, | 4029 | efx_filter_set_eth_local(&spec, EFX_FILTER_VID_UNSPEC, |
4030 | baddr); | 4030 | baddr); |