Commit 35a36af8 authored by Edward Cree's avatar Edward Cree Committed by David S. Miller

sfc_ef100: don't call efx_reset_down()/up() on EF100

We handle everything ourselves in ef100_reset(), rather than relying on
 the generic down/up routines.
Signed-off-by: default avatarEdward Cree <ecree@solarflare.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent aa86a75f
...@@ -814,14 +814,18 @@ int efx_reset_up(struct efx_nic *efx, enum reset_type method, bool ok) ...@@ -814,14 +814,18 @@ int efx_reset_up(struct efx_nic *efx, enum reset_type method, bool ok)
*/ */
int efx_reset(struct efx_nic *efx, enum reset_type method) int efx_reset(struct efx_nic *efx, enum reset_type method)
{ {
int rc, rc2 = 0;
bool disabled; bool disabled;
int rc, rc2;
netif_info(efx, drv, efx->net_dev, "resetting (%s)\n", netif_info(efx, drv, efx->net_dev, "resetting (%s)\n",
RESET_TYPE(method)); RESET_TYPE(method));
efx_device_detach_sync(efx); efx_device_detach_sync(efx);
efx_reset_down(efx, method); /* efx_reset_down() grabs locks that prevent recovery on EF100.
* EF100 reset is handled in the efx_nic_type callback below.
*/
if (efx_nic_rev(efx) != EFX_REV_EF100)
efx_reset_down(efx, method);
rc = efx->type->reset(efx, method); rc = efx->type->reset(efx, method);
if (rc) { if (rc) {
...@@ -849,7 +853,8 @@ int efx_reset(struct efx_nic *efx, enum reset_type method) ...@@ -849,7 +853,8 @@ int efx_reset(struct efx_nic *efx, enum reset_type method)
disabled = rc || disabled = rc ||
method == RESET_TYPE_DISABLE || method == RESET_TYPE_DISABLE ||
method == RESET_TYPE_RECOVER_OR_DISABLE; method == RESET_TYPE_RECOVER_OR_DISABLE;
rc2 = efx_reset_up(efx, method, !disabled); if (efx_nic_rev(efx) != EFX_REV_EF100)
rc2 = efx_reset_up(efx, method, !disabled);
if (rc2) { if (rc2) {
disabled = true; disabled = true;
if (!rc) if (!rc)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment