[1/9] net/hns3: fix supported speed of copper ports

Message ID 1618321639-57642-2-git-send-email-humin29@huawei.com (mailing list archive)
State Accepted, archived
Delegated to: Ferruh Yigit
Headers
Series support speed capability and autoneg report |

Checks

Context Check Description
ci/checkpatch success coding style OK

Commit Message

humin (Q) April 13, 2021, 1:47 p.m. UTC
  From: Huisong Li <lihuisong@huawei.com>

The "supported" obtaining from firmware on copper ports includes the
speed capability, auto-negotiation capability, and flow control
capability. Therefore, this patch changes "supported_capa" to
"supported_speed" and parses the speed capability supported by the
driver from the "supported".

Fixes: 2e4859f3b362 ("net/hns3: support PF device with copper PHYs")

Signed-off-by: Huisong Li <lihuisong@huawei.com>
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
---
 drivers/net/hns3/hns3_ethdev.c | 11 +++++++----
 drivers/net/hns3/hns3_ethdev.h |  2 +-
 2 files changed, 8 insertions(+), 5 deletions(-)
  

Patch

diff --git a/drivers/net/hns3/hns3_ethdev.c b/drivers/net/hns3/hns3_ethdev.c
index 846e5a2..d7766e1 100644
--- a/drivers/net/hns3/hns3_ethdev.c
+++ b/drivers/net/hns3/hns3_ethdev.c
@@ -4612,7 +4612,10 @@  hns3_update_fiber_link_info(struct hns3_hw *hw)
 static void
 hns3_parse_copper_phy_params(struct hns3_cmd_desc *desc, struct hns3_mac *mac)
 {
+#define HNS3_PHY_SUPPORTED_SPEED_MASK   0x2f
+
 	struct hns3_phy_params_bd0_cmd *req;
+	uint32_t supported;
 
 	req = (struct hns3_phy_params_bd0_cmd *)desc[0].data;
 	mac->link_speed = rte_le_to_cpu_32(req->speed);
@@ -4620,11 +4623,11 @@  hns3_parse_copper_phy_params(struct hns3_cmd_desc *desc, struct hns3_mac *mac)
 					   HNS3_PHY_DUPLEX_CFG_B);
 	mac->link_autoneg = hns3_get_bit(req->autoneg,
 					   HNS3_PHY_AUTONEG_CFG_B);
-	mac->supported_capa = rte_le_to_cpu_32(req->supported);
 	mac->advertising = rte_le_to_cpu_32(req->advertising);
 	mac->lp_advertising = rte_le_to_cpu_32(req->lp_advertising);
-	mac->support_autoneg = !!(mac->supported_capa &
-				HNS3_PHY_LINK_MODE_AUTONEG_BIT);
+	supported = rte_le_to_cpu_32(req->supported);
+	mac->supported_speed = supported & HNS3_PHY_SUPPORTED_SPEED_MASK;
+	mac->support_autoneg = !!(supported & HNS3_PHY_LINK_MODE_AUTONEG_BIT);
 }
 
 static int
@@ -4673,7 +4676,7 @@  hns3_update_copper_link_info(struct hns3_hw *hw)
 	mac->link_speed = mac_info.link_speed;
 	mac->link_duplex = mac_info.link_duplex;
 	mac->link_autoneg = mac_info.link_autoneg;
-	mac->supported_capa = mac_info.supported_capa;
+	mac->supported_speed = mac_info.supported_speed;
 	mac->advertising = mac_info.advertising;
 	mac->lp_advertising = mac_info.lp_advertising;
 	mac->support_autoneg = mac_info.support_autoneg;
diff --git a/drivers/net/hns3/hns3_ethdev.h b/drivers/net/hns3/hns3_ethdev.h
index 72d718c..cbeadc0 100644
--- a/drivers/net/hns3/hns3_ethdev.h
+++ b/drivers/net/hns3/hns3_ethdev.h
@@ -183,7 +183,7 @@  struct hns3_mac {
 	uint8_t link_autoneg : 1; /* ETH_LINK_[AUTONEG/FIXED] */
 	uint8_t link_status  : 1; /* ETH_LINK_[DOWN/UP] */
 	uint32_t link_speed;      /* ETH_SPEED_NUM_ */
-	uint32_t supported_capa;  /* supported capability for current media */
+	uint32_t supported_speed;  /* supported speed for current media type */
 	uint32_t advertising;     /* advertised capability in the local part */
 	/* advertised capability in the link partner */
 	uint32_t lp_advertising;