net: sfp: only use soft polling if we have A2h access
authorRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
Thu, 9 Mar 2023 15:57:16 +0000 (15:57 +0000)
committerJakub Kicinski <kuba@kernel.org>
Sat, 11 Mar 2023 02:12:48 +0000 (18:12 -0800)
The soft state bits are stored in the A2h memory space, and require
SFF-8472 compliance. This is what our have_a2 flag tells us, so use
this to indicate whether we should attempt to use the soft signals.

Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/phy/sfp.c

index 4ff07b5..39e3095 100644 (file)
@@ -2284,7 +2284,11 @@ static void sfp_sm_main(struct sfp *sfp, unsigned int event)
                    sfp->sm_dev_state != SFP_DEV_UP)
                        break;
 
-               if (!(sfp->id.ext.diagmon & SFP_DIAGMON_ADDRMODE))
+               /* Only use the soft state bits if we have access to the A2h
+                * memory, which implies that we have some level of SFF-8472
+                * compliance.
+                */
+               if (sfp->have_a2)
                        sfp_soft_start_poll(sfp);
 
                sfp_module_tx_enable(sfp);