From 98ed6fafe21c88d99a8cd5d8fcab47fe9e364850 Mon Sep 17 00:00:00 2001 From: shenjian Date: Tue, 23 Apr 2019 18:36:23 +0800 Subject: [PATCH] net: hns3: do not initialize mdio bus when phy is inexistent driver inclusion category: bugfix bugzilla: NA CVE: NA For some boards, phy is not connected to mdio bus. In this case, mdio bus initialization will fail, then cause the device initialize fail. This patch fixes it by skip the mdio bus initialization when phy is inexistent. Signed-off-by: shenjian (K) Reviewed-by: lipeng Reviewed-by: Hanjun Guo Signed-off-by: Yang Yingliang --- drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mdio.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mdio.c b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mdio.c index 499779f53d90..d8c945c527da 100644 --- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mdio.c +++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mdio.c @@ -111,12 +111,18 @@ static int hclge_mdio_read(struct mii_bus *bus, int phyid, int regnum) int hclge_mac_mdio_config(struct hclge_dev *hdev) { +#define PHY_INEXISTENT 255 + struct hclge_mac *mac = &hdev->hw.mac; struct phy_device *phydev; struct mii_bus *mdio_bus; int ret; - if (hdev->hw.mac.phy_addr >= PHY_MAX_ADDR) { + if (hdev->hw.mac.phy_addr == PHY_INEXISTENT) { + dev_info(&hdev->pdev->dev, + "no phy device is connected to mdio bus\n"); + return 0; + } else if (hdev->hw.mac.phy_addr >= PHY_MAX_ADDR) { dev_err(&hdev->pdev->dev, "phy_addr(%d) is too large.\n", hdev->hw.mac.phy_addr); return -EINVAL; -- GitLab