| From df5c4d93c5a59cba0f7479a4cd4e22b50726ce88 Mon Sep 17 00:00:00 2001 |
| From: Russell King <rmk+kernel@armlinux.org.uk> |
| Date: Thu, 17 Oct 2019 11:12:42 +0100 |
| Subject: [PATCH 625/660] 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> |
| --- |
| drivers/net/phy/sfp.c | 9 +-------- |
| 1 file changed, 1 insertion(+), 8 deletions(-) |
| |
| --- 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_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 *sf |
| |
| 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: |