The em, igb, and igc PMDs currently update the auto-neg status only during specific link transitions. Updated the auto-neg status regardless of link transition so that it is consistent with ixgbe, i40e, and iavf drivers.
Signed-off-by: AKSHATHA S <[email protected]> v2: Addressed review comments --- drivers/net/intel/e1000/em_ethdev.c | 5 ++--- drivers/net/intel/e1000/igb_ethdev.c | 5 ++--- drivers/net/intel/e1000/igc_ethdev.c | 5 ++--- 3 files changed, 6 insertions(+), 9 deletions(-) diff --git a/drivers/net/intel/e1000/em_ethdev.c b/drivers/net/intel/e1000/em_ethdev.c index ec3924bf6b..9e15e882b9 100644 --- a/drivers/net/intel/e1000/em_ethdev.c +++ b/drivers/net/intel/e1000/em_ethdev.c @@ -1240,14 +1240,13 @@ eth_em_link_update(struct rte_eth_dev *dev, int wait_to_complete) RTE_ETH_LINK_HALF_DUPLEX; link.link_speed = speed; link.link_status = RTE_ETH_LINK_UP; - link.link_autoneg = !(dev->data->dev_conf.link_speeds & - RTE_ETH_LINK_SPEED_FIXED); } else { link.link_speed = RTE_ETH_SPEED_NUM_NONE; link.link_duplex = RTE_ETH_LINK_HALF_DUPLEX; link.link_status = RTE_ETH_LINK_DOWN; - link.link_autoneg = RTE_ETH_LINK_FIXED; } + link.link_autoneg = !(dev->data->dev_conf.link_speeds & + RTE_ETH_LINK_SPEED_FIXED); return rte_eth_linkstatus_set(dev, &link); } diff --git a/drivers/net/intel/e1000/igb_ethdev.c b/drivers/net/intel/e1000/igb_ethdev.c index 1f51ba6406..ef1599ac38 100644 --- a/drivers/net/intel/e1000/igb_ethdev.c +++ b/drivers/net/intel/e1000/igb_ethdev.c @@ -2568,14 +2568,13 @@ eth_igb_link_update(struct rte_eth_dev *dev, int wait_to_complete) RTE_ETH_LINK_HALF_DUPLEX; link.link_speed = speed; link.link_status = RTE_ETH_LINK_UP; - link.link_autoneg = !(dev->data->dev_conf.link_speeds & - RTE_ETH_LINK_SPEED_FIXED); } else if (!link_check) { link.link_speed = 0; link.link_duplex = RTE_ETH_LINK_HALF_DUPLEX; link.link_status = RTE_ETH_LINK_DOWN; - link.link_autoneg = RTE_ETH_LINK_FIXED; } + link.link_autoneg = !(dev->data->dev_conf.link_speeds & + RTE_ETH_LINK_SPEED_FIXED); return rte_eth_linkstatus_set(dev, &link); } diff --git a/drivers/net/intel/e1000/igc_ethdev.c b/drivers/net/intel/e1000/igc_ethdev.c index 2155a67268..727ea36c2b 100644 --- a/drivers/net/intel/e1000/igc_ethdev.c +++ b/drivers/net/intel/e1000/igc_ethdev.c @@ -549,8 +549,6 @@ eth_igc_link_update(struct rte_eth_dev *dev, int wait_to_complete) RTE_ETH_LINK_HALF_DUPLEX; link.link_speed = speed; link.link_status = RTE_ETH_LINK_UP; - link.link_autoneg = !(dev->data->dev_conf.link_speeds & - RTE_ETH_LINK_SPEED_FIXED); if (speed == SPEED_2500) { uint32_t tipg = E1000_READ_REG(hw, E1000_TIPG); @@ -564,8 +562,9 @@ eth_igc_link_update(struct rte_eth_dev *dev, int wait_to_complete) link.link_speed = 0; link.link_duplex = RTE_ETH_LINK_HALF_DUPLEX; link.link_status = RTE_ETH_LINK_DOWN; - link.link_autoneg = RTE_ETH_LINK_FIXED; } + link.link_autoneg = !(dev->data->dev_conf.link_speeds & + RTE_ETH_LINK_SPEED_FIXED); return rte_eth_linkstatus_set(dev, &link); } -- 2.43.0

