patch 'common/sfc_efx/base: fix flow control on legacy MCDI' has been queued to stable release 25.11.1

Kevin Traynor ktraynor at redhat.com
Thu Feb 26 14:08:35 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/9a767af7cd1456306a854c240d6839ff35537706

Thanks.

Kevin

---
>From 9a767af7cd1456306a854c240d6839ff35537706 Mon Sep 17 00:00:00 2001
From: Ivan Malov <ivan.malov at arknetworks.am>
Date: Tue, 30 Dec 2025 01:35:20 +0400
Subject: [PATCH] common/sfc_efx/base: fix flow control on legacy MCDI

[ upstream commit 133e9ad7ec1c5636567f96d1a57855768b969e28 ]

On X2 adaptors, tests have shown a mismatch between the mode the user asks
for and the resulting one, given the partner is set to use autonegotiation.
For example, asking for 'RX_PAUSE' results in 'FULL' being actually in use.

As per 'SET_MAC' MCDI documentation (in 'efx_regs_mcdi.h'), it is wrong to
set 'FCNTL' field to 'AUTO' when the user wants a fixed mode. Correct this.

Fixes: e7cd430c864f ("net/sfc/base: import SFN7xxx family support")

Signed-off-by: Ivan Malov <ivan.malov at arknetworks.am>
Reviewed-by: Andy Moreton <andy.moreton at amd.com>
---
 drivers/common/sfc_efx/base/ef10_mac.c | 35 ++++++++++++++++++++------
 1 file changed, 27 insertions(+), 8 deletions(-)

diff --git a/drivers/common/sfc_efx/base/ef10_mac.c b/drivers/common/sfc_efx/base/ef10_mac.c
index bfc82b80c7..016bd88774 100644
--- a/drivers/common/sfc_efx/base/ef10_mac.c
+++ b/drivers/common/sfc_efx/base/ef10_mac.c
@@ -274,4 +274,5 @@ ef10_mac_reconfigure(
 	EFX_MCDI_DECLARE_BUF(payload, MC_CMD_SET_MAC_IN_LEN,
 		MC_CMD_SET_MAC_OUT_LEN);
+	uint32_t fcntl;
 	efx_rc_t rc;
 
@@ -300,11 +301,27 @@ ef10_mac_reconfigure(
 				    SET_MAC_IN_REJECT_BRDCST, 0);
 
-	/*
-	 * Flow control, whether it is auto-negotiated or not,
-	 * is set via the PHY advertised capabilities.  When set to
-	 * automatic the MAC will use the PHY settings to determine
-	 * the flow control settings.
-	 */
-	MCDI_IN_SET_DWORD(req, SET_MAC_IN_FCNTL, MC_CMD_FCNTL_AUTO);
+	if (epp->ep_fcntl_autoneg != B_FALSE) {
+		fcntl = MC_CMD_FCNTL_AUTO;
+	} else {
+		switch (epp->ep_fcntl) {
+		case 0:
+			fcntl = MC_CMD_FCNTL_OFF;
+			break;
+		case EFX_FCNTL_RESPOND:
+			fcntl = MC_CMD_FCNTL_RESPOND;
+			break;
+		case EFX_FCNTL_GENERATE:
+			fcntl = MC_CMD_FCNTL_GENERATE;
+			break;
+		case EFX_FCNTL_RESPOND | EFX_FCNTL_GENERATE:
+			fcntl = MC_CMD_FCNTL_BIDIR;
+			break;
+		default:
+			rc = EINVAL;
+			goto fail1;
+		}
+	}
+
+	MCDI_IN_SET_DWORD(req, SET_MAC_IN_FCNTL, fcntl);
 
 	/* Include the Ethernet frame checksum in RX packets if it's required */
@@ -322,5 +339,5 @@ ef10_mac_reconfigure(
 		if (req.emr_rc != EACCES) {
 			rc = req.emr_rc;
-			goto fail1;
+			goto fail2;
 		}
 	}
@@ -339,4 +356,6 @@ ef10_mac_reconfigure(
 	return (0);
 
+fail2:
+	EFSYS_PROBE(fail2);
 fail1:
 	EFSYS_PROBE1(fail1, efx_rc_t, rc);
-- 
2.53.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2026-02-26 10:16:48.403004542 +0000
+++ 0033-common-sfc_efx-base-fix-flow-control-on-legacy-MCDI.patch	2026-02-26 10:16:46.937459177 +0000
@@ -1 +1 @@
-From 133e9ad7ec1c5636567f96d1a57855768b969e28 Mon Sep 17 00:00:00 2001
+From 9a767af7cd1456306a854c240d6839ff35537706 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 133e9ad7ec1c5636567f96d1a57855768b969e28 ]
+
@@ -14 +15,0 @@
-Cc: stable at dpdk.org



More information about the stable mailing list