diff mbox series

[net-next,12/13] net: phy: dp83822: Add SFP support through the phy_port interface

Message ID 20250207223634.600218-13-maxime.chevallier@bootlin.com
State New
Headers show
Series Introduce an ethernet port representation | expand

Commit Message

Maxime Chevallier Feb. 7, 2025, 10:36 p.m. UTC
The DP83822 can support 100BaseFX. This mode was only accessible through
custom DT properties, but there also exist SFP modules that support
these modes. As this only requires setting the relevant supported
interface in the driver, expose the port capability with the new
phy_port API, allowing SFP support.

Signed-off-by: Maxime Chevallier <maxime.chevallier@bootlin.com>
---
 drivers/net/phy/dp83822.c | 7 +++++++
 1 file changed, 7 insertions(+)

Comments

kernel test robot Feb. 8, 2025, 4:15 p.m. UTC | #1
Hi Maxime,

kernel test robot noticed the following build errors:

[auto build test ERROR on net-next/main]

url:    https://github.com/intel-lab-lkp/linux/commits/Maxime-Chevallier/net-ethtool-Introduce-ETHTOOL_LINK_MEDIUM_-values/20250208-064223
base:   net-next/main
patch link:    https://lore.kernel.org/r/20250207223634.600218-13-maxime.chevallier%40bootlin.com
patch subject: [PATCH net-next 12/13] net: phy: dp83822: Add SFP support through the phy_port interface
config: i386-buildonly-randconfig-004-20250208 (https://download.01.org/0day-ci/archive/20250209/202502090056.jTCOvIPk-lkp@intel.com/config)
compiler: clang version 19.1.3 (https://github.com/llvm/llvm-project ab51eccf88f5321e7c60591c5546b254b6afab99)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250209/202502090056.jTCOvIPk-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202502090056.jTCOvIPk-lkp@intel.com/

All errors (new ones prefixed by >>):

>> drivers/net/phy/dp83822.c:916:43: error: use of undeclared identifier 'interfaces'
     916 |                 __set_bit(PHY_INTERFACE_MODE_100BASEFX, interfaces);
         |                                                         ^
>> drivers/net/phy/dp83822.c:916:13: error: use of undeclared identifier 'PHY_INTERFACE_MODE_100BASEFX'; did you mean 'PHY_INTERFACE_MODE_100BASEX'?
     916 |                 __set_bit(PHY_INTERFACE_MODE_100BASEFX, interfaces);
         |                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
         |                           PHY_INTERFACE_MODE_100BASEX
   include/linux/bitops.h:54:48: note: expanded from macro '__set_bit'
      54 | #define __set_bit(nr, addr)             bitop(___set_bit, nr, addr)
         |                                                           ^
   include/linux/bitops.h:44:25: note: expanded from macro 'bitop'
      44 |         ((__builtin_constant_p(nr) &&                                   \
         |                                ^
   include/linux/phy.h:140:2: note: 'PHY_INTERFACE_MODE_100BASEX' declared here
     140 |         PHY_INTERFACE_MODE_100BASEX,
         |         ^
>> drivers/net/phy/dp83822.c:916:43: error: use of undeclared identifier 'interfaces'
     916 |                 __set_bit(PHY_INTERFACE_MODE_100BASEFX, interfaces);
         |                                                         ^
>> drivers/net/phy/dp83822.c:916:43: error: use of undeclared identifier 'interfaces'
   drivers/net/phy/dp83822.c:916:13: error: use of undeclared identifier 'PHY_INTERFACE_MODE_100BASEFX'
     916 |                 __set_bit(PHY_INTERFACE_MODE_100BASEFX, interfaces);
         |                           ^
>> drivers/net/phy/dp83822.c:916:43: error: use of undeclared identifier 'interfaces'
     916 |                 __set_bit(PHY_INTERFACE_MODE_100BASEFX, interfaces);
         |                                                         ^
   drivers/net/phy/dp83822.c:916:13: error: use of undeclared identifier 'PHY_INTERFACE_MODE_100BASEFX'
     916 |                 __set_bit(PHY_INTERFACE_MODE_100BASEFX, interfaces);
         |                           ^
>> drivers/net/phy/dp83822.c:916:43: error: use of undeclared identifier 'interfaces'
     916 |                 __set_bit(PHY_INTERFACE_MODE_100BASEFX, interfaces);
         |                                                         ^
   8 errors generated.


vim +/interfaces +916 drivers/net/phy/dp83822.c

   899	
   900			if (dp83822->fx_enabled) {
   901				port->lanes = 1;
   902				port->mediums = BIT(ETHTOOL_LINK_MEDIUM_BASEF) |
   903						BIT(ETHTOOL_LINK_MEDIUM_BASEX);
   904			} else {
   905				/* This PHY can only to 100BaseTX max, so on 2 lanes */
   906				port->lanes = 2;
   907				port->mediums = BIT(ETHTOOL_LINK_MEDIUM_BASET);
   908			}
   909		}
   910	
   911		/* If attached from SFP, is_serdes is set, but not the mediums. */
   912		if (port->is_serdes)
   913			dp83822->fx_enabled = true;
   914	
   915		if (dp83822->fx_enabled)
 > 916			__set_bit(PHY_INTERFACE_MODE_100BASEFX, interfaces);
   917	
   918		return 0;
   919	}
   920
diff mbox series

Patch

diff --git a/drivers/net/phy/dp83822.c b/drivers/net/phy/dp83822.c
index af535b0a3914..873ba467cd57 100644
--- a/drivers/net/phy/dp83822.c
+++ b/drivers/net/phy/dp83822.c
@@ -908,6 +908,13 @@  static int dp83822_attach_port(struct phy_device *phydev, struct phy_port *port)
 		}
 	}
 
+	/* If attached from SFP, is_serdes is set, but not the mediums. */
+	if (port->is_serdes)
+		dp83822->fx_enabled = true;
+
+	if (dp83822->fx_enabled)
+		__set_bit(PHY_INTERFACE_MODE_100BASEFX, interfaces);
+
 	return 0;
 }