patch 'net/ixgbe: add missing E610 MAC type checks' has been queued to stable release 25.11.1

Kevin Traynor ktraynor at redhat.com
Thu Feb 26 14:10:05 CET 2026


Hi,

FYI, your patch has been queued to stable release 25.11.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 03/02/26. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.

Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable

This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/56d180889649db10f4730bcc42ead10b8e60e2e7

Thanks.

Kevin

---
>From 56d180889649db10f4730bcc42ead10b8e60e2e7 Mon Sep 17 00:00:00 2001
From: Anatoly Burakov <anatoly.burakov at intel.com>
Date: Fri, 13 Feb 2026 09:10:03 +0000
Subject: [PATCH] net/ixgbe: add missing E610 MAC type checks

[ upstream commit ffac9bc95aa8311c1e9f2bd590a015532d31c3ad ]

A few E610 MAC type checks were missing (verified using E610 datasheet).

Fixes: 316637762a5f ("net/ixgbe/base: enable E610 device")

Signed-off-by: Anatoly Burakov <anatoly.burakov at intel.com>
Acked-by: Vladimir Medvedkin <vladimir.medvedkin at intel.com>
Reviewed-by: Piotr Kwapulinski <piotr.kwapulinski at intel.com>
---
 drivers/net/intel/ixgbe/ixgbe_bypass_api.h |  8 +-----
 drivers/net/intel/ixgbe/ixgbe_ethdev.c     | 29 ++++++++++++++--------
 drivers/net/intel/ixgbe/ixgbe_fdir.c       |  8 +++---
 drivers/net/intel/ixgbe/ixgbe_flow.c       |  3 ++-
 drivers/net/intel/ixgbe/ixgbe_pf.c         |  5 ++--
 drivers/net/intel/ixgbe/ixgbe_rxtx.c       | 14 +++++++----
 6 files changed, 39 insertions(+), 28 deletions(-)

diff --git a/drivers/net/intel/ixgbe/ixgbe_bypass_api.h b/drivers/net/intel/ixgbe/ixgbe_bypass_api.h
index 6ef965dbb6..eb73bc8b17 100644
--- a/drivers/net/intel/ixgbe/ixgbe_bypass_api.h
+++ b/drivers/net/intel/ixgbe/ixgbe_bypass_api.h
@@ -41,14 +41,8 @@ static s32 ixgbe_bypass_rw_generic(struct ixgbe_hw *hw, u32 cmd, u32 *status)
 		break;
 	case ixgbe_mac_X540:
-		sck = IXGBE_ESDP_SDP2;
-		sdi = IXGBE_ESDP_SDP0;
-		sdo = IXGBE_ESDP_SDP1;
-		dir_sck = IXGBE_ESDP_SDP2_DIR;
-		dir_sdi = IXGBE_ESDP_SDP0_DIR;
-		dir_sdo = IXGBE_ESDP_SDP1_DIR;
-		break;
 	case ixgbe_mac_X550:
 	case ixgbe_mac_X550EM_x:
 	case ixgbe_mac_X550EM_a:
+	case ixgbe_mac_E610:
 		sck = IXGBE_ESDP_SDP2;
 		sdi = IXGBE_ESDP_SDP0;
diff --git a/drivers/net/intel/ixgbe/ixgbe_ethdev.c b/drivers/net/intel/ixgbe/ixgbe_ethdev.c
index 89a799762f..11500a923c 100644
--- a/drivers/net/intel/ixgbe/ixgbe_ethdev.c
+++ b/drivers/net/intel/ixgbe/ixgbe_ethdev.c
@@ -912,5 +912,6 @@ ixgbe_dev_queue_stats_mapping_set(struct rte_eth_dev *eth_dev,
 		(hw->mac.type != ixgbe_mac_X550) &&
 		(hw->mac.type != ixgbe_mac_X550EM_x) &&
-		(hw->mac.type != ixgbe_mac_X550EM_a))
+		(hw->mac.type != ixgbe_mac_X550EM_a) &&
+		(hw->mac.type != ixgbe_mac_E610))
 		return -ENOSYS;
 
@@ -2135,8 +2136,9 @@ ixgbe_vlan_hw_extend_enable(struct rte_eth_dev *dev)
 	IXGBE_WRITE_REG(hw, IXGBE_CTRL_EXT, ctrl);
 
-	/* Clear pooling mode of PFVTCTL. It's required by X550. */
+	/* Clear pooling mode of PFVTCTL. It's required by X550 and E610. */
 	if (hw->mac.type == ixgbe_mac_X550 ||
 	    hw->mac.type == ixgbe_mac_X550EM_x ||
-	    hw->mac.type == ixgbe_mac_X550EM_a) {
+	    hw->mac.type == ixgbe_mac_X550EM_a ||
+	    hw->mac.type == ixgbe_mac_E610) {
 		ctrl = IXGBE_READ_REG(hw, IXGBE_VT_CTL);
 		ctrl &= ~IXGBE_VT_CTL_POOLING_MODE_MASK;
@@ -2831,4 +2833,5 @@ ixgbe_dev_start(struct rte_eth_dev *dev)
 		case ixgbe_mac_X550EM_x:
 		case ixgbe_mac_X550EM_a:
+		case ixgbe_mac_E610:
 			speed = IXGBE_LINK_SPEED_X550_AUTONEG;
 			break;
@@ -4047,8 +4050,9 @@ ixgbe_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
 	    hw->mac.type == ixgbe_mac_X540_vf ||
 	    hw->mac.type == ixgbe_mac_X550 ||
-	    hw->mac.type == ixgbe_mac_X550_vf) {
+	    hw->mac.type == ixgbe_mac_X550_vf ||
+	    hw->mac.type == ixgbe_mac_E610) {
 		dev_info->speed_capa |= RTE_ETH_LINK_SPEED_100M;
 	}
-	if (hw->mac.type == ixgbe_mac_X550) {
+	if (hw->mac.type == ixgbe_mac_X550 || hw->mac.type == ixgbe_mac_E610) {
 		dev_info->speed_capa |= RTE_ETH_LINK_SPEED_2_5G;
 		dev_info->speed_capa |= RTE_ETH_LINK_SPEED_5G;
@@ -7666,5 +7670,6 @@ ixgbe_update_e_tag_eth_type(struct ixgbe_hw *hw,
 	if (hw->mac.type != ixgbe_mac_X550 &&
 	    hw->mac.type != ixgbe_mac_X550EM_x &&
-	    hw->mac.type != ixgbe_mac_X550EM_a) {
+	    hw->mac.type != ixgbe_mac_X550EM_a &&
+	    hw->mac.type != ixgbe_mac_E610) {
 		return -ENOTSUP;
 	}
@@ -7687,5 +7692,6 @@ ixgbe_e_tag_enable(struct ixgbe_hw *hw)
 	if (hw->mac.type != ixgbe_mac_X550 &&
 	    hw->mac.type != ixgbe_mac_X550EM_x &&
-	    hw->mac.type != ixgbe_mac_X550EM_a) {
+	    hw->mac.type != ixgbe_mac_X550EM_a &&
+	    hw->mac.type != ixgbe_mac_E610) {
 		return -ENOTSUP;
 	}
@@ -7710,5 +7716,6 @@ ixgbe_e_tag_filter_del(struct rte_eth_dev *dev,
 	if (hw->mac.type != ixgbe_mac_X550 &&
 	    hw->mac.type != ixgbe_mac_X550EM_x &&
-	    hw->mac.type != ixgbe_mac_X550EM_a) {
+	    hw->mac.type != ixgbe_mac_X550EM_a &&
+	    hw->mac.type != ixgbe_mac_E610) {
 		return -ENOTSUP;
 	}
@@ -7746,5 +7753,6 @@ ixgbe_e_tag_filter_add(struct rte_eth_dev *dev,
 	if (hw->mac.type != ixgbe_mac_X550 &&
 	    hw->mac.type != ixgbe_mac_X550EM_x &&
-	    hw->mac.type != ixgbe_mac_X550EM_a) {
+	    hw->mac.type != ixgbe_mac_X550EM_a &&
+	    hw->mac.type != ixgbe_mac_E610) {
 		return -ENOTSUP;
 	}
@@ -7933,5 +7941,6 @@ ixgbe_e_tag_forwarding_en_dis(struct rte_eth_dev *dev, bool en)
 	if (hw->mac.type != ixgbe_mac_X550 &&
 	    hw->mac.type != ixgbe_mac_X550EM_x &&
-	    hw->mac.type != ixgbe_mac_X550EM_a) {
+	    hw->mac.type != ixgbe_mac_X550EM_a &&
+	    hw->mac.type != ixgbe_mac_E610) {
 		return -ENOTSUP;
 	}
diff --git a/drivers/net/intel/ixgbe/ixgbe_fdir.c b/drivers/net/intel/ixgbe/ixgbe_fdir.c
index 97ef185583..0bdfbd411a 100644
--- a/drivers/net/intel/ixgbe/ixgbe_fdir.c
+++ b/drivers/net/intel/ixgbe/ixgbe_fdir.c
@@ -651,8 +651,9 @@ ixgbe_fdir_configure(struct rte_eth_dev *dev)
 		return -ENOSYS;
 
-	/* x550 supports mac-vlan and tunnel mode but other NICs not */
+	/* x550 and E610 supports mac-vlan and tunnel mode but other NICs not */
 	if (hw->mac.type != ixgbe_mac_X550 &&
 	    hw->mac.type != ixgbe_mac_X550EM_x &&
 	    hw->mac.type != ixgbe_mac_X550EM_a &&
+	    hw->mac.type != ixgbe_mac_E610 &&
 	    mode != RTE_FDIR_MODE_SIGNATURE &&
 	    mode != RTE_FDIR_MODE_PERFECT)
@@ -1131,5 +1132,5 @@ ixgbe_fdir_filter_program(struct rte_eth_dev *dev,
 
 	/*
-	 * Sanity check for x550.
+	 * Sanity check for x550 and E610.
 	 * When adding a new filter with flow type set to IPv4,
 	 * the flow director mask should be configed before,
@@ -1139,5 +1140,6 @@ ixgbe_fdir_filter_program(struct rte_eth_dev *dev,
 	    (hw->mac.type == ixgbe_mac_X550 ||
 	     hw->mac.type == ixgbe_mac_X550EM_x ||
-	     hw->mac.type == ixgbe_mac_X550EM_a) &&
+	     hw->mac.type == ixgbe_mac_X550EM_a ||
+	     hw->mac.type == ixgbe_mac_E610) &&
 	    (rule->ixgbe_fdir.formatted.flow_type ==
 	     IXGBE_ATR_FLOW_TYPE_IPV4 ||
diff --git a/drivers/net/intel/ixgbe/ixgbe_flow.c b/drivers/net/intel/ixgbe/ixgbe_flow.c
index 3b68d820ca..27d2ba1132 100644
--- a/drivers/net/intel/ixgbe/ixgbe_flow.c
+++ b/drivers/net/intel/ixgbe/ixgbe_flow.c
@@ -1362,5 +1362,6 @@ ixgbe_parse_l2_tn_filter(struct rte_eth_dev *dev,
 	if (hw->mac.type != ixgbe_mac_X550 &&
 		hw->mac.type != ixgbe_mac_X550EM_x &&
-		hw->mac.type != ixgbe_mac_X550EM_a) {
+		hw->mac.type != ixgbe_mac_X550EM_a &&
+		hw->mac.type != ixgbe_mac_E610) {
 		memset(l2_tn_filter, 0, sizeof(struct ixgbe_l2_tunnel_conf));
 		rte_flow_error_set(error, EINVAL,
diff --git a/drivers/net/intel/ixgbe/ixgbe_pf.c b/drivers/net/intel/ixgbe/ixgbe_pf.c
index e967fe5e48..d9a775f99a 100644
--- a/drivers/net/intel/ixgbe/ixgbe_pf.c
+++ b/drivers/net/intel/ixgbe/ixgbe_pf.c
@@ -559,9 +559,10 @@ ixgbe_set_vf_lpe(struct rte_eth_dev *dev, uint32_t vf, uint32_t *msgbuf)
 	uint32_t hlreg0;
 
-	/* X540 and X550 support jumbo frames in IOV mode */
+	/* X540, X550, and E610 support jumbo frames in IOV mode */
 	if (hw->mac.type != ixgbe_mac_X540 &&
 		hw->mac.type != ixgbe_mac_X550 &&
 		hw->mac.type != ixgbe_mac_X550EM_x &&
-		hw->mac.type != ixgbe_mac_X550EM_a) {
+		hw->mac.type != ixgbe_mac_X550EM_a &&
+		hw->mac.type != ixgbe_mac_E610) {
 		struct ixgbe_vf_info *vfinfo =
 			*IXGBE_DEV_PRIVATE_TO_P_VFDATA(dev->data->dev_private);
diff --git a/drivers/net/intel/ixgbe/ixgbe_rxtx.c b/drivers/net/intel/ixgbe/ixgbe_rxtx.c
index e830bb9495..d25c35d287 100644
--- a/drivers/net/intel/ixgbe/ixgbe_rxtx.c
+++ b/drivers/net/intel/ixgbe/ixgbe_rxtx.c
@@ -2708,5 +2708,6 @@ ixgbe_get_tx_port_offloads(struct rte_eth_dev *dev)
 	if (hw->mac.type == ixgbe_mac_X550 ||
 	    hw->mac.type == ixgbe_mac_X550EM_x ||
-	    hw->mac.type == ixgbe_mac_X550EM_a)
+	    hw->mac.type == ixgbe_mac_X550EM_a ||
+	    hw->mac.type == ixgbe_mac_E610)
 		tx_offload_capa |= RTE_ETH_TX_OFFLOAD_OUTER_IPV4_CKSUM;
 
@@ -3165,5 +3166,6 @@ ixgbe_get_rx_port_offloads(struct rte_eth_dev *dev)
 	if (hw->mac.type == ixgbe_mac_X550 ||
 	    hw->mac.type == ixgbe_mac_X550EM_x ||
-	    hw->mac.type == ixgbe_mac_X550EM_a)
+	    hw->mac.type == ixgbe_mac_X550EM_a ||
+	    hw->mac.type == ixgbe_mac_E610)
 		offloads |= RTE_ETH_RX_OFFLOAD_OUTER_IPV4_CKSUM;
 
@@ -3235,5 +3237,5 @@ ixgbe_dev_rx_queue_setup(struct rte_eth_dev *dev,
 	/*
 	 * The packet type in RX descriptor is different for different NICs.
-	 * Some bits are used for x550 but reserved for other NICS.
+	 * Some bits are used for x550 and E610 but reserved for other NICS.
 	 * So set different masks for different NICs.
 	 */
@@ -3243,5 +3245,6 @@ ixgbe_dev_rx_queue_setup(struct rte_eth_dev *dev,
 	    hw->mac.type == ixgbe_mac_X550_vf ||
 	    hw->mac.type == ixgbe_mac_X550EM_x_vf ||
-	    hw->mac.type == ixgbe_mac_X550EM_a_vf)
+	    hw->mac.type == ixgbe_mac_X550EM_a_vf ||
+	    hw->mac.type == ixgbe_mac_E610)
 		rxq->pkt_type_mask = IXGBE_PACKET_TYPE_MASK_X550;
 	else
@@ -3495,5 +3498,6 @@ ixgbe_dev_clear_queues(struct rte_eth_dev *dev)
 		     hw->mac.type == ixgbe_mac_X550 ||
 		     hw->mac.type == ixgbe_mac_X550EM_x ||
-		     hw->mac.type == ixgbe_mac_X550EM_a)
+		     hw->mac.type == ixgbe_mac_X550EM_a ||
+		     hw->mac.type == ixgbe_mac_E610)
 			ixgbe_setup_loopback_link_x540_x550(hw, false);
 	}
-- 
2.53.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2026-02-26 10:16:51.872032075 +0000
+++ 0123-net-ixgbe-add-missing-E610-MAC-type-checks.patch	2026-02-26 10:16:47.178460230 +0000
@@ -1 +1 @@
-From ffac9bc95aa8311c1e9f2bd590a015532d31c3ad Mon Sep 17 00:00:00 2001
+From 56d180889649db10f4730bcc42ead10b8e60e2e7 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit ffac9bc95aa8311c1e9f2bd590a015532d31c3ad ]
+
@@ -9 +10,0 @@
-Cc: stable at dpdk.org
@@ -185 +186 @@
-index dc9fda8e21..a6454cd1fe 100644
+index e830bb9495..d25c35d287 100644
@@ -188 +189 @@
-@@ -2689,5 +2689,6 @@ ixgbe_get_tx_port_offloads(struct rte_eth_dev *dev)
+@@ -2708,5 +2708,6 @@ ixgbe_get_tx_port_offloads(struct rte_eth_dev *dev)
@@ -196 +197 @@
-@@ -3166,5 +3167,6 @@ ixgbe_get_rx_port_offloads(struct rte_eth_dev *dev)
+@@ -3165,5 +3166,6 @@ ixgbe_get_rx_port_offloads(struct rte_eth_dev *dev)
@@ -204 +205 @@
-@@ -3246,5 +3248,5 @@ ixgbe_dev_rx_queue_setup(struct rte_eth_dev *dev,
+@@ -3235,5 +3237,5 @@ ixgbe_dev_rx_queue_setup(struct rte_eth_dev *dev,
@@ -211 +212 @@
-@@ -3254,5 +3256,6 @@ ixgbe_dev_rx_queue_setup(struct rte_eth_dev *dev,
+@@ -3243,5 +3245,6 @@ ixgbe_dev_rx_queue_setup(struct rte_eth_dev *dev,
@@ -219 +220 @@
-@@ -3506,5 +3509,6 @@ ixgbe_dev_clear_queues(struct rte_eth_dev *dev)
+@@ -3495,5 +3498,6 @@ ixgbe_dev_clear_queues(struct rte_eth_dev *dev)



More information about the stable mailing list