提交 2fb6bcd9 编写于 作者: Y Yonglong Liu 提交者: Xie XiuQi

net: hns3: modify how pause options is displayed

driver inclusion
category: bugfix
bugzilla: NA
CVE: NA

Currently, the pause options of HNS3 shown like this:
"RX/TX" is always the same with "RX negotiated/TX negotiated".
Because of the driver covered the value of "RX/TX" with the value
of "RX negotiated/TX negotiated" after adjust link.

This patch record the pause configurations of the user, and never
covered them in adjust link.

Feature or Bugfix:Bugfix
Signed-off-by: NYonglong Liu <liuyonglong@huawei.com>
Reviewed-by: Nlinyunsheng <linyunsheng@huawei.com>
Reviewed-by: NYang Yingliang <yangyingliang@huawei.com>
Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
上级 d425e98c
...@@ -8467,28 +8467,15 @@ static int hclge_cfg_pauseparam(struct hclge_dev *hdev, u32 rx_en, u32 tx_en) ...@@ -8467,28 +8467,15 @@ static int hclge_cfg_pauseparam(struct hclge_dev *hdev, u32 rx_en, u32 tx_en)
{ {
int ret; int ret;
if (rx_en && tx_en)
hdev->fc_mode_last_time = HCLGE_FC_FULL;
else if (rx_en && !tx_en)
hdev->fc_mode_last_time = HCLGE_FC_RX_PAUSE;
else if (!rx_en && tx_en)
hdev->fc_mode_last_time = HCLGE_FC_TX_PAUSE;
else
hdev->fc_mode_last_time = HCLGE_FC_NONE;
if (hdev->tm_info.fc_mode == HCLGE_FC_PFC) if (hdev->tm_info.fc_mode == HCLGE_FC_PFC)
return 0; return 0;
ret = hclge_mac_pause_en_cfg(hdev, tx_en, rx_en); ret = hclge_mac_pause_en_cfg(hdev, tx_en, rx_en);
if (ret) { if (ret)
dev_err(&hdev->pdev->dev, "configure pauseparam error, ret = %d.\n", dev_err(&hdev->pdev->dev,
ret); "configure pauseparam error, ret = %d.\n", ret);
return ret;
}
hdev->tm_info.fc_mode = hdev->fc_mode_last_time;
return 0; return ret;
} }
int hclge_cfg_flowctrl(struct hclge_dev *hdev) int hclge_cfg_flowctrl(struct hclge_dev *hdev)
...@@ -8560,6 +8547,21 @@ static void hclge_get_pauseparam(struct hnae3_handle *handle, u32 *auto_neg, ...@@ -8560,6 +8547,21 @@ static void hclge_get_pauseparam(struct hnae3_handle *handle, u32 *auto_neg,
} }
} }
static void hclge_record_user_pauseparam(struct hclge_dev *hdev,
u32 rx_en, u32 tx_en)
{
if (rx_en && tx_en)
hdev->fc_mode_last_time = HCLGE_FC_FULL;
else if (rx_en && !tx_en)
hdev->fc_mode_last_time = HCLGE_FC_RX_PAUSE;
else if (!rx_en && tx_en)
hdev->fc_mode_last_time = HCLGE_FC_TX_PAUSE;
else
hdev->fc_mode_last_time = HCLGE_FC_NONE;
hdev->tm_info.fc_mode = hdev->fc_mode_last_time;
}
static int hclge_set_pauseparam(struct hnae3_handle *handle, u32 auto_neg, static int hclge_set_pauseparam(struct hnae3_handle *handle, u32 auto_neg,
u32 rx_en, u32 tx_en) u32 rx_en, u32 tx_en)
{ {
...@@ -8585,6 +8587,8 @@ static int hclge_set_pauseparam(struct hnae3_handle *handle, u32 auto_neg, ...@@ -8585,6 +8587,8 @@ static int hclge_set_pauseparam(struct hnae3_handle *handle, u32 auto_neg,
hclge_set_flowctrl_adv(hdev, rx_en, tx_en); hclge_set_flowctrl_adv(hdev, rx_en, tx_en);
hclge_record_user_pauseparam(hdev, rx_en, tx_en);
if (!auto_neg) if (!auto_neg)
return hclge_cfg_pauseparam(hdev, rx_en, tx_en); return hclge_cfg_pauseparam(hdev, rx_en, tx_en);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册