@@ -229,6 +229,18 @@ phy_find_valid(int speed, int duplex, unsigned long *supported)
return phy_lookup_setting(speed, duplex, supported, false);
}
+/**
+ * phy_supported_speeds_num - return the number of all speeds currently
+ * supported by a phy device
+ * @phy: The phy device to return supported speeds of.
+ *
+ * Returns: the number of supported speeds.
+ */
+unsigned int phy_supported_speeds_num(struct phy_device *phy)
+{
+ return phy_speeds(NULL, 0, phy->supported);
+}
+
/**
* phy_supported_speeds - return all speeds currently supported by a phy device
* @phy: The phy device to return supported speeds of.
@@ -202,6 +202,8 @@ static inline void phy_interface_set_rgmii(unsigned long *intf)
__set_bit(PHY_INTERFACE_MODE_RGMII_TXID, intf);
}
+unsigned int phy_supported_speeds_num(struct phy_device *phy);
+
/*
* phy_supported_speeds - return all speeds currently supported by a PHY device
*/
Add simple helper to return count of supported speeds for the passed PHY device. This can be useful to know the number of speed modes to dynamically allocate a speed array for it. Signed-off-by: Christian Marangi <ansuelsmth@gmail.com> --- drivers/net/phy/phy.c | 12 ++++++++++++ include/linux/phy.h | 2 ++ 2 files changed, 14 insertions(+)