Skip to content

Commit aacbe27

Browse files
liuyonglong86davem330
authored andcommitted
net: hns3: modify how pause options is displayed
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 records the pause configurations of the user, and never covered them in adjust link. Signed-off-by: Yonglong Liu <[email protected]> Reviewed-by: Yunsheng Lin <[email protected]> Signed-off-by: Huazhong Tan <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 7ac243f commit aacbe27

File tree

1 file changed

+21
-17
lines changed

1 file changed

+21
-17
lines changed

drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -8207,28 +8207,15 @@ static int hclge_cfg_pauseparam(struct hclge_dev *hdev, u32 rx_en, u32 tx_en)
82078207
{
82088208
int ret;
82098209

8210-
if (rx_en && tx_en)
8211-
hdev->fc_mode_last_time = HCLGE_FC_FULL;
8212-
else if (rx_en && !tx_en)
8213-
hdev->fc_mode_last_time = HCLGE_FC_RX_PAUSE;
8214-
else if (!rx_en && tx_en)
8215-
hdev->fc_mode_last_time = HCLGE_FC_TX_PAUSE;
8216-
else
8217-
hdev->fc_mode_last_time = HCLGE_FC_NONE;
8218-
82198210
if (hdev->tm_info.fc_mode == HCLGE_FC_PFC)
82208211
return 0;
82218212

82228213
ret = hclge_mac_pause_en_cfg(hdev, tx_en, rx_en);
8223-
if (ret) {
8224-
dev_err(&hdev->pdev->dev, "configure pauseparam error, ret = %d.\n",
8225-
ret);
8226-
return ret;
8227-
}
8228-
8229-
hdev->tm_info.fc_mode = hdev->fc_mode_last_time;
8214+
if (ret)
8215+
dev_err(&hdev->pdev->dev,
8216+
"configure pauseparam error, ret = %d.\n", ret);
82308217

8231-
return 0;
8218+
return ret;
82328219
}
82338220

82348221
int hclge_cfg_flowctrl(struct hclge_dev *hdev)
@@ -8293,6 +8280,21 @@ static void hclge_get_pauseparam(struct hnae3_handle *handle, u32 *auto_neg,
82938280
}
82948281
}
82958282

8283+
static void hclge_record_user_pauseparam(struct hclge_dev *hdev,
8284+
u32 rx_en, u32 tx_en)
8285+
{
8286+
if (rx_en && tx_en)
8287+
hdev->fc_mode_last_time = HCLGE_FC_FULL;
8288+
else if (rx_en && !tx_en)
8289+
hdev->fc_mode_last_time = HCLGE_FC_RX_PAUSE;
8290+
else if (!rx_en && tx_en)
8291+
hdev->fc_mode_last_time = HCLGE_FC_TX_PAUSE;
8292+
else
8293+
hdev->fc_mode_last_time = HCLGE_FC_NONE;
8294+
8295+
hdev->tm_info.fc_mode = hdev->fc_mode_last_time;
8296+
}
8297+
82968298
static int hclge_set_pauseparam(struct hnae3_handle *handle, u32 auto_neg,
82978299
u32 rx_en, u32 tx_en)
82988300
{
@@ -8318,6 +8320,8 @@ static int hclge_set_pauseparam(struct hnae3_handle *handle, u32 auto_neg,
83188320

83198321
hclge_set_flowctrl_adv(hdev, rx_en, tx_en);
83208322

8323+
hclge_record_user_pauseparam(hdev, rx_en, tx_en);
8324+
83218325
if (!auto_neg)
83228326
return hclge_cfg_pauseparam(hdev, rx_en, tx_en);
83238327

0 commit comments

Comments
 (0)