net: hns3: fix for phy_addr error in hclge_mac_mdio_config

When phy exists, phy_addr must less than PHY_MAX_ADDR.
If not, hclge_mac_mdio_config should return error.
And for fiber(phy_addr=0xff), it does not need hclge_mac_mdio_config.

Signed-off-by: Huazhong Tan <tanhuazhong@huawei.com>
Signed-off-by: Peng Li <lipeng321@huawei.com>
Signed-off-by: Salil Mehta <salil.mehta@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Huazhong Tan
2018-05-01 19:56:01 +01:00
committed by David S. Miller
parent ffd5656e18
commit c5ef83cbb1
2 changed files with 12 additions and 7 deletions

View File

@@ -5503,11 +5503,13 @@ static int hclge_init_ae_dev(struct hnae3_ae_dev *ae_dev)
goto err_sriov_disable; goto err_sriov_disable;
} }
ret = hclge_mac_mdio_config(hdev); if (hdev->hw.mac.media_type == HNAE3_MEDIA_TYPE_COPPER) {
if (ret) { ret = hclge_mac_mdio_config(hdev);
dev_warn(&hdev->pdev->dev, if (ret) {
"mdio config fail ret=%d\n", ret); dev_err(&hdev->pdev->dev,
goto err_sriov_disable; "mdio config fail ret=%d\n", ret);
goto err_sriov_disable;
}
} }
ret = hclge_mac_init(hdev); ret = hclge_mac_init(hdev);

View File

@@ -140,8 +140,11 @@ int hclge_mac_mdio_config(struct hclge_dev *hdev)
struct mii_bus *mdio_bus; struct mii_bus *mdio_bus;
int ret; int ret;
if (hdev->hw.mac.phy_addr >= PHY_MAX_ADDR) if (hdev->hw.mac.phy_addr >= PHY_MAX_ADDR) {
return 0; dev_err(&hdev->pdev->dev, "phy_addr(%d) is too large.\n",
hdev->hw.mac.phy_addr);
return -EINVAL;
}
mdio_bus = devm_mdiobus_alloc(&hdev->pdev->dev); mdio_bus = devm_mdiobus_alloc(&hdev->pdev->dev);
if (!mdio_bus) if (!mdio_bus)