[PATCH v2] net/e1000: align link updates in em igb and igc
AKSHATHA S
akshathax.s at intel.com
Sat Mar 7 00:36:14 CET 2026
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 <akshathax.s at intel.com>
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
More information about the dev
mailing list