From: Huazhong Tan <tanhuazhong@huawei.com>
To: <davem@davemloft.net>
Cc: <netdev@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
<huangdaode@hisilicon.com>, <yisen.zhuang@huawei.com>,
<salil.mehta@huawei.com>, <linuxarm@huawei.com>,
liuzhongzhu <liuzhongzhu@huawei.com>,
Peng Li <lipeng321@huawei.com>,
Huazhong Tan <tanhuazhong@huawei.com>
Subject: [PATCH net-next 06/12] net: hns3: After setting the loopback, add the status of getting MAC
Date: Sun, 27 Jan 2019 00:49:15 +0800 [thread overview]
Message-ID: <20190126164921.3872-7-tanhuazhong@huawei.com> (raw)
In-Reply-To: <20190126164921.3872-1-tanhuazhong@huawei.com>
From: liuzhongzhu <liuzhongzhu@huawei.com>
After setting the serdes loopback, you need to determine
the status of the MAC negotiation. If a status exception
is obtained after 200ms, a timeout error is returned.
Signed-off-by: liuzhongzhu <liuzhongzhu@huawei.com>
Signed-off-by: Peng Li <lipeng321@huawei.com>
Signed-off-by: Huazhong Tan <tanhuazhong@huawei.com>
---
.../hisilicon/hns3/hns3pf/hclge_main.c | 23 ++++++++++++++++++-
1 file changed, 22 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
index 558389a18353..ae8336c18264 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
@@ -5237,8 +5237,15 @@ static int hclge_set_serdes_loopback(struct hclge_dev *hdev, bool en,
{
#define HCLGE_SERDES_RETRY_MS 10
#define HCLGE_SERDES_RETRY_NUM 100
+
+#define HCLGE_MAC_LINK_STATUS_MS 20
+#define HCLGE_MAC_LINK_STATUS_NUM 10
+#define HCLGE_MAC_LINK_STATUS_DOWN 0
+#define HCLGE_MAC_LINK_STATUS_UP 1
+
struct hclge_serdes_lb_cmd *req;
struct hclge_desc desc;
+ int mac_link_ret = 0;
int ret, i = 0;
u8 loop_mode_b;
@@ -5261,8 +5268,10 @@ static int hclge_set_serdes_loopback(struct hclge_dev *hdev, bool en,
if (en) {
req->enable = loop_mode_b;
req->mask = loop_mode_b;
+ mac_link_ret = HCLGE_MAC_LINK_STATUS_UP;
} else {
req->mask = loop_mode_b;
+ mac_link_ret = HCLGE_MAC_LINK_STATUS_DOWN;
}
ret = hclge_cmd_send(&hdev->hw, &desc, 1);
@@ -5294,7 +5303,19 @@ static int hclge_set_serdes_loopback(struct hclge_dev *hdev, bool en,
}
hclge_cfg_mac_mode(hdev, en);
- return 0;
+
+ i = 0;
+ do {
+ /* serdes Internal loopback, independent of the network cable.*/
+ msleep(HCLGE_MAC_LINK_STATUS_MS);
+ ret = hclge_get_mac_link_status(hdev);
+ if (ret == mac_link_ret)
+ return 0;
+ } while (++i < HCLGE_MAC_LINK_STATUS_NUM);
+
+ dev_err(&hdev->pdev->dev, "config mac mode timeout\n");
+
+ return -EBUSY;
}
static int hclge_tqp_enable(struct hclge_dev *hdev, int tqp_id,
--
2.20.1
next prev parent reply other threads:[~2019-01-26 16:50 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-01-26 16:49 [PATCH net-next 00/12] code optimizations & bugfixes for HNS3 driver Huazhong Tan
2019-01-26 16:49 ` [PATCH net-next 01/12] net: hns3: don't update packet statistics for packets dropped by hardware Huazhong Tan
2019-01-26 16:49 ` [PATCH net-next 02/12] net: hns3: clear pci private data when unload hns3 driver Huazhong Tan
2019-01-26 16:49 ` [PATCH net-next 03/12] net: hns3: add error handling in hclge_ieee_setets Huazhong Tan
2019-01-26 16:49 ` [PATCH net-next 04/12] net: hns3: fix return value handle issue for hclge_set_loopback() Huazhong Tan
2019-01-26 16:49 ` [PATCH net-next 05/12] net: hns3: fix broadcast promisc issue for revision 0x20 Huazhong Tan
2019-01-26 16:49 ` Huazhong Tan [this message]
2019-01-26 16:49 ` [PATCH net-next 07/12] net: hns3: do reinitialization while mqprio configuration changed Huazhong Tan
2019-01-26 16:49 ` [PATCH net-next 08/12] net: hns3: remove dcb_ops->map_update in hclge_dcb Huazhong Tan
2019-01-26 16:49 ` [PATCH net-next 09/12] net: hns3: call hns3_nic_set_real_num_queue with netdev down Huazhong Tan
2019-01-26 16:49 ` [PATCH net-next 10/12] net: hns3: add 8 BD limit for tx flow Huazhong Tan
2019-01-26 16:49 ` [PATCH net-next 11/12] net: hns3: add initialization for nic state Huazhong Tan
2019-01-26 16:49 ` [PATCH net-next 12/12] net: hns3: don't allow vf to enable promisc mode Huazhong Tan
2019-01-26 17:33 ` [PATCH net-next 00/12] code optimizations & bugfixes for HNS3 driver David Miller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190126164921.3872-7-tanhuazhong@huawei.com \
--to=tanhuazhong@huawei.com \
--cc=davem@davemloft.net \
--cc=huangdaode@hisilicon.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linuxarm@huawei.com \
--cc=lipeng321@huawei.com \
--cc=liuzhongzhu@huawei.com \
--cc=netdev@vger.kernel.org \
--cc=salil.mehta@huawei.com \
--cc=yisen.zhuang@huawei.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox