Re: [PATCH V5 net-next 6/8] net: hns3: Add MDIO support to HNS3 Ethernet driver for hip08 SoC
From: Andrew Lunn
Date: Fri Jul 28 2017 - 19:24:41 EST
> +static void hclge_mac_adjust_link(struct net_device *netdev)
> +{
> + struct hnae3_handle *h = *((void **)netdev_priv(netdev));
> + struct hclge_vport *vport = hclge_get_vport(h);
> + struct hclge_dev *hdev = vport->back;
> + int duplex, speed;
> + int ret;
> +
> + speed = netdev->phydev->speed;
> + duplex = netdev->phydev->duplex;
> +
> + ret = hclge_cfg_mac_speed_dup(hdev, speed, duplex);
> + if (ret)
> + dev_err(&hdev->pdev->dev, "adjust link fail.\n");
Here and hclge_mac_start_phy() you have a netdev, so you should be
using netdev_err()
> +}
> +
> +int hclge_mac_start_phy(struct hclge_dev *hdev)
> +{
> + struct net_device *netdev = hdev->vport[0].nic.netdev;
> + struct phy_device *phydev = hdev->hw.mac.phydev;
> + int ret;
> +
> + if (!phydev)
> + return 0;
> +
> + ret = phy_connect_direct(netdev, phydev,
> + hclge_mac_adjust_link,
> + PHY_INTERFACE_MODE_SGMII);
> + if (ret) {
> + pr_info("phy_connect_direct err");
> + return ret;
netdev_err(). checkpatch probably gave you a warning about this?
> + }
> +
> + phy_start(phydev);
> +
> + return 0;
> +}
> +
> +void hclge_mac_stop_phy(struct hclge_dev *hdev)
> +{
> + struct net_device *netdev = hdev->vport[0].nic.netdev;
> + struct phy_device *phydev = netdev->phydev;
> +
> + phy_stop(phydev);
> + phy_disconnect(phydev);
> +}
In hclge_mac_start_phy() you check for !phydev. Here you
unconditionally use phydev. Seems inconsistent.
Andrew