Skip to content

Commit

Permalink
sfc: Clean up properly on reset failure paths
Browse files Browse the repository at this point in the history
If MAC switching fails, stop the port properly.

If PHY reinitialisation fails, clear the port_initialized flag.

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Ben Hutchings authored and David S. Miller committed Mar 5, 2009
1 parent a7ef593 commit 115122a
Showing 1 changed file with 6 additions and 3 deletions.
9 changes: 6 additions & 3 deletions drivers/net/sfc/efx.c
Original file line number Diff line number Diff line change
Expand Up @@ -557,6 +557,8 @@ static void efx_link_status_changed(struct efx_nic *efx)

}

static void efx_fini_port(struct efx_nic *efx);

/* This call reinitialises the MAC to pick up new PHY settings. The
* caller must hold the mac_lock */
void __efx_reconfigure_port(struct efx_nic *efx)
Expand Down Expand Up @@ -592,8 +594,8 @@ void __efx_reconfigure_port(struct efx_nic *efx)

fail:
EFX_ERR(efx, "failed to reconfigure MAC\n");
efx->phy_op->fini(efx);
efx->port_initialized = false;
efx->port_enabled = false;
efx_fini_port(efx);
}

/* Reinitialise the MAC to pick up new PHY settings, even if the port is
Expand Down Expand Up @@ -1667,7 +1669,8 @@ int efx_reset_up(struct efx_nic *efx, enum reset_type method,
rc = efx->phy_op->init(efx);
if (rc)
ok = false;
} else
}
if (!ok)
efx->port_initialized = false;
}

Expand Down

0 comments on commit 115122a

Please sign in to comment.