]> git.ipfire.org Git - thirdparty/linux.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)
committerJakub Kicinski <kuba@kernel.org>
Tue, 28 Oct 2025 00:52:53 +0000 (17:52 -0700)
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>
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 9d34d28ff168a21f6be8164f9c8ae90a859c3142..782bb48c9f3d770543f73d9949b63d937eb40a81 100644 (file)
@@ -9429,8 +9429,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 96553109f44c9b506dba438bff3e535e5e916d47..cf881108fa57028064006917a247a00cd3622381 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