diff options
author | Russell King <rmk+kernel@armlinux.org.uk> | 2019-11-10 14:06:49 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2019-11-11 16:17:01 -0800 |
commit | 8e210b6bdc2c91492735c9ff913e3cdf2161f8dc (patch) | |
tree | 38466be67da3038c553d39ee44fba4684af4bc6a /drivers/net/phy/sfp.c | |
parent | 7cfa9c92d0a325f97ac13f894a7b47d37bd2040e (diff) | |
download | linux-stable-8e210b6bdc2c91492735c9ff913e3cdf2161f8dc.tar.gz linux-stable-8e210b6bdc2c91492735c9ff913e3cdf2161f8dc.tar.bz2 linux-stable-8e210b6bdc2c91492735c9ff913e3cdf2161f8dc.zip |
net: sfp: control TX_DISABLE and phy only from main state machine
We initialise TX_DISABLE when the sfp cage is probed, and then
maintain its state in the main state machine. However, the module
state machine:
- negates it when detecting a newly inserted module when it's already
guaranteed to be negated.
- negates it when the module is removed, but the main state machine
will do this anyway.
Make TX_DISABLE entirely controlled by the main state machine.
The main state machine also probes the module for a PHY, and removes
the PHY when the the module is removed. Hence, removing the PHY in
sfp_sm_module_remove() is also redundant, and is a left-over from
when we tried to probe for the PHY from the module state machine.
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/phy/sfp.c')
-rw-r--r-- | drivers/net/phy/sfp.c | 9 |
1 files changed, 1 insertions, 8 deletions
diff --git a/drivers/net/phy/sfp.c b/drivers/net/phy/sfp.c index d8efa1d3a903..e0bc060bb693 100644 --- a/drivers/net/phy/sfp.c +++ b/drivers/net/phy/sfp.c @@ -1557,11 +1557,6 @@ static void sfp_sm_mod_remove(struct sfp *sfp) sfp_hwmon_remove(sfp); - if (sfp->mod_phy) - sfp_sm_phy_detach(sfp); - - sfp_module_tx_disable(sfp); - memset(&sfp->id, 0, sizeof(sfp->id)); sfp->module_power_mW = 0; @@ -1599,10 +1594,8 @@ static void sfp_sm_module(struct sfp *sfp, unsigned int event) switch (sfp->sm_mod_state) { default: - if (event == SFP_E_INSERT && sfp->attached) { - sfp_module_tx_disable(sfp); + if (event == SFP_E_INSERT && sfp->attached) sfp_sm_mod_next(sfp, SFP_MOD_PROBE, T_SERIAL); - } break; case SFP_MOD_PROBE: |