This patch use the framework public function to replace the driver's private function.
Signed-off-by: Dengdui Huang <huangdeng...@huawei.com> --- drivers/net/hns3/hns3_ethdev.c | 51 +++++++--------------------------- 1 file changed, 10 insertions(+), 41 deletions(-) diff --git a/drivers/net/hns3/hns3_ethdev.c b/drivers/net/hns3/hns3_ethdev.c index ecd3b2ef64..1b380ac75f 100644 --- a/drivers/net/hns3/hns3_ethdev.c +++ b/drivers/net/hns3/hns3_ethdev.c @@ -4810,45 +4810,6 @@ hns3_check_port_speed(struct hns3_hw *hw, uint32_t link_speeds) return 0; } -static uint32_t -hns3_get_link_speed(uint32_t link_speeds) -{ - uint32_t speed = RTE_ETH_SPEED_NUM_NONE; - - if (link_speeds & RTE_ETH_LINK_SPEED_10M || - link_speeds & RTE_ETH_LINK_SPEED_10M_HD) - speed = RTE_ETH_SPEED_NUM_10M; - if (link_speeds & RTE_ETH_LINK_SPEED_100M || - link_speeds & RTE_ETH_LINK_SPEED_100M_HD) - speed = RTE_ETH_SPEED_NUM_100M; - if (link_speeds & RTE_ETH_LINK_SPEED_1G) - speed = RTE_ETH_SPEED_NUM_1G; - if (link_speeds & RTE_ETH_LINK_SPEED_10G) - speed = RTE_ETH_SPEED_NUM_10G; - if (link_speeds & RTE_ETH_LINK_SPEED_25G) - speed = RTE_ETH_SPEED_NUM_25G; - if (link_speeds & RTE_ETH_LINK_SPEED_40G) - speed = RTE_ETH_SPEED_NUM_40G; - if (link_speeds & RTE_ETH_LINK_SPEED_50G) - speed = RTE_ETH_SPEED_NUM_50G; - if (link_speeds & RTE_ETH_LINK_SPEED_100G) - speed = RTE_ETH_SPEED_NUM_100G; - if (link_speeds & RTE_ETH_LINK_SPEED_200G) - speed = RTE_ETH_SPEED_NUM_200G; - - return speed; -} - -static uint8_t -hns3_get_link_duplex(uint32_t link_speeds) -{ - if ((link_speeds & RTE_ETH_LINK_SPEED_10M_HD) || - (link_speeds & RTE_ETH_LINK_SPEED_100M_HD)) - return RTE_ETH_LINK_HALF_DUPLEX; - else - return RTE_ETH_LINK_FULL_DUPLEX; -} - static int hns3_set_copper_port_link_speed(struct hns3_hw *hw, struct hns3_set_link_speed_cfg *cfg) @@ -4980,14 +4941,22 @@ static int hns3_apply_link_speed(struct hns3_hw *hw) { struct rte_eth_conf *conf = &hw->data->dev_conf; + struct rte_eth_link_mode_info mode_info = {0}; struct hns3_set_link_speed_cfg cfg; + int ret; memset(&cfg, 0, sizeof(struct hns3_set_link_speed_cfg)); cfg.autoneg = (conf->link_speeds == RTE_ETH_LINK_SPEED_AUTONEG) ? RTE_ETH_LINK_AUTONEG : RTE_ETH_LINK_FIXED; if (cfg.autoneg != RTE_ETH_LINK_AUTONEG) { - cfg.speed = hns3_get_link_speed(conf->link_speeds); - cfg.duplex = hns3_get_link_duplex(conf->link_speeds); + ret = rte_eth_link_mode_parse(conf->link_speeds, &mode_info); + if (ret) { + hns3_err(hw, "failed to parse link mode, ret = %d", ret); + return ret; + } + cfg.speed = mode_onfo.speed_num; + cfg.speed = mode_info.speed_num; + cfg.duplex = mode_info.duplex; } return hns3_set_port_link_speed(hw, &cfg); -- 2.33.0