mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-13 02:56:44 +07:00
net: hns3: fix flow control configure issue for fibre port
Flow control autoneg is unsupported for fibre port. It takes no effect for flow control when restart autoneg. This patch fixes it, return -EOPNOTSUPP when user tries to enable flow control autoneg. Signed-off-by: Jian Shen <shenjian15@huawei.com> Signed-off-by: Peng Li <lipeng321@huawei.com> Signed-off-by: Huazhong Tan <tanhuazhong@huawei.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
2d5066fc17
commit
fb89629f2e
@ -8179,8 +8179,9 @@ static void hclge_get_pauseparam(struct hnae3_handle *handle, u32 *auto_neg,
|
||||
{
|
||||
struct hclge_vport *vport = hclge_get_vport(handle);
|
||||
struct hclge_dev *hdev = vport->back;
|
||||
struct phy_device *phydev = hdev->hw.mac.phydev;
|
||||
|
||||
*auto_neg = hclge_get_autoneg(handle);
|
||||
*auto_neg = phydev ? hclge_get_autoneg(handle) : 0;
|
||||
|
||||
if (hdev->tm_info.fc_mode == HCLGE_FC_PFC) {
|
||||
*rx_en = 0;
|
||||
@ -8211,12 +8212,14 @@ static int hclge_set_pauseparam(struct hnae3_handle *handle, u32 auto_neg,
|
||||
struct phy_device *phydev = hdev->hw.mac.phydev;
|
||||
u32 fc_autoneg;
|
||||
|
||||
if (phydev) {
|
||||
fc_autoneg = hclge_get_autoneg(handle);
|
||||
if (auto_neg != fc_autoneg) {
|
||||
dev_info(&hdev->pdev->dev,
|
||||
"To change autoneg please use: ethtool -s <dev> autoneg <on|off>\n");
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
}
|
||||
|
||||
if (hdev->tm_info.fc_mode == HCLGE_FC_PFC) {
|
||||
dev_info(&hdev->pdev->dev,
|
||||
@ -8226,16 +8229,13 @@ static int hclge_set_pauseparam(struct hnae3_handle *handle, u32 auto_neg,
|
||||
|
||||
hclge_set_flowctrl_adv(hdev, rx_en, tx_en);
|
||||
|
||||
if (!fc_autoneg)
|
||||
if (!auto_neg)
|
||||
return hclge_cfg_pauseparam(hdev, rx_en, tx_en);
|
||||
|
||||
if (phydev)
|
||||
return phy_start_aneg(phydev);
|
||||
|
||||
if (hdev->pdev->revision == 0x20)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
return hclge_restart_autoneg(handle);
|
||||
}
|
||||
|
||||
static void hclge_get_ksettings_an_result(struct hnae3_handle *handle,
|
||||
|
Loading…
Reference in New Issue
Block a user