From: Huisong Li Date: Tue, 13 Apr 2021 13:47:11 +0000 (+0800) Subject: net/hns3: fix supported speed of copper ports X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=d2e3bfb197c729d198c525967bdaae652381b826;p=dpdk.git net/hns3: fix supported speed of copper ports The "supported capability" obtained 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 capability". Fixes: 2e4859f3b362 ("net/hns3: support PF device with copper PHYs") Signed-off-by: Huisong Li Signed-off-by: Min Hu (Connor) --- diff --git a/drivers/net/hns3/hns3_ethdev.c b/drivers/net/hns3/hns3_ethdev.c index 05ccc2eeb4..ee471173e6 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 840880eeee..17d24690bd 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;