aboutsummaryrefslogtreecommitdiff
path: root/drivers/net/ethernet/sfc/ef100_netdev.c
diff options
context:
space:
mode:
authorEdward Cree <ecree@solarflare.com>2020-08-03 21:34:47 +0100
committerDavid S. Miller <davem@davemloft.net>2020-08-03 18:22:54 -0700
commita9dc3d5612ce6b48bd1d230d0e3c21478a9538b3 (patch)
treeb7160353c4ea627840e26a08f9911371b58ba34d /drivers/net/ethernet/sfc/ef100_netdev.c
parentd19a5372186336df8a90391c1ae2011e03310dca (diff)
sfc_ef100: RX filter table management and related gubbins
Signed-off-by: Edward Cree <ecree@solarflare.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/sfc/ef100_netdev.c')
-rw-r--r--drivers/net/ethernet/sfc/ef100_netdev.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/net/ethernet/sfc/ef100_netdev.c b/drivers/net/ethernet/sfc/ef100_netdev.c
index ec9ca81fed85..362a915c836a 100644
--- a/drivers/net/ethernet/sfc/ef100_netdev.c
+++ b/drivers/net/ethernet/sfc/ef100_netdev.c
@@ -89,6 +89,7 @@ static int ef100_net_stop(struct net_device *net_dev)
efx_disable_interrupts(efx);
efx_clear_interrupt_affinity(efx);
efx_nic_fini_interrupt(efx);
+ efx_remove_filters(efx);
efx_fini_napi(efx);
efx_remove_channels(efx);
efx_mcdi_free_vis(efx);
@@ -138,6 +139,10 @@ static int ef100_net_open(struct net_device *net_dev)
efx_init_napi(efx);
+ rc = efx_probe_filters(efx);
+ if (rc)
+ goto fail;
+
rc = efx_nic_init_interrupt(efx);
if (rc)
goto fail;
@@ -207,8 +212,13 @@ static const struct net_device_ops ef100_netdev_ops = {
.ndo_open = ef100_net_open,
.ndo_stop = ef100_net_stop,
.ndo_start_xmit = ef100_hard_start_xmit,
+ .ndo_validate_addr = eth_validate_addr,
+ .ndo_set_rx_mode = efx_set_rx_mode, /* Lookout */
.ndo_get_phys_port_id = efx_get_phys_port_id,
.ndo_get_phys_port_name = efx_get_phys_port_name,
+#ifdef CONFIG_RFS_ACCEL
+ .ndo_rx_flow_steer = efx_filter_rfs,
+#endif
};
/* Netdev registration