]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
net: hns3: return error code when function fails
authorJijie Shao <shaojijie@huawei.com>
Thu, 23 Oct 2025 13:13:37 +0000 (21:13 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 13 Nov 2025 20:33:59 +0000 (15:33 -0500)
[ Upstream commit 03ca7c8c42be913529eb9f188278114430c6abbd ]

Currently, in hclge_mii_ioctl(), the operation to
read the PHY register (SIOCGMIIREG) always returns 0.

This patch changes the return type of hclge_read_phy_reg(),
returning an error code when the function fails.

Fixes: 024712f51e57 ("net: hns3: add ioctl support for imp-controlled PHYs")
Signed-off-by: Jijie Shao <shaojijie@huawei.com>
Reviewed-by: Alexander Lobakin <aleksander.lobakin@intel.com>
Link: https://patch.msgid.link/20251023131338.2642520-2-shaojijie@huawei.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mdio.c
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mdio.h

index 407ad0b985b4f2fd55ac2ba0b3c11348ceead925..f5eafd1ded4135f05b8a37a7b095269e104b296b 100644 (file)
@@ -9439,8 +9439,7 @@ static int hclge_mii_ioctl(struct hclge_dev *hdev, struct ifreq *ifr, int cmd)
                /* this command reads phy id and register at the same time */
                fallthrough;
        case SIOCGMIIREG:
-               data->val_out = hclge_read_phy_reg(hdev, data->reg_num);
-               return 0;
+               return hclge_read_phy_reg(hdev, data->reg_num, &data->val_out);
 
        case SIOCSMIIREG:
                return hclge_write_phy_reg(hdev, data->reg_num, data->val_in);
index 80079657afebe0add970be55425deaa87b46e3b4..b8dbf932caf94228768ac33f296fd08ecc66bb39 100644 (file)
@@ -274,7 +274,7 @@ void hclge_mac_stop_phy(struct hclge_dev *hdev)
        phy_stop(phydev);
 }
 
-u16 hclge_read_phy_reg(struct hclge_dev *hdev, u16 reg_addr)
+int hclge_read_phy_reg(struct hclge_dev *hdev, u16 reg_addr, u16 *val)
 {
        struct hclge_phy_reg_cmd *req;
        struct hclge_desc desc;
@@ -286,11 +286,14 @@ u16 hclge_read_phy_reg(struct hclge_dev *hdev, u16 reg_addr)
        req->reg_addr = cpu_to_le16(reg_addr);
 
        ret = hclge_cmd_send(&hdev->hw, &desc, 1);
-       if (ret)
+       if (ret) {
                dev_err(&hdev->pdev->dev,
                        "failed to read phy reg, ret = %d.\n", ret);
+               return ret;
+       }
 
-       return le16_to_cpu(req->reg_val);
+       *val = le16_to_cpu(req->reg_val);
+       return 0;
 }
 
 int hclge_write_phy_reg(struct hclge_dev *hdev, u16 reg_addr, u16 val)
index 4200d0b6d9317bac879d7eed9a5636f1557d57ab..21d434c82475b317d8406172191ceb5553f45877 100644 (file)
@@ -13,7 +13,7 @@ int hclge_mac_connect_phy(struct hnae3_handle *handle);
 void hclge_mac_disconnect_phy(struct hnae3_handle *handle);
 void hclge_mac_start_phy(struct hclge_dev *hdev);
 void hclge_mac_stop_phy(struct hclge_dev *hdev);
-u16 hclge_read_phy_reg(struct hclge_dev *hdev, u16 reg_addr);
+int hclge_read_phy_reg(struct hclge_dev *hdev, u16 reg_addr, u16 *val);
 int hclge_write_phy_reg(struct hclge_dev *hdev, u16 reg_addr, u16 val);
 
 #endif