diff options
author | Ben Hutchings <bhutchings@solarflare.com> | 2010-09-20 08:43:07 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-09-21 14:58:00 -0700 |
commit | 64eebcfd899a5d2ebe211a593ec13ec24630f1a3 (patch) | |
tree | b147a37d3b4a586464908221b9ea18f80c34ee46 /drivers/net/sfc/efx.c | |
parent | a77f5db361ed9953b5b749353ea2c7fed2bf8d93 (diff) | |
download | talos-op-linux-64eebcfd899a5d2ebe211a593ec13ec24630f1a3.tar.gz talos-op-linux-64eebcfd899a5d2ebe211a593ec13ec24630f1a3.zip |
sfc: Add filter table management
Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/sfc/efx.c')
-rw-r--r-- | drivers/net/sfc/efx.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/net/sfc/efx.c b/drivers/net/sfc/efx.c index f702f1fb63b6..4a1c93f165e6 100644 --- a/drivers/net/sfc/efx.c +++ b/drivers/net/sfc/efx.c @@ -1357,8 +1357,17 @@ static int efx_probe_all(struct efx_nic *efx) if (rc) goto fail3; + rc = efx_probe_filters(efx); + if (rc) { + netif_err(efx, probe, efx->net_dev, + "failed to create filter tables\n"); + goto fail4; + } + return 0; + fail4: + efx_remove_channels(efx); fail3: efx_remove_port(efx); fail2: @@ -1489,6 +1498,7 @@ static void efx_stop_all(struct efx_nic *efx) static void efx_remove_all(struct efx_nic *efx) { + efx_remove_filters(efx); efx_remove_channels(efx); efx_remove_port(efx); efx_remove_nic(efx); @@ -2002,6 +2012,7 @@ int efx_reset_up(struct efx_nic *efx, enum reset_type method, bool ok) efx->mac_op->reconfigure(efx); efx_init_channels(efx); + efx_restore_filters(efx); mutex_unlock(&efx->spi_lock); mutex_unlock(&efx->mac_lock); |