mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-18 05:59:04 +07:00
net: hns3: do not return GE PFC setting err when initializing
GE MAC does not support PFC, when driver is initializing and MAC is in GE Mode, ignore the fw not supported error, otherwise initialization will fail. Signed-off-by: Yunsheng Lin <linyunsheng@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
4a402f47cf
commit
44e59e375b
@ -166,7 +166,7 @@ static int hclge_map_update(struct hnae3_handle *h)
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = hclge_pause_setup_hw(hdev);
|
||||
ret = hclge_pause_setup_hw(hdev, false);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
@ -313,7 +313,7 @@ static int hclge_ieee_setpfc(struct hnae3_handle *h, struct ieee_pfc *pfc)
|
||||
|
||||
hdev->tm_info.hw_pfc_map = pfc_map;
|
||||
|
||||
return hclge_pause_setup_hw(hdev);
|
||||
return hclge_pause_setup_hw(hdev, false);
|
||||
}
|
||||
|
||||
/* DCBX configuration */
|
||||
@ -361,7 +361,7 @@ static int hclge_setup_tc(struct hnae3_handle *h, u8 tc, u8 *prio_tc)
|
||||
hclge_tm_schd_info_update(hdev, tc);
|
||||
hclge_tm_prio_tc_info_update(hdev, prio_tc);
|
||||
|
||||
ret = hclge_tm_init_hw(hdev);
|
||||
ret = hclge_tm_init_hw(hdev, false);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
|
@ -7428,7 +7428,7 @@ static int hclge_reset_ae_dev(struct hnae3_ae_dev *ae_dev)
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = hclge_tm_init_hw(hdev);
|
||||
ret = hclge_tm_init_hw(hdev, true);
|
||||
if (ret) {
|
||||
dev_err(&pdev->dev, "tm init hw fail, ret =%d\n", ret);
|
||||
return ret;
|
||||
|
@ -1255,7 +1255,7 @@ static int hclge_tm_bp_setup(struct hclge_dev *hdev)
|
||||
return ret;
|
||||
}
|
||||
|
||||
int hclge_pause_setup_hw(struct hclge_dev *hdev)
|
||||
int hclge_pause_setup_hw(struct hclge_dev *hdev, bool init)
|
||||
{
|
||||
int ret;
|
||||
|
||||
@ -1271,10 +1271,15 @@ int hclge_pause_setup_hw(struct hclge_dev *hdev)
|
||||
if (!hnae3_dev_dcb_supported(hdev))
|
||||
return 0;
|
||||
|
||||
/* When MAC is GE Mode, hdev does not support pfc setting */
|
||||
/* GE MAC does not support PFC, when driver is initializing and MAC
|
||||
* is in GE Mode, ignore the error here, otherwise initialization
|
||||
* will fail.
|
||||
*/
|
||||
ret = hclge_pfc_setup_hw(hdev);
|
||||
if (ret)
|
||||
dev_warn(&hdev->pdev->dev, "set pfc pause failed:%d\n", ret);
|
||||
if (init && ret == -EOPNOTSUPP)
|
||||
dev_warn(&hdev->pdev->dev, "GE MAC does not support pfc\n");
|
||||
else
|
||||
return ret;
|
||||
|
||||
return hclge_tm_bp_setup(hdev);
|
||||
}
|
||||
@ -1314,7 +1319,7 @@ void hclge_tm_schd_info_update(struct hclge_dev *hdev, u8 num_tc)
|
||||
hclge_tm_schd_info_init(hdev);
|
||||
}
|
||||
|
||||
int hclge_tm_init_hw(struct hclge_dev *hdev)
|
||||
int hclge_tm_init_hw(struct hclge_dev *hdev, bool init)
|
||||
{
|
||||
int ret;
|
||||
|
||||
@ -1326,7 +1331,7 @@ int hclge_tm_init_hw(struct hclge_dev *hdev)
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = hclge_pause_setup_hw(hdev);
|
||||
ret = hclge_pause_setup_hw(hdev, init);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
@ -1345,7 +1350,7 @@ int hclge_tm_schd_init(struct hclge_dev *hdev)
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
return hclge_tm_init_hw(hdev);
|
||||
return hclge_tm_init_hw(hdev, true);
|
||||
}
|
||||
|
||||
int hclge_tm_vport_map_update(struct hclge_dev *hdev)
|
||||
|
@ -143,12 +143,12 @@ struct hclge_port_shapping_cmd {
|
||||
|
||||
int hclge_tm_schd_init(struct hclge_dev *hdev);
|
||||
int hclge_tm_vport_map_update(struct hclge_dev *hdev);
|
||||
int hclge_pause_setup_hw(struct hclge_dev *hdev);
|
||||
int hclge_pause_setup_hw(struct hclge_dev *hdev, bool init);
|
||||
int hclge_tm_schd_setup_hw(struct hclge_dev *hdev);
|
||||
void hclge_tm_prio_tc_info_update(struct hclge_dev *hdev, u8 *prio_tc);
|
||||
void hclge_tm_schd_info_update(struct hclge_dev *hdev, u8 num_tc);
|
||||
int hclge_tm_dwrr_cfg(struct hclge_dev *hdev);
|
||||
int hclge_tm_init_hw(struct hclge_dev *hdev);
|
||||
int hclge_tm_init_hw(struct hclge_dev *hdev, bool init);
|
||||
int hclge_mac_pause_en_cfg(struct hclge_dev *hdev, bool tx, bool rx);
|
||||
int hclge_pause_addr_cfg(struct hclge_dev *hdev, const u8 *mac_addr);
|
||||
int hclge_pfc_rx_stats_get(struct hclge_dev *hdev, u64 *stats);
|
||||
|
Loading…
Reference in New Issue
Block a user