]> www.infradead.org Git - users/hch/dma-mapping.git/commitdiff
net: phy: aquantia: remove usage of phy_set_max_speed
authorAbhishek Chauhan <quic_abchauha@quicinc.com>
Tue, 1 Oct 2024 22:46:26 +0000 (15:46 -0700)
committerJakub Kicinski <kuba@kernel.org>
Thu, 3 Oct 2024 23:16:03 +0000 (16:16 -0700)
Remove the use of phy_set_max_speed in phy driver as the
function is mainly used in MAC driver to set the max
speed.

Instead use get_features to fix up Phy PMA capabilities for
AQR111, AQR111B0, AQR114C and AQCS109

Fixes: 038ba1dc4e54 ("net: phy: aquantia: add AQR111 and AQR111B0 PHY ID")
Fixes: 0974f1f03b07 ("net: phy: aquantia: remove false 5G and 10G speed ability for AQCS109")
Fixes: c278ec644377 ("net: phy: aquantia: add support for AQR114C PHY ID")
Link: https://lore.kernel.org/all/20240913011635.1286027-1-quic_abchauha@quicinc.com/T/
Signed-off-by: Abhishek Chauhan <quic_abchauha@quicinc.com>
Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Link: https://patch.msgid.link/20241001224626.2400222-3-quic_abchauha@quicinc.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/phy/aquantia/aquantia_main.c

index 1bb39664a5cb17952d116e59d243179637fb92f4..c33a5ef34ba032a0cc5a73f33334757beaf04d05 100644 (file)
@@ -537,12 +537,6 @@ static int aqcs109_config_init(struct phy_device *phydev)
        if (!ret)
                aqr107_chip_info(phydev);
 
-       /* AQCS109 belongs to a chip family partially supporting 10G and 5G.
-        * PMA speed ability bits are the same for all members of the family,
-        * AQCS109 however supports speeds up to 2.5G only.
-        */
-       phy_set_max_speed(phydev, SPEED_2500);
-
        return aqr107_set_downshift(phydev, MDIO_AN_VEND_PROV_DOWNSHIFT_DFLT);
 }
 
@@ -744,6 +738,18 @@ static int aqr115c_get_features(struct phy_device *phydev)
        return 0;
 }
 
+static int aqr111_get_features(struct phy_device *phydev)
+{
+       /* PHY supports speeds up to 5G with autoneg. PMA capabilities
+        * are not useful.
+        */
+       aqr115c_get_features(phydev);
+       linkmode_set_bit(ETHTOOL_LINK_MODE_5000baseT_Full_BIT,
+                        phydev->supported);
+
+       return 0;
+}
+
 static int aqr113c_config_init(struct phy_device *phydev)
 {
        int ret;
@@ -780,15 +786,6 @@ static int aqr107_probe(struct phy_device *phydev)
        return aqr_hwmon_probe(phydev);
 }
 
-static int aqr111_config_init(struct phy_device *phydev)
-{
-       /* AQR111 reports supporting speed up to 10G,
-        * however only speeds up to 5G are supported.
-        */
-       phy_set_max_speed(phydev, SPEED_5000);
-
-       return aqr107_config_init(phydev);
-}
 
 static struct phy_driver aqr_driver[] = {
 {
@@ -866,6 +863,7 @@ static struct phy_driver aqr_driver[] = {
        .get_sset_count = aqr107_get_sset_count,
        .get_strings    = aqr107_get_strings,
        .get_stats      = aqr107_get_stats,
+       .get_features   = aqr115c_get_features,
        .link_change_notify = aqr107_link_change_notify,
        .led_brightness_set = aqr_phy_led_brightness_set,
        .led_hw_is_supported = aqr_phy_led_hw_is_supported,
@@ -878,7 +876,7 @@ static struct phy_driver aqr_driver[] = {
        .name           = "Aquantia AQR111",
        .probe          = aqr107_probe,
        .get_rate_matching = aqr107_get_rate_matching,
-       .config_init    = aqr111_config_init,
+       .config_init    = aqr107_config_init,
        .config_aneg    = aqr_config_aneg,
        .config_intr    = aqr_config_intr,
        .handle_interrupt = aqr_handle_interrupt,
@@ -890,6 +888,7 @@ static struct phy_driver aqr_driver[] = {
        .get_sset_count = aqr107_get_sset_count,
        .get_strings    = aqr107_get_strings,
        .get_stats      = aqr107_get_stats,
+       .get_features   = aqr111_get_features,
        .link_change_notify = aqr107_link_change_notify,
        .led_brightness_set = aqr_phy_led_brightness_set,
        .led_hw_is_supported = aqr_phy_led_hw_is_supported,
@@ -902,7 +901,7 @@ static struct phy_driver aqr_driver[] = {
        .name           = "Aquantia AQR111B0",
        .probe          = aqr107_probe,
        .get_rate_matching = aqr107_get_rate_matching,
-       .config_init    = aqr111_config_init,
+       .config_init    = aqr107_config_init,
        .config_aneg    = aqr_config_aneg,
        .config_intr    = aqr_config_intr,
        .handle_interrupt = aqr_handle_interrupt,
@@ -914,6 +913,7 @@ static struct phy_driver aqr_driver[] = {
        .get_sset_count = aqr107_get_sset_count,
        .get_strings    = aqr107_get_strings,
        .get_stats      = aqr107_get_stats,
+       .get_features   = aqr111_get_features,
        .link_change_notify = aqr107_link_change_notify,
        .led_brightness_set = aqr_phy_led_brightness_set,
        .led_hw_is_supported = aqr_phy_led_hw_is_supported,
@@ -1023,7 +1023,7 @@ static struct phy_driver aqr_driver[] = {
        .name           = "Aquantia AQR114C",
        .probe          = aqr107_probe,
        .get_rate_matching = aqr107_get_rate_matching,
-       .config_init    = aqr111_config_init,
+       .config_init    = aqr107_config_init,
        .config_aneg    = aqr_config_aneg,
        .config_intr    = aqr_config_intr,
        .handle_interrupt = aqr_handle_interrupt,
@@ -1035,6 +1035,7 @@ static struct phy_driver aqr_driver[] = {
        .get_sset_count = aqr107_get_sset_count,
        .get_strings    = aqr107_get_strings,
        .get_stats      = aqr107_get_stats,
+       .get_features   = aqr111_get_features,
        .link_change_notify = aqr107_link_change_notify,
        .led_brightness_set = aqr_phy_led_brightness_set,
        .led_hw_is_supported = aqr_phy_led_hw_is_supported,