[OpenWrt-Devel] [PATCH 1/2] ipq40xx: 5.4: fix networking PHY driver

Robert Marko robert.marko at sartura.hr
Sun Mar 15 07:42:27 EDT 2020


On Tue, Mar 3, 2020 at 8:19 PM Robert Marko <robert.marko at sartura.hr> wrote:
>
> In 5.4 kernel old u32 array way of setting network features was dropped and linkmode is now the only way.
> So lets migrate the PHY driver to support linkmode.
> Also, now in order for gigabit to work, PHY driver needs to advertise PHY_GBIT_FEATURES instead of PHY_BASIC_FEATURES
>
Any chance of merging this?
Without this networking is broken in 5.4

> Signed-off-by: Robert Marko <robert.marko at sartura.hr>
> ---
>  .../patches-5.4/705-net-add-qualcomm-ar40xx-phy.patch |  6 +++---
>  .../706-ar40xx-abort-probe-on-missig-phy.patch        | 11 -----------
>  2 files changed, 3 insertions(+), 14 deletions(-)
>
> diff --git a/target/linux/ipq40xx/patches-5.4/705-net-add-qualcomm-ar40xx-phy.patch b/target/linux/ipq40xx/patches-5.4/705-net-add-qualcomm-ar40xx-phy.patch
> index 6df447fcd5..083de038a2 100644
> --- a/target/linux/ipq40xx/patches-5.4/705-net-add-qualcomm-ar40xx-phy.patch
> +++ b/target/linux/ipq40xx/patches-5.4/705-net-add-qualcomm-ar40xx-phy.patch
> @@ -1837,8 +1837,8 @@
>  +      if (phydev->mdio.addr == 0)
>  +              ar40xx_priv->phy = phydev;
>  +
> -+      phydev->supported |= SUPPORTED_1000baseT_Full;
> -+      phydev->advertising |= ADVERTISED_1000baseT_Full;
> ++      linkmode_set_bit(ETHTOOL_LINK_MODE_1000baseT_Full_BIT, phydev->supported);
> ++      linkmode_set_bit(ETHTOOL_LINK_MODE_1000baseT_Full_BIT, phydev->advertising);
>  +      return 0;
>  +}
>  +
> @@ -1877,7 +1877,7 @@
>  +      .phy_id         = 0x004d0000,
>  +      .name           = "QCA Malibu",
>  +      .phy_id_mask    = 0xffff0000,
> -+      .features       = PHY_BASIC_FEATURES,
> ++      .features       = PHY_GBIT_FEATURES,
>  +      .probe          = ar40xx_phy_probe,
>  +      .remove         = ar40xx_phy_remove,
>  +      .config_init    = ar40xx_phy_config_init,
> diff --git a/target/linux/ipq40xx/patches-5.4/706-ar40xx-abort-probe-on-missig-phy.patch b/target/linux/ipq40xx/patches-5.4/706-ar40xx-abort-probe-on-missig-phy.patch
> index cda05bfb9f..19474bff0d 100644
> --- a/target/linux/ipq40xx/patches-5.4/706-ar40xx-abort-probe-on-missig-phy.patch
> +++ b/target/linux/ipq40xx/patches-5.4/706-ar40xx-abort-probe-on-missig-phy.patch
> @@ -1,16 +1,5 @@
>  --- a/drivers/net/phy/ar40xx.c
>  +++ b/drivers/net/phy/ar40xx.c
> -@@ -1808,8 +1808,8 @@ ar40xx_phy_probe(struct phy_device *phyd
> -       if (phydev->mdio.addr == 0)
> -               ar40xx_priv->phy = phydev;
> -
> --      phydev->supported |= SUPPORTED_1000baseT_Full;
> --      phydev->advertising |= ADVERTISED_1000baseT_Full;
> -+      phy_set_max_speed(phydev, SPEED_1000);
> -+      linkmode_copy(phydev->advertising, phydev->supported);
> -       return 0;
> - }
> -
>  @@ -2021,6 +2021,12 @@ static int ar40xx_probe(struct platform_
>         /* register switch */
>         swdev = &priv->dev;
> --
> 2.24.1
>

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel



More information about the openwrt-devel mailing list