From a4d5f9f9c21ba8e28de82b5107ed1b5166cefe83 Mon Sep 17 00:00:00 2001 From: Alvin Zhang Date: Wed, 12 May 2021 16:28:26 +0800 Subject: [PATCH] net/igc: fix speed configuration Fixed speed mode is not supported currently, this patch removes configurations for this mode and adds fault handling for ETH_LINK_SPEED_FIXED. Fixes: 4f09bc55ac3d ("net/igc: implement device base operations") Cc: stable@dpdk.org Signed-off-by: Alvin Zhang Acked-by: Junfeng Guo --- drivers/net/igc/igc_ethdev.c | 26 ++++++++++---------------- 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/drivers/net/igc/igc_ethdev.c b/drivers/net/igc/igc_ethdev.c index b1c58fb3de..224a095483 100644 --- a/drivers/net/igc/igc_ethdev.c +++ b/drivers/net/igc/igc_ethdev.c @@ -989,15 +989,20 @@ eth_igc_start(struct rte_eth_dev *dev) hw->mac.autoneg = 1; } else { int num_speeds = 0; - bool autoneg = (*speeds & ETH_LINK_SPEED_FIXED) == 0; - /* Reset */ + if (*speeds & ETH_LINK_SPEED_FIXED) { + PMD_DRV_LOG(ERR, + "Force speed mode currently not supported"); + igc_dev_clear_queues(dev); + return -EINVAL; + } + hw->phy.autoneg_advertised = 0; + hw->mac.autoneg = 1; if (*speeds & ~(ETH_LINK_SPEED_10M_HD | ETH_LINK_SPEED_10M | ETH_LINK_SPEED_100M_HD | ETH_LINK_SPEED_100M | - ETH_LINK_SPEED_1G | ETH_LINK_SPEED_2_5G | - ETH_LINK_SPEED_FIXED)) { + ETH_LINK_SPEED_1G | ETH_LINK_SPEED_2_5G)) { num_speeds = -1; goto error_invalid_config; } @@ -1025,19 +1030,8 @@ eth_igc_start(struct rte_eth_dev *dev) hw->phy.autoneg_advertised |= ADVERTISE_2500_FULL; num_speeds++; } - if (num_speeds == 0 || (!autoneg && num_speeds > 1)) + if (num_speeds == 0) goto error_invalid_config; - - /* Set/reset the mac.autoneg based on the link speed, - * fixed or not - */ - if (!autoneg) { - hw->mac.autoneg = 0; - hw->mac.forced_speed_duplex = - hw->phy.autoneg_advertised; - } else { - hw->mac.autoneg = 1; - } } igc_setup_link(hw); -- 2.20.1